Skip to content
Permalink
Huacai-Chen/PC…
Switch branches/tags

Commits on Aug 20, 2021

  1. PCI/VGA: Rework default VGA device selection

    Current default VGA device selection fails in some cases:
    
      - On BMC system, the AST2500 bridge [1a03:1150] does not implement
        PCI_BRIDGE_CTL_VGA [1].  This is perfectly legal but means the
        legacy VGA resources won't reach downstream devices unless they're
        included in the usual bridge windows.
    
      - vga_arb_select_default_device() will set a device below such a
        bridge as the default VGA device as long as it has PCI_COMMAND_IO
        and PCI_COMMAND_MEMORY enabled.
    
      - vga_arbiter_add_pci_device() is called for every VGA device,
        either at boot-time or at hot-add time, and it will also set the
        device as the default VGA device, but ONLY if all bridges leading
        to it implement PCI_BRIDGE_CTL_VGA.
    
      - This difference between vga_arb_select_default_device() and
        vga_arbiter_add_pci_device() means that a device below an AST2500
        or similar bridge can only be set as the default if it is
        enumerated before vga_arb_device_init().
    
      - On ACPI-based systems, PCI devices are enumerated by acpi_init(),
        which runs before vga_arb_device_init().
    
      - On non-ACPI systems, like on MIPS system, they are enumerated by
        pcibios_init(), which typically runs *after*
        vga_arb_device_init().
    
    So I made vga_arb_update_default_device() to replace the current vga_
    arb_select_default_device(), which will be call from vga_arbiter_add_
    pci_device(), set the default device even if it does not own the VGA
    resources because an upstream bridge doesn't implement PCI_BRIDGE_CTL_
    VGA. And the default VGA device is updated if a better one is found
    (device with legacy resources enabled is better, device owns the
    firmware framebuffer is even better).
    chenhuacai authored and intel-lab-lkp committed Aug 20, 2021
  2. PCI/VGA: Log bridge control messages when adding devices

    Previously vga_arb_device_init() iterated through all VGA devices and
    indicated whether legacy VGA routing to each could be controlled by an
    upstream bridge.
    
    But we determine that information in vga_arbiter_add_pci_device(), which we
    call for every device, so we can log it there without iterating through the
    VGA devices again.
    
    Note that we call vga_arbiter_check_bridge_sharing() before adding the
    device to vga_list, so we have to handle the very first device separately.
    
    [bhelgaas: commit log, split another piece to separate patch, fix
    list_empty() issue]
    Link: https://lore.kernel.org/r/20210705100503.1120643-1-chenhuacai@loongson.cn
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    chenhuacai authored and intel-lab-lkp committed Aug 20, 2021
  3. PCI/VGA: Split out vga_arb_update_default_device()

    If there's no default VGA device, and we find a VGA device that owns the
    legacy VGA resources, we make that device the default.  Split this logic
    out from vga_arbiter_add_pci_device() into a new function,
    vga_arb_update_default_device().
    
    [bhelgaas: split another piece to separate patch]
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    chenhuacai authored and intel-lab-lkp committed Aug 20, 2021
  4. PCI/VGA: Prefer vga_default_device()

    Use the vga_default_device() interface consistently instead of directly
    testing vga_default.  No functional change intended.
    
    [bhelgaas: split to separate patch and extended]
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    chenhuacai authored and intel-lab-lkp committed Aug 20, 2021
  5. PCI/VGA: Move vga_arb_integrated_gpu() earlier in file

    Move vga_arb_integrated_gpu() earlier in file to prepare for future patch.
    No functional change intended.
    
    [bhelgaas: split to separate patch]
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    chenhuacai authored and intel-lab-lkp committed Aug 20, 2021
  6. PCI/VGA: Remove empty vga_arb_device_card_gone()

    vga_arb_device_card_gone() has always been empty.  Remove it.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    bjorn-helgaas authored and intel-lab-lkp committed Aug 20, 2021
  7. PCI/VGA: Use unsigned format string to print lock counts

    In struct vga_device, io_lock_cnt and mem_lock_cnt are unsigned, but we
    previously printed them with "%d", the signed decimal format.  Print them
    with the unsigned format "%u" instead.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    bjorn-helgaas authored and intel-lab-lkp committed Aug 20, 2021
  8. PCI/VGA: Replace full MIT license text with SPDX identifier

    Per Documentation/process/license-rules.rst, the SPDX MIT identifier is
    equivalent to including the entire MIT license text from
    LICENSES/preferred/MIT.
    
    Replace the MIT license text with the equivalent SPDX identifier.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    bjorn-helgaas authored and intel-lab-lkp committed Aug 20, 2021
  9. PCI/VGA: Move vgaarb to drivers/pci

    The VGA arbiter is really PCI-specific and doesn't depend on any GPU
    things.  Move it to the PCI subsystem.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    bjorn-helgaas authored and intel-lab-lkp committed Aug 20, 2021

Commits on Aug 17, 2021

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

    - Zero-initialize pcitest param to avoid random "-d" setting (Shunyong
      Yang)
    
    * remotes/lorenzo/pci/tools:
      tools: PCI: Zero-initialize param
    bjorn-helgaas committed Aug 17, 2021
  2. Merge branch 'remotes/lorenzo/pci/misc'

    - Make ixp4xx driver depend on ARCH_IXP4XX (Geert Uytterhoeven)
    
    * remotes/lorenzo/pci/misc:
      PCI: controller: PCI_IXP4XX should depend on ARCH_IXP4XX
    bjorn-helgaas committed Aug 17, 2021
  3. Merge branch 'remotes/lorenzo/pci/endpoint'

    - Add max-virtual-functions to endpoint binding (Kishon Vijay Abraham I)
    
    - Add pci_epf_add_vepf() API to add virtual function to endpoint (Kishon
      Vijay Abraham I)
    
    - Add pci_epf_vepf_link() to link virtual function to endpoint physical
      function (Kishon Vijay Abraham I)
    
    - Add virtual function number to pci_epc_ops endpoint ops interfaces
      (Kishon Vijay Abraham I)
    
    - Simplify register base address computation for endpoint BAR configuration
      (Kishon Vijay Abraham I)
    
    - Add support to configure virtual functions in cadence endpoint driver
      (Kishon Vijay Abraham I)
    
    - Add SR-IOV configuration to endpoint test driver (Kishon Vijay Abraham I)
    
    - Document configfs usage to create virtual functions for endpoints (Kishon
      Vijay Abraham I)
    
    * remotes/lorenzo/pci/endpoint:
      Documentation: PCI: endpoint/pci-endpoint-cfs: Guide to use SR-IOV
      misc: pci_endpoint_test: Populate sriov_configure ops to configure SR-IOV device
      PCI: cadence: Add support to configure virtual functions
      PCI: cadence: Simplify code to get register base address for configuring BAR
      PCI: endpoint: Add virtual function number in pci_epc ops
      PCI: endpoint: Add support to link a physical function to a virtual function
      PCI: endpoint: Add support to add virtual function in endpoint core
      dt-bindings: PCI: pci-ep: Add binding to specify virtual function
    bjorn-helgaas committed Aug 17, 2021
  4. Merge branch 'remotes/lorenzo/pci/xilinx-nwl'

    - Document optional clock DT property (Michal Simek)
    
    - Enable PCIe ref clock (Hyun Kwon)
    
    * remotes/lorenzo/pci/xilinx-nwl:
      PCI: xilinx-nwl: Enable the clock through CCF
      dt-bindings: pci: xilinx-nwl: Document optional clock property
    bjorn-helgaas committed Aug 17, 2021
  5. Merge branch 'remotes/lorenzo/pci/xgene'

    - Remove redundant dev_err() after devm_ioremap_resource() (ErKun Yang)
    
    * remotes/lorenzo/pci/xgene:
      PCI: xgene-msi: Remove redundant dev_err() call in xgene_msi_probe()
    bjorn-helgaas committed Aug 17, 2021
  6. Merge branch 'remotes/lorenzo/pci/tegra194'

    - Fix handling BME_CHGED event (Om Prakash Singh)
    
    - Fix MSI-X programming (Om Prakash Singh)
    
    - Disable interrupts before entering L2 (Om Prakash Singh)
    
    - Don't allow suspend when Tegra PCIe is in EP mode (Om Prakash Singh)
    
    * remotes/lorenzo/pci/tegra194:
      PCI: tegra194: Cleanup unused code
      PCI: tegra194: Don't allow suspend when Tegra PCIe is in EP mode
      PCI: tegra194: Disable interrupts before entering L2
      PCI: tegra194: Fix MSI-X programming
      PCI: tegra194: Fix handling BME_CHGED event
    bjorn-helgaas committed Aug 17, 2021
  7. Merge branch 'remotes/lorenzo/pci/tegra'

    - Remove unused struct tegra_pcie_bus (Krzysztof Wilczyński)
    
    * remotes/lorenzo/pci/tegra:
      PCI: tegra: make const array err_msg static
      PCI: tegra: Use 'seq_puts' instead of 'seq_printf'
      PCI: tegra: Fix OF node reference leak
      PCI: tegra: Remove unused struct tegra_pcie_bus
    bjorn-helgaas committed Aug 17, 2021
  8. Merge branch 'remotes/lorenzo/pci/rcar'

    - Fix runtime PM imbalance in rcar_pcie_ep_probe() (Dinghao Liu)
    
    * remotes/lorenzo/pci/rcar:
      PCI: rcar: Add L1 link state fix into data abort hook
      PCI: rcar: Fix runtime PM imbalance in rcar_pcie_ep_probe()
    bjorn-helgaas committed Aug 17, 2021
  9. Merge branch 'remotes/lorenzo/pci/mediatek'

    - Split DT bindings for PCIe controllers with independent MSI domains into
      separate nodes for MT2712/MT7622 (Chuanjia Liu)
    
    - Locate shared registers from "mediatek,generic-pciecfg" property, pay
      attention to ""linux,pci-domain" property,  use "interrupt-names" and
      "pcie_irq" to fix MSI issue (Chuanjia Liu)
    
    * remotes/lorenzo/pci/mediatek:
      dt-bindings: PCI: mediatek: Update the Device tree bindings
    bjorn-helgaas committed Aug 17, 2021
  10. Merge branch 'remotes/lorenzo/pci/iproc'

    - Don't fail devm_pci_alloc_host_bridge() on missing 'ranges' (Rob Herring)
    
    - Fix BCMA probe resource handling (Rob Herring)
    
    * remotes/lorenzo/pci/iproc:
      PCI: iproc: Fix BCMA probe resource handling
      PCI: of: Don't fail devm_pci_alloc_host_bridge() on missing 'ranges'
    bjorn-helgaas committed Aug 17, 2021
  11. Merge branch 'remotes/lorenzo/pci/hv'

    - Support Hyper-V Create Interrupt v3 message (Sunil Muthuswamy)
    
    * remotes/lorenzo/pci/hv:
      PCI: hv: Support for create interrupt v3
    bjorn-helgaas committed Aug 17, 2021
  12. Merge branch 'remotes/lorenzo/pci/dwc'

    - Remove surplus break statements (Krzysztof Wilczyński)
    
    - Add Rockchip RK356X host controller driver (Simon Xue)
    
    * remotes/lorenzo/pci/dwc:
      PCI: rockchip-dwc: Add Rockchip RK356X host controller driver
      PCI: dwc: Remove surplus break statement after return
      PCI: artpec6: Remove local code block from within switch statement
      PCI: artpec6: Remove surplus break statement after return
    bjorn-helgaas committed Aug 17, 2021
  13. Merge branch 'remotes/lorenzo/pci/aardvark'

    - Fix PIO config access status checking (Evan Wang)
    
    - Increase config access polling delay to 1.5s (Pali Rohár)
    
    - Add PCIe Root Capabilities to bridge emulation (Pali Rohár)
    
    - Report Config Request Retry Status when Software Visibility enabled (Pali
      Rohár)
    
    * remotes/lorenzo/pci/aardvark:
      PCI: aardvark: Fix reporting CRS value
      PCI: pci-bridge-emul: Add PCIe Root Capabilities Register
      PCI: aardvark: Increase polling delay to 1.5s while waiting for PIO response
      PCI: aardvark: Fix checking for PIO status
    bjorn-helgaas committed Aug 17, 2021
  14. Merge branch 'pci/misc'

    - Add pci_numachip_init() declaration (Krzysztof Wilczyński)
    
    - Allocate pci_dev_str_match_path() string atomically (Dan Carpenter)
    
    * pci/misc:
      PCI: Fix pci_dev_str_match_path() alloc while atomic bug
      x86/PCI: Add pci_numachip_init() declaration
    bjorn-helgaas committed Aug 17, 2021
  15. Merge branch 'pci/vpd'

    - Check Resource Item Names against those defined for type (Bjorn Helgaas)
    
    - Treat initial 0xff as missing EEPROM (Heiner Kallweit)
    
    - Reject resource tags with invalid size (Bjorn Helgaas)
    
    - Don't check Large Resource Item Names for validity (Bjorn Helgaas)
    
    - Allow access to valid parts of VPD if some is invalid (Bjorn Helgaas)
    
    - Remove pci_vpd_size() old_size argument (Heiner Kallweit)
    
    - Make pci_vpd_wait() uninterruptible (Heiner Kallweit)
    
    - Remove struct pci_vpd.flag (Heiner Kallweit)
    
    - Remove struct pci_vpd_ops (Heiner Kallweit)
    
    - Remove struct pci_vpd.valid member (Heiner Kallweit)
    
    - Embed struct pci_vpd in struct pci_dev (Heiner Kallweit)
    
    - Determine VPD size in pci_vpd_init() (Heiner Kallweit)
    
    - Treat invalid VPD like missing VPD capability (Heiner Kallweit)
    
    * pci/vpd:
      PCI/VPD: Treat invalid VPD like missing VPD capability
      PCI/VPD: Determine VPD size in pci_vpd_init()
      PCI/VPD: Embed struct pci_vpd in struct pci_dev
      PCI/VPD: Remove struct pci_vpd.valid member
      PCI/VPD: Remove struct pci_vpd_ops
      PCI/VPD: Reorder pci_read_vpd(), pci_write_vpd()
      PCI/VPD: Remove struct pci_vpd.flag
      PCI/VPD: Make pci_vpd_wait() uninterruptible
      PCI/VPD: Remove pci_vpd_size() old_size argument
      PCI/VPD: Allow access to valid parts of VPD if some is invalid
      PCI/VPD: Don't check Large Resource Item Names for validity
      PCI/VPD: Reject resource tags with invalid size
      PCI/VPD: Treat initial 0xff as missing EEPROM
      PCI/VPD: Check Resource Item Names against those valid for type
      PCI/VPD: Correct diagnostic for VPD read failure
    bjorn-helgaas committed Aug 17, 2021
  16. Merge branch 'pci/virtualization'

    - Add ACS quirks for NXP LX2xx0 and LX2xx2 platforms (Wasim Khan)
    
    - Enforce pci=noats with Transaction Blocking (Alex Williamson)
    
    * pci/virtualization:
      PCI/ACS: Enforce pci=noats with Transaction Blocking
      PCI: Add ACS quirks for NXP LX2xx0 and LX2xx2 platforms
    bjorn-helgaas committed Aug 17, 2021
  17. Merge branch 'pci/resource'

    - Refactor pci_ioremap_bar() and pci_ioremap_wc_bar() (Krzysztof
      Wilczyński)
    
    * pci/resource:
      PCI: Refactor pci_ioremap_bar() and pci_ioremap_wc_bar()
    bjorn-helgaas committed Aug 17, 2021
  18. Merge branch 'pci/irq'

    - Convert irq_find_mapping() + generic_handle_irq() to
      generic_handle_domain_irq() (Marc Zyngier)
    
    * pci/irq:
      PCI: Bulk conversion to generic_handle_domain_irq()
    bjorn-helgaas committed Aug 17, 2021
  19. Merge branch 'pci/enumeration'

    - Call Max Payload Size-related fixup quirks early, so they're considered
      by pci_configure_mps() (Marek Behún)
    
    - Restrict Max Payload Size Supported to work around ASMedia ASM1062 SATA
      erratum (Marek Behún)
    
    - Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure (Krzysztof
      Wilczyński)
    
    * pci/enumeration:
      PCI: Return int from pciconfig_read() syscall
      PCI: Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure
      PCI: Restrict ASMedia ASM1062 SATA Max Payload Size Supported
      PCI: Call Max Payload Size-related fixup quirks early
    bjorn-helgaas committed Aug 17, 2021

Commits on Aug 16, 2021

  1. Documentation: PCI: endpoint/pci-endpoint-cfs: Guide to use SR-IOV

    Add Documentation to help users use PCI endpoint to create virtual
    functions using configfs. An endpoint function is designated as a
    virtual endpoint function device when it is linked to a physical
    endpoint function device (instead of a endpoint controller).
    
    Link: https://lore.kernel.org/r/20210811064656.15399-9-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
  2. misc: pci_endpoint_test: Populate sriov_configure ops to configure SR…

    …-IOV device
    
    Populate sriov_configure ops with pci_sriov_configure_simple to
    configure SR-IOV device.
    
    Link: https://lore.kernel.org/r/20210811064656.15399-8-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
  3. PCI: cadence: Add support to configure virtual functions

    Now that support for SR-IOV is added in PCIe endpoint core, add support
    to configure virtual functions in the Cadence PCIe EP driver.
    
    Link: https://lore.kernel.org/r/20210811064656.15399-7-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
  4. PCI: cadence: Simplify code to get register base address for configur…

    …ing BAR
    
    No functional change. Simplify code to get register base address for
    configuring PCI BAR.
    
    Link: https://lore.kernel.org/r/20210811064656.15399-6-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
  5. PCI: endpoint: Add virtual function number in pci_epc ops

    Add virtual function number in pci_epc ops. EPC controller driver
    can perform virtual function specific initialization based on the
    virtual function number.
    
    Link: https://lore.kernel.org/r/20210811064656.15399-5-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
  6. PCI: endpoint: Add support to link a physical function to a virtual f…

    …unction
    
    While the physical function has to be linked to endpoint controller, the
    virtual function has to be linked to a physical function. Add support to
    link a physical function to a virtual function in pci-ep-cfs.
    
    Link: https://lore.kernel.org/r/20210811064656.15399-4-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
  7. PCI: endpoint: Add support to add virtual function in endpoint core

    Add support to add virtual function in endpoint core. The virtual
    function can only be associated with a physical function instead of a
    endpoint controller. Provide APIs to associate a virtual function with
    a physical function here.
    
    Link: https://lore.kernel.org/r/20210811064656.15399-3-kishon@ti.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    kishon authored and Lorenzo Pieralisi committed Aug 16, 2021
Older