Skip to content
Permalink
Naveen-Naidu/P…
Switch branches/tags

Commits on Nov 15, 2021

  1. PCI: Add KUnit tests for __pci_read_base()

    Currently it is hard to debug issues in the resource assignment code due
    to long reporduction cycles between the developer trying to fix the code
    and the user testing it due to the lack of hardware device with the
    developer [1].
    
    [1]:
    https://lore.kernel.org/all/20210621123714.GA3286648@bjorn-Precision-5520/
    
    This adds KUnit tests for __pci_read_base() which is only  dependent
    on software structures, so no hardware is needed to run these.
    
    This lays the foundation for test fixtures we can use to reproduce the
    resource assignment code path of PCI.
    
    Sample output from KUnit Test run:
    
          # Subtest: __pci_read_base()
          1..3
          # test_pci_read_base_type_0_hdr_approach_1: initializing __pci_read_base() tests
       (null): reg 0x18: [mem 0x4f400000-0x4f400fff]
          ok 1 - test_pci_read_base_type_0_hdr_approach_1
          # test_pci_read_base_type_0_hdr_approach_2: initializing __pci_read_base() tests
       (null): reg 0x18: [mem 0x4f400000-0x4f400fff]
       (null): reg 0x1c: [mem 0xaf400000-0xaf4000ff]
          ok 2 - test_pci_read_base_type_0_hdr_approach_2
          # test_pci_read_base_type_1_hdr: initializing __pci_read_base() tests
       (null): reg 0x10: [mem 0xaf400000-0xaf4000ff]
          ok 3 - test_pci_read_base_type_1_hdr
      # __pci_read_base(): pass:3 fail:0 skip:0 total:3
      # Totals: pass:3 fail:0 skip:0 total:3
      # ok 8 - __pci_read_base()
    
    Suggested-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Naveen Naidu <naveennaidu479@gmail.com>
    Naveenaidu authored and intel-lab-lkp committed Nov 15, 2021

Commits on Nov 5, 2021

  1. Merge branch 'remotes/lorenzo/pci/xgene'

    - Use PCI_VENDOR_ID_AMCC macro instead of defining a custom macro in
      pci-xgene.c (Pali Rohár)
    
    * remotes/lorenzo/pci/xgene:
      PCI: xgene: Use PCI_VENDOR_ID_AMCC macro
    bjorn-helgaas committed Nov 5, 2021
  2. Merge branch 'remotes/lorenzo/pci/vmd'

    - Assign a number to each VMD controller to distinguish them in
      /proc/interrupts (Chunguang Xu)
    
    - Don't disable VMD MSI-X remapping if IOMMU remapping is enabled (Adrian
      Huang)
    
    - Add Kconfig dependency on !UML for allyesconfig build issue (Johannes
      Berg)
    
    * remotes/lorenzo/pci/vmd:
      PCI: vmd: depend on !UML
      PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is enabled by IOMMU
      PCI: vmd: Assign a number to each VMD controller
    bjorn-helgaas committed Nov 5, 2021
  3. Merge branch 'pci/host/rcar'

    - Remove unneeded includes (Geert Uytterhoeven)
    
    * pci/host/rcar:
      PCI: rcar-host: Remove unneeded includes
      PCI: rcar-ep: Remove unneeded includes
    bjorn-helgaas committed Nov 5, 2021
  4. Merge branch 'remotes/lorenzo/pci/qcom'

    - Add Qualcomm PCIe Endpoint controller driver and DT binding (Manivannan
      Sadhasivam)
    
    - Add qcom struct for device-specific details in match data (Prasad
      Malisetty)
    
    - Switch pcie_1_pipe_clk_src from TCXO to pipe clock after PHY init in
      SC7280 (Prasad Malisetty)
    
    - Add .compatible device ID for SC8180x platform (Bjorn Andersson)
    
    * remotes/lorenzo/pci/qcom:
      PCI: qcom: Add sc8180x compatible
      PCI: qcom: Switch pcie_1_pipe_clk_src after PHY init in SC7280
      PCI: qcom: Replace ops with struct pcie_cfg in pcie match data
      MAINTAINERS: Add entry for Qualcomm PCIe Endpoint driver and binding
      PCI: qcom-ep: Add Qualcomm PCIe Endpoint controller driver
      dt-bindings: PCI: Add Qualcomm PCIe Endpoint controller
    bjorn-helgaas committed Nov 5, 2021
  5. Merge branch 'pci/host/mt7621'

    - Add MediaTek MT7621 SoC PCIe host controller (moved from staging) (Sergio
      Paracuellos)
    
    * pci/host/mt7621:
      MAINTAINERS: Add Sergio Paracuellos as MT7621 PCIe maintainer
      PCI: mt7621: Add MediaTek MT7621 PCIe host controller driver
      dt-bindings: PCI: Add MT7621 SoC PCIe host controller
    
    # Conflicts:
    #	drivers/pci/controller/Kconfig
    #	drivers/pci/controller/Makefile
    bjorn-helgaas committed Nov 5, 2021
  6. Merge branch 'pci/host/kirin'

    - Reorganize to separate out PHY logic (Mauro Carvalho Chehab)
    
    - Add support for external PHY in addition to the internal PHY (Mauro
      Carvalho Chehab)
    
    - Use regmap so both kirin driver and PHY can access APB registers (Mauro
      Carvalho Chehab)
    
    - Add support for per-lane PERST# GPIOs on HiKey970 external PEX 8606 PCI
      bridge (Mauro Carvalho Chehab)
    
    - Add "hisilicon,kirin970-pcie" compatible string (Mauro Carvalho Chehab)
    
    - Add MODULE_* macros (Mauro Carvalho Chehab)
    
    - Allow building as a module (Mauro Carvalho Chehab)
    
    - Add power_off support for Kirin 960 PHY (Mauro Carvalho Chehab)
    
    - Disable clkreq during poweroff sequence (Mauro Carvalho Chehab)
    
    - De-init the dwc driver during remove (Mauro Carvalho Chehab)
    
    - Allow removal of kirin driver (Mauro Carvalho Chehab)
    
    * pci/host/kirin:
      PCI: kirin: Allow removing the driver
      PCI: kirin: De-init the dwc driver
      PCI: kirin: Disable clkreq during poweroff sequence
      PCI: kirin: Move the power-off code to a common routine
      PCI: kirin: Add power_off support for Kirin 960 PHY
      PCI: kirin: Allow building it as a module
      PCI: kirin: Add MODULE_* macros
      PCI: kirin: Add Kirin 970 compatible
      PCI: kirin: Support PERST# GPIOs for HiKey970 external PEX 8606 bridge
      PCI: kirin: Use regmap for APB registers
      PCI: kirin: Add support for a PHY layer
      PCI: kirin: Reorganize the PHY logic inside the driver
    bjorn-helgaas committed Nov 5, 2021
  7. Merge branch 'remotes/lorenzo/pci/imx6'

    - Remove unused assignment (Krzysztof Wilczyński)
    
    * remotes/lorenzo/pci/imx6:
      PCI: imx6: Remove unused assignment to variable ret
    bjorn-helgaas committed Nov 5, 2021
  8. Merge branch 'remotes/lorenzo/pci/endpoint'

    - Use sysfs_emit() in "show" functions instead of sprintf() to avoid buffer
      overruns (Kunihiko Hayashi)
    
    * remotes/lorenzo/pci/endpoint:
      PCI: endpoint: Use sysfs_emit() in "show" functions
    bjorn-helgaas committed Nov 5, 2021
  9. Merge branch 'pci/host/dwc'

    - Export dw_pcie_ep_reset_bar(), dw_pcie_link_up() so more drivers can be
      modular (Luca Ceresoli)
    
    - Allow dra7xx host and endpoint drivers to be modules (Luca Ceresoli)
    
    - Enable dra7xx optional external clock if present (Luca Ceresoli)
    
    - Clean up Kconfig dependencies for PCIE_DW_HOST- and PCIE_DW_EP-based
      drivers (Andy Shevchenko)
    
    - Remove visconti redundant dev_err() after platform_get_irq_byname()
      failure (Krzysztof Wilczyński)
    
    - Run dwc .host_init() method before registering MSI interrupt handler so
      we have a chance to deal with pending interrupts left by bootloader
      (Bjorn Andersson)
    
    - Serialize uniphier INTx masking/unmasking (Kunihiko Hayashi)
    
    * pci/host/dwc:
      PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation
      PCI: dwc: Perform host_init() before registering msi
      PCI: visconti: Remove surplus dev_err() when using platform_get_irq_byname()
      PCI: dwc: Clean up Kconfig dependencies (PCIE_DW_EP)
      PCI: dwc: Clean up Kconfig dependencies (PCIE_DW_HOST)
      PCI: dra7xx: Get an optional clock
      PCI: dra7xx: Remove unused include
      PCI: dra7xx: Make it a kernel module
      PCI: dwc: Export more symbols to allow modular drivers
    bjorn-helgaas committed Nov 5, 2021
  10. Merge branch 'remotes/lorenzo/pci/dt'

    - Add Rockchip SoC PCIe controller DT bindings (Simon Xue)
    
    * remotes/lorenzo/pci/dt:
      dt-bindings: rockchip: Add DesignWare based PCIe controller
    bjorn-helgaas committed Nov 5, 2021
  11. Merge branch 'pci/host/cadence'

    - Disable PHY when j721e_pcie_probe() fails after initializing it
      (Christophe JAILLET)
    
    - Return success when cdns-pcie probe succeeds instead of doing error
      cleanup (Li Chen)
    
    * pci/host/cadence:
      PCI: cadence: Add cdns_plat_pcie_probe() missing return
      PCI: j721e: Fix j721e_pcie_probe() error path
    bjorn-helgaas committed Nov 5, 2021
  12. Merge branch 'pci/host/apple'

    - Make of_phandle_args_to_fwspec() generally available (Marc Zyngier)
    
    - Allow matching of interrupt-maps local to interrupt controller or PCI
      device (Marc Zyngier)
    
    - Add Apple SoC (e.g., M1) PCIe host controller driver, which enables
      access to USB type-A, Ethernet, Wi-Fi, Bluetooth devices; these require
      additional drivers of their own (Alyssa Rosenzweig)
    
    - Add apple INTx, per-port, and MSI interrupt support (Marc Zyngier)
    
    - Configure apple Requester-ID-to-Stream-ID mapper for IOMMU (DART) support
      (Marc Zyngier)
    
    * pci/host/apple:
      PCI: apple: Configure RID to SID mapper on device addition
      iommu/dart: Exclude MSI doorbell from PCIe device IOVA range
      PCI: apple: Implement MSI support
      PCI: apple: Add INTx and per-port interrupt support
      PCI: apple: Set up reference clocks when probing
      PCI: apple: Add initial hardware bring-up
      PCI: of: Allow matching of an interrupt-map local to a PCI device
      of/irq: Allow matching of an interrupt-map local to an interrupt controller
      irqdomain: Make of_phandle_args_to_fwspec() generally available
    bjorn-helgaas committed Nov 5, 2021
  13. Merge branch 'remotes/lorenzo/pci/aardvark'

    - Define macros for PCI_EXP_DEVCTL_PAYLOAD_* (Pali Rohár)
    
    - Set Max Payload Size to 512 bytes per Marvell spec (Pali Rohár)
    
    - Downgrade PIO Response Status messages to debug level (Marek Behún)
    
    - Preserve CRS SV (Config Request Retry Software Visibility) bit in
      emulated Root Control register (Pali Rohár)
    
    - Fix issue in configuring reference clock (Pali Rohár)
    
    - Don't clear status bits for masked interrupts (Pali Rohár)
    
    - Don't mask unused interrupts (Pali Rohár)
    
    - Avoid code repetition in advk_pcie_rd_conf() (Marek Behún)
    
    - Retry config accesses on CRS response (Pali Rohár)
    
    - Simplify emulated Root Capabilities initialization (Pali Rohár)
    
    - Fix several link training issues (Pali Rohár)
    
    - Fix link-up checking via LTSSM (Pali Rohár)
    
    - Fix reporting of Data Link Layer Link Active (Pali Rohár)
    
    - Fix emulation of W1C bits (Marek Behún)
    
    - Fix MSI domain .alloc() method to return zero on success (Marek Behún)
    
    - Read entire 16-bit MSI vector in MSI handler, not just low 8 bits (Marek
      Behún)
    
    - Clear Root Port I/O Space, Memory Space, and Bus Master Enable bits at
      startup; PCI core will set those as necessary (Pali Rohár)
    
    - When operating as a Root Port, set class code to "PCI Bridge" instead of
      the default "Mass Storage Controller" (Pali Rohár)
    
    - Add emulation for PCI_BRIDGE_CTL_BUS_RESET since aardvark doesn't
      implement this per spec (Pali Rohár)
    
    - Add emulation of option ROM BAR since aardvark doesn't implement this per
      spec (Pali Rohár)
    
    * remotes/lorenzo/pci/aardvark:
      PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge
      PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge
      PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge
      PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated bridge
      PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG
      PCI: aardvark: Fix return value of MSI domain .alloc() method
      PCI: pci-bridge-emul: Fix emulation of W1C bits
      PCI: aardvark: Fix reporting Data Link Layer Link Active
      PCI: aardvark: Fix checking for link up via LTSSM state
      PCI: aardvark: Fix link training
      PCI: aardvark: Simplify initialization of rootcap on virtual bridge
      PCI: aardvark: Implement re-issuing config requests on CRS response
      PCI: aardvark: Deduplicate code in advk_pcie_rd_conf()
      PCI: aardvark: Do not unmask unused interrupts
      PCI: aardvark: Do not clear status bits of masked interrupts
      PCI: aardvark: Fix configuring Reference clock
      PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge
      PCI: aardvark: Don't spam about PIO Response Status
      PCI: aardvark: Fix PCIe Max Payload Size setting
      PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros
    bjorn-helgaas committed Nov 5, 2021
  14. Merge branch 'pci/misc'

    - Tidy setup-irq.c comments (Pranay Sanghai)
    
    - Fix misspellings (Krzysztof Wilczyński)
    
    - Fix sprintf(), sscanf() format mismatches (Krzysztof Wilczyński)
    
    - Tidy cpqphp code formatting (Krzysztof Wilczyński)
    
    - Remove unused pci_pool wrappers, which have been replaced by dma_pool
      (Cai Huoqing)
    
    - Remove a redundant initialization in __pci_reset_function_locked() (Colin
      Ian King)
    
    - Use 'unsigned int' instead of 'unsigned' (Krzysztof Wilczyński)
    
    - Update PCI subsystem information in MAINTAINERS (Krzysztof Wilczyński)
    
    - Include generic <linux/> headers instead of <asm/> for cpqphp and vmd
      (Krzysztof Wilczyński)
    
    * pci/misc:
      PCI: vmd: Drop redundant includes of <asm/device.h>, <asm/msi.h>
      PCI: cpqphp: Use <linux/io.h> instead of <asm/io.h>
      MAINTAINERS: Update PCI subsystem information
      PCI: Prefer 'unsigned int' over bare 'unsigned'
      PCI: Remove redundant 'rc' initialization
      PCI: Remove unused pci_pool wrappers
      PCI: cpqphp: Format if-statement code block correctly
      PCI: Use unsigned to match sscanf("%x") in pci_dev_str_match_path()
      PCI: hv: Remove unnecessary use of %hx
      PCI: Correct misspelled and remove duplicated words
      PCI: Tidy comments
    bjorn-helgaas committed Nov 5, 2021
  15. Merge branch 'pci/vpd'

    - Add pci_read_vpd_any(), pci_write_vpd_any() to access VPD at arbitrary
      offsets (Heiner Kallweit)
    
    - Use VPD API to replace custom code in cxgb3 driver (Heiner Kallweit)
    
    * pci/vpd:
      cxgb3: Remove seeprom_write and use VPD API
      cxgb3: Use VPD API in t3_seeprom_wp()
      cxgb3: Remove t3_seeprom_read and use VPD API
      PCI/VPD: Use pci_read_vpd_any() in pci_vpd_size()
      PCI/VPD: Add pci_read/write_vpd_any()
    bjorn-helgaas committed Nov 5, 2021
  16. Merge branch 'pci/virtualization'

    - Avoid bus resets on Atheros QCA6174, since they hang (Ingmar Klein)
    
    - Use store and forward mode on Pericom PI7C9X2G switches to avoid ACS
      erratum with ACS P2P Request Redirect (Nathan Rossi)
    
    * pci/virtualization:
      PCI: Add ACS quirk for Pericom PI7C9X2G switches
      PCI: Mark Atheros QCA6174 to avoid bus reset
    bjorn-helgaas committed Nov 5, 2021
  17. Merge branch 'pci/sysfs'

    - Check for CAP_SYS_ADMIN before validating sysfs user input, not after
      (Krzysztof Wilczyński)
    
    - Always return -EINVAL from sysfs "store" functions for invalid user input
      instead of -EINVAL sometimes and -ERANGE others (Krzysztof Wilczyński)
    
    - Use kstrtobool() directly instead of the strtobool() wrapper (Krzysztof
      Wilczyński)
    
    * pci/sysfs:
      PCI: Use kstrtobool() directly, sans strtobool() wrapper
      PCI/sysfs: Return -EINVAL consistently from "store" functions
      PCI/sysfs: Check CAP_SYS_ADMIN before parsing user input
    
    # Conflicts:
    #	drivers/pci/iov.c
    bjorn-helgaas committed Nov 5, 2021
  18. Merge branch 'pci/switchtec'

    - Return error to application when command execution fails because an
      out-of-band reset has cleared the device BARs, Memory Space Enable, etc
      (Kelvin Cao)
    
    - Fix MRPC error status handling issue (Kelvin Cao)
    
    - Mask out other bits when reading of management VEP instance ID (Kelvin
      Cao)
    
    - Return EOPNOTSUPP instead of ENOTSUPP from sysfs show functions (Kelvin
      Cao)
    
    - Add check of event support (Logan Gunthorpe)
    
    * pci/switchtec:
      PCI/switchtec: Add check of event support
      PCI/switchtec: Replace ENOTSUPP with EOPNOTSUPP
      PCI/switchtec: Update the way of getting management VEP instance ID
      PCI/switchtec: Fix a MRPC error status handling issue
      PCI/switchtec: Error out MRPC execution when MMIO reads fail
    bjorn-helgaas committed Nov 5, 2021
  19. Merge branch 'pci/resource'

    - Coalesce host bridge contiguous apertures to allow P2P bridge windows
      that span several contiguous host bridge apertures (Kai-Heng Feng)
    
    * pci/resource:
      PCI: Coalesce host bridge contiguous apertures
    bjorn-helgaas committed Nov 5, 2021
  20. Merge branch 'pci/portdrv'

    - Don't setup portdrv IRQs if there are no port drivers that use them, to
      conserve vectors and avoid spurious events (Jan Kiszka)
    
    * pci/portdrv:
      PCI/portdrv: Do not setup up IRQs if there are no users
    bjorn-helgaas committed Nov 5, 2021
  21. Merge branch 'pci/p2pdma'

    - Apply bus offset correctly in DMA address calculation, which used the
      wrong sign before (Wang Lu)
    
    * pci/p2pdma:
      PCI/P2PDMA: Apply bus offset correctly in DMA address calculation
    bjorn-helgaas committed Nov 5, 2021
  22. Merge branch 'pci/msi'

    - Document sysfs "irq" attribute, which contains either the INTx IRQ (the
      intended behavior) or the first MSI IRQ (historical mistake retained for
      backwards compatibility) (Barry Song)
    
    - Rework "irq" sysfs show function to explicitly fetch first MSI IRQ
      instead of depending on core to put it in dev->irq, to enable future core
      cleanup (Barry Song)
    
    * pci/msi:
      PCI/sysfs: Explicitly show first MSI IRQ for 'irq'
      PCI: Document /sys/bus/pci/devices/.../irq
    bjorn-helgaas committed Nov 5, 2021
  23. Merge branch 'pci/hotplug'

    - Ignore Link Down/Up caused by error-induced Hot Reset so endpoint driver
      can remain bound to device during error recovery (Lukas Wunner)
    
    - Remove unused resume err_handler (Lukas Wunner)
    
    - Remove unused pcie_port_bus_{,un}register() declarations (Lukas Wunner)
    
    - Skip compiling err.c when CONFIG_PCIEAER not set (Lukas Wunner)
    
    * pci/hotplug:
      PCI/ERR: Reduce compile time for CONFIG_PCIEAER=n
      PCI/portdrv: Remove unused pcie_port_bus_{,un}register() declarations
      PCI/portdrv: Remove unused resume err_handler
      PCI: pciehp: Ignore Link Down/Up caused by error-induced Hot Reset
      PCI/portdrv: Rename pm_iter() to pcie_port_device_iter()
    bjorn-helgaas committed Nov 5, 2021
  24. Merge branch 'pci/driver'

    - Drop the struct pci_dev.driver pointer, which is redundant with the
      struct device.driver pointer (Uwe Kleine-König)
    
    * pci/driver:
      PCI: Remove struct pci_dev->driver
      PCI: Use to_pci_driver() instead of pci_dev->driver
      x86/pci/probe_roms: Use to_pci_driver() instead of pci_dev->driver
      perf/x86/intel/uncore: Use to_pci_driver() instead of pci_dev->driver
      powerpc/eeh: Use to_pci_driver() instead of pci_dev->driver
      usb: xhci: Use to_pci_driver() instead of pci_dev->driver
      cxl: Use to_pci_driver() instead of pci_dev->driver
      cxl: Factor out common dev->driver expressions
      xen/pcifront: Use to_pci_driver() instead of pci_dev->driver
      xen/pcifront: Drop pcifront_common_process() tests of pcidev, pdrv
      nfp: use dev_driver_string() instead of pci_dev->driver->name
      mlxsw: pci: Use dev_driver_string() instead of pci_dev->driver->name
      net: marvell: prestera: use dev_driver_string() instead of pci_dev->driver->name
      net: hns3: use dev_driver_string() instead of pci_dev->driver->name
      crypto: hisilicon - use dev_driver_string() instead of pci_dev->driver->name
      powerpc/eeh: Use dev_driver_string() instead of struct pci_dev->driver->name
      ssb: Use dev_driver_string() instead of pci_dev->driver->name
      bcma: simplify reference to driver name
      crypto: qat - simplify adf_enable_aer()
      scsi: message: fusion: Remove unused mpt_pci driver .probe() 'id' parameter
      PCI/ERR: Factor out common dev->driver expressions
      PCI: Drop pci_device_probe() test of !pci_dev->driver
      PCI: Drop pci_device_remove() test of pci_dev->driver
      PCI: Return NULL for to_pci_driver(NULL)
    bjorn-helgaas committed Nov 5, 2021
  25. Merge branch 'pci/enumeration'

    - Rename pcibios_add_device() to pcibios_device_add() since it's called
      from pci_device_add() (Oliver O'Halloran)
    
    - Don't try to enable AtomicOps on VFs, since they can only be enabled on
      the PF (Selvin Xavier)
    
    * pci/enumeration:
      PCI: Do not enable AtomicOps on VFs
      PCI: Rename pcibios_add_device() to pcibios_device_add()
    bjorn-helgaas committed Nov 5, 2021
  26. Merge branch 'pci/aspm'

    - Re-enable LTR in Downstream Ports after it has been disabled by reset or
      hotplug to allow use of ASPM L1.2 again and prevent Unsupported Request
      errors when Endpoint sends LTR messages (Mingchuang Qiao)
    
    * pci/aspm:
      PCI: Re-enable Downstream Port LTR after reset or hotplug
    bjorn-helgaas committed Nov 5, 2021
  27. Merge branch 'pci/acpi'

    - Simplify _OSC negotiation with platform for control of PCIe features
      (Joerg Roedel)
    
    * pci/acpi:
      PCI/ACPI: Check for _OSC support in acpi_pci_osc_control_set()
      PCI/ACPI: Move _OSC query checks to separate function
      PCI/ACPI: Move supported and control calculations to separate functions
      PCI/ACPI: Remove OSC_PCI_SUPPORT_MASKS and OSC_PCI_CONTROL_MASKS
    bjorn-helgaas committed Nov 5, 2021
  28. PCI: Add ACS quirk for Pericom PI7C9X2G switches

    The Pericom PI7C9X2G404/PI7C9X2G304/PI7C9X2G303 PCIe switches have an
    erratum for ACS P2P Request Redirect behaviour when used in the cut-through
    forwarding mode. The recommended work around for this issue is to use the
    switch in store and forward mode. The erratum results in packets being
    queued and not being delivered upstream, which can be observed as very poor
    downstream device performance and/or dropped device-generated
    data/interrupts.
    
    Add a fixup so that when enabling or resuming the downstream port we check
    if it has enabled ACS P2P Request Redirect, and if so, change the device
    (via the upstream port) to use the store and forward operating mode.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=177471
    Link: https://lore.kernel.org/r/20210910025823.196508-1-nathan@nathanrossi.com
    Tested-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Nathan Rossi <nathan.rossi@digi.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Nathan Rossi authored and bjorn-helgaas committed Nov 5, 2021

Commits on Nov 4, 2021

  1. PCI: apple: Configure RID to SID mapper on device addition

    The Apple PCIe controller doesn't directly feed the endpoint's Requester ID
    to the IOMMU (DART), but instead maps RIDs onto Stream IDs (SIDs). The DART
    and the PCIe controller must thus agree on the SIDs that are used for
    translation (by using the 'iommu-map' property).
    
    For this purpose, parse the 'iommu-map' property each time a device gets
    added, and use the resulting translation to configure the PCIe RID-to-SID
    mapper. Similarly, remove the translation if/when the device gets removed.
    
    This is all driven from a bus notifier which gets registered at probe time.
    Hopefully this is the only PCI controller driver in the whole system.
    
    [bhelgaas: squash indentation from Zhaoyu Liu <zackary.liu.pro@gmail.com>:
    https://lore.kernel.org/r/20211031135544.GA1616@pc]
    Link: https://lore.kernel.org/r/20210929163847.2807812-10-maz@kernel.org
    Tested-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Sven Peter <sven@svenpeter.dev>
    Marc Zyngier authored and bjorn-helgaas committed Nov 4, 2021
  2. iommu/dart: Exclude MSI doorbell from PCIe device IOVA range

    The MSI doorbell on Apple HW can be any address in the low 4GB range.
    However, the MSI write is matched by the PCIe block before hitting the
    iommu. It must thus be excluded from the IOVA range that is assigned to any
    PCIe device.
    
    Link: https://lore.kernel.org/r/20210929163847.2807812-9-maz@kernel.org
    Tested-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Sven Peter <sven@svenpeter.dev>
    Marc Zyngier authored and bjorn-helgaas committed Nov 4, 2021
  3. PCI: apple: Implement MSI support

    Probe for the 'msi-ranges' property, and implement the MSI support in the
    form of the usual two-level hierarchy.
    
    Note that contrary to the wired interrupts, MSIs are shared among all the
    ports.
    
    Link: https://lore.kernel.org/r/20210929163847.2807812-8-maz@kernel.org
    Tested-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Marc Zyngier authored and bjorn-helgaas committed Nov 4, 2021
  4. PCI: apple: Add INTx and per-port interrupt support

    Add support for the per-port interrupt controller that deals with both INTx
    signalling and management interrupts.
    
    This allows the Link-up/Link-down interrupts to be wired, allowing the
    bring-up to be synchronised (and provide debug information).  The framework
    can further be used to handle the rest of the per port events if and when
    necessary.
    
    Likewise, INTx signalling is implemented so that end-points can actually be
    used.
    
    Link: https://lore.kernel.org/r/20210929163847.2807812-7-maz@kernel.org
    Link: https://lore.kernel.org/r/20211004150552.3844830-1-maz@kernel.org
    Tested-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Marc Zyngier authored and bjorn-helgaas committed Nov 4, 2021
  5. PCI: kirin: Allow removing the driver

    Now that everything is in place at the poweroff sequence, this driver can
    use module_platform_driver(), which allows it to be removed.
    
    Link: https://lore.kernel.org/r/53b40494252444a9b830827922c4e3a301b8f863.1634812676.git.mchehab+huawei@kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Xiaowei Song <songxiaowei@hisilicon.com>
    mchehab authored and bjorn-helgaas committed Nov 4, 2021
  6. PCI: kirin: De-init the dwc driver

    The logic under .remove ops is missing a call to dw_pcie_host_deinit(). Add
    it, in order to allow the DWC core to be properly cleaned up.
    
    Link: https://lore.kernel.org/r/838621e1c84ebaac153ccd9c36ea5e1254c61ead.1634812676.git.mchehab+huawei@kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Xiaowei Song <songxiaowei@hisilicon.com>
    mchehab authored and bjorn-helgaas committed Nov 4, 2021
Older