Hi,
this patch adds support for the lbr MSR emulation, it also enables
support for Windows XP 64bit guests.
Signed-off-by: Joerg Roedel <[EMAIL PROTECTED]>
Signed-off-by: Markus Rechberger <[EMAIL PROTECTED]>
--- svm.c.orig 2008-01-23 10:04:14.000000000 +0100
+++ svm.c 2008-01-25 12:52:11.000000000 +0100
@@ -1099,6 +1100,21 @@
case MSR_IA32_SYSENTER_ESP:
*data = svm->vmcb->save.sysenter_esp;
break;
+ case MSR_IA32_DEBUGCTLMSR:
+ *data = svm->vmcb->save.dbgctl;
+ break;
+ case MSR_IA32_LASTBRANCHFROMIP:
+ *data = svm->vmcb->save.br_from;
+ break;
+ case MSR_IA32_LASTBRANCHTOIP:
+ *data = svm->vmcb->save.br_to;
+ break;
+ case MSR_IA32_LASTINTFROMIP:
+ *data = svm->vmcb->save.last_excp_from;
+ break;
+ case MSR_IA32_LASTINTTOIP:
+ *data = svm->vmcb->save.last_excp_to;
+ break;
default:
return kvm_get_msr_common(vcpu, ecx, data);
}
@@ -1171,6 +1187,19 @@
if (data != 0)
goto unhandled;
break;
+ case MSR_IA32_DEBUGCTLMSR:
+ svm->vmcb->save.dbgctl = data;
+ if (svm->vmcb->save.dbgctl && svm_has(SVM_FEATURE_LBRV)) {
+ void *msrpm_va;
+ svm->vmcb->control.lbr_ctl = 1;
+ msrpm_va = page_address(pfn_to_page(msrpm_base >>
PAGE_SHIFT));
+ set_msr_interception(msrpm_va, MSR_IA32_DEBUGCTLMSR, 0,
0);
+ set_msr_interception(msrpm_va,
MSR_IA32_LASTBRANCHFROMIP, 0, 0);
+ set_msr_interception(msrpm_va, MSR_IA32_LASTBRANCHTOIP,
0, 0);
+ set_msr_interception(msrpm_va, MSR_IA32_LASTINTFROMIP,
0, 0);
+ set_msr_interception(msrpm_va, MSR_IA32_LASTINTTOIP, 0,
0);
+ }
+ break;
default:
unhandled:
return kvm_set_msr_common(vcpu, ecx, data);
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel