]> www.infradead.org Git - users/jedix/linux-maple.git/commit
PCI: Allow PCI bridges to go to D3Hot on all non-x86
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Thu, 20 Mar 2025 18:06:04 +0000 (11:06 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 20 Mar 2025 21:33:33 +0000 (16:33 -0500)
commita5fb3ff632876d63ee1fc5ed3af2464240145a00
tree4bfb5a23903ed3e3acf7a17689e1616c4647ba7a
parent2014c95afecee3e76ca4a56956a936e23283f05b
PCI: Allow PCI bridges to go to D3Hot on all non-x86

Currently, pci_bridge_d3_possible() encodes a variety of decision factors
when deciding whether a given bridge can be put into D3. A particular one
of note is for "recent enough PCIe ports." Per Rafael [0]:

  "There were hardware issues related to PM on x86 platforms predating
   the introduction of Connected Standby in Windows.  For instance,
   programming a port into D3hot by writing to its PMCSR might cause the
   PCIe link behind it to go down and the only way to revive it was to
   power cycle the Root Complex.  And similar."

Thus, this function contains a DMI-based check for post-2015 BIOS.

The above factors (Windows, x86) don't really apply to non-x86 systems, and
also, many such systems don't have BIOS or DMI. However, we'd like to be
able to suspend bridges on non-x86 systems too.

Restrict the "recent enough" check to x86. If we find further
incompatibilities, it probably makes sense to expand on the deny-list
approach (i.e., bridge_d3_blacklist or similar).

Link: https://lore.kernel.org/r/20250320110604.v6.1.Id0a0e78ab0421b6bce51c4b0b87e6aebdfc69ec7@changeid
Link: https://lore.kernel.org/linux-pci/CAJZ5v0j_6jeMAQ7eFkZBe5Yi+USGzysxAgfemYh=-zq4h5W+Qg@mail.gmail.com/
Link: https://lore.kernel.org/linux-pci/20240227225442.GA249898@bhelgaas/
Link: https://lore.kernel.org/linux-pci/20240828210705.GA37859@bhelgaas/
[Brian: rewrite to !X86 based on Rafael's suggestions]
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pci.c