Sean Christopherson 50b2d49baf KVM: x86: Inject #UD on emulated XSETBV if XSAVES isn't enabled
Inject #UD when emulating XSETBV if CR4.OSXSAVE is not set.  This also
covers the "XSAVE not supported" check, as setting CR4.OSXSAVE=1 #GPs if
XSAVE is not supported (and userspace gets to keep the pieces if it
forces incoherent vCPU state).

Add a comment to kvm_emulate_xsetbv() to call out that the CPU checks
CR4.OSXSAVE before checking for intercepts.  AMD'S APM implies that #UD
has priority (says that intercepts are checked before #GP exceptions),
while Intel's SDM says nothing about interception priority.  However,
testing on hardware shows that both AMD and Intel CPUs prioritize the #UD
over interception.

Fixes: 02d4160fbd76 ("x86: KVM: add xsetbv to the emulator")
Cc: stable@vger.kernel.org
Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220824033057.3576315-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-09-22 17:04:20 -04:00
..
2022-08-27 15:38:00 -07:00
2022-08-04 12:12:54 -07:00
2022-09-01 19:21:27 -04:00
2022-08-04 14:59:54 -07:00
2022-04-11 18:04:27 +02:00
2022-08-28 10:10:23 -07:00
2022-04-14 14:09:43 +02:00
2022-08-28 10:10:23 -07:00
2022-08-07 17:52:35 -07:00
2022-05-23 17:51:12 -07:00
2022-08-06 17:45:37 -07:00
2022-07-25 10:32:32 +02:00
2021-12-11 09:09:45 +01:00
2022-08-21 10:06:28 -07:00