From: Greg Kroah-Hartman Date: Fri, 9 Jul 2010 21:55:05 +0000 (-0700) Subject: 32 files X-Git-Tag: v2.6.27.49~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=481ae69a066b0f3b4b6e3b63107dc770b446baad;p=thirdparty%2Fkernel%2Fstable-queue.git 32 files --- diff --git a/queue-2.6.32/series b/queue-2.6.32/series new file mode 100644 index 00000000000..27fa7a034fd --- /dev/null +++ b/queue-2.6.32/series @@ -0,0 +1 @@ +virtio-pci-disable-msi-at-startup.patch diff --git a/queue-2.6.32/virtio-pci-disable-msi-at-startup.patch b/queue-2.6.32/virtio-pci-disable-msi-at-startup.patch new file mode 100644 index 00000000000..24c8e034b52 --- /dev/null +++ b/queue-2.6.32/virtio-pci-disable-msi-at-startup.patch @@ -0,0 +1,53 @@ +From b03214d559471359e2a85ae256686381d0672f29 Mon Sep 17 00:00:00 2001 +From: Michael S. Tsirkin +Date: Wed, 23 Jun 2010 22:49:06 -0600 +Subject: virtio-pci: disable msi at startup + +From: Michael S. Tsirkin + +commit b03214d559471359e2a85ae256686381d0672f29 upstream. + +virtio-pci resets the device at startup by writing to the status +register, but this does not clear the pci config space, +specifically msi enable status which affects register +layout. + +This breaks things like kdump when they try to use e.g. virtio-blk. + +Fix by forcing msi off at startup. Since pci.c already has +a routine to do this, we export and use it instead of duplicating code. + +Signed-off-by: Michael S. Tsirkin +Tested-by: Vivek Goyal +Acked-by: Jesse Barnes +Cc: linux-pci@vger.kernel.org +Signed-off-by: Rusty Russell +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pci.c | 1 + + drivers/virtio/virtio_pci.c | 3 +++ + 2 files changed, 4 insertions(+) + +--- a/drivers/pci/pci.c ++++ b/drivers/pci/pci.c +@@ -2046,6 +2046,7 @@ void pci_msi_off(struct pci_dev *dev) + pci_write_config_word(dev, pos + PCI_MSIX_FLAGS, control); + } + } ++EXPORT_SYMBOL_GPL(pci_msi_off); + + #ifndef HAVE_ARCH_PCI_SET_DMA_MASK + /* +--- a/drivers/virtio/virtio_pci.c ++++ b/drivers/virtio/virtio_pci.c +@@ -635,6 +635,9 @@ static int __devinit virtio_pci_probe(st + INIT_LIST_HEAD(&vp_dev->virtqueues); + spin_lock_init(&vp_dev->lock); + ++ /* Disable MSI/MSIX to bring device to a known good state. */ ++ pci_msi_off(pci_dev); ++ + /* enable the device */ + err = pci_enable_device(pci_dev); + if (err)