x86: Simplify RDMSR pass-through emulation for certain
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 16 Sep 2008 12:18:32 +0000 (13:18 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 16 Sep 2008 12:18:32 +0000 (13:18 +0100)
explicitly-named MSRs (but keep the names in the source code in case
we tighten up RDMSR emulation later).

Also add MSR_AMD_PATCHLEVEL MSR as explicitly required (for Solaris).

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/traps.c

index f40a1ed3f73bbc911ba536a53e171d48257ea160..aad666fb5f4950c7be8978165ed99ad5808fa14b 100644 (file)
@@ -2223,10 +2223,6 @@ static int emulate_privileged_op(struct cpu_user_regs *regs)
             if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) != 0 )
                 goto fail;
             break;
-        case MSR_EFER:
-            if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
-                goto fail;
-            break;
         case MSR_IA32_MISC_ENABLE:
             if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
                 goto fail;
@@ -2236,12 +2232,9 @@ static int emulate_privileged_op(struct cpu_user_regs *regs)
                          MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL |
                          MSR_IA32_MISC_ENABLE_XTPR_DISABLE;
             break;
+        case MSR_EFER:
         case MSR_IA32_THERM_CONTROL:
-            if ( boot_cpu_data.x86_vendor != X86_VENDOR_INTEL )
-                goto fail;
-            if ( rdmsr_safe(regs->ecx, regs->eax, regs->edx) )
-                goto fail;
-            break;
+        case MSR_AMD_PATCHLEVEL:
         default:
             if ( rdmsr_hypervisor_regs(regs->ecx, &l, &h) )
             {