A Bisect shows:
40ed11e0049a5856848e59a6275ba08b734accc8 is the first bad commit
commit 40ed11e0049a5856848e59a6275ba08b734accc8
Author: Jon Doron <email address hidden>
Date: Fri Apr 24 14:37:40 2020 +0300
x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
The problem the patch is trying to address is the fact that 'struct
kvm_hyperv_exit' has different layout on when compiling in 32 and 64 bit
modes.
In 64-bit mode the default alignment boundary is 64 bits thus
forcing extra gaps after 'type' and 'msr' but in 32-bit mode the
boundary is at 32 bits thus no extra gaps.
This is an issue as even when the kernel is 64 bit, the userspace using
the interface can be both 32 and 64 bit but the same 32 bit userspace has
to work with 32 bit kernel.
The issue is fixed by forcing the 64 bit layout, this leads to ABI
change for 32 bit builds and while we are obviously breaking '32 bit
userspace with 32 bit kernel' case, we're fixing the '32 bit userspace
with 64 bit kernel' one.
As the interface has no (known) users and 32 bit KVM is rather baroque
nowadays, this seems like a reasonable decision.
:040000 040000 e62587476ed3db655527a1e55776ad3dd7756ff6 d085168ac233723af3b4e0e2c079e97d72f6f7e1 M Documentation
:040000 040000 10bf0fe682799f3de914b15a1066636bc25e989a f78b5dad5a85cf65f04c372532d654c0d2c094f8 M include
$ git bisect log
git bisect start
# bad: [0e158155817fc6ac0a55648943e52b1004747d74] UBUNTU: Ubuntu-4.15.0-116.117
git bisect bad 0e158155817fc6ac0a55648943e52b1004747d74
# good: [495149ddc61a5997857fda041ccd4c81cac46e00] UBUNTU: Ubuntu-4.15.0-112.113
git bisect good 495149ddc61a5997857fda041ccd4c81cac46e00
# bad: [672e9dec222925652241f8522bb7e7483d0fa74c] drm/amdgpu: Replace invalid device ID with a valid device ID
git bisect bad 672e9dec222925652241f8522bb7e7483d0fa74c
# bad: [cebf29010efca3b7f7e195f80f5fd9db5f93afea] PCI: Don't disable decoding when mmio_always_on is set
git bisect bad cebf29010efca3b7f7e195f80f5fd9db5f93afea
# good: [8606a3b9726b9efb0a92015372be88a84b291406] s390/mm: fix set_huge_pte_at() for empty ptes
git bisect good 8606a3b9726b9efb0a92015372be88a84b291406
# good: [692fb8958a8fbb0b3b645e73ef89b1e75a543538] ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb
git bisect good 692fb8958a8fbb0b3b645e73ef89b1e75a543538
# bad: [749a10fcdcb6e6e3afa26aa9994325f8fcb19eda] tools api fs: Make xxx__mountpoint() more scalable
git bisect bad 749a10fcdcb6e6e3afa26aa9994325f8fcb19eda
# good: [c0cf7189d1b30c7c5423ce2aa6442f3e2f026568] net: ena: fix error returning in ena_com_get_hash_function()
git bisect good c0cf7189d1b30c7c5423ce2aa6442f3e2f026568
# good: [bec58f7e892951fea92df69801315b67ed0b73ce] clocksource: dw_apb_timer_of: Fix missing clockevent timers
git bisect good bec58f7e892951fea92df69801315b67ed0b73ce
# bad: [40ed11e0049a5856848e59a6275ba08b734accc8] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
git bisect bad 40ed11e0049a5856848e59a6275ba08b734accc8
# good: [0f92ac206e457a32da575c4f72afdc80143b809d] ARM: 8978/1: mm: make act_mm() respect THREAD_SIZE
git bisect good 0f92ac206e457a32da575c4f72afdc80143b809d
# good: [9502e85ad1c8470ff8acefc16de6afd57bb49b0a] spi: dw: Fix Rx-only DMA transfers
git bisect good 9502e85ad1c8470ff8acefc16de6afd57bb49b0a
# first bad commit: [40ed11e0049a5856848e59a6275ba08b734accc8] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
A Bisect shows: 6848e59a6275ba0 8b734accc8 is the first bad commit 6848e59a6275ba0 8b734accc8
40ed11e0049a585
commit 40ed11e0049a585
Author: Jon Doron <email address hidden>
Date: Fri Apr 24 14:37:40 2020 +0300
x86/ kvm/hyper- v: Explicitly align hcall param for kvm_hyperv_exit
BugLink: https:/ /bugs.launchpad .net/bugs/ 1885176
[ Upstream commit f7d31e65368aeef 973fab788aa22c4 f1d5a6af66 ]
The problem the patch is trying to address is the fact that 'struct hyperv_ exit' has different layout on when compiling in 32 and 64 bit
kvm_
modes.
In 64-bit mode the default alignment boundary is 64 bits thus
forcing extra gaps after 'type' and 'msr' but in 32-bit mode the
boundary is at 32 bits thus no extra gaps.
This is an issue as even when the kernel is 64 bit, the userspace using
the interface can be both 32 and 64 bit but the same 32 bit userspace has
to work with 32 bit kernel.
The issue is fixed by forcing the 64 bit layout, this leads to ABI
change for 32 bit builds and while we are obviously breaking '32 bit
userspace with 32 bit kernel' case, we're fixing the '32 bit userspace
with 64 bit kernel' one.
As the interface has no (known) users and 32 bit KVM is rather baroque
nowadays, this seems like a reasonable decision.
Reviewed-by: Vitaly Kuznetsov <email address hidden>
Signed-off-by: Jon Doron <email address hidden>
Message-Id: <email address hidden>
Reviewed-by: Roman Kagan <email address hidden>
Signed-off-by: Paolo Bonzini <email address hidden>
Signed-off-by: Sasha Levin <email address hidden>
Signed-off-by: Kamal Mostafa <email address hidden>
Signed-off-by: Khalid Elmously <email address hidden>
:040000 040000 e62587476ed3db6 55527a1e55776ad 3dd7756ff6 d085168ac233723 af3b4e0e2c079e9 7d72f6f7e1 M Documentation de914b15a106663 6bc25e989a f78b5dad5a85cf6 5f04c372532d654 c0d2c094f8 M include
:040000 040000 10bf0fe682799f3
$ git bisect log ac0a55648943e52 b1004747d74] UBUNTU: Ubuntu- 4.15.0- 116.117 c0a55648943e52b 1004747d74 97857fda041ccd4 c81cac46e00] UBUNTU: Ubuntu- 4.15.0- 112.113 7857fda041ccd4c 81cac46e00 652241f8522bb7e 7483d0fa74c] drm/amdgpu: Replace invalid device ID with a valid device ID 52241f8522bb7e7 483d0fa74c b7f7e195f80f5fd 9db5f93afea] PCI: Don't disable decoding when mmio_always_on is set 7f7e195f80f5fd9 db5f93afea fb0a92015372be8 8a84b291406] s390/mm: fix set_huge_pte_at() for empty ptes b0a92015372be88 a84b291406 0b3b645e73ef89b 1e75a543538] ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb b3b645e73ef89b1 e75a543538 e3afa26aa999432 5f8fcb19eda] tools api fs: Make xxx__mountpoint() more scalable 3afa26aa9994325 f8fcb19eda 7c5423ce2aa6442 f3e2f026568] net: ena: fix error returning in ena_com_ get_hash_ function( ) c5423ce2aa6442f 3e2f026568 fea92df69801315 b67ed0b73ce] clocksource: dw_apb_timer_of: Fix missing clockevent timers ea92df69801315b 67ed0b73ce 56848e59a6275ba 08b734accc8] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit 6848e59a6275ba0 8b734accc8 32da575c4f72afd c80143b809d] ARM: 8978/1: mm: make act_mm() respect THREAD_SIZE 2da575c4f72afdc 80143b809d 0ff8acefc16de6a fd57bb49b0a] spi: dw: Fix Rx-only DMA transfers ff8acefc16de6af d57bb49b0a 56848e59a6275ba 08b734accc8] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
git bisect start
# bad: [0e158155817fc6
git bisect bad 0e158155817fc6a
# good: [495149ddc61a59
git bisect good 495149ddc61a599
# bad: [672e9dec222925
git bisect bad 672e9dec2229256
# bad: [cebf29010efca3
git bisect bad cebf29010efca3b
# good: [8606a3b9726b9e
git bisect good 8606a3b9726b9ef
# good: [692fb8958a8fbb
git bisect good 692fb8958a8fbb0
# bad: [749a10fcdcb6e6
git bisect bad 749a10fcdcb6e6e
# good: [c0cf7189d1b30c
git bisect good c0cf7189d1b30c7
# good: [bec58f7e892951
git bisect good bec58f7e892951f
# bad: [40ed11e0049a58
git bisect bad 40ed11e0049a585
# good: [0f92ac206e457a
git bisect good 0f92ac206e457a3
# good: [9502e85ad1c847
git bisect good 9502e85ad1c8470
# first bad commit: [40ed11e0049a58