diff -r b9cdcf502aa3 xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c Thu Aug 06 11:14:48 2009 +0100 +++ b/xen/arch/x86/hvm/svm/svm.c Fri Aug 07 12:35:23 2009 +0200 @@ -266,7 +266,7 @@ static int svm_vmcb_restore(struct vcpu if ( paging_mode_hap(v->domain) ) { vmcb->np_enable = 1; - vmcb->g_pat = 0x0007040600070406ULL; /* guest PAT */ + vmcb->g_pat = MSR_IA32_CR_PAT_RESET; /* guest PAT */ vmcb->h_cr3 = pagetable_get_paddr(v->domain->arch.phys_table); } diff -r b9cdcf502aa3 xen/arch/x86/hvm/svm/vmcb.c --- a/xen/arch/x86/hvm/svm/vmcb.c Thu Aug 06 11:14:48 2009 +0100 +++ b/xen/arch/x86/hvm/svm/vmcb.c Fri Aug 07 12:35:23 2009 +0200 @@ -232,7 +232,7 @@ static int construct_vmcb(struct vcpu *v if ( paging_mode_hap(v->domain) ) { vmcb->np_enable = 1; /* enable nested paging */ - vmcb->g_pat = 0x0007040600070406ULL; /* guest PAT */ + vmcb->g_pat = MSR_IA32_CR_PAT_RESET; /* guest PAT */ vmcb->h_cr3 = pagetable_get_paddr(v->domain->arch.phys_table); /* No point in intercepting CR3 reads/writes. */ diff -r b9cdcf502aa3 xen/arch/x86/hvm/vmx/vmcs.c --- a/xen/arch/x86/hvm/vmx/vmcs.c Thu Aug 06 11:14:48 2009 +0100 +++ b/xen/arch/x86/hvm/vmx/vmcs.c Fri Aug 07 12:35:23 2009 +0200 @@ -743,7 +743,7 @@ static int construct_vmcs(struct vcpu *v u64 host_pat, guest_pat; rdmsrl(MSR_IA32_CR_PAT, host_pat); - guest_pat = 0x7040600070406ULL; + guest_pat = MSR_IA32_CR_PAT_RESET; __vmwrite(HOST_PAT, host_pat); __vmwrite(GUEST_PAT, guest_pat); diff -r b9cdcf502aa3 xen/include/asm-x86/msr-index.h --- a/xen/include/asm-x86/msr-index.h Thu Aug 06 11:14:48 2009 +0100 +++ b/xen/include/asm-x86/msr-index.h Fri Aug 07 12:35:23 2009 +0200 @@ -87,6 +87,7 @@ #define MSR_IA32_MTRR_PHYSMASK7 0x0000020f #define MSR_IA32_CR_PAT 0x00000277 +#define MSR_IA32_CR_PAT_RESET 0x0007040600070406ULL #define MSR_IA32_MC0_CTL 0x00000400 #define MSR_IA32_MC0_STATUS 0x00000401