- Update Xen patches to 3.3-rc5 and c/s 1157.
[linux-flexiantxendom0-3.2.10.git] / arch / x86 / kernel / quirks.c
index 03920a1..e22394c 100644 (file)
@@ -4,9 +4,7 @@
 #include <linux/pci.h>
 #include <linux/irq.h>
 
-#include <asm/hpet.h>
-
-#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI)
+#if defined(CONFIG_X86_IO_APIC) && (defined(CONFIG_SMP) || defined(CONFIG_XEN)) && defined(CONFIG_PCI)
 
 static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
 {
@@ -34,10 +32,21 @@ static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
        if (!(word & (1 << 13))) {
                dev_info(&dev->dev, "Intel E7520/7320/7525 detected; "
                        "disabling irq balancing and affinity\n");
+#ifndef CONFIG_XEN
                noirqdebug_setup("");
 #ifdef CONFIG_PROC_FS
                no_irq_affinity = 1;
 #endif
+#else
+               {
+                       struct xen_platform_op op = {
+                               .cmd = XENPF_platform_quirk,
+                               .u.platform_quirk.quirk_id = QUIRK_NOIRQBALANCING
+                       };
+
+                       WARN_ON(HYPERVISOR_platform_op(&op));
+               }
+#endif
        }
 
        /* put back the original value for config space*/
@@ -53,6 +62,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH,
 #endif
 
 #if defined(CONFIG_HPET_TIMER)
+#include <asm/hpet.h>
+
 unsigned long force_hpet_address;
 
 static enum {