Messages in this thread | | | Date | Tue, 19 Jul 2022 11:48:36 +0100 | From | Marc Zyngier <> | Subject | Re: There are not enough CPU0 APIC IRQs while doing IRQ migration during S3 |
| |
[- Jason]
On Tue, 19 Jul 2022 06:55:21 +0100, AceLan Kao <acelan.kao@canonical.com> wrote: > > HI all, > > I encountered an issue while doing S3, it shows below message and then > failed to enter S3 > [ 106.731140] CPU 31 has 116 vectors, 85 available. Cannot disable CPU > [ 106.731551] ACPI: \_PR_.C01F: Found 2 idle states > [ 106.732610] Error taking CPU31 down: -28 > [ 106.732612] Non-boot CPUs are not disabled > > CPU: AMD Ryzen Threadripper PRO 3955WX 16-Cores > Kernel: v5.19-rc7 > There are 5 PCI to 4 type-c ports USB cards on the machine, and It > wouldn't lead to the issue if only 4 cards are plugged. So, it looks > like it can't handle 5 cards, and failed on the IRQ migration. > > The workaround provided by kaiheng is to release the irq while > suspending and request irq while resuming. > I'm wondering do we have a better solution for this kind of issue? > Thanks. > > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index edc6881c8a1b..91c79b21cb57 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -17,6 +17,7 @@ > #include <linux/slab.h> > #include <linux/dmi.h> > #include <linux/dma-mapping.h> > +#include <linux/suspend.h> > > #include "xhci.h" > #include "xhci-trace.h" > @@ -1079,6 +1080,9 @@ int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup) > __func__); > } > > + if (pm_suspend_via_firmware()) > + xhci_cleanup_msix(xhci);
I'm a bit clueless when it comes to the combination of x86 and xhci, but doesn't this prevent resuming on a xhci interrupt?
M.
-- Without deviation from the norm, progress is not possible.
| |