diff -r 57033bc8cd30 xen/arch/x86/hvm/svm/vmcb.c --- a/xen/arch/x86/hvm/svm/vmcb.c Fri Aug 07 17:31:27 2009 +0100 +++ b/xen/arch/x86/hvm/svm/vmcb.c Mon Aug 10 10:20:03 2009 +0200 @@ -155,6 +155,7 @@ static int construct_vmcb(struct vcpu *v svm_disable_intercept_for_msr(v, MSR_LSTAR); svm_disable_intercept_for_msr(v, MSR_STAR); svm_disable_intercept_for_msr(v, MSR_SYSCALL_MASK); + svm_disable_intercept_for_msr(v, MSR_IA32_CR_PAT); vmcb->msrpm_base_pa = (u64)virt_to_maddr(arch_svm->msrpm); vmcb->iopm_base_pa = (u64)virt_to_maddr(hvm_io_bitmap); @@ -247,6 +250,8 @@ static int construct_vmcb(struct vcpu *v else { vmcb->exception_intercepts |= (1U << TRAP_page_fault); + if ( cpu_has_pat ) + svm_enable_intercept_for_msr(v, MSR_IA32_CR_PAT); } if ( cpu_has_pause_filter )