mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/hvm: Disable cross-vendor handling in #UD handler
Remove cross-vendor support now that VMs can no longer have a different vendor than the host. No functional change intended. Signed-off-by: Alejandro Vallejo <alejandro.garciavallejo@amd.com> Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
c520286a53
commit
e39e473188
3 files changed
+4
-21
No files matched your search
+2
-17
@@ -3829,28 +3829,13 @@ int hvm_descriptor_access_intercept(uint64_t exit_info,
|
||||
return X86EMUL_OKAY;
|
||||
}
|
||||
|
||||
static bool cf_check is_cross_vendor(
|
||||
const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt)
|
||||
{
|
||||
switch ( ctxt->opcode )
|
||||
{
|
||||
case X86EMUL_OPC(0x0f, 0x05): /* syscall */
|
||||
case X86EMUL_OPC(0x0f, 0x34): /* sysenter */
|
||||
case X86EMUL_OPC(0x0f, 0x35): /* sysexit */
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void hvm_ud_intercept(struct cpu_user_regs *regs)
|
||||
{
|
||||
struct vcpu *cur = current;
|
||||
bool should_emulate =
|
||||
cur->domain->arch.cpuid->x86_vendor != boot_cpu_data.x86_vendor;
|
||||
bool should_emulate = false;
|
||||
struct hvm_emulate_ctxt ctxt;
|
||||
|
||||
hvm_emulate_init_once(&ctxt, opt_hvm_fep ? NULL : is_cross_vendor, regs);
|
||||
hvm_emulate_init_once(&ctxt, NULL, regs);
|
||||
|
||||
if ( opt_hvm_fep )
|
||||
{
|
||||
|
||||
@@ -543,8 +543,7 @@ static void cf_check svm_cpuid_policy_changed(struct vcpu *v)
|
||||
const struct cpu_policy *cp = v->domain->arch.cpu_policy;
|
||||
u32 bitmap = vmcb_get_exception_intercepts(vmcb);
|
||||
|
||||
if ( opt_hvm_fep ||
|
||||
(v->domain->arch.cpuid->x86_vendor != boot_cpu_data.x86_vendor) )
|
||||
if ( opt_hvm_fep )
|
||||
bitmap |= (1U << X86_EXC_UD);
|
||||
else
|
||||
bitmap &= ~(1U << X86_EXC_UD);
|
||||
|
||||
@@ -802,8 +802,7 @@ static void cf_check vmx_cpuid_policy_changed(struct vcpu *v)
|
||||
const struct cpu_policy *cp = v->domain->arch.cpu_policy;
|
||||
int rc = 0;
|
||||
|
||||
if ( opt_hvm_fep ||
|
||||
(v->domain->arch.cpuid->x86_vendor != boot_cpu_data.x86_vendor) )
|
||||
if ( opt_hvm_fep )
|
||||
v->arch.hvm.vmx.exception_bitmap |= (1U << X86_EXC_UD);
|
||||
else
|
||||
v->arch.hvm.vmx.exception_bitmap &= ~(1U << X86_EXC_UD);
|
||||
|
||||