summaryrefslogtreecommitdiffstats
path: root/fix_xen_guest_on_old_EC2.patch
diff options
context:
space:
mode:
authorJesse Keating <jkeating@redhat.com>2010-07-29 16:46:31 -0700
committerJesse Keating <jkeating@redhat.com>2010-07-29 16:46:31 -0700
commit7a32965a104c3363e8505fe566531fcf071cced7 (patch)
treee45cb84552b2b022f49047bbddd9d887753c35bc /fix_xen_guest_on_old_EC2.patch
parent64ba2e5ffde5f2418eb26c700cb0ab62b04e5013 (diff)
downloadkernel-7a32965a104c3363e8505fe566531fcf071cced7.tar.gz
kernel-7a32965a104c3363e8505fe566531fcf071cced7.tar.xz
kernel-7a32965a104c3363e8505fe566531fcf071cced7.zip
initial srpm import
Diffstat (limited to 'fix_xen_guest_on_old_EC2.patch')
-rw-r--r--fix_xen_guest_on_old_EC2.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/fix_xen_guest_on_old_EC2.patch b/fix_xen_guest_on_old_EC2.patch
new file mode 100644
index 000000000..e86200295
--- /dev/null
+++ b/fix_xen_guest_on_old_EC2.patch
@@ -0,0 +1,34 @@
+
+Legacy hypervisors (RHEL 5.0 and RHEL 5.1) do not handle guest writes to
+cr4 gracefully. If a guest attempts to write a bit of cr4 that is
+unsupported, then the HV is so offended it crashes the domain. While
+later guest kernels (such as RHEL6) don't assume the HV supports all
+features, they do expect nicer responses. That assumption introduced
+code that probes whether or not xsave is supported early in the boot. So
+now when attempting to boot a RHEL6 guest on RHEL5.0 or RHEL5.1 an early
+crash will occur.
+
+This patch is quite obviously an undesirable hack. The real fix for this
+problem should be in the HV, and is, in later HVs. However, to support
+running on old HVs, RHEL6 can take this small change. No impact will
+occur for running on any RHEL HV (not even RHEL 5.5 supports xsave).
+There is only potential for guest performance loss on upstream Xen.
+
+---
+ arch/x86/xen/enlighten.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
+index 52f8e19..6db3d67 100644
+--- a/arch/x86/xen/enlighten.c
++++ b/arch/x86/xen/enlighten.c
+@@ -802,6 +802,7 @@ static void xen_write_cr4(unsigned long cr4)
+ {
+ cr4 &= ~X86_CR4_PGE;
+ cr4 &= ~X86_CR4_PSE;
++ cr4 &= ~X86_CR4_OSXSAVE;
+
+ native_write_cr4(cr4);
+ }
+--
+1.6.6.1