35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
|
|
||
|
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
|