[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Merge



# HG changeset patch
# User Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
# Date 1314701218 -3600
# Node ID ac9aa65050e9abc8f1c12c8603acf3b99e22cddc
# Parent  469aa1fbd843d0797345ebf1e3d6c6df27ce744b
# Parent  2c687e70a34390b05ed8df833bd121e6f650193d
Merge
---


diff -r 469aa1fbd843 -r ac9aa65050e9 Config.mk
--- a/Config.mk Fri Aug 26 14:58:41 2011 +0100
+++ b/Config.mk Tue Aug 30 11:46:58 2011 +0100
@@ -1,5 +1,7 @@
 # -*- mode: Makefile; -*-
 
+-include $(XEN_ROOT)/.config
+
 # A debug build of Xen and tools?
 debug ?= y
 
@@ -223,5 +225,3 @@
 ifeq ($(OCAML_TOOLS),y)
 OCAML_TOOLS := $(shell ocamlopt -v > /dev/null 2>&1 && echo "y" || echo "n")
 endif
-
--include $(XEN_ROOT)/.config
diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/dmi_scan.c
--- a/xen/arch/x86/dmi_scan.c   Fri Aug 26 14:58:41 2011 +0100
+++ b/xen/arch/x86/dmi_scan.c   Tue Aug 30 11:46:58 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
diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/hpet.c
--- a/xen/arch/x86/hpet.c       Fri Aug 26 14:58:41 2011 +0100
+++ b/xen/arch/x86/hpet.c       Tue Aug 30 11:46:58 2011 +0100
@@ -342,7 +342,7 @@
 {
     struct msi_msg msg;
 
-    msi_compose_msg(NULL, irq, &msg);
+    msi_compose_msg(irq, &msg);
     hpet_msi_write(irq, &msg);
 }
 
diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c        Fri Aug 26 14:58:41 2011 +0100
+++ b/xen/arch/x86/irq.c        Tue Aug 30 11:46:58 2011 +0100
@@ -1670,7 +1670,7 @@
              && !desc->chip_data->used_vectors )
             desc->chip_data->used_vectors = &pdev->info.used_vectors;
         set_domain_irq_pirq(d, irq, info);
-        setup_msi_irq(pdev, msi_desc, irq);
+        setup_msi_irq(msi_desc, irq);
         spin_unlock_irqrestore(&desc->lock, flags);
     }
     else
diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/msi.c
--- a/xen/arch/x86/msi.c        Fri Aug 26 14:58:41 2011 +0100
+++ b/xen/arch/x86/msi.c        Tue Aug 30 11:46:58 2011 +0100
@@ -120,8 +120,7 @@
 /*
  * MSI message composition
  */
-void msi_compose_msg(struct pci_dev *pdev, int irq,
-                            struct msi_msg *msg)
+void msi_compose_msg(int irq, struct msi_msg *msg)
 {
     unsigned dest;
     cpumask_t domain;
@@ -414,11 +413,11 @@
     return entry;
 }
 
-int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int irq)
+int setup_msi_irq(struct msi_desc *msidesc, int irq)
 {
     struct msi_msg msg;
 
-    msi_compose_msg(dev, irq, &msg);
+    msi_compose_msg(irq, &msg);
     set_irq_msi(msidesc);
     write_msi_msg(irq_desc[irq].msi_desc, &msg);
 
diff -r 469aa1fbd843 -r ac9aa65050e9 xen/arch/x86/x86_64/mmconfig_64.c
--- a/xen/arch/x86/x86_64/mmconfig_64.c Fri Aug 26 14:58:41 2011 +0100
+++ b/xen/arch/x86/x86_64/mmconfig_64.c Tue Aug 30 11:46:58 2011 +0100
@@ -113,12 +113,11 @@
 }
 
 static void __iomem *mcfg_ioremap(const struct acpi_mcfg_allocation *cfg,
-                                  unsigned int prot)
+                                  unsigned long idx, unsigned int prot)
 {
     unsigned long virt, size;
 
-    virt = PCI_MCFG_VIRT_START +
-           ((unsigned long)cfg->pci_segment << mmcfg_pci_segment_shift) +
+    virt = PCI_MCFG_VIRT_START + (idx << mmcfg_pci_segment_shift) +
            (cfg->start_bus_number << 20);
     size = (cfg->end_bus_number - cfg->start_bus_number + 1) << 20;
     if (virt + size < virt || virt + size > PCI_MCFG_VIRT_END)
@@ -139,7 +138,7 @@
 
     if (pci_mmcfg_virt[idx].virt)
         return 0;
-    pci_mmcfg_virt[idx].virt = mcfg_ioremap(cfg, PAGE_HYPERVISOR_NOCACHE);
+    pci_mmcfg_virt[idx].virt = mcfg_ioremap(cfg, idx, PAGE_HYPERVISOR_NOCACHE);
     if (!pci_mmcfg_virt[idx].virt) {
         printk(KERN_ERR "PCI: Cannot map MCFG aperture for segment %04x\n",
                cfg->pci_segment);
@@ -160,7 +159,7 @@
      * the necessary L4 entries get populated (so that they get properly
      * propagated to guest domains' page tables).
      */
-    mcfg_ioremap(cfg, 0);
+    mcfg_ioremap(cfg, idx, 0);
     printk(KERN_WARNING "PCI: Not using MCFG for segment %04x bus %02x-%02x\n",
            cfg->pci_segment, cfg->start_bus_number, cfg->end_bus_number);
 }
diff -r 469aa1fbd843 -r ac9aa65050e9 xen/include/asm-x86/msi.h
--- a/xen/include/asm-x86/msi.h Fri Aug 26 14:58:41 2011 +0100
+++ b/xen/include/asm-x86/msi.h Tue Aug 30 11:46:58 2011 +0100
@@ -81,7 +81,7 @@
 extern int pci_enable_msi(struct msi_info *msi, struct msi_desc **desc);
 extern void pci_disable_msi(struct msi_desc *desc);
 extern void pci_cleanup_msi(struct pci_dev *pdev);
-extern int setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc, int irq);
+extern int setup_msi_irq(struct msi_desc *desc, int irq);
 extern void teardown_msi_irq(int irq);
 extern int msi_free_vector(struct msi_desc *entry);
 extern int pci_restore_msi_state(struct pci_dev *pdev);
@@ -221,6 +221,5 @@
        __u32   hi_address;
 } __attribute__ ((packed));
 
-void msi_compose_msg(struct pci_dev *pdev, int irq,
-                            struct msi_msg *msg);
+void msi_compose_msg(int irq, struct msi_msg *);
 #endif /* __ASM_MSI_H */

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.