WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] x86: work around certain Intel BIOSes cau

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] x86: work around certain Intel BIOSes causing (transient) hangs during boot
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Tue, 30 Aug 2011 20:22:10 +0100
Delivery-date: Tue, 30 Aug 2011 12:22:43 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxxxx>
# Date 1314443678 -3600
# Node ID e17f70940d1f57fe04dde3bf4e243f75c89f0d0e
# Parent  4705eca37c9fac9d13867a856bdcfa8b7bad56c6
x86: work around certain Intel BIOSes causing (transient) hangs during boot

They apparently leave the USB legacy emulation bits set in ICH10's
SMI Control and Enable register, but fail to handle the resulting SMIs
gracefully. The hangs can apparently extend indefinitely, but are
commonly observed to last between a few seconds and a minute.

This assumes that only ICH10-based systems on Intel main boards with
Intel BIOS may be affected. Until Intel comes up with a more precise
identification of affected BIOSes, all Intel ones on Intel boards
will get this workaround applied.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---


diff -r 4705eca37c9f -r e17f70940d1f xen/arch/x86/dmi_scan.c
--- a/xen/arch/x86/dmi_scan.c   Sat Aug 27 12:13:39 2011 +0100
+++ b/xen/arch/x86/dmi_scan.c   Sat Aug 27 12:14:38 2011 +0100
@@ -10,6 +10,8 @@
 #include <asm/system.h>
 #include <xen/dmi.h>
 #include <xen/efi.h>
+#include <xen/pci.h>
+#include <xen/pci_regs.h>
 
 #define bt_ioremap(b,l)  ((void *)__acpi_map_table(b,l))
 #define bt_iounmap(b,l)  ((void)0)
@@ -278,6 +280,28 @@
        return 0;
 }
 
+static int __init ich10_bios_quirk(struct dmi_system_id *d)
+{
+    u32 port, smictl;
+
+    if ( pci_conf_read16(0, 0x1f, 0, PCI_VENDOR_ID) != 0x8086 )
+        return 0;
+
+    switch ( pci_conf_read16(0, 0x1f, 0, PCI_DEVICE_ID) ) {
+    case 0x3a14:
+    case 0x3a16:
+    case 0x3a18:
+    case 0x3a1a:
+        port = (pci_conf_read16(0, 0x1f, 0, 0x40) & 0xff80) + 0x30;
+        smictl = inl(port);
+        /* turn off LEGACY_USB{,2}_EN if enabled */
+        if ( smictl & 0x20008 )
+            outl(smictl & ~0x20008, port);
+        break;
+    }
+
+    return 0;
+}
 
 #ifdef CONFIG_ACPI_SLEEP
 static __init int reset_videomode_after_s3(struct dmi_blacklist *d)
@@ -342,6 +366,18 @@
                        } },
 #endif
 
+       { ich10_bios_quirk, "Intel board & BIOS",
+               /*
+                * BIOS leaves legacy USB emulation enabled while
+                * SMM can't properly handle it.
+                */
+               {
+                       MATCH(DMI_BOARD_VENDOR, "Intel Corp"),
+                       MATCH(DMI_BIOS_VENDOR, "Intel Corp"),
+                       NO_MATCH, NO_MATCH
+               }
+       },
+
 #ifdef CONFIG_ACPI_BOOT
        /*
         * If your system is blacklisted here, but you find that acpi=force

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] x86: work around certain Intel BIOSes causing (transient) hangs during boot, Xen patchbot-unstable <=