linux/drivers/pci/controller
Bjorn Helgaas 391adca8e2 PCI: meson: Report that link is up while in ASPM L0s and L1 states
commit df27c03b9e upstream.

Previously meson_pcie_link_up() only returned true if the link was in the
L0 state.  This was incorrect because hardware autonomously manages
transitions between L0, L0s, and L1 while both components on the link stay
in D0.  Those states should all be treated as "link is active".

Returning false when the device was in L0s or L1 broke config accesses
because dw_pcie_other_conf_map_bus() fails if the link is down, which
caused errors like this:

  meson-pcie fc000000.pcie: error: wait linkup timeout
  pci 0000:01:00.0: BAR 0: error updating (0xfc700004 != 0xffffffff)

Remove the LTSSM state check, timeout, speed check, and error message from
meson_pcie_link_up(), the dw_pcie_ops.link_up() method, so it is a simple
boolean check of whether the link is active.  Timeouts and error messages
are handled at a higher level, e.g., dw_pcie_wait_for_link().

Fixes: 9c0ef6d34f ("PCI: amlogic: Add the Amlogic Meson PCIe controller driver")
Reported-by: Linnaea Lavia <linnaea-von-lavia@live.com>
Closes: https://lore.kernel.org/r/DM4PR05MB102707B8CDF84D776C39F22F2C7F0A@DM4PR05MB10270.namprd05.prod.outlook.com
[bhelgaas: squash removal of unused WAIT_LINKUP_TIMEOUT by
Martin Blumenstingl <martin.blumenstingl@googlemail.com>:
https://patch.msgid.link/20260105125625.239497-1-martin.blumenstingl@googlemail.com]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Linnaea Lavia <linnaea-von-lavia@live.com>
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on BananaPi M2S
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20251103221930.1831376-1-helgaas@kernel.org
Link: https://patch.msgid.link/20260105125625.239497-1-martin.blumenstingl@googlemail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2026-01-17 16:35:14 +01:00
..
cadence PCI: sg2042: Fix a reference count issue in sg2042_pcie_remove() 2025-12-18 14:02:32 +01:00
dwc PCI: meson: Report that link is up while in ASPM L0s and L1 states 2026-01-17 16:35:14 +01:00
mobiveil PCI: mobiveil: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:02 -05:00
plda PCI: plda: Remove dev_err_probe() when the errno is -ENOMEM 2025-09-08 15:44:31 +05:30
Kconfig PCI: rcar-gen2: Drop ARM dependency from PCI_RCAR_GEN2 2025-12-18 14:02:34 +01:00
Makefile PCI: microchip: Move pcie-microchip-host.c to PLDA directory 2024-05-28 11:15:28 -05:00
pci-aardvark.c PCI: aardvark: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:15 -05:00
pci-ftpci100.c PCI: Switch to irq_domain_create_linear() 2025-05-16 21:06:10 +02:00
pci-host-common.c pci-v6.17-changes 2025-08-01 13:59:07 -07:00
pci-host-common.h PCI: host-generic: Rename and export gen_pci_init() for PCIe controller drivers 2025-07-01 20:01:26 +05:30
pci-host-generic.c PCI: host-common: Convert to library for host controller drivers 2025-05-30 12:21:57 -05:00
pci-hyperv-intf.c PCI: hv: Fix warnings for missing export.h header inclusion 2025-07-09 23:46:06 +00:00
pci-hyperv.c PCI: hv: Remove unused parameter of hv_msi_free() 2025-09-08 10:28:40 +05:30
pci-ixp4xx.c PCI: Explicitly include correct DT includes 2023-07-18 14:33:17 -05:00
pci-loongson.c PCI: loongson: Enable MSI in LS7A Root Complex 2024-07-19 10:07:01 -05:00
pci-mvebu.c PCI: mvebu: Fix use of for_each_of_range() iterator 2025-09-08 14:40:27 -05:00
pci-rcar-gen2.c PCI: rcar-gen2: Use devm_platform_get_and_ioremap_resource() 2023-07-13 18:12:35 +00:00
pci-tegra.c PCI: tegra: Convert struct tegra_msi mask_lock into raw spinlock 2025-09-25 18:02:30 -05:00
pci-thunder-ecam.c PCI: host-common: Convert to library for host controller drivers 2025-05-30 12:21:57 -05:00
pci-thunder-pem.c PCI: host-common: Convert to library for host controller drivers 2025-05-30 12:21:57 -05:00
pci-v3-semi.c Merge branch 'pci/misc' 2023-08-29 11:03:57 -05:00
pci-versatile.c PCI: Remove MODULE_LICENSE so boolean drivers don't look like modules 2023-02-17 08:47:58 -06:00
pci-xgene-msi.c PCI: xgene-msi: Return negative -EINVAL in xgene_msi_handler_setup() 2025-08-11 16:30:43 +05:30
pci-xgene.c PCI: xgene: Drop XGENE_PCIE_IP_VER_UNKN 2025-07-22 15:33:16 -05:00
pcie-altera-msi.c PCI: altera-msi: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:15 -05:00
pcie-altera.c PCI: controller: Use dev_fwnode() instead of of_fwnode_handle() 2025-07-24 16:00:47 -05:00
pcie-apple.c PCI: apple: Add tracking of probed root ports 2025-06-30 12:29:05 -05:00
pcie-brcmstb.c PCI: brcmstb: Fix disabling L0s capability 2026-01-08 10:17:01 +01:00
pcie-hisi-error.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-iproc-bcma.c PCI: Add defines for normal and subtractive PCI bridges 2022-02-17 15:29:35 -06:00
pcie-iproc-msi.c PCI: iproc: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:16 -05:00
pcie-iproc-platform.c PCI: controller: Switch back to struct platform_driver::remove() 2024-10-03 16:44:49 -05:00
pcie-iproc.c PCI: Rename CRS Completion Status to RRS 2024-09-10 19:52:30 -05:00
pcie-iproc.h PCI: iproc: Convert to platform remove callback returning void 2023-06-24 14:12:36 +00:00
pcie-mediatek-gen3.c PCI: mediatek-gen3: Add support for MediaTek MT8196 SoC 2025-08-19 20:05:57 +05:30
pcie-mediatek.c PCI: mediatek: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:16 -05:00
pcie-mt7621.c PCI: mt7621: Use helper function for_each_available_child_of_node_scoped() 2025-03-06 09:31:45 +00:00
pcie-rcar-ep.c PCI: endpoint: Drop superfluous pci_epc_features initialization 2025-08-14 10:42:42 -05:00
pcie-rcar-host.c PCI: rcar-host: Convert struct rcar_msi mask_lock into raw spinlock 2025-09-25 18:05:12 -05:00
pcie-rcar.c PCI: rcar: Fix calculating mask for PCIEPAMR register 2020-05-11 11:29:48 +01:00
pcie-rcar.h PCI: rcar: Avoid defines prefixed with CONFIG 2023-03-10 13:34:27 +01:00
pcie-rockchip-ep.c PCI: endpoint: Drop superfluous pci_epc_features initialization 2025-08-14 10:42:42 -05:00
pcie-rockchip-host.c Merge branch 'pci/controller/rockchip-host' 2025-07-31 16:12:17 -05:00
pcie-rockchip.c PCI: rockchip: Refactor rockchip_pcie_disable_clocks() signature 2025-01-15 18:24:12 +00:00
pcie-rockchip.h PCI: rockchip: Switch to FIELD_PREP_WM16* macros 2025-09-02 20:06:47 -04:00
pcie-xilinx-common.h PCI: xilinx-xdma: Add Xilinx XDMA Root Port driver 2023-10-26 15:02:02 +00:00
pcie-xilinx-cpm.c PCI: Switch to irq_domain_create_linear() 2025-05-16 21:06:10 +02:00
pcie-xilinx-dma-pl.c PCI: xilinx-xdma: Switch to msi_create_parent_irq_domain() 2025-07-24 16:24:16 -05:00
pcie-xilinx-nwl.c PCI: xilinx-nwl: Fix ECAM programming 2025-09-29 16:37:23 -05:00
pcie-xilinx.c PCI: xilinx: Fix NULL pointer dereference in xilinx_pcie_intr_handler() 2025-08-12 11:31:24 -05:00
vmd.c PCI: vmd: Override irq_startup()/irq_shutdown() in vmd_init_dev_msi_info() 2025-10-17 08:30:34 -05:00