2015-04-02 03:55:03

by Fam Zheng

[permalink] [raw]
Subject: Re: [PATCH v5 04/10] pci: don't disable msi/msix at shutdown

On Sun, 03/29 17:04, Michael S. Tsirkin wrote:
> This partially reverts commit d52877c7b1afb8c37ebe17e2005040b79cb618b0:
> "pci/irq: let pci_device_shutdown to call pci_msi_shutdown v2"
>
> It's un-necessary now that we disable msi at start, and it actually
> turns out to cause problems: some device drivers don't register a level
> interrupt handler when they detect msi/msix capability, switching off
> msi while device is going causes device to assert a level interrupt
> which is never de-asserted, causing a kernel hang.
>
> In particular, this was observed with virtio.
>
> Cc: Yinghai Lu <[email protected]>
> Cc: Ulrich Obergfell <[email protected]>
> Cc: Rusty Russell <[email protected]>
> Reported-by: Fam Zheng <[email protected]>
> Signed-off-by: Michael S. Tsirkin <[email protected]>

Reviewed-by: Fam Zheng <[email protected]>
Tested-by: Fam Zheng <[email protected]>

> ---
> drivers/pci/pci-driver.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
> index 3cb2210..38a602c 100644
> --- a/drivers/pci/pci-driver.c
> +++ b/drivers/pci/pci-driver.c
> @@ -450,8 +450,6 @@ static void pci_device_shutdown(struct device *dev)
>
> if (drv && drv->shutdown)
> drv->shutdown(pci_dev);
> - pci_msi_shutdown(pci_dev);
> - pci_msix_shutdown(pci_dev);
>
> #ifdef CONFIG_KEXEC
> /*
> --
> MST
>