• Linus Torvalds's avatar
    Merge tag 'pci-v5.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · 0c5c62dd
    Linus Torvalds authored
    Pull pci updates from Bjorn Helgaas:
     "Enumeration:
       - Conserve IRQs by setting up portdrv IRQs only when there are users
         (Jan Kiszka)
       - Rework and simplify _OSC negotiation for control of PCIe features
         (Joerg Roedel)
       - Remove struct pci_dev.driver pointer since it's redundant with the
         struct device.driver pointer (Uwe Kleine-König)
    
      Resource management:
       - Coalesce contiguous host bridge apertures from _CRS to accommodate
         BARs that cover more than one aperture (Kai-Heng Feng)
    
      Sysfs:
       - Check CAP_SYS_ADMIN before parsing user input (Krzysztof
         Wilczyński)
       - Return -EINVAL consistently from "store" functions (Krzysztof
         Wilczyński)
       - Use sysfs_emit() in endpoint "show" functions to avoid buffer
         overruns (Kunihiko Hayashi)
    
      PCIe native device hotplug:
       - Ignore Link Down/Up caused by resets during error recovery so
         endpoint drivers can remain bound to the device (Lukas Wunner)
    
      Virtualization:
       - Avoid bus resets on Atheros QCA6174, where they hang the device
         (Ingmar Klein)
       - Work around Pericom PI7C9X2G switch packet drop erratum by using
         store and forward mode instead of cut-through (Nathan Rossi)
       - Avoid trying to enable AtomicOps on VFs; the PF setting applies to
         all VFs (Selvin Xavier)
    
      MSI:
       - Document that /sys/bus/pci/devices/.../irq contains the legacy INTx
         interrupt or the IRQ of the first MSI (not MSI-X) vector (Barry
         Song)
    
      VPD:
       - Add pci_read_vpd_any() and pci_write_vpd_any() to access anywhere
         in the possible VPD space; use these to simplify the cxgb3 driver
         (Heiner Kallweit)
    
      Peer-to-peer DMA:
       - Add (not subtract) the bus offset when calculating DMA address
         (Wang Lu)
    
      ASPM:
       - Re-enable LTR at Downstream Ports so they don't report Unsupported
         Requests when reset or hot-added devices send LTR messages
         (Mingchuang Qiao)
    
      Apple PCIe controller driver:
       - Add driver for Apple M1 PCIe controller (Alyssa Rosenzweig, Marc
         Zyngier)
    
      Cadence PCIe controller driver:
       - Return success when probe succeeds instead of falling into error
         path (Li Chen)
    
      HiSilicon Kirin PCIe controller driver:
       - Reorganize PHY logic and add support for external PHY drivers
         (Mauro Carvalho Chehab)
       - Support PERST# GPIOs for HiKey970 external PEX 8606 bridge (Mauro
         Carvalho Chehab)
       - Add Kirin 970 support (Mauro Carvalho Chehab)
       - Make driver removable (Mauro Carvalho Chehab)
    
      Intel VMD host bridge driver:
       - If IOMMU supports interrupt remapping, leave VMD MSI-X remapping
         enabled (Adrian Huang)
       - Number each controller so we can tell them apart in
         /proc/interrupts (Chunguang Xu)
       - Avoid building on UML because VMD depends on x86 bare metal APIs
         (Johannes Berg)
    
      Marvell Aardvark PCIe controller driver:
       - 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)
    
      MediaTek MT7621 PCIe controller driver:
       - Add MediaTek MT7621 PCIe host controller driver and DT binding
         (Sergio Paracuellos)
    
      Qualcomm PCIe controller driver:
       - Add SC8180x compatible string (Bjorn Andersson)
       - Add endpoint controller driver and DT binding (Manivannan
         Sadhasivam)
       - Restructure to use of_device_get_match_data() (Prasad Malisetty)
       - Add SC7280-specific pcie_1_pipe_clk_src handling (Prasad Malisetty)
    
      Renesas R-Car PCIe controller driver:
       - Remove unnecessary includes (Geert Uytterhoeven)
    
      Rockchip DesignWare PCIe controller driver:
       - Add DT binding (Simon Xue)
    
      Socionext UniPhier Pro5 controller driver:
       - Serialize INTx masking/unmasking (Kunihiko Hayashi)
    
      Synopsys DesignWare PCIe controller driver:
       - Run dwc .host_init() method before registering MSI interrupt
         handler so we can deal with pending interrupts left by bootloader
         (Bjorn Andersson)
       - Clean up Kconfig dependencies (Andy Shevchenko)
       - Export symbols to allow more modular drivers (Luca Ceresoli)
    
      TI DRA7xx PCIe controller driver:
       - Allow host and endpoint drivers to be modules (Luca Ceresoli)
       - Enable external clock if present (Luca Ceresoli)
    
      TI J721E PCIe driver:
       - Disable PHY when probe fails after initializing it (Christophe
         JAILLET)
    
      MicroSemi Switchtec management driver:
       - 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)
    
      Miscellaneous:
       - Remove unused pci_pool wrappers, which have been replaced by
         dma_pool (Cai Huoqing)
       - Use 'unsigned int' instead of bare 'unsigned' (Krzysztof
         Wilczyński)
       - Use kstrtobool() directly, sans strtobool() wrapper (Krzysztof
         Wilczyński)
       - Fix some sscanf(), sprintf() format mismatches (Krzysztof
         Wilczyński)
       - Update PCI subsystem information in MAINTAINERS (Krzysztof
         Wilczyński)
       - Correct some misspellings (Krzysztof Wilczyński)"
    
    * tag 'pci-v5.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (137 commits)
      PCI: Add ACS quirk for Pericom PI7C9X2G switches
      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: 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: 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
      PCI: Do not enable AtomicOps on VFs
      ...
    0c5c62dd
msi.c 39.3 KB