Displaying 20 results from an estimated 24 matches for "pci_msi_shutdown".
2015 Mar 12
2
[RFC PATCH] PCI: Disable MSI/MSI-X only if device is shutdown
...river.c
> +++ b/drivers/pci/pci-driver.c
> @@ -448,10 +448,11 @@ static void pci_device_shutdown(struct device *dev)
>
> pm_runtime_resume(dev);
>
> - if (drv && drv->shutdown)
> + if (drv && drv->shutdown) {
> drv->shutdown(pci_dev);
> - pci_msi_shutdown(pci_dev);
> - pci_msix_shutdown(pci_dev);
> + pci_msi_shutdown(pci_dev);
> + pci_msix_shutdown(pci_dev);
> + }
>
> #ifdef CONFIG_KEXEC
> /*
>
The patch may be okay, but I think the bug here is also that virtio-pci
is not defining a .shutdown callback. It should def...
2015 Mar 12
2
[RFC PATCH] PCI: Disable MSI/MSI-X only if device is shutdown
...river.c
> +++ b/drivers/pci/pci-driver.c
> @@ -448,10 +448,11 @@ static void pci_device_shutdown(struct device *dev)
>
> pm_runtime_resume(dev);
>
> - if (drv && drv->shutdown)
> + if (drv && drv->shutdown) {
> drv->shutdown(pci_dev);
> - pci_msi_shutdown(pci_dev);
> - pci_msix_shutdown(pci_dev);
> + pci_msi_shutdown(pci_dev);
> + pci_msix_shutdown(pci_dev);
> + }
>
> #ifdef CONFIG_KEXEC
> /*
>
The patch may be okay, but I think the bug here is also that virtio-pci
is not defining a .shutdown callback. It should def...
2015 Sep 06
5
[PATCH v7] pci: quirk to skip msi disable on shutdown
...f --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index 3cb2210..59d9e40 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -450,8 +450,10 @@ 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);
+ if (!(pci_dev->dev_flags & PCI_DEV_FLAGS_NO_MSI_SHUTDOWN)) {
+ pci_msi_shutdown(pci_dev);
+ pci_msix_shutdown(pci_dev);
+ }
#ifdef CONFIG_KEXEC
/*
diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c
index 78f80...
2015 Sep 06
5
[PATCH v7] pci: quirk to skip msi disable on shutdown
...f --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index 3cb2210..59d9e40 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -450,8 +450,10 @@ 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);
+ if (!(pci_dev->dev_flags & PCI_DEV_FLAGS_NO_MSI_SHUTDOWN)) {
+ pci_msi_shutdown(pci_dev);
+ pci_msix_shutdown(pci_dev);
+ }
#ifdef CONFIG_KEXEC
/*
diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c
index 78f80...
2015 Sep 17
1
[PATCH v7] pci: quirk to skip msi disable on shutdown
...ndex 3cb2210..59d9e40 100644
>> --- a/drivers/pci/pci-driver.c
>> +++ b/drivers/pci/pci-driver.c
>> @@ -450,8 +450,10 @@ 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);
>> + if (!(pci_dev->dev_flags & PCI_DEV_FLAGS_NO_MSI_SHUTDOWN)) {
>> + pci_msi_shutdown(pci_dev);
>> + pci_msix_shutdown(pci_dev);
>> + }
>>
>> #ifdef CONFIG_KEXEC
>> /*
>> diff --git a/dr...
2015 Sep 17
1
[PATCH v7] pci: quirk to skip msi disable on shutdown
...ndex 3cb2210..59d9e40 100644
>> --- a/drivers/pci/pci-driver.c
>> +++ b/drivers/pci/pci-driver.c
>> @@ -450,8 +450,10 @@ 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);
>> + if (!(pci_dev->dev_flags & PCI_DEV_FLAGS_NO_MSI_SHUTDOWN)) {
>> + pci_msi_shutdown(pci_dev);
>> + pci_msix_shutdown(pci_dev);
>> + }
>>
>> #ifdef CONFIG_KEXEC
>> /*
>> diff --git a/dr...
2015 Mar 12
0
[RFC PATCH] PCI: Disable MSI/MSI-X only if device is shutdown
...r.c
> > @@ -448,10 +448,11 @@ static void pci_device_shutdown(struct device *dev)
> >
> > pm_runtime_resume(dev);
> >
> > - if (drv && drv->shutdown)
> > + if (drv && drv->shutdown) {
> > drv->shutdown(pci_dev);
> > - pci_msi_shutdown(pci_dev);
> > - pci_msix_shutdown(pci_dev);
> > + pci_msi_shutdown(pci_dev);
> > + pci_msix_shutdown(pci_dev);
> > + }
> >
> > #ifdef CONFIG_KEXEC
> > /*
> >
>
> The patch may be okay, but I think the bug here is also that virtio-pci
&g...
2015 Mar 12
0
[RFC PATCH] PCI: Disable MSI/MSI-X only if device is shutdown
...r.c
> > @@ -448,10 +448,11 @@ static void pci_device_shutdown(struct device *dev)
> >
> > pm_runtime_resume(dev);
> >
> > - if (drv && drv->shutdown)
> > + if (drv && drv->shutdown) {
> > drv->shutdown(pci_dev);
> > - pci_msi_shutdown(pci_dev);
> > - pci_msix_shutdown(pci_dev);
> > + pci_msi_shutdown(pci_dev);
> > + pci_msix_shutdown(pci_dev);
> > + }
> >
> > #ifdef CONFIG_KEXEC
> > /*
> >
>
> The patch may be okay, but I think the bug here is also that virtio-pci
&g...
2015 Sep 17
0
[PATCH v7] pci: quirk to skip msi disable on shutdown
...vers/pci/pci-driver.c
> index 3cb2210..59d9e40 100644
> --- a/drivers/pci/pci-driver.c
> +++ b/drivers/pci/pci-driver.c
> @@ -450,8 +450,10 @@ 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);
> + if (!(pci_dev->dev_flags & PCI_DEV_FLAGS_NO_MSI_SHUTDOWN)) {
> + pci_msi_shutdown(pci_dev);
> + pci_msix_shutdown(pci_dev);
> + }
>
> #ifdef CONFIG_KEXEC
> /*
> diff --git a/drivers/virtio/virtio_pci_common.c b/d...
2014 Aug 20
1
[RFC PATCH 03/11] PCI/MSI: Refactor pci_dev_msi_enabled()
...9,7 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
> u16 control;
> struct msi_desc *entry;
>
> - if (!dev->msi_enabled)
> + if (!pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> entry = irq_get_msi_desc(dev->irq);
> @@ -878,7 +878,8 @@ void pci_msi_shutdown(struct pci_dev *dev)
> struct msi_desc *desc;
> u32 mask;
>
> - if (!pci_msi_enable || !dev || !dev->msi_enabled)
> + if (!pci_msi_enable || !dev ||
> + !pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> BUG_ON(list_empty(&dev->msi_list));
> @@ -...
2014 Aug 20
1
[RFC PATCH 03/11] PCI/MSI: Refactor pci_dev_msi_enabled()
...9,7 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
> u16 control;
> struct msi_desc *entry;
>
> - if (!dev->msi_enabled)
> + if (!pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> entry = irq_get_msi_desc(dev->irq);
> @@ -878,7 +878,8 @@ void pci_msi_shutdown(struct pci_dev *dev)
> struct msi_desc *desc;
> u32 mask;
>
> - if (!pci_msi_enable || !dev || !dev->msi_enabled)
> + if (!pci_msi_enable || !dev ||
> + !pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> BUG_ON(list_empty(&dev->msi_list));
> @@ -...
2014 Jul 26
0
[RFC PATCH 03/11] PCI/MSI: Refactor pci_dev_msi_enabled()
...irq_get_msi_desc(irq);
}
@@ -439,7 +439,7 @@ static void __pci_restore_msi_state(struct pci_dev *dev)
u16 control;
struct msi_desc *entry;
- if (!dev->msi_enabled)
+ if (!pci_dev_msi_enabled(dev, MSI_TYPE))
return;
entry = irq_get_msi_desc(dev->irq);
@@ -878,7 +878,8 @@ void pci_msi_shutdown(struct pci_dev *dev)
struct msi_desc *desc;
u32 mask;
- if (!pci_msi_enable || !dev || !dev->msi_enabled)
+ if (!pci_msi_enable || !dev ||
+ !pci_dev_msi_enabled(dev, MSI_TYPE))
return;
BUG_ON(list_empty(&dev->msi_list));
@@ -899,7 +900,8 @@ void pci_msi_shutdown(struct pc...
2014 Jul 26
0
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...int pci_msi_check_device(struct pci_dev *dev, int nvec, int type)
if (bus->bus_flags & PCI_BUS_FLAGS_NO_MSI)
return -EINVAL;
- ret = arch_msi_check_device(dev, nvec, type);
+ ret = arch_msi_check_device(dev->msi, nvec, type);
if (ret)
return ret;
@@ -861,12 +892,12 @@ void pci_msi_shutdown(struct pci_dev *dev)
!pci_dev_msi_enabled(dev, MSI_TYPE))
return;
- BUG_ON(list_empty(&dev->msi_list));
- desc = list_first_entry(&dev->msi_list, struct msi_desc, list);
+ BUG_ON(list_empty(&dev->msi->msi_list));
+ desc = list_first_entry(&dev->msi->msi_li...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...t
> nvec, int type)
> if (bus->bus_flags & PCI_BUS_FLAGS_NO_MSI)
> return -EINVAL;
>
> - ret = arch_msi_check_device(dev, nvec, type);
> + ret = arch_msi_check_device(dev->msi, nvec, type);
> if (ret)
> return ret;
>
> @@ -861,12 +892,12 @@ void pci_msi_shutdown(struct pci_dev *dev)
> !pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> - BUG_ON(list_empty(&dev->msi_list));
> - desc = list_first_entry(&dev->msi_list, struct msi_desc, list);
> + BUG_ON(list_empty(&dev->msi->msi_list));
> + desc = list_first...
2014 Aug 20
1
[RFC PATCH 09/11] PCI/MSI: refactor PCI MSI driver
...t
> nvec, int type)
> if (bus->bus_flags & PCI_BUS_FLAGS_NO_MSI)
> return -EINVAL;
>
> - ret = arch_msi_check_device(dev, nvec, type);
> + ret = arch_msi_check_device(dev->msi, nvec, type);
> if (ret)
> return ret;
>
> @@ -861,12 +892,12 @@ void pci_msi_shutdown(struct pci_dev *dev)
> !pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> - BUG_ON(list_empty(&dev->msi_list));
> - desc = list_first_entry(&dev->msi_list, struct msi_desc, list);
> + BUG_ON(list_empty(&dev->msi->msi_list));
> + desc = list_first...
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
Hi all,
The series is a draft of generic MSI driver that supports PCI
and Non-PCI device which have MSI capability. If you're not interested
it, sorry for the noise.
The series is based on Linux-3.16-rc1.
MSI was introduced in PCI Spec 2.2. Currently, kernel MSI
driver codes are bonding with PCI device. Because MSI has a lot
advantages in design. More and more non-PCI devices want to
use
2014 Jul 26
20
[RFC PATCH 00/11] Refactor MSI to support Non-PCI device
Hi all,
The series is a draft of generic MSI driver that supports PCI
and Non-PCI device which have MSI capability. If you're not interested
it, sorry for the noise.
The series is based on Linux-3.16-rc1.
MSI was introduced in PCI Spec 2.2. Currently, kernel MSI
driver codes are bonding with PCI device. Because MSI has a lot
advantages in design. More and more non-PCI devices want to
use
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...;msi->msi_list, list) {
> - if (entry->irq != 0)
> - avail++;
> - }
> - if (avail != 0)
> - ret = avail;
> - }
> -
> - free_msi_irqs(msi);
> -
> - return ret;
> }
>
> /**
> @@ -886,25 +492,14 @@ EXPORT_SYMBOL(pci_msi_vec_count);
> void pci_msi_shutdown(struct pci_dev *dev)
> {
> struct msi_desc *desc;
> - u32 mask;
>
> if (!pci_msi_enable || !dev ||
> !pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> - BUG_ON(list_empty(&dev->msi->msi_list));
> - desc = list_first_entry(&dev->msi->m...
2014 Aug 20
1
[RFC PATCH 10/11] PCI/MSI: Split the generic MSI code into new file
...;msi->msi_list, list) {
> - if (entry->irq != 0)
> - avail++;
> - }
> - if (avail != 0)
> - ret = avail;
> - }
> -
> - free_msi_irqs(msi);
> -
> - return ret;
> }
>
> /**
> @@ -886,25 +492,14 @@ EXPORT_SYMBOL(pci_msi_vec_count);
> void pci_msi_shutdown(struct pci_dev *dev)
> {
> struct msi_desc *desc;
> - u32 mask;
>
> if (!pci_msi_enable || !dev ||
> !pci_dev_msi_enabled(dev, MSI_TYPE))
> return;
>
> - BUG_ON(list_empty(&dev->msi->msi_list));
> - desc = list_first_entry(&dev->msi->m...
2008 Sep 23
9
Xen crash on dom0 shutdown
...which appears to
be dependent upon guest behavior (should close event channel before
un-mapping pirq), rather than on internal hypervisor state. In 2.6.18,
this likely goes unnoticed because pci_device_shutdown() only calls all
the driver shutdown routines. In newer kernels, however, it also calls
pci_msi_shutdown() and pci_msix_shutdown(), which remove all pirq
mappings. If now (which commonly appears to be the case for storage
drivers) an MSI/MSI-X driver has no shutdown handler (or one that
doesn''t do much, because on native this is not causing any problems),
the assumption in Xen is violated and...