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 kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel