[GIT,PULL] PCI changes for v6.2

Message ID 20221213233050.GA218218@bhelgaas
State New
Headers
Series [GIT,PULL] PCI changes for v6.2 |

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git tags/pci-v6.2-changes

Message

Bjorn Helgaas Dec. 13, 2022, 11:30 p.m. UTC
  The following changes since commit 9abf2313adc1ca1b6180c508c25f22f9395cc780:

  Linux 6.1-rc1 (2022-10-16 15:36:24 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git tags/pci-v6.2-changes

for you to fetch changes up to f826afe5eae856b3834cbc65db6178cccd4a3142:

  Merge branch 'pci/kbuild' (2022-12-10 10:36:52 -0600)


You will see a merge conflict in
Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml between these:

  5c3741492d2e ("dt-bindings: PCI: tegra234: Add ECAM support")
  4cc13eedb892 ("dt-bindings: PCI: dwc: Add reg/reg-names common properties")

5c3741492d2e is already in your tree via arm-soc, and 4cc13eedb892 is in
this pull request.  The resolution I suggest is to use 4cc13eedb892, which
means we'll lose the addition of "ecam" from 5c3741492d2e.  This resolution
has been in linux-next for a week or so and is available here if you're
interested:
https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git/commit/?h=v6.2-merge&id=f64171fdd171

----------------------------------------------------------------

Enumeration:

  - Squash portdrv_{core,pci}.c into portdrv.c to ease maintenance and make
    more things static.

  - Make portdrv bind to Switch Ports that have AER.  Previously, if these
    Ports lacked MSI/MSI-X, portdrv failed to bind, which meant the Ports
    couldn't be suspended to low-power states.  AER on these Ports doesn't
    use interrupts, and the AER driver doesn't need to claim them.

  - Assign PCI domain IDs using ida_alloc(), which makes host bridge
    add/remove work better.

Resource management:

  - To work better with recent BIOSes that use EfiMemoryMappedIO for PCI
    host bridge apertures, remove those regions from the E820 map (E820
    entries normally prevent us from allocating BARs).  In v5.19, we added
    some quirks to disable E820 checking, but that's not very maintainable.
    EfiMemoryMappedIO means the OS needs to map the region for use by EFI
    runtime services; it shouldn't prevent OS from using it.

PCIe native device hotplug:

  - Build pciehp by default if USB4 is enabled, since Thunderbolt/USB4 PCIe
    tunneling depends on native PCIe hotplug.

  - Enable Command Completed Interrupt only if supported to avoid user
    confusion from lspci output that says this is enabled but not
    supported.

  - Prevent pciehp from binding to Switch Upstream Ports; this happened
    because of interaction with acpiphp and caused devices below the
    Upstream Port to disappear.

Power management:

  - Convert AGP drivers to generic power management.  We hope to remove
    legacy power management from the PCI core eventually.

Virtualization:

  - Fix pci_device_is_present(), which previously always returned "false"
    for VFs, causing virtio hangs when unbinding the driver.

Miscellaneous:

  - Convert drivers to gpiod API to prepare for dropping some legacy code.

  - Fix DOE fencepost error for the maximum data object length.

Baikal-T1 PCIe controller driver:

  - Add driver and DT bindings.

Broadcom STB PCIe controller driver:

  - Enable Multi-MSI.

  - Delay 100ms after PERST# deassert to allow power and clocks to
    stabilize.

  - Configure Read Completion Boundary to 64 bytes.

Freescale i.MX6 PCIe controller driver:

  - Initialize PHY before deasserting core reset to fix a regression in
    v6.0 on boards where the PHY provides the reference.

  - Fix imx6sx and imx8mq clock names in DT schema.

Intel VMD host bridge driver:

  - Fix Secondary Bus Reset on VMD bridges, which allows reset of NVMe SSDs
    in VT-d pass-through scenarios.

  - Disable MSI remapping, which gets re-enabled by firmware during
    suspend/resume.

MediaTek PCIe Gen3 controller driver:

  - Add MT7986 and MT8195 support.

Qualcomm PCIe controller driver:

  - Add SC8280XP/SA8540P basic interconnect support.

Rockchip DesignWare PCIe controller driver:

  - Base DT schema on common Synopsys schema.

Synopsys DesignWare PCIe core:

  - Collect DT items shared between Root Port and Endpoint (PERST GPIO, PHY
    info, clocks, resets, link speed, number of lanes, number of iATU
    windows, interrupt info, etc) to snps,dw-pcie-common.yaml.

  - Add dma-ranges support for Root Ports and Endpoints.

  - Consolidate DT resource retrieval for "dbi", "dbi2", "atu", etc. to
    reduce code duplication.

  - Add generic names for clocks and resets to encourage more consistent
    naming across drivers using DesignWare IP.

  - Stop advertising PTM Responder role for Endpoints, which aren't allowed
    to be responders.

TI J721E PCIe driver:

  - Add j721s2 host mode ID to DT schema.

  - Add interrupt properties to DT schema.

Toshiba Visconti PCIe controller driver:

  - Fix interrupts array max constraints in DT schema.

----------------------------------------------------------------
Albert Zhou (1):
      PCI: pciehp: Enable by default if USB4 enabled

Bjorn Helgaas (47):
      PCI/portdrv: Squash into portdrv.c
      PCI/portdrv: Move private things to portdrv.c
      PCI/portdrv: Unexport pcie_port_service_register(), pcie_port_service_unregister()
      agp/efficeon: Convert to generic power management
      agp/intel: Convert to generic power management
      agp/amd-k7: Convert to generic power management
      agp/ati: Convert to generic power management
      agp/nvidia: Convert to generic power management
      agp/amd64: Update to DEFINE_SIMPLE_DEV_PM_OPS()
      agp/sis: Update to DEFINE_SIMPLE_DEV_PM_OPS()
      agp/via: Update to DEFINE_SIMPLE_DEV_PM_OPS()
      PCI/PM: Remove unused 'state' parameter to pci_legacy_suspend_late()
      Revert "PCI: Clear PCI_STATUS when setting up device"
      PCI: altera-msi: Include <linux/irqdomain.h> explicitly
      PCI: microchip: Include <linux/irqdomain.h> explicitly
      PCI: mvebu: Include <linux/irqdomain.h> explicitly
      PCI: xgene-msi: Include <linux/irqdomain.h> explicitly
      PCI: Remove unnecessary <linux/of_irq.h> includes
      PCI: Drop of_match_ptr() to avoid unused variables
      PCI/portdrv: Allow AER service only for Root Ports & RCECs
      efi/x86: Remove EfiMemoryMappedIO from E820 map
      PCI: Skip allocate_resource() if too little space available
      x86/PCI: Tidy E820 removal messages
      x86/PCI: Fix log message typo
      x86/PCI: Use pr_info() when possible
      Merge branch 'pci/doe'
      Merge branch 'pci/enumeration'
      Merge branch 'pci/hotplug'
      Merge branch 'pci/misc'
      Merge branch 'pci/pm'
      Merge branch 'pci/pm-agp'
      Merge branch 'pci/portdrv'
      Merge branch 'pci/resource'
      Merge branch 'pci/sysfs'
      Merge branch 'remotes/lorenzo/pci/dt'
      Merge branch 'remotes/lorenzo/pci/brcmstb'
      Merge branch 'remotes/lorenzo/pci/dwc'
      Merge branch 'remotes/lorenzo/pci/endpoint'
      Merge branch 'remotes/lorenzo/pci/mt7621'
      Merge branch 'remotes/lorenzo/pci/qcom'
      Merge branch 'remotes/lorenzo/pci/tegra'
      Merge branch 'remotes/lorenzo/pci/vmd'
      Merge branch 'remotes/lorenzo/pci/misc'
      Merge branch 'pci/ctrl/aardvark'
      Merge branch 'pci/ctrl/mvebu'
      Merge branch 'pci/ctrl/xilinx'
      Merge branch 'pci/kbuild'

Dmitry Torokhov (4):
      PCI: tegra: Switch to using devm_fwnode_gpiod_get
      PCI: histb: Switch to using gpiod API
      PCI: aardvark: Switch to using devm_gpiod_get_optional()
      PCI: mvebu: Switch to using gpiod API

Francisco Munoz (1):
      PCI: vmd: Fix secondary bus reset for Intel bridges

Frank Li (7):
      PCI: endpoint: pci-epf-vntb: Clean up kernel_doc warning
      PCI: endpoint: pci-epf-vntb: Fix struct epf_ntb_ctrl indentation
      PCI: endpoint: pci-epf-vntb: Fix call pci_epc_mem_free_addr() in error path
      PCI: endpoint: pci-epf-vntb: Remove unused epf_db_phy struct member
      PCI: endpoint: pci-epf-vntb: Replace hardcoded 4 with sizeof(u32)
      PCI: endpoint: pci-epf-vntb: Fix sparse build warning for epf_db
      PCI: endpoint: pci-epf-vntb: Fix sparse ntb->reg build warning

Frank Wunderlich (2):
      dt-bindings: PCI: mediatek-gen3: add SoC based clock config
      dt-bindings: PCI: mediatek-gen3: add support for mt7986

Ian Cowan (1):
      PCI: shpchp: Remove unused get_mode1_ECC_cap callback

Jianjun Wang (1):
      dt-bindings: PCI: mediatek-gen3: Support mt8195

Jim Quinlan (5):
      PCI: brcmstb: Enable Multi-MSI
      PCI: brcmstb: Wait for 100ms following PERST# deassert
      PCI: brcmstb: Replace status loops with read_poll_timeout_atomic()
      PCI: brcmstb: Drop needless 'inline' annotations
      PCI: brcmstb: Set RCB_{MPS,64B}_MODE bits

Johan Hovold (3):
      dt-bindings: PCI: qcom: Add SC8280XP/SA8540P interconnects
      PCI: qcom: Add basic interconnect support
      dt-bindings: PCI: qcom: Allow 'dma-coherent' property

John Thomson (1):
      PCI: mt7621: Add sentinel to quirks table

Kunihiko Hayashi (1):
      PCI: pci-epf-test: Register notifier if only core_init_notifier is enabled

Li Ming (1):
      PCI/DOE: Fix maximum data object length miscalculation

Maciej W. Rozycki (1):
      PCI: Access Link 2 registers only for devices with Links

Manivannan Sadhasivam (1):
      PCI: qcom: Fix error message for reset_control_assert()

Matt Ranostay (3):
      dt-bindings: PCI: ti,j721e-pci-host: add interrupt controller definition
      dt-bindings: PCI: ti,j721e-pci-*: Add missing interrupt properties
      dt-bindings: PCI: Add host mode device-id for j721s2 platform

Michael S. Tsirkin (1):
      PCI: Fix pci_device_is_present() for VFs by checking PF

Michal Simek (1):
      PCI: xilinx-nwl: Fix coding style violations

Nirmal Patel (1):
      PCI: vmd: Disable MSI remapping after suspend

Pali Rohár (2):
      PCI: Assign PCI domain IDs by ida_alloc()
      PCI: pciehp: Enable Command Completed Interrupt only if supported

Rafael J. Wysocki (2):
      PCI/portdrv: Set PCIE_PORT_SERVICE_HP for Root and Downstream Ports only
      PCI: acpiphp: Avoid setting is_hotplug_bridge for PCIe Upstream Ports

Sascha Hauer (2):
      PCI/sysfs: Fix double free in error path
      PCI: imx6: Initialize PHY before deasserting core reset

Serge Semin (20):
      dt-bindings: imx6q-pcie: Fix clock names for imx6sx and imx8mq
      dt-bindings: visconti-pcie: Fix interrupts array max constraints
      dt-bindings: PCI: dwc: Detach common RP/EP DT bindings
      dt-bindings: PCI: dwc: Remove bus node from the examples
      dt-bindings: PCI: dwc: Add phys/phy-names common properties
      dt-bindings: PCI: dwc: Add max-link-speed common property
      dt-bindings: PCI: dwc: Apply generic schema for generic device only
      dt-bindings: PCI: dwc: Add max-functions EP property
      dt-bindings: PCI: dwc: Add interrupts/interrupt-names common properties
      dt-bindings: PCI: dwc: Add reg/reg-names common properties
      dt-bindings: PCI: dwc: Add clocks/resets common properties
      dt-bindings: PCI: dwc: Add dma-coherent property
      dt-bindings: PCI: dwc: Apply common schema to Rockchip DW PCIe nodes
      dt-bindings: PCI: dwc: Add Baikal-T1 PCIe Root Port bindings
      PCI: dwc: Introduce dma-ranges property support for RC-host
      PCI: dwc: Introduce generic controller capabilities interface
      PCI: dwc: Introduce generic resources getter
      PCI: dwc: Combine iATU detection procedures
      PCI: dwc: Introduce generic platform clocks and resets
      PCI: dwc: Add Baikal-T1 PCIe controller support

Shunsuke Mie (1):
      PCI: endpoint: Fix Kconfig indent style

Vidya Sagar (4):
      PCI: dwc: Fix n_fts[] array overrun
      PCI: Add PCI_PTM_CAP_RES macro
      PCI: designware-ep: Disable PTM capabilities for EP mode
      PCI: dwc: Use dev_info for PCIe link down event logging

Yipeng Zou (1):
      PCI/ACPI: Use METHOD_NAME__UID instead of plain string

Yoshihiro Shimoda (1):
      PCI: endpoint: Fix WARN() when an endpoint driver is removed

Zeng Heng (1):
      PCI: Check for alloc failure in pci_request_irq()

 .../devicetree/bindings/pci/baikal,bt1-pcie.yaml   | 168 ++++++
 .../devicetree/bindings/pci/fsl,imx6q-pcie.yaml    |  46 +-
 .../bindings/pci/mediatek-pcie-gen3.yaml           |  77 ++-
 .../devicetree/bindings/pci/qcom,pcie.yaml         |  22 +
 .../devicetree/bindings/pci/rockchip-dw-pcie.yaml  |   4 +-
 .../bindings/pci/snps,dw-pcie-common.yaml          | 266 +++++++++
 .../devicetree/bindings/pci/snps,dw-pcie-ep.yaml   | 206 +++++--
 .../devicetree/bindings/pci/snps,dw-pcie.yaml      | 256 +++++---
 .../devicetree/bindings/pci/ti,j721e-pci-ep.yaml   |   7 +
 .../devicetree/bindings/pci/ti,j721e-pci-host.yaml |  22 +
 .../bindings/pci/toshiba,visconti-pcie.yaml        |   7 +-
 arch/x86/kernel/resource.c                         |  12 +-
 arch/x86/pci/acpi.c                                |  39 +-
 arch/x86/platform/efi/efi.c                        |  46 ++
 drivers/char/agp/amd-k7-agp.c                      |  24 +-
 drivers/char/agp/amd64-agp.c                       |   6 +-
 drivers/char/agp/ati-agp.c                         |  22 +-
 drivers/char/agp/efficeon-agp.c                    |  16 +-
 drivers/char/agp/intel-agp.c                       |  11 +-
 drivers/char/agp/nvidia-agp.c                      |  24 +-
 drivers/char/agp/sis-agp.c                         |   7 +-
 drivers/char/agp/via-agp.c                         |   6 +-
 drivers/pci/access.c                               |   8 +-
 drivers/pci/bus.c                                  |   4 +
 drivers/pci/controller/cadence/pci-j721e.c         |   1 -
 drivers/pci/controller/dwc/Kconfig                 |   9 +
 drivers/pci/controller/dwc/Makefile                |   1 +
 drivers/pci/controller/dwc/pci-imx6.c              |  13 +-
 drivers/pci/controller/dwc/pci-layerscape.c        |   1 -
 drivers/pci/controller/dwc/pcie-armada8k.c         |   1 -
 drivers/pci/controller/dwc/pcie-bt1.c              | 643 +++++++++++++++++++++
 drivers/pci/controller/dwc/pcie-designware-ep.c    |  48 +-
 drivers/pci/controller/dwc/pcie-designware-host.c  |  47 +-
 drivers/pci/controller/dwc/pcie-designware.c       | 266 +++++++--
 drivers/pci/controller/dwc/pcie-designware.h       |  63 +-
 drivers/pci/controller/dwc/pcie-histb.c            |  39 +-
 drivers/pci/controller/dwc/pcie-qcom.c             |  78 ++-
 drivers/pci/controller/dwc/pcie-tegra194.c         |   1 -
 drivers/pci/controller/pci-aardvark.c              |  22 +-
 drivers/pci/controller/pci-ftpci100.c              |   2 +-
 drivers/pci/controller/pci-mvebu.c                 |  52 +-
 drivers/pci/controller/pci-tegra.c                 |   9 +-
 drivers/pci/controller/pci-v3-semi.c               |   3 +-
 drivers/pci/controller/pci-xgene-msi.c             |   2 +-
 drivers/pci/controller/pci-xgene.c                 |   1 -
 drivers/pci/controller/pcie-altera-msi.c           |   2 +-
 drivers/pci/controller/pcie-brcmstb.c              |  85 +--
 drivers/pci/controller/pcie-iproc-platform.c       |   1 -
 drivers/pci/controller/pcie-iproc.c                |   1 -
 drivers/pci/controller/pcie-microchip-host.c       |   2 +-
 drivers/pci/controller/pcie-mt7621.c               |   3 +-
 drivers/pci/controller/pcie-rockchip-host.c        |   1 -
 drivers/pci/controller/pcie-xilinx-cpm.c           |   1 -
 drivers/pci/controller/pcie-xilinx-nwl.c           |   8 +-
 drivers/pci/controller/vmd.c                       |  27 +-
 drivers/pci/doe.c                                  |  20 +-
 drivers/pci/endpoint/functions/Kconfig             |  18 +-
 drivers/pci/endpoint/functions/pci-epf-test.c      |   2 +-
 drivers/pci/endpoint/functions/pci-epf-vntb.c      | 150 +++--
 drivers/pci/endpoint/pci-epc-core.c                |   7 +-
 drivers/pci/hotplug/Kconfig                        |   3 +
 drivers/pci/hotplug/TODO                           |   3 -
 drivers/pci/hotplug/acpiphp_glue.c                 |   8 +
 drivers/pci/hotplug/pciehp_hpc.c                   |   4 +-
 drivers/pci/hotplug/shpchp.h                       |   1 -
 drivers/pci/hotplug/shpchp_hpc.c                   |  18 -
 drivers/pci/irq.c                                  |   2 +
 drivers/pci/pci-acpi.c                             |   2 +-
 drivers/pci/pci-driver.c                           |   8 +-
 drivers/pci/pci-sysfs.c                            |  13 +-
 drivers/pci/pci.c                                  | 109 ++--
 drivers/pci/pci.h                                  |   1 +
 drivers/pci/pcie/Kconfig                           |   8 +-
 drivers/pci/pcie/Makefile                          |   2 +-
 drivers/pci/pcie/{portdrv_core.c => portdrv.c}     | 269 ++++++++-
 drivers/pci/pcie/portdrv.h                         |  19 -
 drivers/pci/pcie/portdrv_pci.c                     | 252 --------
 drivers/pci/probe.c                                |  10 +-
 drivers/pci/remove.c                               |   6 +
 include/linux/pci.h                                |   1 +
 include/uapi/linux/pci_regs.h                      |   1 +
 81 files changed, 2748 insertions(+), 928 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/pci/baikal,bt1-pcie.yaml
 create mode 100644 Documentation/devicetree/bindings/pci/snps,dw-pcie-common.yaml
 create mode 100644 drivers/pci/controller/dwc/pcie-bt1.c
 rename drivers/pci/pcie/{portdrv_core.c => portdrv.c} (68%)
 delete mode 100644 drivers/pci/pcie/portdrv_pci.c
  

Comments

Linus Torvalds Dec. 14, 2022, 6:01 p.m. UTC | #1
On Tue, Dec 13, 2022 at 3:30 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
>
> You will see a merge conflict in
> Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml between these:
>
>   5c3741492d2e ("dt-bindings: PCI: tegra234: Add ECAM support")
>   4cc13eedb892 ("dt-bindings: PCI: dwc: Add reg/reg-names common properties")
>
> 5c3741492d2e is already in your tree via arm-soc, and 4cc13eedb892 is in
> this pull request.  The resolution I suggest is to use 4cc13eedb892, which
> means we'll lose the addition of "ecam" from 5c3741492d2e.

Heh. I only read this part once I had already resolved that thing differently.

I dunno, I used my own - possibly bad - judgment to add a case for
that 'ecam' thing under the vendor-specific list.

That was very much a "monkey see, monkey do" resolution, so some DT
person should check it out and possibly make fun of me and my dubious
ancestry. Rob? Thierry?

                  Linus
  
pr-tracker-bot@kernel.org Dec. 14, 2022, 6:04 p.m. UTC | #2
The pull request you sent on Tue, 13 Dec 2022 17:30:50 -0600:

> git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git tags/pci-v6.2-changes

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/c7020e1b346d5840e93b58cc4f2c67fc645d8df9

Thank you!
  
Rob Herring Dec. 15, 2022, 12:22 a.m. UTC | #3
On Wed, Dec 14, 2022 at 12:01 PM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Tue, Dec 13, 2022 at 3:30 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
> >
> > You will see a merge conflict in
> > Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml between these:
> >
> >   5c3741492d2e ("dt-bindings: PCI: tegra234: Add ECAM support")
> >   4cc13eedb892 ("dt-bindings: PCI: dwc: Add reg/reg-names common properties")
> >
> > 5c3741492d2e is already in your tree via arm-soc, and 4cc13eedb892 is in
> > this pull request.  The resolution I suggest is to use 4cc13eedb892, which
> > means we'll lose the addition of "ecam" from 5c3741492d2e.
>
> Heh. I only read this part once I had already resolved that thing differently.
>
> I dunno, I used my own - possibly bad - judgment to add a case for
> that 'ecam' thing under the vendor-specific list.
>
> That was very much a "monkey see, monkey do" resolution, so some DT
> person should check it out and possibly make fun of me and my dubious
> ancestry. Rob? Thierry?

Good job writing valid json-schema! :) It's close enough and better
than just dropping which caused warnings. It is Tegra only ATM, but
anyone else that sets up an ECAM region should use the same name.

Rob
  
Thierry Reding Dec. 15, 2022, 12:11 p.m. UTC | #4
On Wed, Dec 14, 2022 at 06:22:27PM -0600, Rob Herring wrote:
> On Wed, Dec 14, 2022 at 12:01 PM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > On Tue, Dec 13, 2022 at 3:30 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
> > >
> > > You will see a merge conflict in
> > > Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml between these:
> > >
> > >   5c3741492d2e ("dt-bindings: PCI: tegra234: Add ECAM support")
> > >   4cc13eedb892 ("dt-bindings: PCI: dwc: Add reg/reg-names common properties")
> > >
> > > 5c3741492d2e is already in your tree via arm-soc, and 4cc13eedb892 is in
> > > this pull request.  The resolution I suggest is to use 4cc13eedb892, which
> > > means we'll lose the addition of "ecam" from 5c3741492d2e.
> >
> > Heh. I only read this part once I had already resolved that thing differently.
> >
> > I dunno, I used my own - possibly bad - judgment to add a case for
> > that 'ecam' thing under the vendor-specific list.
> >
> > That was very much a "monkey see, monkey do" resolution, so some DT
> > person should check it out and possibly make fun of me and my dubious
> > ancestry. Rob? Thierry?
> 
> Good job writing valid json-schema! :) It's close enough and better
> than just dropping which caused warnings. It is Tegra only ATM, but
> anyone else that sets up an ECAM region should use the same name.

Yeah, seems fine as-is for now. We can always move this out of the
vendor-specific list once others start using it.

Thierry