• Oliver Upton's avatar
    KVM: x86: Allow userspace to opt out of hypercall patching · f1a9761f
    Oliver Upton authored
    KVM handles the VMCALL/VMMCALL instructions very strangely. Even though
    both of these instructions really should #UD when executed on the wrong
    vendor's hardware (i.e. VMCALL on SVM, VMMCALL on VMX), KVM replaces the
    guest's instruction with the appropriate instruction for the vendor.
    Nonetheless, older guest kernels without commit c1118b36 ("x86: kvm:
    use alternatives for VMCALL vs. VMMCALL if kernel text is read-only")
    do not patch in the appropriate instruction using alternatives, likely
    motivating KVM's intervention.
    
    Add a quirk allowing userspace to opt out of hypercall patching. If the
    quirk is disabled, KVM synthesizes a #UD in the guest.
    Signed-off-by: default avatarOliver Upton <oupton@google.com>
    Message-Id: <20220316005538.2282772-2-oupton@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    f1a9761f
x86.c 340 KB