2021-11-06 21:37:34

by Saheed O. Bolarinwa

[permalink] [raw]
Subject: [RFC PATCH v1 0/2] Keep insane devices disabled

The patches fix issues that allow enabling both CLKPM and ASPM on
devices that failed pcie_aspm_sanity_check().


MERGE NOTICE:
These series are based on
ยป 'commit e4e737bb5c17 ("Linux 5.15-rc2")'

Saheed O. Bolarinwa (2):
PCI/ASPM: Never enable ASPM for insane devices
PCI/ASPM: Never enable CLKPM for insane devices

drivers/pci/pcie/aspm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--
2.20.1


2021-11-06 21:37:34

by Saheed O. Bolarinwa

[permalink] [raw]
Subject: [RFC PATCH v1 2/2] PCI/ASPM: Never enable CLKPM for insane devices

clkpm_store() makes it possible to turn off link->clkpm_disable
for devices that fails pcie_aspm_sanity_check().

- Ceck the result of pcie_aspm_sanity_check() when setting
link->clpm_disable within clkpm_store().

Signed-off-by: Saheed O. Bolarinwa <[email protected]>
---
drivers/pci/pcie/aspm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 72cb17489e88..c81b0ef32229 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -1282,7 +1282,7 @@ static ssize_t clkpm_store(struct device *dev,
down_read(&pci_bus_sem);
mutex_lock(&aspm_lock);

- link->clkpm_disable = !state_enable;
+ link->clkpm_disable = !(state_enable && !pcie_aspm_sanity_check(pdev));
pcie_set_clkpm(link, policy_to_clkpm_state(link));

mutex_unlock(&aspm_lock);
--
2.20.1

2021-11-06 23:52:19

by Saheed O. Bolarinwa

[permalink] [raw]
Subject: [RFC PATCH v1 1/2] PCI/ASPM: Never enable ASPM for insane devices

aspm_attr_store_common() makes it possible to clear the disable bits
even for devices that fails pcie_aspm_sanity_check().

- Extend the if condition in aspm_attr_store_common() to screen out
insane devices.

Signed-off-by: Saheed O. Bolarinwa <[email protected]>
---
drivers/pci/pcie/aspm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 013a47f587ce..72cb17489e88 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -1225,7 +1225,7 @@ static ssize_t aspm_attr_store_common(struct device *dev,
down_read(&pci_bus_sem);
mutex_lock(&aspm_lock);

- if (state_enable) {
+ if (state_enable && !pcie_aspm_sanity_check(pdev)) {
link->aspm_disable &= ~state;
/* need to enable L1 for substates */
if (state & ASPM_STATE_L1SS)
--
2.20.1