01 Oct, 2020

2 commits

  • This reverts commit 7e24bc347e57992d532bc2ed700209b0fc0a4bf5.

    7e24bc347e57 was based on PCIe r5.0, sec 5.9, which claims we need a 200 ms
    delay when transitioning to or from D2. However, sec 5.3.1.3 states the
    delay as 200 μs (microseconds), as does the table in PCIe r4.0, sec 5.9.1.

    This looks like a typo in the r5.0 spec, so revert back to a 200 μs delay
    instead of a 200 ms delay.

    Fixes: 7e24bc347e57 ("PCI/PM: Apply D2 delay as milliseconds, not microseconds")
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Rafael J. Wysocki

    Bjorn Helgaas
     
  • 476e7faefc43 ("PCI PM: Do not wait for buses in B2 or B3 during resume")
    removed the last use of PCI_PM_BUS_WAIT. Remove the definition as well.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Rafael J. Wysocki

    Bjorn Helgaas
     

30 Sep, 2020

1 commit

  • PCI devices support two variants of the D3 power state: D3hot (main power
    present) D3cold (main power removed). Previously struct pci_dev contained:

    unsigned int d3_delay; /* D3->D0 transition time in ms */
    unsigned int d3cold_delay; /* D3cold->D0 transition time in ms */

    "d3_delay" refers specifically to the D3hot state. Rename it to
    "d3hot_delay" to avoid ambiguity and align with the ACPI "_DSM for
    Specifying Device Readiness Durations" in the PCI Firmware spec r3.2,
    sec 4.6.9.

    There is no change to the functionality.

    Link: https://lore.kernel.org/r/20200730210848.1578826-1-kw@linux.com
    Signed-off-by: Krzysztof Wilczyński
    Signed-off-by: Bjorn Helgaas

    Krzysztof Wilczyński
     

06 Aug, 2020

2 commits

  • - Use pci_host_bridge.windows list directly instead of splicing in a
    temporary list for cadence, mvebu, host-common (Rob Herring)

    - Use pci_host_probe() instead of open-coding all the pieces for altera,
    brcmstb, iproc, mobiveil, rcar, rockchip, tegra, v3, versatile, xgene,
    xilinx, xilinx-nwl (Rob Herring)

    - Convert to devm_platform_ioremap_resource_byname() instead of open-coding
    platform_get_resource_byname() and devm_ioremap_resource() for altera,
    cadence, mediatek, rockchip, tegra, xgene (Dejin Zheng)

    - Convert to devm_platform_ioremap_resource() instead of open-coding
    platform_get_resource() and devm_ioremap_resource() for aardvark,
    brcmstb, exynos, ftpci100, versatile (Dejin Zheng)

    - Remove redundant error messages from devm_pci_remap_cfg_resource()
    callers (Dejin Zheng)

    - Drop useless PCI_ENABLE_PROC_DOMAINS from versatile driver (Rob Herring)

    - Default host bridge parent device to the platform device (Rob Herring)

    - Drop unnecessary zeroing of host bridge fields (Rob Herring)

    - Use pci_is_root_bus() instead of tracking root bus number separately in
    aardvark, designware (imx6, keystone, designware-host), mobiveil,
    xilinx-nwl, xilinx, rockchip, rcar (Rob Herring)

    - Set host bridge bus number in pci_scan_root_bus_bridge() instead of each
    driver for aardvark, designware-host, host-common, mediatek, rcar, tegra,
    v3-semi (Rob Herring)

    - Use bridge resources instead of parsing DT 'ranges' again for cadence
    (Rob Herring)

    - Remove private bus number and range from cadence (Rob Herring)

    - Use devm_pci_alloc_host_bridge() to simplify rcar (Rob Herring)

    - Use struct pci_host_bridge.windows list directly rather than a temporary
    (Rob Herring)

    - Reduce OF "missing non-prefetchable window" from error to warning message
    (Rob Herring)

    - Convert rcar-gen2 from old Arm-specific pci_common_init_dev() to new
    arch-independent interfaces (Rob Herring)

    - Move DT resource setup into devm_pci_alloc_host_bridge() (Rob Herring)

    - Set bridge map_irq and swizzle_irq to default functions; drivers that
    don't support legacy IRQs (iproc) need to undo this (Rob Herring)

    * pci/host-probe-refactor:
    PCI: Set bridge map_irq and swizzle_irq to default functions
    PCI: Move DT resource setup into devm_pci_alloc_host_bridge()
    PCI: rcar-gen2: Convert to use modern host bridge probe functions
    PCI: of: Reduce missing non-prefetchable memory region to a warning
    PCI: rcar: Use struct pci_host_bridge.windows list directly
    PCI: rcar: Use devm_pci_alloc_host_bridge()
    PCI: cadence: Remove private bus number and range storage
    PCI: cadence: Use bridge resources for outbound window setup
    PCI: Move setting pci_host_bridge.busnr out of host drivers
    PCI: rcar: Use pci_is_root_bus() to check if bus is root bus
    PCI: rockchip: Use pci_is_root_bus() to check if bus is root bus
    PCI: xilinx: Use pci_is_root_bus() to check if bus is root bus
    PCI: xilinx-nwl: Use pci_is_root_bus() to check if bus is root bus
    PCI: mobiveil: Use pci_is_root_bus() to check if bus is root bus
    PCI: designware: Use pci_is_root_bus() to check if bus is root bus
    PCI: aardvark: Use pci_is_root_bus() to check if bus is root bus
    PCI: Drop unnecessary zeroing of bridge fields
    PCI: Set default bridge parent device
    PCI: versatile: Drop flag PCI_ENABLE_PROC_DOMAINS
    PCI: controller: Remove duplicate error message
    PCI: controller: Convert to devm_platform_ioremap_resource()
    PCI: controller: Convert to devm_platform_ioremap_resource_byname()
    PCI: xilinx: Use pci_host_probe() to register host
    PCI: xilinx-nwl: Use pci_host_probe() to register host
    PCI: rockchip: Use pci_host_probe() to register host
    PCI: rcar: Use pci_host_probe() to register host
    PCI: iproc: Use pci_host_probe() to register host
    PCI: altera: Use pci_host_probe() to register host
    PCI: xgene: Use pci_host_probe() to register host
    PCI: versatile: Use pci_host_probe() to register host
    PCI: v3: Use pci_host_probe() to register host
    PCI: tegra: Use pci_host_probe() to register host
    PCI: mobiveil: Use pci_host_probe() to register host
    PCI: brcmstb: Use pci_host_probe() to register host
    PCI: host-common: Use struct pci_host_bridge.windows list directly
    PCI: mvebu: Use struct pci_host_bridge.windows list directly
    PCI: cadence: Use struct pci_host_bridge.windows list directly

    # Conflicts:
    # drivers/pci/controller/cadence/pcie-cadence-host.c

    Bjorn Helgaas
     
  • - Use pci_channel_state_t instead of enum pci_channel_state (Luc Van
    Oostenryck)

    - Simplify __aer_print_error() (Bjorn Helgaas)

    - Log AER correctable errors as warning, not error (Matt Jolly)

    - Rename pci_aer_clear_device_status() to pcie_clear_device_status() (Bjorn
    Helgaas)

    - Clear PCIe Device Status errors only if OS owns AER (Jonathan Cameron)

    * pci/error:
    PCI/ERR: Clear PCIe Device Status errors only if OS owns AER
    PCI/ERR: Rename pci_aer_clear_device_status() to pcie_clear_device_status()
    PCI/AER: Log correctable errors as warning, not error
    PCI/AER: Simplify __aer_print_error()
    PCI: Use 'pci_channel_state_t' instead of 'enum pci_channel_state'

    Bjorn Helgaas
     

04 Aug, 2020

1 commit

  • Now that pci_parse_request_of_pci_ranges() callers just setup
    pci_host_bridge.windows and dma_ranges directly and don't need the bus
    range returned, we can just initialize them when allocating the
    pci_host_bridge struct.

    With this, pci_parse_request_of_pci_ranges() becomes a static function.

    Link: https://lore.kernel.org/r/20200722022514.1283916-19-robh@kernel.org
    Signed-off-by: Rob Herring
    Signed-off-by: Lorenzo Pieralisi
    Acked-by: Bjorn Helgaas
    Cc: Lorenzo Pieralisi
    Cc: Bjorn Helgaas

    Rob Herring
     

23 Jul, 2020

1 commit

  • pci_aer_clear_device_status() clears the error bits in the PCIe Device
    Status Register (PCI_EXP_DEVSTA). Every PCIe device has this register,
    regardless of whether it supports AER.

    Rename pci_aer_clear_device_status() to pcie_clear_device_status() to make
    clear that it is PCIe-specific but not AER-specific. Move it to
    drivers/pci/pci.c, again since it's not AER-specific. No functional change
    intended.

    Link: https://lore.kernel.org/r/20200717195619.766662-1-helgaas@kernel.org
    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     

11 Jul, 2020

1 commit

  • Currently the ACS capability is being looked up at a number of places. Read
    and store it once at enumeration so that it can be used by all later. No
    functional change intended.

    Link: https://lore.kernel.org/r/20200707224604.3737893-2-rajatja@google.com
    Signed-off-by: Rajat Jain
    Signed-off-by: Bjorn Helgaas

    Rajat Jain
     

08 Jul, 2020

1 commit

  • The method struct pci_error_handlers.error_detected() is defined and
    documented as taking an 'enum pci_channel_state' for the second argument,
    but most drivers use 'pci_channel_state_t' instead.

    This 'pci_channel_state_t' is not a typedef for the enum but a typedef for
    a bitwise type in order to have better/stricter typechecking.

    Consolidate everything by using 'pci_channel_state_t' in the method's
    definition, in the related helpers and in the drivers.

    Enforce use of 'pci_channel_state_t' by replacing 'enum pci_channel_state'
    with an anonymous 'enum'.

    Note: Currently, from a typechecking point of view this patch changes
    nothing because only the constants defined by the enum are bitwise, not the
    enum itself (sparse doesn't have the notion of 'bitwise enum'). This may
    change in some not too far future, hence the patch.

    [bhelgaas: squash in
    https://lore.kernel.org/r/20200702162651.49526-3-luc.vanoostenryck@gmail.com
    https://lore.kernel.org/r/20200702162651.49526-4-luc.vanoostenryck@gmail.com]
    Link: https://lore.kernel.org/r/20200702162651.49526-2-luc.vanoostenryck@gmail.com
    Signed-off-by: Luc Van Oostenryck
    Signed-off-by: Bjorn Helgaas

    Luc Van Oostenryck
     

03 Apr, 2020

1 commit

  • - Add PCIe 32 GT/s speed decoding for sysfs "max_link_speed" and dmesg
    notes about available bandwidth (Yicong Yang)

    - Simplify and unify PCI bus/link speed reporting (Yicong Yang)

    * pci/enumeration:
    PCI: Add PCIE_LNKCAP2_SLS2SPEED() macro
    PCI: Use pci_speed_string() for all PCI/PCI-X/PCIe strings
    PCI: Add pci_speed_string()
    PCI: Add 32 GT/s decoding in some macros

    Bjorn Helgaas
     

29 Mar, 2020

6 commits

  • The AER interfaces to clear error status registers were a confusing mess:

    - pci_cleanup_aer_uncorrect_error_status() cleared non-fatal errors
    from the Uncorrectable Error Status register.

    - pci_aer_clear_fatal_status() cleared fatal errors from the
    Uncorrectable Error Status register.

    - pci_cleanup_aer_error_status_regs() cleared the Root Error Status
    register (for Root Ports), the Uncorrectable Error Status register,
    and the Correctable Error Status register.

    Rename them to make them consistent:

    From To
    ---------------------------------------- -------------------------------
    pci_cleanup_aer_uncorrect_error_status() pci_aer_clear_nonfatal_status()
    pci_aer_clear_fatal_status() pci_aer_clear_fatal_status()
    pci_cleanup_aer_error_status_regs() pci_aer_clear_status()

    Since pci_cleanup_aer_error_status_regs() (renamed to
    pci_aer_clear_status()) is only used within drivers/pci/, move the
    declaration from to drivers/pci/pci.h.

    [bhelgaas: commit log, add renames]
    Link: https://lore.kernel.org/r/d1310a75dc3d28f7e8da4e99c45fbd3e60fe238e.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     
  • If firmware controls DPC, it is generally responsible for managing the DPC
    capability and events, and the OS should not access the DPC capability.

    However, if firmware controls DPC and both the OS and the platform support
    Error Disconnect Recover (EDR) notifications, the OS EDR notify handler is
    responsible for recovery, and the notify handler may read/write the DPC
    capability until it clears the DPC Trigger Status bit. See [1], sec 4.5.1,
    table 4-6.

    Expose some DPC error handling functions so they can be used by the EDR
    notify handler.

    [1] Downstream Port Containment Related Enhancements ECN, Jan 28, 2019,
    affecting PCI Firmware Specification, Rev. 3.2
    https://members.pcisig.com/wg/PCI-SIG/document/12888

    Link: https://lore.kernel.org/r/e9000bb15b3a4293e81d98bb29ead7c84a6393c9.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     
  • Per the SFI _OSC and DPC Updates ECN [1] implementation note flowchart, the
    OS seems to be expected to clear AER status even if it doesn't have
    ownership of the AER capability. Unlike the DPC capability, where a DPC
    ECN [2] specifies a window when the OS is allowed to access DPC registers
    even if it doesn't have ownership, there is no clear model for AER.

    Add pci_aer_raw_clear_status() to clear the AER error status registers
    unconditionally. This is intended for use only by the EDR path (see [2]).

    [1] System Firmware Intermediary (SFI) _OSC and DPC Updates ECN, Feb 24,
    2020, affecting PCI Firmware Specification, Rev. 3.2
    https://members.pcisig.com/wg/PCI-SIG/document/14076
    [2] Downstream Port Containment Related Enhancements ECN, Jan 28, 2019,
    affecting PCI Firmware Specification, Rev. 3.2
    https://members.pcisig.com/wg/PCI-SIG/document/12888

    [bhelgaas: changelog]
    Link: https://lore.kernel.org/r/c19ad28f3633cce67448609e89a75635da0da07d.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     
  • Since Error Disconnect Recover needs to use DPC error handling routines
    even if the OS doesn't have control of DPC, move the initalization and
    caching of DPC capabilities from the DPC driver to pci_init_capabilities().

    Link: https://lore.kernel.org/r/5888380657c8b9551675b5dbd48e370e4fd2703d.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     
  • As per the DPC Enhancements ECN [1], sec 4.5.1, table 4-4, if the OS
    supports Error Disconnect Recover (EDR), it must invalidate the software
    state associated with child devices of the port without attempting to
    access the child device hardware. In addition, if the OS supports DPC, it
    must attempt to recover the child devices if the port implements the DPC
    Capability. If the OS continues operation, the OS must inform the firmware
    of the status of the recovery operation via the _OST method.

    Return the result of pcie_do_recovery() so we can report it to firmware via
    _OST.

    [1] Downstream Port Containment Related Enhancements ECN, Jan 28, 2019,
    affecting PCI Firmware Specification, Rev. 3.2
    https://members.pcisig.com/wg/PCI-SIG/document/12888

    Link: https://lore.kernel.org/r/eb60ec89448769349c6722954ffbf2de163155b5.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     
  • Previously we passed the PCIe service type parameter to pcie_do_recovery(),
    where reset_link() looked up the underlying pci_port_service_driver and its
    .reset_link() function pointer. Instead of using this roundabout way, we
    can just pass the driver-specific .reset_link() callback function when
    calling pcie_do_recovery() function.

    This allows us to call pcie_do_recovery() from code that is not a PCIe port
    service driver, e.g., Error Disconnect Recover (EDR) support.

    Remove pcie_port_find_service() and pcie_port_service_driver.reset_link
    since they are now unused.

    Link: https://lore.kernel.org/r/60e02b87b526cdf2930400059d98704bf0a147d1.1585000084.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     

11 Mar, 2020

3 commits

  • Add PCIE_LNKCAP2_SLS2SPEED macro for transforming raw Link Capabilities 2
    values to the pci_bus_speed. This is next to PCIE_SPEED2MBS_ENC() to make
    it easier to update both places when adding support for new speeds.

    Link: https://lore.kernel.org/r/1581937984-40353-10-git-send-email-yangyicong@hisilicon.com
    Signed-off-by: Yicong Yang
    Signed-off-by: Bjorn Helgaas

    Yicong Yang
     
  • Previously some PCI speed strings came from pci_speed_string(), some came
    from the PCIe-specific PCIE_SPEED2STR(), and some came from a PCIe-specific
    switch statement. These methods were inconsistent:

    pci_speed_string() PCIE_SPEED2STR() switch
    ------------------ ---------------- ------
    33 MHz PCI
    ...
    2.5 GT/s PCIe 2.5 GT/s 2.5 GT/s
    5.0 GT/s PCIe 5 GT/s 5 GT/s
    8.0 GT/s PCIe 8 GT/s 8 GT/s
    16.0 GT/s PCIe 16 GT/s 16 GT/s
    32.0 GT/s PCIe 32 GT/s 32 GT/s

    Standardize on pci_speed_string() as the single source of these strings.

    Note that this adds ".0" and "PCIe" to some messages, including sysfs
    "max_link_speed" files, a brcmstb "link up" message, and the link status
    dmesg logging, e.g.,

    nvme 0000:01:00.0: 16.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:00:01.1 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)

    I think it's better to standardize on a single version of the speed text.
    Previously we had strings like this:

    /sys/bus/pci/slots/0/cur_bus_speed: 8.0 GT/s PCIe
    /sys/bus/pci/slots/0/max_bus_speed: 8.0 GT/s PCIe
    /sys/devices/pci0000:00/0000:00:1c.0/current_link_speed: 8 GT/s
    /sys/devices/pci0000:00/0000:00:1c.0/max_link_speed: 8 GT/s

    This changes the latter two to match the slots files:

    /sys/devices/pci0000:00/0000:00:1c.0/current_link_speed: 8.0 GT/s PCIe
    /sys/devices/pci0000:00/0000:00:1c.0/max_link_speed: 8.0 GT/s PCIe

    Based-on-patch by: Yicong Yang
    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     
  • Add pci_speed_string() to return a text description of the supplied bus or
    link speed. The slot code previously used the private
    pci_bus_speed_strings[] array for this purpose, but adding this interface
    will enable us to consolidate similar code elsewhere.

    Export pcie_link_speed[] and pci_speed_string() so they can be used by
    modules.

    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     

29 Feb, 2020

1 commit

  • Link speed 32.0 GT/s is supported in PCIe r5.0. Add this speed to
    PCIE_SPEED2STR() and PCIE_SPEED2MBS_ENC() to correctly decode it.

    This is complementary to de76cda215d5 ("PCI: Decode PCIe 32 GT/s link
    speed").

    Link: https://lore.kernel.org/r/1581937984-40353-2-git-send-email-yangyicong@hisilicon.com
    Signed-off-by: Yicong Yang
    Signed-off-by: Bjorn Helgaas

    Yicong Yang
     

19 Dec, 2019

1 commit

  • The number of possible devfns is 256, but pci_add_dma_alias() allocated a
    bitmap of size 255. Fix this off-by-one error.

    This fixes commits 338c3149a221 ("PCI: Add support for multiple DMA
    aliases") and c6635792737b ("PCI: Allocate dma_alias_mask with
    bitmap_zalloc()"), but I doubt it was possible to see a problem because
    it takes 4 64-bit longs (or 8 32-bit longs) to hold 255 bits, and
    bitmap_zalloc() doesn't save the 255-bit size anywhere.

    [bhelgaas: commit log, move #define to drivers/pci/pci.h, include loop
    limit fix from Qian Cai:
    https://lore.kernel.org/r/20191218170004.5297-1-cai@lca.pw]
    Signed-off-by: James Sewart
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Logan Gunthorpe

    James Sewart
     

28 Nov, 2019

5 commits

  • - Consolidate DT "dma-ranges" parsing and convert all host drivers to use
    shared parsing (Rob Herring)

    * remotes/lorenzo/pci/mmio-dma-ranges:
    PCI: Make devm_of_pci_get_host_bridge_resources() static
    PCI: rcar: Use inbound resources for setup
    PCI: iproc: Use inbound resources for setup
    PCI: xgene: Use inbound resources for setup
    PCI: v3-semi: Use inbound resources for setup
    PCI: ftpci100: Use inbound resources for setup
    PCI: of: Add inbound resource parsing to helpers
    PCI: versatile: Enable COMPILE_TEST
    PCI: versatile: Remove usage of PHYS_OFFSET
    PCI: versatile: Use pci_parse_request_of_pci_ranges()
    PCI: xilinx-nwl: Use pci_parse_request_of_pci_ranges()
    PCI: xilinx: Use pci_parse_request_of_pci_ranges()
    PCI: xgene: Use pci_parse_request_of_pci_ranges()
    PCI: v3-semi: Use pci_parse_request_of_pci_ranges()
    PCI: rockchip: Drop storing driver private outbound resource data
    PCI: rockchip: Use pci_parse_request_of_pci_ranges()
    PCI: mobiveil: Use pci_parse_request_of_pci_ranges()
    PCI: mediatek: Use pci_parse_request_of_pci_ranges()
    PCI: iproc: Use pci_parse_request_of_pci_ranges()
    PCI: faraday: Use pci_parse_request_of_pci_ranges()
    PCI: dwc: Use pci_parse_request_of_pci_ranges()
    PCI: altera: Use pci_parse_request_of_pci_ranges()
    PCI: aardvark: Use pci_parse_request_of_pci_ranges()
    PCI: Export pci_parse_request_of_pci_ranges()
    resource: Add a resource_list_first_type helper

    # Conflicts:
    # drivers/pci/controller/pcie-rcar.c

    Bjorn Helgaas
     
  • - Fix erroneous intel-iommu dependency on CONFIG_AMD_IOMMU (Bjorn
    Helgaas)

    - Move pci_prg_resp_pasid_required() to CONFIG_PCI_PRI (Bjorn Helgaas)

    - Allow VFs to use PRI (the PF PRI is shared by the VFs, but the code
    previously didn't recognize that) (Kuppuswamy Sathyanarayanan)

    - Allow VFs to use PASID (the PF PASID capability is shared by the VFs,
    but the code previously didn't recognize that) (Kuppuswamy
    Sathyanarayanan)

    - Disconnect PF and VF ATS enablement, since ATS in PFs and associated
    VFs can be enabled independently (Kuppuswamy Sathyanarayanan)

    - Cache PRI and PASID capability offsets (Kuppuswamy Sathyanarayanan)

    - Cache the PRI PRG Response PASID Required bit (Bjorn Helgaas)

    - Consolidate ATS declarations in linux/pci-ats.h (Krzysztof Wilczynski)

    - Remove unused PRI and PASID stubs (Bjorn Helgaas)

    - Removed unnecessary EXPORT_SYMBOL_GPL() from ATS, PRI, and PASID
    interfaces that are only used by built-in IOMMU drivers (Bjorn Helgaas)

    - Hide PRI and PASID state restoration functions used only inside the PCI
    core (Bjorn Helgaas)

    - Fix the UPDCR register address in the Intel ACS quirk (Steffen
    Liebergeld)

    - Add a DMA alias quirk for the Intel VCA NTB (Slawomir Pawlowski)

    - Serialize sysfs sriov_numvfs reads vs writes (Pierre Crégut)

    - Update Cavium ACS quirk for ThunderX2 and ThunderX3 (George Cherian)

    - Unify ACS quirk implementations (Bjorn Helgaas)

    * pci/virtualization:
    PCI: Unify ACS quirk desired vs provided checking
    PCI: Make ACS quirk implementations more uniform
    PCI: Apply Cavium ACS quirk to ThunderX2 and ThunderX3
    PCI/IOV: Serialize sysfs sriov_numvfs reads vs writes
    PCI: Add DMA alias quirk for Intel VCA NTB
    PCI: Fix Intel ACS quirk UPDCR register address
    PCI/ATS: Make pci_restore_pri_state(), pci_restore_pasid_state() private
    PCI/ATS: Remove unnecessary EXPORT_SYMBOL_GPL()
    PCI/ATS: Remove unused PRI and PASID stubs
    PCI/ATS: Consolidate ATS declarations in linux/pci-ats.h
    PCI/ATS: Cache PRI PRG Response PASID Required bit
    PCI/ATS: Cache PASID Capability offset
    PCI/ATS: Cache PRI Capability offset
    PCI/ATS: Disable PF/VF ATS service independently
    PCI/ATS: Handle sharing of PF PASID Capability with all VFs
    PCI/ATS: Handle sharing of PF PRI Capability with all VFs
    PCI/ATS: Move pci_prg_resp_pasid_required() to CONFIG_PCI_PRI
    iommu/vt-d: Select PCI_PRI for INTEL_IOMMU_SVM

    Bjorn Helgaas
     
  • - Protect pci_reassign_bridge_resources() against concurrent
    addition/removal (Benjamin Herrenschmidt)

    - Fix bridge dma_ranges resource list cleanup (Rob Herring)

    - Add PCI_STD_NUM_BARS for the number of standard BARs (Denis Efremov)

    - Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters to control the
    MMIO and prefetchable MMIO window sizes of hotplug bridges
    independently (Nicholas Johnson)

    - Fix MMIO/MMIO_PREF window assignment that assigned more space than
    desired (Nicholas Johnson)

    - Only enforce bus numbers from bridge EA if the bridge has EA devices
    downstream (Subbaraya Sundeep)

    * pci/resource:
    PCI: Do not use bus number zero from EA capability
    PCI: Avoid double hpmemsize MMIO window assignment
    PCI: Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters
    PCI: Add PCI_STD_NUM_BARS for the number of standard BARs
    PCI: Fix missing bridge dma_ranges resource list cleanup
    PCI: Protect pci_reassign_bridge_resources() against concurrent addition/removal

    Bjorn Helgaas
     
  • - Always return devices to D0 when thawing to fix hibernation with
    drivers like mlx4 that used legacy power management (previously we only
    did it for drivers with new power management ops) (Dexuan Cui)

    - Clear PCIe PME Status even for legacy power management (Bjorn Helgaas)

    - Fix PCI PM documentation errors (Bjorn Helgaas)

    - Use dev_printk() for more power management messages (Bjorn Helgaas)

    - Apply D2 delay as milliseconds, not microseconds (Bjorn Helgaas)

    - Convert xen-platform from legacy to generic power management (Bjorn
    Helgaas)

    - Removed unused .resume_early() and .suspend_late() legacy power
    management hooks (Bjorn Helgaas)

    - Rearrange power management code for clarity (Rafael J. Wysocki)

    - Decode power states more clearly ("4" or "D4" really refers to
    "D3cold") (Bjorn Helgaas)

    - Notice when reading PM Control register returns an error (~0) instead
    of interpreting it as being in D3hot (Bjorn Helgaas)

    - Add missing link delays required by the PCIe spec (Mika Westerberg)

    * pci/pm:
    PCI/PM: Move pci_dev_wait() definition earlier
    PCI/PM: Add missing link delays required by the PCIe spec
    PCI/PM: Add pcie_wait_for_link_delay()
    PCI/PM: Return error when changing power state from D3cold
    PCI/PM: Decode D3cold power state correctly
    PCI/PM: Fold __pci_complete_power_transition() into its caller
    PCI/PM: Avoid exporting __pci_complete_power_transition()
    PCI/PM: Fold __pci_start_power_transition() into its caller
    PCI/PM: Use pci_power_up() in pci_set_power_state()
    PCI/PM: Move power state update away from pci_power_up()
    PCI/PM: Remove unused pci_driver.suspend_late() hook
    PCI/PM: Remove unused pci_driver.resume_early() hook
    xen-platform: Convert to generic power management
    PCI/PM: Simplify pci_set_power_state()
    PCI/PM: Expand PM reset messages to mention D3hot (not just D3)
    PCI/PM: Apply D2 delay as milliseconds, not microseconds
    PCI/PM: Use pci_WARN() to include device information
    PCI/PM: Use PCI dev_printk() wrappers for consistency
    PCI/PM: Wrap long lines in documentation
    PCI/PM: Note that PME can be generated from D0
    PCI/PM: Make power management op coding style consistent
    PCI/PM: Run resume fixups before disabling wakeup events
    PCI/PM: Clear PCIe PME Status even for legacy power management
    PCI/PM: Correct pci_pm_thaw_noirq() documentation
    PCI/PM: Always return devices to D0 when thawing

    Bjorn Helgaas
     
  • - Remove unnecessary ASPM locking (Bjorn Helgaas)

    - Add support for disabling L1 PM Substates (Heiner Kallweit)

    - Allow re-enabling Clock PM after it has been disabled (Heiner Kallweit)

    - Add sysfs attributes for controlling ASPM link states (Heiner Kallweit)

    - Remove CONFIG_PCIEASPM_DEBUG, including "link_state" and "clk_ctl"
    sysfs files (Heiner Kallweit)

    * pci/aspm:
    PCI/ASPM: Remove PCIEASPM_DEBUG Kconfig option and related code
    PCI/ASPM: Add sysfs attributes for controlling ASPM link states
    PCI/ASPM: Add pcie_aspm_get_link()
    PCI/ASPM: Allow re-enabling Clock PM
    PCI/ASPM: Add L1 PM substate support to pci_disable_link_state()
    PCI/ASPM: Remove pcie_aspm_enabled() unnecessary locking

    Bjorn Helgaas
     

22 Nov, 2019

2 commits

  • Previously, CONFIG_PCIEASPM_DEBUG enabled "link_state" and "clk_ctl" sysfs
    files that controlled ASPM. We believe these files were rarely if ever
    used.

    We recently added sysfs ASPM controls that are always present, so the debug
    code is no longer needed. Removing this debug code has been discussed for
    quite some time, see e.g. [0].

    Remove PCIEASPM_DEBUG and the related code.

    [0] https://lore.kernel.org/lkml/20180727202619.GD173328@bhelgaas-glaptop.roam.corp.google.com/
    Link: https://lore.kernel.org/r/ec935d8e-c084-3938-f1d1-748617596b25@gmail.com
    Signed-off-by: Heiner Kallweit
    Signed-off-by: Bjorn Helgaas

    Heiner Kallweit
     
  • Add sysfs attributes to Endpoints and other Upstream Ports to control ASPM,
    Clock PM, and L1 PM Substates. The new attributes are:

    /sys/devices/pci*/.../link/clkpm
    /sys/devices/pci*/.../link/l0s_aspm
    /sys/devices/pci*/.../link/l1_aspm
    /sys/devices/pci*/.../link/l1_1_aspm
    /sys/devices/pci*/.../link/l1_2_aspm
    /sys/devices/pci*/.../link/l1_1_pcipm
    /sys/devices/pci*/.../link/l1_2_pcipm

    An attribute is only visible if both ends of the Link leading to the device
    support the state. Writing y/1/on to the file enables the state; n/0/off
    disables it.

    These attributes can be used to tune the power/performance tradeoff for
    individual devices.

    [bhelgaas: commit log, rename directory to "link"]
    Link: https://lore.kernel.org/r/b1c83f8a-9bf6-eac5-82d0-cf5b90128fbf@gmail.com
    Signed-off-by: Heiner Kallweit
    Signed-off-by: Bjorn Helgaas

    Heiner Kallweit
     

21 Nov, 2019

4 commits

  • Currently Linux does not follow PCIe spec regarding the required delays
    after reset. A concrete example is a Thunderbolt add-in-card that consists
    of a PCIe switch and two PCIe endpoints:

    +-1b.0-[01-6b]----00.0-[02-6b]--+-00.0-[03]----00.0 TBT controller
    +-01.0-[04-36]-- DS hotplug port
    +-02.0-[37]----00.0 xHCI controller
    \-04.0-[38-6b]-- DS hotplug port

    The root port (1b.0) and the PCIe switch downstream ports are all PCIe Gen3
    so they support 8GT/s link speeds.

    We wait for the PCIe hierarchy to enter D3cold (runtime):

    pcieport 0000:00:1b.0: power state changed by ACPI to D3cold

    When it wakes up from D3cold, according to the PCIe 5.0 section 5.8 the
    PCIe switch is put to reset and its power is re-applied. This means that we
    must follow the rules in PCIe 5.0 section 6.6.1.

    For the PCIe Gen3 ports we are dealing with here, the following applies:

    With a Downstream Port that supports Link speeds greater than 5.0 GT/s,
    software must wait a minimum of 100 ms after Link training completes
    before sending a Configuration Request to the device immediately below
    that Port. Software can determine when Link training completes by polling
    the Data Link Layer Link Active bit or by setting up an associated
    interrupt (see Section 6.7.3.3).

    Translating this into the above topology we would need to do this (DLLLA
    stands for Data Link Layer Link Active):

    0000:00:1b.0: wait for 100 ms after DLLLA is set before access to 0000:01:00.0
    0000:02:00.0: wait for 100 ms after DLLLA is set before access to 0000:03:00.0
    0000:02:02.0: wait for 100 ms after DLLLA is set before access to 0000:37:00.0

    I've instrumented the kernel with some additional logging so we can see the
    actual delays performed:

    pcieport 0000:00:1b.0: power state changed by ACPI to D0
    pcieport 0000:00:1b.0: waiting for D3cold delay of 100 ms
    pcieport 0000:00:1b.0: waiting for D3hot delay of 10 ms
    pcieport 0000:02:01.0: waiting for D3hot delay of 10 ms
    pcieport 0000:02:04.0: waiting for D3hot delay of 10 ms

    For the switch upstream port (01:00.0 reachable through 00:1b.0 root port)
    we wait for 100 ms but not taking into account the DLLLA requirement. We
    then wait 10 ms for D3hot -> D0 transition of the root port and the two
    downstream hotplug ports. This means that we deviate from what the spec
    requires.

    Performing the same check for system sleep (s2idle) transitions it turns
    out to be even worse. None of the mandatory delays are performed. If this
    would be S3 instead of s2idle then according to PCI FW spec 3.2 section
    4.6.8. there is a specific _DSM that allows the OS to skip the delays but
    this platform does not provide the _DSM and does not go to S3 anyway so no
    firmware is involved that could already handle these delays.

    On this particular platform these delays are not actually needed because
    there is an additional delay as part of the ACPI power resource that is
    used to turn on power to the hierarchy but since that additional delay is
    not required by any of standards (PCIe, ACPI) it is not present in the
    Intel Ice Lake, for example where missing the mandatory delays causes
    pciehp to start tearing down the stack too early (links are not yet
    trained). Below is an example how it looks like when this happens:

    pcieport 0000:83:04.0: pciehp: Slot(4): Card not present
    pcieport 0000:87:04.0: PME# disabled
    pcieport 0000:83:04.0: pciehp: pciehp_unconfigure_device: domain:bus:dev = 0000:86:00
    pcieport 0000:86:00.0: Refused to change power state, currently in D3
    pcieport 0000:86:00.0: restoring config space at offset 0x3c (was 0xffffffff, writing 0x201ff)
    pcieport 0000:86:00.0: restoring config space at offset 0x38 (was 0xffffffff, writing 0x0)
    ...

    There is also one reported case (see the bugzilla link below) where the
    missing delay causes xHCI on a Titan Ridge controller fail to runtime
    resume when USB-C dock is plugged. This does not involve pciehp but instead
    the PCI core fails to runtime resume the xHCI device:

    pcieport 0000:04:02.0: restoring config space at offset 0xc (was 0x10000, writing 0x10020)
    pcieport 0000:04:02.0: restoring config space at offset 0x4 (was 0x100000, writing 0x100406)
    xhci_hcd 0000:39:00.0: Refused to change power state, currently in D3
    xhci_hcd 0000:39:00.0: restoring config space at offset 0x3c (was 0xffffffff, writing 0x1ff)
    xhci_hcd 0000:39:00.0: restoring config space at offset 0x38 (was 0xffffffff, writing 0x0)
    ...

    Add a new function pci_bridge_wait_for_secondary_bus() that is called on
    PCI core resume and runtime resume paths accordingly if the bridge entered
    D3cold (and thus went through reset).

    This is second attempt to add the missing delays. The previous solution in
    c2bf1fc212f7 ("PCI: Add missing link delays required by the PCIe spec") was
    reverted because of two issues it caused:

    1. One system become unresponsive after S3 resume due to PME service
    spinning in pcie_pme_work_fn(). The root port in question reports that
    the xHCI sent PME but the xHCI device itself does not have PME status
    set. The PME status bit is never cleared in the root port resulting
    the indefinite loop in pcie_pme_work_fn().

    2. Slows down resume if the root/downstream port does not support Data
    Link Layer Active Reporting because pcie_wait_for_link_delay() waits
    1100 ms in that case.

    This version should avoid the above issues because we restrict the delay to
    happen only if the port went into D3cold.

    Link: https://lore.kernel.org/linux-pci/SL2P216MB01878BBCD75F21D882AEEA2880C60@SL2P216MB0187.KORP216.PROD.OUTLOOK.COM/
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203885
    Link: https://lore.kernel.org/r/20191112091617.70282-3-mika.westerberg@linux.intel.com
    Reported-by: Kai-Heng Feng
    Tested-by: Kai-Heng Feng
    Signed-off-by: Mika Westerberg
    Signed-off-by: Bjorn Helgaas

    Mika Westerberg
     
  • Make it explicitly clear that the code to put devices into D0 in
    pci_set_power_state() and in pci_pm_default_resume_early() is the
    same by making the latter use pci_power_up() for transitions into D0.

    Code rearrangement, no intentional functional impact.

    Link: https://lore.kernel.org/r/2520019.OZ1nXS5aSj@kreacher
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Mika Westerberg

    Rafael J. Wysocki
     
  • Now that all the PCI host drivers are using pci_parse_request_of_pci_ranges(),
    make devm_of_pci_get_host_bridge_resources() static.

    Signed-off-by: Rob Herring
    Signed-off-by: Lorenzo Pieralisi
    Cc: Bjorn Helgaas

    Rob Herring
     
  • Extend devm_of_pci_get_host_bridge_resources() and
    pci_parse_request_of_pci_ranges() helpers to also parse the inbound
    addresses from DT 'dma-ranges' and populate a resource list with the
    translated addresses. This will help ensure 'dma-ranges' is always
    parsed in a consistent way.

    Tested-by: Srinath Mannam
    Tested-by: Thomas Petazzoni # for AArdvark
    Signed-off-by: Rob Herring
    Signed-off-by: Lorenzo Pieralisi
    Reviewed-by: Srinath Mannam
    Reviewed-by: Andrew Murray
    Acked-by: Gustavo Pimentel
    Cc: Jingoo Han
    Cc: Gustavo Pimentel
    Cc: Lorenzo Pieralisi
    Cc: Bjorn Helgaas
    Cc: Thomas Petazzoni
    Cc: Will Deacon
    Cc: Linus Walleij
    Cc: Toan Le
    Cc: Ley Foon Tan
    Cc: Tom Joseph
    Cc: Ray Jui
    Cc: Scott Branden
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Ryder Lee
    Cc: Karthikeyan Mitran
    Cc: Hou Zhiqiang
    Cc: Simon Horman
    Cc: Shawn Lin
    Cc: Heiko Stuebner
    Cc: Michal Simek
    Cc: rfi@lists.rocketboards.org
    Cc: linux-mediatek@lists.infradead.org
    Cc: linux-renesas-soc@vger.kernel.org
    Cc: linux-rockchip@lists.infradead.org

    Rob Herring
     

23 Oct, 2019

1 commit

  • The existing "pci=hpmemsize=nn[KMG]" kernel parameter overrides the default
    size of both the non-prefetchable and the prefetchable MMIO windows for
    hotplug bridges.

    Add "pci=hpmmiosize=nn[KMG]" to override the default size of only the
    non-prefetchable MMIO window.

    Add "pci=hpmmioprefsize=nn[KMG]" to override the default size of only the
    prefetchable MMIO window.

    Link: https://lore.kernel.org/r/SL2P216MB0187E4D0055791957B7E2660806B0@SL2P216MB0187.KORP216.PROD.OUTLOOK.COM
    Signed-off-by: Nicholas Johnson
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Mika Westerberg

    Nicholas Johnson
     

19 Oct, 2019

1 commit

  • Previously we did not save and restore the AER configuration on
    suspend/resume, so the configuration may be lost after resume.

    Save the AER configuration during suspend and restore it during resume.

    [bhelgaas: commit log]
    Link: https://lore.kernel.org/r/92EBB4272BF81E4089A7126EC1E7B28492C3B007@IRSMSX101.ger.corp.intel.com
    Signed-off-by: Mayurkumar Patel
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Andy Shevchenko

    Patel, Mayurkumar
     

16 Oct, 2019

3 commits

  • These interfaces:

    void pci_restore_pri_state(struct pci_dev *pdev);
    void pci_restore_pasid_state(struct pci_dev *pdev);

    are only used in drivers/pci and do not need to be seen by the rest of the
    kernel. Most them to drivers/pci/pci.h so they're private to the PCI
    subsystem.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Joerg Roedel

    Bjorn Helgaas
     
  • Previously each PASID interface searched for the PASID Capability. Cache
    the capability offset the first time we use it instead of searching each
    time.

    [bhelgaas: commit log, reorder patch to later, call pci_pasid_init() from
    pci_init_capabilities()]
    Link: https://lore.kernel.org/r/4957778959fa34eab3e8b3065d1951989c61cb0f.1567029860.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Link: https://lore.kernel.org/r/20190905193146.90250-6-helgaas@kernel.org
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     
  • Previously each PRI interface searched for the PRI Capability. Cache the
    capability offset the first time we use it instead of searching each time.

    [bhelgaas: commit log, reorder patch to later, call pci_pri_init() from
    pci_init_capabilities()]
    Link: https://lore.kernel.org/r/0c5495d376faf6dbb8eb2165204c474438aaae65.156
    7029860.git.sathyanarayanan.kuppuswamy@linux.intel.com
    Link: https://lore.kernel.org/r/20190905193146.90250-5-helgaas@kernel.org
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Bjorn Helgaas

    Kuppuswamy Sathyanarayanan
     

24 Sep, 2019

3 commits

  • Pull PCI updates from Bjorn Helgaas:
    "Enumeration:

    - Consolidate _HPP/_HPX stuff in pci-acpi.c and simplify it
    (Krzysztof Wilczynski)

    - Fix incorrect PCIe device types and remove dev->has_secondary_link
    to simplify code that deals with upstream/downstream ports (Mika
    Westerberg)

    - After suspend, restore Resizable BAR size bits correctly for 1MB
    BARs (Sumit Saxena)

    - Enable PCI_MSI_IRQ_DOMAIN support for RISC-V (Wesley Terpstra)

    Virtualization:

    - Add ACS quirks for iProc PAXB (Abhinav Ratna), Amazon Annapurna
    Labs (Ali Saidi)

    - Move sysfs SR-IOV functions to iov.c (Kelsey Skunberg)

    - Remove group write permissions from sysfs sriov_numvfs,
    sriov_drivers_autoprobe (Kelsey Skunberg)

    Hotplug:

    - Simplify pciehp indicator control (Denis Efremov)

    Peer-to-peer DMA:

    - Allow P2P DMA between root ports for whitelisted bridges (Logan
    Gunthorpe)

    - Whitelist some Intel host bridges for P2P DMA (Logan Gunthorpe)

    - DMA map P2P DMA requests that traverse host bridge (Logan
    Gunthorpe)

    Amazon Annapurna Labs host bridge driver:

    - Add DT binding and controller driver (Jonathan Chocron)

    Hyper-V host bridge driver:

    - Fix hv_pci_dev->pci_slot use-after-free (Dexuan Cui)

    - Fix PCI domain number collisions (Haiyang Zhang)

    - Use instance ID bytes 4 & 5 as PCI domain numbers (Haiyang Zhang)

    - Fix build errors on non-SYSFS config (Randy Dunlap)

    i.MX6 host bridge driver:

    - Limit DBI register length (Stefan Agner)

    Intel VMD host bridge driver:

    - Fix config addressing issues (Jon Derrick)

    Layerscape host bridge driver:

    - Add bar_fixed_64bit property to endpoint driver (Xiaowei Bao)

    - Add CONFIG_PCI_LAYERSCAPE_EP to build EP/RC drivers separately
    (Xiaowei Bao)

    Mediatek host bridge driver:

    - Add MT7629 controller support (Jianjun Wang)

    Mobiveil host bridge driver:

    - Fix CPU base address setup (Hou Zhiqiang)

    - Make "num-lanes" property optional (Hou Zhiqiang)

    Tegra host bridge driver:

    - Fix OF node reference leak (Nishka Dasgupta)

    - Disable MSI for root ports to work around design problem (Vidya
    Sagar)

    - Add Tegra194 DT binding and controller support (Vidya Sagar)

    - Add support for sideband pins and slot regulators (Vidya Sagar)

    - Add PIPE2UPHY support (Vidya Sagar)

    Misc:

    - Remove unused pci_block_cfg_access() et al (Kelsey Skunberg)

    - Unexport pci_bus_get(), etc (Kelsey Skunberg)

    - Hide PM, VC, link speed, ATS, ECRC, PTM constants and interfaces in
    the PCI core (Kelsey Skunberg)

    - Clean up sysfs DEVICE_ATTR() usage (Kelsey Skunberg)

    - Mark expected switch fall-through (Gustavo A. R. Silva)

    - Propagate errors for optional regulators and PHYs (Thierry Reding)

    - Fix kernel command line resource_alignment parameter issues (Logan
    Gunthorpe)"

    * tag 'pci-v5.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (112 commits)
    PCI: Add pci_irq_vector() and other stubs when !CONFIG_PCI
    arm64: tegra: Add PCIe slot supply information in p2972-0000 platform
    arm64: tegra: Add configuration for PCIe C5 sideband signals
    PCI: tegra: Add support to enable slot regulators
    PCI: tegra: Add support to configure sideband pins
    PCI: vmd: Fix shadow offsets to reflect spec changes
    PCI: vmd: Fix config addressing when using bus offsets
    PCI: dwc: Add validation that PCIe core is set to correct mode
    PCI: dwc: al: Add Amazon Annapurna Labs PCIe controller driver
    dt-bindings: PCI: Add Amazon's Annapurna Labs PCIe host bridge binding
    PCI: Add quirk to disable MSI-X support for Amazon's Annapurna Labs Root Port
    PCI/VPD: Prevent VPD access for Amazon's Annapurna Labs Root Port
    PCI: Add ACS quirk for Amazon Annapurna Labs root ports
    PCI: Add Amazon's Annapurna Labs vendor ID
    MAINTAINERS: Add PCI native host/endpoint controllers designated reviewer
    PCI: hv: Use bytes 4 and 5 from instance ID as the PCI domain numbers
    dt-bindings: PCI: tegra: Add PCIe slot supplies regulator entries
    dt-bindings: PCI: tegra: Add sideband pins configuration entries
    PCI: tegra: Add Tegra194 PCIe support
    PCI: Get rid of dev->has_secondary_link flag
    ...

    Linus Torvalds
     
  • - Use devm_add_action_or_reset() helper (Fuqian Huang)

    - Mark expected switch fall-through (Gustavo A. R. Silva)

    - Convert sysfs device attributes from __ATTR() to DEVICE_ATTR() (Kelsey
    Skunberg)

    - Convert sysfs file permissions from S_IRUSR etc to octal (Kelsey
    Skunberg)

    - Move SR-IOV sysfs functions to iov.c (Kelsey Skunberg)

    - Add pci_info_ratelimited() to ratelimit PCI messages separately
    (Krzysztof Wilczynski)

    - Fix "'static' not at beginning of declaration" warnings (Krzysztof
    Wilczynski)

    - Clean up resource_alignment parameter to not require static buffer
    (Logan Gunthorpe)

    - Add ACS quirk for iProc PAXB (Abhinav Ratna)

    - Add pci_irq_vector() and other stubs for !CONFIG_PCI (Herbert Xu)

    * pci/misc:
    PCI: Add pci_irq_vector() and other stubs when !CONFIG_PCI
    PCI: Add ACS quirk for iProc PAXB
    PCI: Force trailing new line to resource_alignment_param in sysfs
    PCI: Move pci_[get|set]_resource_alignment_param() into their callers
    PCI: Clean up resource_alignment parameter to not require static buffer
    PCI: Use static const struct, not const static struct
    PCI: Add pci_info_ratelimited() to ratelimit PCI separately
    PCI/IOV: Remove group write permission from sriov_numvfs, sriov_drivers_autoprobe
    PCI/IOV: Move sysfs SR-IOV functions to iov.c
    PCI: sysfs: Change permissions from symbolic to octal
    PCI: sysfs: Change DEVICE_ATTR() to DEVICE_ATTR_WO()
    PCI: sysfs: Define device attributes with DEVICE_ATTR*()
    PCI: Mark expected switch fall-through
    PCI: Use devm_add_action_or_reset()

    Bjorn Helgaas
     
  • - Consolidate _HPP & _HPX code in pci-acpi.h and remove unnecessary
    struct hotplug_program_ops (Krzysztof Wilczynski)

    - Fixup PCIe device types to remove the need for dev->has_secondary_link
    (Mika Westerberg)

    * pci/enumeration:
    PCI: Get rid of dev->has_secondary_link flag
    PCI: Make pcie_downstream_port() available outside of access.c
    PCI/ACPI: Remove unnecessary struct hotplug_program_ops
    PCI/ACPI: Move _HPP & _HPX functions to pci-acpi.c
    PCI/ACPI: Rename _HPX structs from hpp_* to hpx_*

    Bjorn Helgaas