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

[Xen-changelog] [xen-4.1-testing] Revert c/s 23666:b96f8bdcaa15 KEXEC: disconnect all PCI devices from the PCI bus on crash



# HG changeset patch
# User Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
# Date 1321114442 0
# Node ID 9702967e89dd005a8b3f24eb1d10c46712c2e3ed
# Parent  55879870fc8f8bb004325146d0c183a2d756ce35
Revert c/s 23666:b96f8bdcaa15 KEXEC: disconnect all PCI devices from the PCI 
bus on crash

It turns out that this causes all mannor of problems on certain
motherboards (so far with no pattern I can discern)

Problems include:
* Hanging forever checking hlt instruction.
* Panics when trying to change switch root device
* Drivers hanging when trying to check for interrupts.

From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxx>
Committed-by: Keir Fraser <keir@xxxxxxx>
xen-unstable changeset:   24137:0844b17df7a9
xen-unstable date:        Fri Nov 11 18:14:35 2011 +0000
---


diff -r 55879870fc8f -r 9702967e89dd xen/arch/x86/crash.c
--- a/xen/arch/x86/crash.c      Sat Nov 12 16:11:21 2011 +0000
+++ b/xen/arch/x86/crash.c      Sat Nov 12 16:14:02 2011 +0000
@@ -28,7 +28,6 @@
 #include <asm/apic.h>
 #include <asm/io_apic.h>
 #include <xen/iommu.h>
-#include <xen/pci.h>
 #include <asm/hpet.h>
 
 static atomic_t waiting_for_crash_ipi;
@@ -83,8 +82,6 @@
         msecs--;
     }
 
-    disconnect_pci_devices();
-
     /* Crash shutdown any IOMMU functionality as the crashdump kernel is not
      * happy when booting if interrupt/dma remapping is still enabled */
     iommu_crash_shutdown();
diff -r 55879870fc8f -r 9702967e89dd xen/drivers/passthrough/pci.c
--- a/xen/drivers/passthrough/pci.c     Sat Nov 12 16:11:21 2011 +0000
+++ b/xen/drivers/passthrough/pci.c     Sat Nov 12 16:14:02 2011 +0000
@@ -499,25 +499,6 @@
     return 0;
 }
 
-/* Disconnect all PCI devices from the PCI buses. From the PCI spec:
- *   "When a 0 is written to [the COMMAND] register, the device is
- *    logically disconnected from the PCI bus for all accesses except
- *    configuration accesses. All devices are required to support
- *    this base level of functionality."
- */
-void disconnect_pci_devices(void)
-{
-    struct pci_dev *pdev;
-
-    spin_lock(&pcidevs_lock);
-
-    list_for_each_entry ( pdev, &alldevs_list, alldevs_list )
-        pci_conf_write16(pdev->bus, PCI_SLOT(pdev->devfn),
-                         PCI_FUNC(pdev->devfn), PCI_COMMAND, 0);
-
-    spin_unlock(&pcidevs_lock);
-}
-
 #ifdef SUPPORT_MSI_REMAPPING
 static void dump_pci_devices(unsigned char ch)
 {
diff -r 55879870fc8f -r 9702967e89dd xen/include/xen/pci.h
--- a/xen/include/xen/pci.h     Sat Nov 12 16:11:21 2011 +0000
+++ b/xen/include/xen/pci.h     Sat Nov 12 16:14:02 2011 +0000
@@ -94,8 +94,6 @@
 struct pci_dev *pci_get_pdev(int bus, int devfn);
 struct pci_dev *pci_get_pdev_by_domain(struct domain *d, int bus, int devfn);
 
-void disconnect_pci_devices(void);
-
 uint8_t pci_conf_read8(
     unsigned int bus, unsigned int dev, unsigned int func, unsigned int reg);
 uint16_t pci_conf_read16(

_______________________________________________
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®.