Change 5c371b31be3203 in stable breaks Xen

From: Jeremy Fitzhardinge
Date: Tue Nov 25 2008 - 16:26:48 EST


I have a report of Xen breaking between 2.6.27.5 and .6. I bisected it down to change:

commit 5c371b31be32033b0a4a993431484da8a2305369
Author: Yinghai Lu <yhlu.kernel@xxxxxxxxx>
Date: Mon Sep 22 02:52:26 2008 -0700

x86: fix CONFIG_X86_RESERVE_LOW_64K=y
commit 2216d199b1430d1c0affb1498a9ebdbd9c0de439 upstream
The bad_bios_dmi_table() quirk never triggered because we do DMI setup
too late. Move it a bit earlier.
Also change the CONFIG_X86_RESERVE_LOW_64K quirk to operate on the e820
table directly instead of messing with early reservations - this handles
overlaps (which do occur in this low range of RAM) more gracefully.
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

I haven't completely root-caused why this is OK in mainline but failing in stable, but this patch works around the problem.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>

diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 455575b..abed1dd 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -7,6 +7,7 @@
#include <linux/bootmem.h>
#include <linux/slab.h>
#include <asm/dmi.h>
+#include <asm/xen/hypervisor.h>

/*
* DMI stands for "Desktop Management Interface". It is part
@@ -364,6 +365,11 @@ void __init dmi_scan_machine(void)
char __iomem *p, *q;
int rc;

+#ifdef CONFIG_XEN
+ if (is_running_on_xen())
+ return;
+#endif
+
if (efi_enabled) {
if (efi.smbios == EFI_INVALID_TABLE_ADDR)
goto out;


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/