virtio-pci: disable msi at startup

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 <[email protected]>
Tested-by: Vivek Goyal <[email protected]>
Acked-by: Jesse Barnes <[email protected]>
Cc: [email protected]
Signed-off-by: Rusty Russell <[email protected]>
Cc: [email protected]
This commit is contained in:
Michael S. Tsirkin 2010-06-23 22:49:06 -06:00 • committed by Rusty Russell
commit b03214d559
2 changed files with 4 additions and 0 deletions

View file

@ -636,6 +636,9 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
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)