commit e2b1820bd5d09 upstream
Free up the IRQs we request on the suspend path and reallocate them on the resume path.
Fixes this error:
CPU 111 disable failed: CPU has 9 vectors assigned and there are only 0 available. Error taking CPU111 down: -34 Non-boot CPUs are not disabled Enabling non-boot CPUs ...
For consistency, this patch also includes the VMD portion of: 3eefa790c9681: PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD
CC: Scott Bauer scott.bauer@intel.com CC: Bjorn Helgaas bhelgaas@google.com CC: Keith Busch keith.busch@intel.com Reviewed-by: Jon Derrick jonathan.derrick@intel.com Signed-off-by: Sushma Kalakota sushmax.kalakota@intel.com --- drivers/pci/host/vmd.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/host/vmd.c b/drivers/pci/host/vmd.c index 0e7f8f319fe3..5c2258ad3589 100644 --- a/drivers/pci/host/vmd.c +++ b/drivers/pci/host/vmd.c @@ -698,7 +698,8 @@ static int vmd_probe(struct pci_dev *dev, const struct pci_device_id *id) for (i = 0; i < vmd->msix_count; i++) { INIT_LIST_HEAD(&vmd->irqs[i].irq_list); err = devm_request_irq(&dev->dev, pci_irq_vector(dev, i), - vmd_irq, 0, "vmd", &vmd->irqs[i]); + vmd_irq, IRQF_NO_THREAD, + "vmd", &vmd->irqs[i]); if (err) return err; } @@ -731,6 +732,11 @@ static void vmd_remove(struct pci_dev *dev) static int vmd_suspend(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); + struct vmd_dev *vmd = pci_get_drvdata(pdev); + int i; + + for (i = 0; i < vmd->msix_count; i++) + devm_free_irq(dev, pci_irq_vector(pdev, i), &vmd->irqs[i]);
pci_save_state(pdev); return 0; @@ -739,6 +745,16 @@ static int vmd_suspend(struct device *dev) static int vmd_resume(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); + struct vmd_dev *vmd = pci_get_drvdata(pdev); + int err, i; + + for (i = 0; i < vmd->msix_count; i++) { + err = devm_request_irq(dev, pci_irq_vector(pdev, i), + vmd_irq, IRQF_NO_THREAD, + "vmd", &vmd->irqs[i]); + if (err) + return err; + }
pci_restore_state(pdev); return 0;
On Wed, Feb 06, 2019 at 02:36:16PM -0700, Sushma Kalakota wrote:
commit e2b1820bd5d09 upstream
Free up the IRQs we request on the suspend path and reallocate them on the resume path.
Fixes this error:
CPU 111 disable failed: CPU has 9 vectors assigned and there are only 0 available. Error taking CPU111 down: -34 Non-boot CPUs are not disabled Enabling non-boot CPUs ...
For consistency, this patch also includes the VMD portion of: 3eefa790c9681: PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD
CC: Scott Bauer scott.bauer@intel.com CC: Bjorn Helgaas bhelgaas@google.com CC: Keith Busch keith.busch@intel.com Reviewed-by: Jon Derrick jonathan.derrick@intel.com Signed-off-by: Sushma Kalakota sushmax.kalakota@intel.com
drivers/pci/host/vmd.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
What stable kernel tree(s) do you want this patch applied to? And why?
thanks,
greg k-h
On Thu, 2019-02-07 at 12:07 +0100, Greg KH wrote:
On Wed, Feb 06, 2019 at 02:36:16PM -0700, Sushma Kalakota wrote:
commit e2b1820bd5d09 upstream
Free up the IRQs we request on the suspend path and reallocate them on the resume path.
Fixes this error:
CPU 111 disable failed: CPU has 9 vectors assigned and there are only 0 available. Error taking CPU111 down: -34 Non-boot CPUs are not disabled Enabling non-boot CPUs ...
For consistency, this patch also includes the VMD portion of: 3eefa790c9681: PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD
CC: Scott Bauer scott.bauer@intel.com CC: Bjorn Helgaas bhelgaas@google.com CC: Keith Busch keith.busch@intel.com Reviewed-by: Jon Derrick jonathan.derrick@intel.com Signed-off-by: Sushma Kalakota sushmax.kalakota@intel.com
drivers/pci/host/vmd.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
What stable kernel tree(s) do you want this patch applied to? And why?
thanks,
greg k-h
Hi Greg,
This is for 4.9.y and intended to increase reliability of suspend/resume not leading to a failure to suspend or failure to resume, either of which would be undesireable to users of the feature, and potentially make the overall feature unusable if suspend/resume were user requirement.
On Thu, Feb 07, 2019 at 03:10:09PM +0000, Derrick, Jonathan wrote:
On Thu, 2019-02-07 at 12:07 +0100, Greg KH wrote:
On Wed, Feb 06, 2019 at 02:36:16PM -0700, Sushma Kalakota wrote:
commit e2b1820bd5d09 upstream
Free up the IRQs we request on the suspend path and reallocate them on the resume path.
Fixes this error:
CPU 111 disable failed: CPU has 9 vectors assigned and there are only 0 available. Error taking CPU111 down: -34 Non-boot CPUs are not disabled Enabling non-boot CPUs ...
For consistency, this patch also includes the VMD portion of: 3eefa790c9681: PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD
CC: Scott Bauer scott.bauer@intel.com CC: Bjorn Helgaas bhelgaas@google.com CC: Keith Busch keith.busch@intel.com Reviewed-by: Jon Derrick jonathan.derrick@intel.com Signed-off-by: Sushma Kalakota sushmax.kalakota@intel.com
drivers/pci/host/vmd.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
What stable kernel tree(s) do you want this patch applied to? And why?
thanks,
greg k-h
Hi Greg,
This is for 4.9.y and intended to increase reliability of suspend/resume not leading to a failure to suspend or failure to resume, either of which would be undesireable to users of the feature, and potentially make the overall feature unusable if suspend/resume were user requirement.
Ok, but who is still using this old kernel on these types of machines? Why haven't they moved to 4.14 or newer by now? The normal systems that use 4.9 or older should not need this, as they are the horrid SoC trees.
Who has reported this problem in their systems?
thanks,
greg k-h
On Wed, Feb 06, 2019 at 02:36:16PM -0700, Sushma Kalakota wrote:
commit e2b1820bd5d09 upstream
Free up the IRQs we request on the suspend path and reallocate them on the resume path.
Fixes this error:
CPU 111 disable failed: CPU has 9 vectors assigned and there are only 0 available. Error taking CPU111 down: -34 Non-boot CPUs are not disabled Enabling non-boot CPUs ...
For consistency, this patch also includes the VMD portion of: 3eefa790c9681: PCI: host: Mark PCIe/PCI (MSI) cascade ISR as IRQF_NO_THREAD
CC: Scott Bauer scott.bauer@intel.com CC: Bjorn Helgaas bhelgaas@google.com CC: Keith Busch keith.busch@intel.com Reviewed-by: Jon Derrick jonathan.derrick@intel.com Signed-off-by: Sushma Kalakota sushmax.kalakota@intel.com
Now queued up, thanks.
greg k-h
linux-stable-mirror@lists.linaro.org