]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
32 files
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Jul 2010 21:55:05 +0000 (14:55 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Jul 2010 21:55:05 +0000 (14:55 -0700)
queue-2.6.32/series [new file with mode: 0644]
queue-2.6.32/virtio-pci-disable-msi-at-startup.patch [new file with mode: 0644]

diff --git a/queue-2.6.32/series b/queue-2.6.32/series
new file mode 100644 (file)
index 0000000..27fa7a0
--- /dev/null
@@ -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 (file)
index 0000000..24c8e03
--- /dev/null
@@ -0,0 +1,53 @@
+From b03214d559471359e2a85ae256686381d0672f29 Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 23 Jun 2010 22:49:06 -0600
+Subject: virtio-pci: disable msi at startup
+
+From: Michael S. Tsirkin <mst@redhat.com>
+
+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 <mst@redhat.com>
+Tested-by: Vivek Goyal <vgoyal@redhat.com>
+Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: linux-pci@vger.kernel.org
+Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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)