• Jon Doron's avatar
    x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit · f7d31e65
    Jon Doron authored
    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.
    Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarJon Doron <arilou@gmail.com>
    Message-Id: <20200424113746.3473563-2-arilou@gmail.com>
    Reviewed-by: default avatarRoman Kagan <rvkagan@yandex-team.ru>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    f7d31e65
kvm.h 46.8 KB