mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
PCI/ASPM: Ignore L1 PM Substates if device lacks capability
187f91db82
("PCI/ASPM: Remove struct aspm_register_info.l1ss_cap") inadvertently removed a check for existence of the L1 PM Substates (L1SS) Capability before reading it. If there is no L1SS Capability, this means we mistakenly read PCI_COMMAND and PCI_STATUS (config address 0x04) and interpret that as the PCI_L1SS_CAP register, so we may incorrectly configure L1SS. Make sure the L1SS Capability exists before trying to read it. Fixes:187f91db82
("PCI/ASPM: Remove struct aspm_register_info.l1ss_cap") Link: https://lore.kernel.org/r/20221005025809.2247547-3-helgaas@kernel.org Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
This commit is contained in:
parent
9e2a03173d
commit
cfc0028627
@ -560,6 +560,9 @@ static void aspm_l1ss_init(struct pcie_link_state *link)
|
||||
u32 parent_l1ss_cap, child_l1ss_cap;
|
||||
u32 parent_l1ss_ctl1 = 0, child_l1ss_ctl1 = 0;
|
||||
|
||||
if (!parent->l1ss || !child->l1ss)
|
||||
return;
|
||||
|
||||
/* Setup L1 substate */
|
||||
pci_read_config_dword(parent, parent->l1ss + PCI_L1SS_CAP,
|
||||
&parent_l1ss_cap);
|
||||
|
Loading…
Reference in New Issue
Block a user