On 8/17/2025 9:00 PM, Mario Limonciello (AMD) wrote:
A variety of issues both in function and in power consumption have been
raised as a result of devices not being put into a low power state when
the system is powered off.

There have been some localized changes[1] to PCI core to help these issues,
but they have had various downsides.

This series instead tries to use the S4 flow when the system is being
powered off.  This lines up the behavior with what other operating systems
do as well.  If for some reason that fails or is not supported, run their
shutdown() callbacks.

Cc: AceLan Kao <acelan....@canonical.com>
Cc: Kai-Heng Feng <kaihe...@nvidia.com>
Cc: Mark Pearson <mpearson-len...@squebb.ca>
Cc: Merthan Karakaş <m3rth...@gmail.com>
Cc: Eric Naim <dn...@cachyos.org>
---
v5->v6:
  * Fix for LKP robot issue
  * Some commit message changes
  * Rebase on 6.17-rc2

Mario Limonciello (AMD) (11):
   PM: Introduce new PMSG_POWEROFF event
   scsi: Add PM_EVENT_POWEROFF into suspend callbacks
   usb: sl811-hcd: Add PM_EVENT_POWEROFF into suspend callbacks
   USB: Pass PMSG_POWEROFF event to suspend_common() for poweroff with S4
     flow
   PCI: PM: Disable device wakeups when halting system through S4 flow
   PCI: PM: Split out code from pci_pm_suspend_noirq() into helper
   PCI: PM: Run bridge power up actions as part of restore phase
   PCI: PM: Use pci_power_manageable() in pci_pm_poweroff_noirq()
   PCI: Put PCIe bridges with downstream devices into D3 at hibernate
   drm/amd: Avoid evicting resources at S5
   PM: Use hibernate flows for system power off

  drivers/base/power/main.c                  |  7 ++
  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  4 +
  drivers/pci/pci-driver.c                   | 99 +++++++++++++++-------
  drivers/scsi/mesh.c                        |  1 +
  drivers/scsi/stex.c                        |  1 +
  drivers/usb/core/hcd-pci.c                 | 11 ++-
  drivers/usb/host/sl811-hcd.c               |  1 +
  include/linux/pm.h                         |  5 +-
  include/trace/events/power.h               |  3 +-
  kernel/reboot.c                            |  6 ++
  10 files changed, 103 insertions(+), 35 deletions(-)


Rafael, Bjorn,

Any feedback for this series?

Thanks,

Reply via email to