File 19167-recover-pat-value-s3-resume.patch of Package xen

# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1234436835 0
# Node ID 0ae7eade15f4e70410b412a2b35d9102efea4f24
# Parent  24d845f3d3ea3ffcad8a84a60239bf105e0fb76e
x86: recover pat value for bsp after S3 resume.

host pat is set to cover all memory types by Xen, which is
necessary to support guest mtrr/pat, especially when device
is passthroughed with VT-d. However pat on bsp is not=20
recovered which could make assigned device defunct after S3
resume

Signed-off-by Kevin Tian <kevin.tian@intel.com>
xen-unstable changeset:   19167:8303bd33d0304ed4f4edc94960c874eabad60563
xen-unstable date:        Thu Feb 05 12:14:09 2009 +0000

Index: xen-3.3.1-testing/xen/arch/x86/acpi/suspend.c
===================================================================
--- xen-3.3.1-testing.orig/xen/arch/x86/acpi/suspend.c
+++ xen-3.3.1-testing/xen/arch/x86/acpi/suspend.c
@@ -65,6 +65,9 @@ void restore_rest_processor_state(void)
     /* Reload FPU state on next FPU use. */
     stts();
 
+    if (cpu_has_pat)
+        wrmsrl(MSR_IA32_CR_PAT, host_pat);
+
     mtrr_ap_init();
     mcheck_init(&boot_cpu_data);
 }
Index: xen-3.3.1-testing/xen/include/asm-x86/processor.h
===================================================================
--- xen-3.3.1-testing.orig/xen/include/asm-x86/processor.h
+++ xen-3.3.1-testing/xen/include/asm-x86/processor.h
@@ -187,6 +187,7 @@ extern struct cpuinfo_x86 cpu_data[];
 #define current_cpu_data boot_cpu_data
 #endif
 
+extern u64 host_pat;
 extern int phys_proc_id[NR_CPUS];
 extern int cpu_core_id[NR_CPUS];
 
openSUSE Build Service is sponsored by