And koba has backported the old version of that commit to oem kernel
commit 16e5386dabd18bd9c507867b0df6c414783af4a8
Author: Mika Westerberg <email address hidden>
Date: Mon Oct 2 10:00:44 2023 +0300
UBUNTU: SAUCE: PCI/ASPM: Add back L1 PM Substate save and restore
Commit a7152be79b62 ("Revert "PCI/ASPM: Save L1 PM Substates Capability
for suspend/resume"") reverted saving and restoring of ASPM L1 Substates
due to a regression that caused resume from suspend to fail on certain
systems. However, we never added this capability back and this is now
causing systems fail to enter low power CPU states, drawing more power
from the battery.
The original revert mentioned that we restore L1 PM substate configuration
even though ASPM L1 may already be enabled. This is due the fact that
the pci_restore_aspm_l1ss_state() was called before pci_restore_pcie_state().
Try to enable this functionality again following PCIe r6.0.1, sec 5.5.4
more closely by:
1) Do not restore ASPM configuration in pci_restore_pcie_state() but
do that after PCIe capability is restored in pci_restore_aspm_state()
following PCIe r6.0, sec 5.5.4.
2) ASPM is first enabled on the upstream component and then downstream
(this is already forced by the parent-child ordering of Linux
Device Power Management framework).
3) Program ASPM L1 PM substate configuration before L1 enables.
4) Program ASPM L1 PM substate enables last after rest of the fields
in the capability are programmed.
5) Add denylist that skips restoring on the ASUS and TUXEDO systems
where these regressions happened, just in case. For the TUXEDO case
we only skip restore if the BIOS is involved in system suspend
(that's forcing "mem_sleep=deep" in the command line). This is to
avoid possible power regression when the default suspend to idle is
used, and at the same time make sure the devices continue working
after resume when the BIOS is involved.
Reported-by: Koba Ko <email address hidden>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217321
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216782
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216877
Cc: Tasev Nikola <email address hidden>
Cc: Mark Enriquez <email address hidden>
Cc: Thomas Witt <email address hidden>
Cc: Werner Sembach <email address hidden>
Tested-by: Kai-Heng Feng <email address hidden>
Signed-off-by: Mika Westerberg <email address hidden>
Reviewed-by: Ilpo Järvinen <email address hidden>
(backported from https://<email address hidden>/)
Signed-off-by: Koba Ko <email address hidden>
Signed-off-by: Timo Aaltonen <email address hidden>
The final discuss and version are here
https:/ /bugzilla. kernel. org/show_ bug.cgi? id=216877 /patchwork. kernel<email address hidden>/
https:/
And koba has backported the old version of that commit to oem kernel 9c507867b0df6c4 14783af4a8
commit 16e5386dabd18bd
Author: Mika Westerberg <email address hidden>
Date: Mon Oct 2 10:00:44 2023 +0300
UBUNTU: SAUCE: PCI/ASPM: Add back L1 PM Substate save and restore
BugLink: https:/ /bugs.launchpad .net/bugs/ 2042500
Commit a7152be79b62 ("Revert "PCI/ASPM: Save L1 PM Substates Capability
for suspend/resume"") reverted saving and restoring of ASPM L1 Substates
due to a regression that caused resume from suspend to fail on certain
systems. However, we never added this capability back and this is now
causing systems fail to enter low power CPU states, drawing more power
from the battery.
The original revert mentioned that we restore L1 PM substate configuration aspm_l1ss_ state() was called before pci_restore_ pcie_state( ).
even though ASPM L1 may already be enabled. This is due the fact that
the pci_restore_
Try to enable this functionality again following PCIe r6.0.1, sec 5.5.4
more closely by:
1) Do not restore ASPM configuration in pci_restore_ pcie_state( ) but aspm_state( )
do that after PCIe capability is restored in pci_restore_
following PCIe r6.0, sec 5.5.4.
2) ASPM is first enabled on the upstream component and then downstream
(this is already forced by the parent-child ordering of Linux
Device Power Management framework).
3) Program ASPM L1 PM substate configuration before L1 enables.
4) Program ASPM L1 PM substate enables last after rest of the fields
in the capability are programmed.
5) Add denylist that skips restoring on the ASUS and TUXEDO systems
where these regressions happened, just in case. For the TUXEDO case
we only skip restore if the BIOS is involved in system suspend
(that's forcing "mem_sleep=deep" in the command line). This is to
avoid possible power regression when the default suspend to idle is
used, and at the same time make sure the devices continue working
after resume when the BIOS is involved.
Reported-by: Koba Ko <email address hidden> /bugzilla. kernel. org/show_ bug.cgi? id=217321 /bugzilla. kernel. org/show_ bug.cgi? id=216782 /bugzilla. kernel. org/show_ bug.cgi? id=216877
Closes: https:/
Link: https:/
Link: https:/
Cc: Tasev Nikola <email address hidden>
Cc: Mark Enriquez <email address hidden>
Cc: Thomas Witt <email address hidden>
Cc: Werner Sembach <email address hidden>
Tested-by: Kai-Heng Feng <email address hidden>
Signed-off-by: Mika Westerberg <email address hidden>
Reviewed-by: Ilpo Järvinen <email address hidden>
(backported from https://<email address hidden>/)
Signed-off-by: Koba Ko <email address hidden>
Signed-off-by: Timo Aaltonen <email address hidden>