linux/drivers/pci
Ilpo Järvinen e09060b3b6 PCI/ASPM: Use RMW accessors for changing LNKCTL
Don't assume that the device is fully under the control of ASPM and use RMW
capability accessors which do proper locking to avoid losing concurrent
updates to the register values.

If configuration fails in pcie_aspm_configure_common_clock(), the
function attempts to restore the old PCI_EXP_LNKCTL_CCC settings. Store
only the old PCI_EXP_LNKCTL_CCC bit for the relevant devices rather
than the content of the whole LNKCTL registers. It aligns better with
how pcie_lnkctl_clear_and_set() expects its parameter and makes the
code more obvious to understand.

Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: 2a42d9dba7 ("PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch")
Fixes: 7d715a6c1a ("PCI: add PCI Express ASPM support")
Link: https://lore.kernel.org/r/20230717120503.15276-5-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: "Rafael J. Wysocki" <rafael@kernel.org>
2023-08-10 11:13:43 -05:00
..
controller dmaengine updates for v6.5 2023-07-06 09:48:31 -07:00
endpoint Fixes for pci_clean_master, error handling in driver inits, and various 2023-07-09 09:35:51 -07:00
hotplug PCI: pciehp: Use RMW accessors for changing LNKCTL 2023-08-10 11:13:34 -05:00
msi PCI/MSI: Remove over-zealous hardware size check in pci_msix_validate_entries() 2023-04-16 14:11:51 +02:00
pcie PCI/ASPM: Use RMW accessors for changing LNKCTL 2023-08-10 11:13:43 -05:00
switch driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
access.c PCI: Add locking to RMW PCI Express Capability Register accessors 2023-08-10 11:12:09 -05:00
ats.c PCI: Enable PASID only when ACS RR & UF enabled on upstream path 2022-11-03 15:47:47 +01:00
bus.c pci-v6.4-changes 2023-04-27 10:45:30 -07:00
doe.c PCI/DOE: Relax restrictions on request and response size 2023-04-18 10:36:58 -07:00
ecam.c
host-bridge.c
iov.c PCI/IOV: Enlarge virtfn sysfs name buffer 2023-01-18 10:54:41 -06:00
irq.c PCI: Check for alloc failure in pci_request_irq() 2022-11-21 16:55:18 -06:00
Kconfig scatterlist: add dedicated config for DMA flags 2023-06-19 16:19:22 -07:00
Makefile PCI/DOE: Add DOE mailbox support functions 2022-07-19 15:38:04 -07:00
mmap.c PCI: Remove pci_mmap_page_range() wrapper 2022-07-29 12:08:44 -05:00
of.c PCI: of: Propagate firmware node by calling device_set_node() 2023-06-06 17:15:45 -05:00
p2pdma.c PCI/P2PDMA: Fix pci_p2pmem_find_many() kernel-doc 2023-04-06 16:37:51 -05:00
pci-acpi.c PCI/ACPI: Call _REG when transitioning D-states 2023-06-23 12:28:08 -05:00
pci-bridge-emul.c PCI: pci-bridge-emul: Set position of PCI capabilities to real HW value 2022-08-25 12:07:56 +02:00
pci-bridge-emul.h PCI: pci-bridge-emul: Set position of PCI capabilities to real HW value 2022-08-25 12:07:56 +02:00
pci-driver.c PCI/PM: Drop pci_bridge_wait_for_secondary_bus() timeout parameter 2023-04-11 17:35:06 -05:00
pci-label.c
pci-mid.c
pci-pf-stub.c
pci-stub.c PCI: pci_stub: Set driver_managed_dma 2022-04-28 15:32:20 +02:00
pci-sysfs.c driver core: bus: mark the struct bus_type for sysfs callbacks as constant 2023-03-23 13:20:40 +01:00
pci.c PCI: Make link retraining use RMW accessors for changing LNKCTL 2023-08-10 11:13:22 -05:00
pci.h Merge branch 'pci/pm' 2023-06-26 12:59:56 -05:00
probe.c PCI: Add locking to RMW PCI Express Capability Register accessors 2023-08-10 11:12:09 -05:00
proc.c PCI: Remove pci_mmap_page_range() wrapper 2022-07-29 12:08:44 -05:00
quirks.c pci-v6.5-changes 2023-06-30 15:06:45 -07:00
remove.c cxl for v6.4 2023-04-30 11:51:51 -07:00
rom.c PCI: Prefer 'unsigned int' over bare 'unsigned' 2021-10-27 13:41:22 -05:00
search.c
setup-bus.c PCI: Make pci_bus_for_each_resource() index optional 2023-04-05 15:10:09 -05:00
setup-irq.c
setup-res.c PCI: Introduce pci_dev_for_each_resource() 2023-04-04 10:43:52 -05:00
slot.c PCI/sysfs: Constify struct kobj_type pci_slot_ktype 2023-02-16 12:00:25 -06:00
syscall.c
vc.c
vgaarb.c PCI: Introduce pci_dev_for_each_resource() 2023-04-04 10:43:52 -05:00
vpd.c PCI/VPD: Use pci_read_vpd_any() in pci_vpd_size() 2021-10-25 19:12:23 -05:00
xen-pcifront.c PCI: Introduce pci_dev_for_each_resource() 2023-04-04 10:43:52 -05:00