[GIT PULL] PCI changes for v6.3
From: Bjorn Helgaas
Date: Wed Feb 22 2023 - 15:18:01 EST
This includes several Synopsys DesignWare eDMA controller driver changes
that are in drivers/dma, not drivers/pci. These lead up to eDMA support in
PCIe Root Port and Endpoint drivers and have been acked by Vinod.
The following changes since commit 1b929c02afd37871d5afb9d498426f83432e71c2:
Linux 6.2-rc1 (2022-12-25 13:41:39 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git tags/pci-v6.3-changes
for you to fetch changes up to 3eb5d0f26f4ea604e83ca499a72c0d33638f4765:
Merge branch 'pci/misc' (2023-02-22 13:47:32 -0600)
----------------------------------------------------------------
Enumeration:
- Rework portdrv shutdown so it disables interrupts but doesn't disable
bus mastering, which leads to hangs on Loongson LS7A.
- Add mechanism to prevent Max_Read_Request_Size (MRRS) increases, again
to avoid hardware issues on Loongson LS7A (and likely other devices
based on DesignWare IP).
- Ignore devices with a firmware (DT or ACPI) node that says the device
is disabled.
Resource management:
- Distribute spare resources to unconfigured hotplug bridges at boot-time
(not just when hot-adding such a bridge), which makes hot-adding
devices to docks work better. Tried this in v6.1 but had to revert for
regressions, so try again.
- Fix root bus issue that dropped resources that happened to end at 0,
e.g., [bus 00].
PCI device hotplug:
- Remove device locking when marking device as disconnected so this
doesn't have to wait for concurrent driver bind/unbind to complete.
- Quirk more Qualcomm bridges that don't fully implement the PCIe Slot
Status 'Command Completed' bit.
Power management:
- Account for _S0W of the target bridge in acpi_pci_bridge_d3() so we
don't miss hot-add notifications for USB4 docks, Thunderbolt, etc.
Reset:
- Observe delay after reset, e.g., resuming from system sleep, regardless
of whether a bridge can suspend to D3cold at runtime.
- Wait for secondary bus to become ready after a bridge reset.
Virtualization:
- Avoid FLR on some AMD FCH AHCI adapters where it doesn't work.
- Allow independent IOMMU groups for some Wangxun NICs that prevent
peer-to-peer transactions but don't advertise an ACS Capability.
Error handling:
- Configure End-to-End-CRC (ECRC) only if Linux owns the AER Capability.
- Remove redundant Device Control Error Reporting Enable in the AER
service driver since this is already done for all devices during
enumeration.
ASPM:
- Add pci_enable_link_state() interface to allow drivers to enable ASPM
link state.
Endpoint framework:
- Move dra7xx and tegra194 linkup processing from hard IRQ to threaded
IRQ handler.
- Add a separate lock for endpoint controller list of endpoint function
drivers to prevent deadlock in callbacks.
- Pass events from endpoint controller to endpoint function drivers via
callbacks instead of notifiers.
Synopsys DesignWare eDMA controller driver (acked by Vinod):
- Fix CPU vs PCI address issues.
- Fix source vs destination address issues.
- Fix issues with interleaved transfer semantics.
- Fix channel count initialization issue (issue still exists in several
other drivers).
- Clean up and improve debugfs usage so it will work on platforms with
several eDMA devices.
Baikal T-1 PCIe controller driver:
- Set a 64-bit DMA mask.
Freescale i.MX6 PCIe controller driver:
- Add i.MX8MM, i.MX8MQ, i.MX8MP endpoint mode DT binding and driver
support.
Intel VMD host bridge driver:
- Add quirk to configure PCIe ASPM and LTR. This is normally done by
BIOS, and will be for future products.
Marvell MVEBU PCIe controller driver:
- Mark this driver as broken in Kconfig since bugs prevent its daily
usage.
MediaTek MT7621 PCIe controller driver:
- Delay PHY port initialization to improve boot reliability for ZBT
WE1326, ZBT WF3526-P, and some Netgear models.
Qualcomm PCIe controller driver:
- Add MSM8998 DT compatible string.
- Unify MSM8996 and MSM8998 clock orderings.
- Add SM8350 DT binding and driver support.
- Add IPQ8074 Gen3 DT binding and driver support.
- Correct qcom,perst-regs in DT binding.
- Add qcom_pcie_host_deinit() so the PHY is powered off and regulators
and clocks are disabled on late host-init errors.
Socionext UniPhier Pro5 controller driver:
- Clean up uniphier-ep reg, clocks, resets, and their names in DT
binding.
Synopsys DesignWare PCIe controller driver:
- Restrict coherent DMA mask to 32 bits for MSI, but allow controller
drivers to set 64-bit streaming DMA mask.
- Add eDMA engine support in both Root Port and Endpoint controllers.
Miscellaneous:
- Remove MODULE_LICENSE from boolean drivers so they don't look like
modules so modprobe can complain about them.
----------------------------------------------------------------
Alexey V. Vissarionov (1):
PCI/IOV: Enlarge virtfn sysfs name buffer
Bjorn Helgaas (23):
PCI: switchtec: Simplify switchtec_dma_mrpc_isr()
PCI: switchtec: Return -EFAULT for copy_to_user() errors
PCI/AER: Remove redundant Device Control Error Reporting Enable
Merge branch 'pci/aer'
Merge branch 'pci/enumeration'
Merge branch 'pci/hotplug'
Merge branch 'pci/iov'
Merge branch 'pci/kbuild'
Merge branch 'pci/p2pdma'
Merge branch 'pci/pm'
Merge branch 'pci/reset'
Merge branch 'pci/resource'
Merge branch 'pci/virtualization'
Merge branch 'pci/endpoint'
Merge branch 'pci/controller/dwc'
Merge branch 'pci/controller/imx6'
Merge branch 'pci/controller/mt7621'
Merge branch 'pci/controller/mvebu'
Merge branch 'pci/controller/qcom'
Merge branch 'pci/controller/switchtec'
Merge branch 'pci/controller/uniphier'
Merge branch 'pci/controller/vmd'
Merge branch 'pci/misc'
Damien Le Moal (1):
PCI: Avoid FLR for AMD FCH AHCI adapters
David E. Box (3):
PCI: vmd: Use PCI_VDEVICE in device list
PCI: vmd: Create feature grouping for client products
PCI: vmd: Add quirk to configure PCIe ASPM and LTR
Dmitry Baryshkov (2):
dt-bindings: PCI: qcom: Add SM8350
PCI: qcom: Add SM8350 support
Geert Uytterhoeven (1):
PCI: Fix dropping valid root bus resources with .end = zero
Huacai Chen (3):
PCI/portdrv: Prevent LS7A Bus Master clearing on shutdown
PCI: loongson: Prevent LS7A MRRS increases
PCI: loongson: Add more devices that need MRRS quirk
Johan Hovold (1):
PCI: qcom: Fix host-init error handling
Krzysztof Kozlowski (4):
dt-bindings: PCI: qcom: Add oneOf to compatible match
dt-bindings: PCI: qcom: Add MSM8998 specific compatible
dt-bindings: PCI: qcom: Unify MSM8996 and MSM8998 clock order
dt-bindings: PCI: qcom-ep: Correct qcom,perst-regs
Kunihiko Hayashi (1):
dt-bindings: PCI: uniphier-ep: Clean up reg, clocks, resets, and their names
Logan Gunthorpe (1):
PCI/P2PDMA: Annotate RCU dereference
Lukas Bulwahn (1):
PCI: hv: Drop duplicate PCI_MSI dependency
Lukas Wunner (4):
PCI/PM: Observe reset delay irrespective of bridge_d3
PCI: Unify delay handling for reset and resume
PCI/DPC: Await readiness of secondary bus after reset
PCI: hotplug: Allow marking devices as disconnected during bind/unbind
Manivannan Sadhasivam (6):
PCI: dra7xx: Use threaded IRQ handler for "dra7xx-pcie-main" IRQ
PCI: tegra194: Move dw_pcie_ep_linkup() to threaded IRQ handler
PCI: endpoint: Use a separate lock for protecting epc->pci_epf list
PCI: endpoint: Use callback mechanism for passing events from EPC to EPF
PCI: endpoint: Use link_up() callback in place of LINK_UP notifier
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
Mengyuan Lou (1):
PCI: Add ACS quirk for Wangxun NICs
Michael Bottini (1):
PCI/ASPM: Add pci_enable_link_state()
Mika Westerberg (3):
PCI: Align extra resources for hotplug bridges properly
PCI: Take other bus devices into account when distributing resources
PCI: Distribute available resources for root buses, too
Nick Alcock (1):
PCI: Remove MODULE_LICENSE so boolean drivers don't look like modules
Pali Rohár (1):
PCI: mvebu: Mark driver as BROKEN
Rafael J. Wysocki (1):
PCI/ACPI: Account for _S0W of the target bridge in acpi_pci_bridge_d3()
Randy Dunlap (1):
misc: pci_endpoint_test: Drop initial kernel-doc marker
Richard Zhu (8):
dt-bindings: imx6q-pcie: Add i.MX8MM PCIe EP mode compatible string
dt-bindings: imx6q-pcie: Add i.MX8MQ PCIe EP mode compatible string
dt-bindings: imx6q-pcie: Add i.MX8MP PCIe EP mode compatible string
misc: pci_endpoint_test: Add i.MX8 PCIe EP device support
PCI: imx6: Add i.MX PCIe EP mode support
PCI: imx6: Add i.MX8MQ PCIe EP support
PCI: imx6: Add i.MX8MM PCIe EP support
PCI: imx6: Add i.MX8MP PCIe EP support
Rob Herring (1):
PCI: Honor firmware's device disabled status
Robert Marko (3):
dt-bindings: PCI: qcom: Sort compatibles alphabetically
dt-bindings: PCI: qcom: Add IPQ8074 Gen3 port
PCI: qcom: Add IPQ8074 Gen3 port support
Serge Semin (29):
dmaengine: Fix dma_slave_config.dst_addr description
dmaengine: dw-edma: Release requested IRQs on failure
dmaengine: dw-edma: Convert ll/dt phys address to PCI bus/DMA address
dmaengine: dw-edma: Fix missing src/dst address of interleaved xfers
dmaengine: dw-edma: Don't permit non-inc interleaved xfers
dmaengine: dw-edma: Fix invalid interleaved xfers semantics
dmaengine: dw-edma: Add CPU to PCI bus address translation
dmaengine: dw-edma: Add PCI bus address getter to the remote EP glue driver
dmaengine: dw-edma: Drop chancnt initialization
dmaengine: dw-edma: Drop unnecessary debugfs reg casts
dmaengine: dw-edma: Stop checking debugfs_create_*() return value
dmaengine: dw-edma: Add dw_edma prefix to debugfs nodes descriptor
dmaengine: dw-edma: Convert debugfs descs to being heap-allocated
dmaengine: dw-edma: Rename debugfs dentry variables to 'dent'
dmaengine: dw-edma: Simplify debugfs context CSRs init procedure
dmaengine: dw-edma: Move eDMA data pointer to debugfs node descriptor
dmaengine: dw-edma: Join read/write channels into a single device
dmaengine: dw-edma: Use DMA engine device debugfs subdirectory
dmaengine: dw-edma: Fix readq_ch() return value truncation
dmaengine: dw-edma: Use non-atomic io-64 methods
dmaengine: dw-edma: Drop DT-region allocation
dmaengine: dw-edma: Replace chip ID number with device name
dmaengine: dw-edma: Skip cleanup procedure if no private data found
dmaengine: dw-edma: Add mem-mapped LL-entries support
dmaengine: dw-edma: Depend on DW_EDMA instead of selecting it
dmaengine: dw-edma: Prepare dw_edma_probe() for builtin callers
PCI: dwc: Restrict only coherent DMA mask for MSI address allocation
PCI: bt1: Set 64-bit DMA mask
PCI: dwc: Add Root Port and Endpoint controller eDMA engine support
Sergio Paracuellos (1):
PCI: mt7621: Delay phy ports initialization
Thomas Weißschuh (1):
PCI/sysfs: Constify struct kobj_type pci_slot_ktype
Vidya Sagar (1):
PCI/AER: Configure ECRC only if AER is native
Yang Yingliang (1):
PCI: endpoint: pci-epf-vntb: Add epf_ntb_mw_bar_clear() num_mws kernel-doc
Documentation/admin-guide/kernel-parameters.txt | 4 +-
.../devicetree/bindings/pci/fsl,imx6q-pcie.yaml | 3 +
.../devicetree/bindings/pci/qcom,pcie-ep.yaml | 6 +-
.../devicetree/bindings/pci/qcom,pcie.yaml | 103 ++++--
.../bindings/pci/socionext,uniphier-pcie-ep.yaml | 76 +++--
drivers/acpi/device_pm.c | 19 ++
drivers/dma/dw-edma/Kconfig | 5 +-
drivers/dma/dw-edma/dw-edma-core.c | 198 +++++------
drivers/dma/dw-edma/dw-edma-core.h | 10 +-
drivers/dma/dw-edma/dw-edma-pcie.c | 56 ++--
drivers/dma/dw-edma/dw-edma-v0-core.c | 100 +++---
drivers/dma/dw-edma/dw-edma-v0-core.h | 1 -
drivers/dma/dw-edma/dw-edma-v0-debugfs.c | 368 ++++++++++-----------
drivers/dma/dw-edma/dw-edma-v0-debugfs.h | 5 -
drivers/misc/pci_endpoint_test.c | 4 +-
drivers/pci/controller/Kconfig | 3 +-
drivers/pci/controller/dwc/Kconfig | 23 +-
drivers/pci/controller/dwc/pci-dra7xx.c | 2 +-
drivers/pci/controller/dwc/pci-imx6.c | 200 ++++++++++-
drivers/pci/controller/dwc/pcie-bt1.c | 4 +
drivers/pci/controller/dwc/pcie-designware-ep.c | 12 +-
drivers/pci/controller/dwc/pcie-designware-host.c | 25 +-
drivers/pci/controller/dwc/pcie-designware.c | 195 +++++++++++
drivers/pci/controller/dwc/pcie-designware.h | 21 ++
drivers/pci/controller/dwc/pcie-histb.c | 1 -
drivers/pci/controller/dwc/pcie-qcom.c | 15 +-
drivers/pci/controller/dwc/pcie-tegra194.c | 9 +-
.../pci/controller/mobiveil/pcie-mobiveil-plat.c | 1 -
drivers/pci/controller/pci-loongson.c | 69 ++--
drivers/pci/controller/pci-tegra.c | 1 -
drivers/pci/controller/pci-versatile.c | 1 -
drivers/pci/controller/pcie-hisi-error.c | 1 -
drivers/pci/controller/pcie-microchip-host.c | 1 -
drivers/pci/controller/pcie-mt7621.c | 2 +
drivers/pci/controller/vmd.c | 97 ++++--
drivers/pci/endpoint/functions/pci-epf-test.c | 38 +--
drivers/pci/endpoint/functions/pci-epf-vntb.c | 1 +
drivers/pci/endpoint/pci-ep-cfs.c | 1 -
drivers/pci/endpoint/pci-epc-core.c | 33 +-
drivers/pci/endpoint/pci-epc-mem.c | 1 -
drivers/pci/endpoint/pci-epf-core.c | 1 -
drivers/pci/hotplug/acpiphp_core.c | 1 -
drivers/pci/hotplug/pciehp_hpc.c | 2 +
drivers/pci/hotplug/shpchp_core.c | 1 -
drivers/pci/iov.c | 2 +-
drivers/pci/p2pdma.c | 8 +-
drivers/pci/pci-acpi.c | 45 ++-
drivers/pci/pci-driver.c | 2 +-
drivers/pci/pci.c | 69 ++--
drivers/pci/pci.h | 59 ++--
drivers/pci/pcie/aer.c | 51 +--
drivers/pci/pcie/aspm.c | 54 +++
drivers/pci/pcie/dpc.c | 4 +-
drivers/pci/pcie/portdrv.c | 16 +-
drivers/pci/probe.c | 4 +-
drivers/pci/quirks.c | 23 ++
drivers/pci/setup-bus.c | 248 ++++++++++----
drivers/pci/slot.c | 2 +-
drivers/pci/switch/switchtec.c | 13 +-
include/acpi/acpi_bus.h | 1 +
include/linux/dma/edma.h | 25 +-
include/linux/dmaengine.h | 2 +-
include/linux/pci-epc.h | 10 +-
include/linux/pci-epf.h | 19 +-
include/linux/pci.h | 8 +
include/linux/pci_ids.h | 2 +
66 files changed, 1573 insertions(+), 814 deletions(-)