Message ID | 20240618204946.1271042-1-helgaas@kernel.org (mailing list archive) |
---|---|
Headers | show |
Series | PCI: Disable AER & DPC on suspend | expand |
On Tue, Jun 18, 2024 at 10:49 PM Bjorn Helgaas <helgaas@kernel.org> wrote: > > From: Bjorn Helgaas <bhelgaas@google.com> > > This is an old series from Kai-Heng that I didn't handle soon enough. The > intent is to fix several suspend/resume issues: > > - Spurious wakeup from s2idle > (https://bugzilla.kernel.org/show_bug.cgi?id=216295) > > - Steam Deck doesn't resume after suspend > (https://bugzilla.kernel.org/show_bug.cgi?id=218090) > > - Unexpected ACS error and DPC event when resuming after suspend > (https://bugzilla.kernel.org/show_bug.cgi?id=209149) > > It seems that a glitch when the link is powered down during suspend causes > errors to be logged by AER. When AER is enabled, this causes an AER > interrupt, and if that IRQ is shared with PME, it may cause a spurious > wakeup. > > Also, errors logged during link power-down and power-up seem to cause > unwanted error reporting during resume. > > This series disables AER interrupts, DPC triggering, and DPC interrupts > during suspend. On resume, it clears AER and DPC error status before > re-enabling their interrupts. > > I added a couple cosmetic changes for the v9, but this is essentially all > Kai-Heng's work. I'm just posting it as a v9 because I failed to act on > this earlier. > > Bjorn > > v9: > - Drop pci_ancestor_pr3_present() and pm_suspend_via_firmware; do it > unconditionally > - Clear DPC status before re-enabling DPC interrupt > > v8: https://lore.kernel.org/r/20240416043225.1462548-1-kai.heng.feng@canonical.com > - Wording. > - Add more bug reports. > > v7: > - Wording. > - Disable AER completely (again) if power will be turned off > - Disable DPC completely (again) if power will be turned off > > v6: https://lore.kernel.org/r/20230512000014.118942-1-kai.heng.feng@canonical.com > > v5: https://lore.kernel.org/r/20230511133610.99759-1-kai.heng.feng@canonical.com > - Wording. > > v4: https://lore.kernel.org/r/20230424055249.460381-1-kai.heng.feng@canonical.com > v3: https://lore.kernel.org/r/20230420125941.333675-1-kai.heng.feng@canonical.com > - Correct subject. > > v2: https://lore.kernel.org/r/20230420015830.309845-1-kai.heng.feng@canonical.com > - Only disable AER IRQ. > - No more AER check on PME IRQ#. > - Use AER helper. > - Only disable DPC IRQ. > - No more DPC check on PME IRQ#. > > v1: https://lore.kernel.org/r/20220727013255.269815-1-kai.heng.feng@canonical.com > > Kai-Heng Feng (2): > PCI/AER: Disable AER service on suspend > PCI/DPC: Disable DPC service on suspend > > drivers/pci/pcie/aer.c | 18 +++++++++++++ > drivers/pci/pcie/dpc.c | 60 +++++++++++++++++++++++++++++++++--------- > 2 files changed, 66 insertions(+), 12 deletions(-) > > -- Please feel free to add Acked-by: Rafael J. Wysocki <rafael@kernel.org> to both patches in the series. Thanks!
From: Bjorn Helgaas <bhelgaas@google.com> This is an old series from Kai-Heng that I didn't handle soon enough. The intent is to fix several suspend/resume issues: - Spurious wakeup from s2idle (https://bugzilla.kernel.org/show_bug.cgi?id=216295) - Steam Deck doesn't resume after suspend (https://bugzilla.kernel.org/show_bug.cgi?id=218090) - Unexpected ACS error and DPC event when resuming after suspend (https://bugzilla.kernel.org/show_bug.cgi?id=209149) It seems that a glitch when the link is powered down during suspend causes errors to be logged by AER. When AER is enabled, this causes an AER interrupt, and if that IRQ is shared with PME, it may cause a spurious wakeup. Also, errors logged during link power-down and power-up seem to cause unwanted error reporting during resume. This series disables AER interrupts, DPC triggering, and DPC interrupts during suspend. On resume, it clears AER and DPC error status before re-enabling their interrupts. I added a couple cosmetic changes for the v9, but this is essentially all Kai-Heng's work. I'm just posting it as a v9 because I failed to act on this earlier. Bjorn v9: - Drop pci_ancestor_pr3_present() and pm_suspend_via_firmware; do it unconditionally - Clear DPC status before re-enabling DPC interrupt v8: https://lore.kernel.org/r/20240416043225.1462548-1-kai.heng.feng@canonical.com - Wording. - Add more bug reports. v7: - Wording. - Disable AER completely (again) if power will be turned off - Disable DPC completely (again) if power will be turned off v6: https://lore.kernel.org/r/20230512000014.118942-1-kai.heng.feng@canonical.com v5: https://lore.kernel.org/r/20230511133610.99759-1-kai.heng.feng@canonical.com - Wording. v4: https://lore.kernel.org/r/20230424055249.460381-1-kai.heng.feng@canonical.com v3: https://lore.kernel.org/r/20230420125941.333675-1-kai.heng.feng@canonical.com - Correct subject. v2: https://lore.kernel.org/r/20230420015830.309845-1-kai.heng.feng@canonical.com - Only disable AER IRQ. - No more AER check on PME IRQ#. - Use AER helper. - Only disable DPC IRQ. - No more DPC check on PME IRQ#. v1: https://lore.kernel.org/r/20220727013255.269815-1-kai.heng.feng@canonical.com Kai-Heng Feng (2): PCI/AER: Disable AER service on suspend PCI/DPC: Disable DPC service on suspend drivers/pci/pcie/aer.c | 18 +++++++++++++ drivers/pci/pcie/dpc.c | 60 +++++++++++++++++++++++++++++++++--------- 2 files changed, 66 insertions(+), 12 deletions(-)