aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/svm/svm.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/x86/hvm/svm/svm.c')
-rw-r--r--xen/arch/x86/hvm/svm/svm.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index f175216a28..134b8ebaaa 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1070,6 +1070,18 @@ static int svm_msr_read_intercept(struct cpu_user_regs *regs)
break;
}
+ if ( boot_cpu_data.x86 == 0xf && ecx == MSR_F10_BU_CFG )
+ {
+ /* Win2k8 x64 reads this MSR on revF chips, where it
+ * wasn't publically available; it uses a magic constant
+ * in %rdi as a password, which we don't have in
+ * rdmsr_safe(). Since we'll ignore the later writes,
+ * just use a plausible value here (the reset value from
+ * rev10h chips) if the real CPU didn't provide one. */
+ msr_content = 0x0000000010200020ull;
+ break;
+ }
+
goto gpf;
}