23 Aug, 2018

2 commits

  • Merge more updates from Andrew Morton:

    - the rest of MM

    - procfs updates

    - various misc things

    - more y2038 fixes

    - get_maintainer updates

    - lib/ updates

    - checkpatch updates

    - various epoll updates

    - autofs updates

    - hfsplus

    - some reiserfs work

    - fatfs updates

    - signal.c cleanups

    - ipc/ updates

    * emailed patches from Andrew Morton : (166 commits)
    ipc/util.c: update return value of ipc_getref from int to bool
    ipc/util.c: further variable name cleanups
    ipc: simplify ipc initialization
    ipc: get rid of ids->tables_initialized hack
    lib/rhashtable: guarantee initial hashtable allocation
    lib/rhashtable: simplify bucket_table_alloc()
    ipc: drop ipc_lock()
    ipc/util.c: correct comment in ipc_obtain_object_check
    ipc: rename ipcctl_pre_down_nolock()
    ipc/util.c: use ipc_rcu_putref() for failues in ipc_addid()
    ipc: reorganize initialization of kern_ipc_perm.seq
    ipc: compute kern_ipc_perm.id under the ipc lock
    init/Kconfig: remove EXPERT from CHECKPOINT_RESTORE
    fs/sysv/inode.c: use ktime_get_real_seconds() for superblock stamp
    adfs: use timespec64 for time conversion
    kernel/sysctl.c: fix typos in comments
    drivers/rapidio/devices/rio_mport_cdev.c: remove redundant pointer md
    fork: don't copy inconsistent signal handler state to child
    signal: make get_signal() return bool
    signal: make sigkill_pending() return bool
    ...

    Linus Torvalds
     
  • Allow the PCI quirk tables to be emitted in a way that avoids absolute
    references to the hook functions. This reduces the size of the entries,
    and, more importantly, makes them invariant under runtime relocation
    (e.g., for KASLR)

    Link: http://lkml.kernel.org/r/20180704083651.24360-6-ard.biesheuvel@linaro.org
    Acked-by: Bjorn Helgaas
    Acked-by: Michael Ellerman
    Acked-by: Ingo Molnar
    Signed-off-by: Ard Biesheuvel
    Cc: Arnd Bergmann
    Cc: Benjamin Herrenschmidt
    Cc: Catalin Marinas
    Cc: James Morris
    Cc: James Morris
    Cc: Jessica Yu
    Cc: Josh Poimboeuf
    Cc: Kees Cook
    Cc: Nicolas Pitre
    Cc: Paul Mackerras
    Cc: Petr Mladek
    Cc: Russell King
    Cc: "Serge E. Hallyn"
    Cc: Sergey Senozhatsky
    Cc: Steven Rostedt
    Cc: Thomas Garnier
    Cc: Thomas Gleixner
    Cc: Will Deacon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ard Biesheuvel
     

22 Aug, 2018

1 commit

  • Pull more power management updates from Rafael Wysocki:
    "These fix the main idle loop and the menu cpuidle governor, clean up
    the latter, fix a mistake in the PCI bus type's support for system
    suspend and resume, fix the ondemand and conservative cpufreq
    governors, address a build issue in the system wakeup framework and
    make the ACPI C-states desciptions less confusing.

    Specifics:

    - Make the idle loop handle stopped scheduler tick correctly (Rafael
    Wysocki).

    - Prevent the menu cpuidle governor from letting CPUs spend too much
    time in shallow idle states when it is invoked with scheduler tick
    stopped and clean it up somewhat (Rafael Wysocki).

    - Avoid invoking the platform firmware to make the platform enter the
    ACPI S3 sleep state with suspended PCIe root ports which may
    confuse the firmware and cause it to crash (Rafael Wysocki).

    - Fix sysfs-related race in the ondemand and conservative cpufreq
    governors which may cause the system to crash if the governor
    module is removed during an update of CPU frequency limits (Henry
    Willard).

    - Select SRCU when building the system wakeup framework to avoid a
    build issue in it (zhangyi).

    - Make the descriptions of ACPI C-states vendor-neutral to avoid
    confusion (Prarit Bhargava)"

    * tag 'pm-4.19-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpuidle: menu: Handle stopped tick more aggressively
    sched: idle: Avoid retaining the tick when it has been stopped
    PCI / ACPI / PM: Resume all bridges on suspend-to-RAM
    cpuidle: menu: Update stale polling override comment
    cpufreq: governor: Avoid accessing invalid governor_data
    x86/ACPI/cstate: Make APCI C1 FFH MWAIT C-state description vendor-neutral
    cpuidle: menu: Fix white space
    PM / sleep: wakeup: Fix build error caused by missing SRCU support

    Linus Torvalds
     

17 Aug, 2018

2 commits

  • Commit 26112ddc254c (PCI / ACPI / PM: Resume bridges w/o drivers on
    suspend-to-RAM) attempted to fix a functional regression resulting
    from commit c62ec4610c40 (PM / core: Fix direct_complete handling
    for devices with no callbacks) by resuming PCI bridges without
    drivers (that is, "parallel PCI" ones) during system-wide suspend if
    the target system state is not ACPI S0 (working state).

    That turns out insufficient, however, as it is reported that, at
    least in one case, the platform firmware gets confused if a PCIe
    root port is suspended before entering the ACPI S3 sleep state.
    That issue was exposed by commit 77b3729ca03 (PCI / PM: Use
    SMART_SUSPEND and LEAVE_SUSPENDED flags for PCIe ports) that allowed
    PCIe ports to stay in runtime suspend during system-wide suspend
    (which is OK for suspend-to-idle, but turns out to be problematic
    otherwise).

    For this reason, drop the driver check from acpi_pci_need_resume()
    and resume all bridges (including PCIe ports with drivers) during
    system-wide suspend if the target system state is not ACPI S0.

    [If the target system state is ACPI S0, it means suspend-to-idle
    and the platform firmware is not going to be invoked to actually
    suspend the system, so there is no need to resume the bridges in
    that case.]

    Fixes: 77b3729ca03 (PCI / PM: Use SMART_SUSPEND and LEAVE_SUSPENDED flags for PCIe ports)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200675
    Reported-by: teika kazura
    Tested-by: teika kazura
    Reviewed-by: Mika Westerberg
    Acked-by: Bjorn Helgaas
    Cc: 4.16+ # 4.16+: 26112ddc254c (PCI / ACPI / PM: Resume bridges ...)
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Pull pci updates from Bjorn Helgaas:

    - Decode AER errors with names similar to "lspci" (Tyler Baicar)

    - Expose AER statistics in sysfs (Rajat Jain)

    - Clear AER status bits selectively based on the type of recovery (Oza
    Pawandeep)

    - Honor "pcie_ports=native" even if HEST sets FIRMWARE_FIRST (Alexandru
    Gagniuc)

    - Don't clear AER status bits if we're using the "Firmware-First"
    strategy where firmware owns the registers (Alexandru Gagniuc)

    - Use sysfs_match_string() to simplify ASPM sysfs parsing (Andy
    Shevchenko)

    - Remove unnecessary includes of (Bjorn Helgaas)

    - Defer DPC event handling to work queue (Keith Busch)

    - Use threaded IRQ for DPC bottom half (Keith Busch)

    - Print AER status while handling DPC events (Keith Busch)

    - Work around IDT switch ACS Source Validation erratum (James
    Puthukattukaran)

    - Emit diagnostics for all cases of PCIe Link downtraining (Links
    operating slower than they're capable of) (Alexandru Gagniuc)

    - Skip VFs when configuring Max Payload Size (Myron Stowe)

    - Reduce Root Port Max Payload Size if necessary when hot-adding a
    device below it (Myron Stowe)

    - Simplify SHPC existence/permission checks (Bjorn Helgaas)

    - Remove hotplug sample skeleton driver (Lukas Wunner)

    - Convert pciehp to threaded IRQ handling (Lukas Wunner)

    - Improve pciehp tolerance of missed events and initially unstable
    links (Lukas Wunner)

    - Clear spurious pciehp events on resume (Lukas Wunner)

    - Add pciehp runtime PM support, including for Thunderbolt controllers
    (Lukas Wunner)

    - Support interrupts from pciehp bridges in D3hot (Lukas Wunner)

    - Mark fall-through switch cases before enabling -Wimplicit-fallthrough
    (Gustavo A. R. Silva)

    - Move DMA-debug PCI init from arch code to PCI core (Christoph
    Hellwig)

    - Fix pci_request_irq() usage of IRQF_ONESHOT when no handler is
    supplied (Heiner Kallweit)

    - Unify PCI and DMA direction #defines (Shunyong Yang)

    - Add PCI_DEVICE_DATA() macro (Andy Shevchenko)

    - Check for VPD completion before checking for timeout (Bert Kenward)

    - Limit Netronome NFP5000 config space size to work around erratum
    (Jakub Kicinski)

    - Set IRQCHIP_ONESHOT_SAFE for PCI MSI irqchips (Heiner Kallweit)

    - Document ACPI description of PCI host bridges (Bjorn Helgaas)

    - Add "pci=disable_acs_redir=" parameter to disable ACS redirection for
    peer-to-peer DMA support (we don't have the peer-to-peer support yet;
    this is just one piece) (Logan Gunthorpe)

    - Clean up devm_of_pci_get_host_bridge_resources() resource allocation
    (Jan Kiszka)

    - Fixup resizable BARs after suspend/resume (Christian König)

    - Make "pci=earlydump" generic (Sinan Kaya)

    - Fix ROM BAR access routines to stay in bounds and check for signature
    correctly (Rex Zhu)

    - Add DMA alias quirk for Microsemi Switchtec NTB (Doug Meyer)

    - Expand documentation for pci_add_dma_alias() (Logan Gunthorpe)

    - To avoid bus errors, enable PASID only if entire path supports
    End-End TLP prefixes (Sinan Kaya)

    - Unify slot and bus reset functions and remove hotplug knowledge from
    callers (Sinan Kaya)

    - Add Function-Level Reset quirks for Intel and Samsung NVMe devices to
    fix guest reboot issues (Alex Williamson)

    - Add function 1 DMA alias quirk for Marvell 88SS9183 PCIe SSD
    Controller (Bjorn Helgaas)

    - Remove Xilinx AXI-PCIe host bridge arch dependency (Palmer Dabbelt)

    - Remove Aardvark outbound window configuration (Evan Wang)

    - Fix Aardvark bridge window sizing issue (Zachary Zhang)

    - Convert Aardvark to use pci_host_probe() to reduce code duplication
    (Thomas Petazzoni)

    - Correct the Cadence cdns_pcie_writel() signature (Alan Douglas)

    - Add Cadence support for optional generic PHYs (Alan Douglas)

    - Add Cadence power management ops (Alan Douglas)

    - Remove redundant variable from Cadence driver (Colin Ian King)

    - Add Kirin MSI support (Xiaowei Song)

    - Drop unnecessary root_bus_nr setting from exynos, imx6, keystone,
    armada8k, artpec6, designware-plat, histb, qcom, spear13xx (Shawn
    Guo)

    - Move link notification settings from DesignWare core to individual
    drivers (Gustavo Pimentel)

    - Add endpoint library MSI-X interfaces (Gustavo Pimentel)

    - Correct signature of endpoint library IRQ interfaces (Gustavo
    Pimentel)

    - Add DesignWare endpoint library MSI-X callbacks (Gustavo Pimentel)

    - Add endpoint library MSI-X test support (Gustavo Pimentel)

    - Remove unnecessary GFP_ATOMIC from Hyper-V "new child" allocation
    (Jia-Ju Bai)

    - Add more devices to Broadcom PAXC quirk (Ray Jui)

    - Work around corrupted Broadcom PAXC config space to enable SMMU and
    GICv3 ITS (Ray Jui)

    - Disable MSI parsing to work around broken Broadcom PAXC logic in some
    devices (Ray Jui)

    - Hide unconfigured functions to work around a Broadcom PAXC defect
    (Ray Jui)

    - Lower iproc log level to reduce console output during boot (Ray Jui)

    - Fix mobiveil iomem/phys_addr_t type usage (Lorenzo Pieralisi)

    - Fix mobiveil missing include file (Lorenzo Pieralisi)

    - Add mobiveil Kconfig/Makefile support (Lorenzo Pieralisi)

    - Fix mvebu I/O space remapping issues (Thomas Petazzoni)

    - Use generic pci_host_bridge in mvebu instead of ARM-specific API
    (Thomas Petazzoni)

    - Whitelist VMD devices with fast interrupt handlers to avoid sharing
    vectors with slow handlers (Keith Busch)

    * tag 'pci-v4.19-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (153 commits)
    PCI/AER: Don't clear AER bits if error handling is Firmware-First
    PCI: Limit config space size for Netronome NFP5000
    PCI/MSI: Set IRQCHIP_ONESHOT_SAFE for PCI-MSI irqchips
    PCI/VPD: Check for VPD access completion before checking for timeout
    PCI: Add PCI_DEVICE_DATA() macro to fully describe device ID entry
    PCI: Match Root Port's MPS to endpoint's MPSS as necessary
    PCI: Skip MPS logic for Virtual Functions (VFs)
    PCI: Add function 1 DMA alias quirk for Marvell 88SS9183
    PCI: Check for PCIe Link downtraining
    PCI: Add ACS Redirect disable quirk for Intel Sunrise Point
    PCI: Add device-specific ACS Redirect disable infrastructure
    PCI: Convert device-specific ACS quirks from NULL termination to ARRAY_SIZE
    PCI: Add "pci=disable_acs_redir=" parameter for peer-to-peer support
    PCI: Allow specifying devices using a base bus and path of devfns
    PCI: Make specifying PCI devices in kernel parameters reusable
    PCI: Hide ACS quirk declarations inside PCI core
    PCI: Delay after FLR of Intel DC P3700 NVMe
    PCI: Disable Samsung SM961/PM961 NVMe before FLR
    PCI: Export pcie_has_flr()
    PCI: mvebu: Drop bogus comment above mvebu_pcie_map_registers()
    ...

    Linus Torvalds
     

16 Aug, 2018

22 commits

  • Pull drm updates from Dave Airlie:
    "This is the main drm pull request for 4.19.

    Rob has some new hardware support for new qualcomm hw that I'll send
    along separately. This has the display part of it, the remaining pull
    is for the acceleration engine.

    This also contains a wound-wait/wait-die mutex rework, Peter has acked
    it for merging via my tree.

    Otherwise mostly the usual level of activity. Summary:

    core:
    - Wound-wait/wait-die mutex rework
    - Add writeback connector type
    - Add "content type" property for HDMI
    - Move GEM bo to drm_framebuffer
    - Initial gpu scheduler documentation
    - GPU scheduler fixes for dying processes
    - Console deferred fbcon takeover support
    - Displayport support for CEC tunneling over AUX

    panel:
    - otm8009a panel driver fixes
    - Innolux TV123WAM and G070Y2-L01 panel driver
    - Ilitek ILI9881c panel driver
    - Rocktech RK070ER9427 LCD
    - EDT ETM0700G0EDH6 and EDT ETM0700G0BDH6
    - DLC DLC0700YZG-1
    - BOE HV070WSA-100
    - newhaven, nhd-4.3-480272ef-atxl LCD
    - DataImage SCF0700C48GGU18
    - Sharp LQ035Q7DB03
    - p079zca: Refactor to support multiple panels

    tinydrm:
    - ILI9341 display panel

    New driver:
    - vkms - virtual kms driver to testing.

    i915:
    - Icelake:
    Display enablement
    DSI support
    IRQ support
    Powerwell support
    - GPU reset fixes and improvements
    - Full ppgtt support refactoring
    - PSR fixes and improvements
    - Execlist improvments
    - GuC related fixes

    amdgpu:
    - Initial amdgpu documentation
    - JPEG engine support on VCN
    - CIK uses powerplay by default
    - Move to using core PCIE functionality for gens/lanes
    - DC/Powerplay interface rework
    - Stutter mode support for RV
    - Vega12 Powerplay updates
    - GFXOFF fixes
    - GPUVM fault debugging
    - Vega12 GFXOFF
    - DC improvements
    - DC i2c/aux changes
    - UVD 7.2 fixes
    - Powerplay fixes for Polaris12, CZ/ST
    - command submission bo_list fixes

    amdkfd:
    - Raven support
    - Power management fixes

    udl:
    - Cleanups and fixes

    nouveau:
    - misc fixes and cleanups.

    msm:
    - DPU1 support display controller in sdm845
    - GPU coredump support.

    vmwgfx:
    - Atomic modesetting validation fixes
    - Support for multisample surfaces

    armada:
    - Atomic modesetting support completed.

    exynos:
    - IPPv2 fixes
    - Move g2d to component framework
    - Suspend/resume support cleanups
    - Driver cleanups

    imx:
    - CSI configuration improvements
    - Driver cleanups
    - Use atomic suspend/resume helpers
    - ipu-v3 V4L2 XRGB32/XBGR32 support

    pl111:
    - Add Nomadik LCDC variant

    v3d:
    - GPU scheduler jobs management

    sun4i:
    - R40 display engine support
    - TCON TOP driver

    mediatek:
    - MT2712 SoC support

    rockchip:
    - vop fixes

    omapdrm:
    - Workaround for DRA7 errata i932
    - Fix mm_list locking

    mali-dp:
    - Writeback implementation
    PM improvements
    - Internal error reporting debugfs

    tilcdc:
    - Single fix for deferred probing

    hdlcd:
    - Teardown fixes

    tda998x:
    - Converted to a bridge driver.

    etnaviv:
    - Misc fixes"

    * tag 'drm-next-2018-08-15' of git://anongit.freedesktop.org/drm/drm: (1506 commits)
    drm/amdgpu/sriov: give 8s for recover vram under RUNTIME
    drm/scheduler: fix param documentation
    drm/i2c: tda998x: correct PLL divider calculation
    drm/i2c: tda998x: get rid of private fill_modes function
    drm/i2c: tda998x: move mode_valid() to bridge
    drm/i2c: tda998x: register bridge outside of component helper
    drm/i2c: tda998x: cleanup from previous changes
    drm/i2c: tda998x: allocate tda998x_priv inside tda998x_create()
    drm/i2c: tda998x: convert to bridge driver
    drm/scheduler: fix timeout worker setup for out of order job completions
    drm/amd/display: display connected to dp-1 does not light up
    drm/amd/display: update clk for various HDMI color depths
    drm/amd/display: program display clock on cache match
    drm/amd/display: Add NULL check for enabling dp ss
    drm/amd/display: add vbios table check for enabling dp ss
    drm/amd/display: Don't share clk source between DP and HDMI
    drm/amd/display: Fix DP HBR2 Eye Diagram Pattern on Carrizo
    drm/amd/display: Use calculated disp_clk_khz value for dce110
    drm/amd/display: Implement custom degamma lut on dcn
    drm/amd/display: Destroy aux_engines only once
    ...

    Linus Torvalds
     
  • - Whitelist VMD devices with fast interrupt handlers to avoid sharing
    vectors with slow handlers (Keith Busch)

    * remotes/lorenzo/pci/vmd:
    PCI: vmd: White list for fast interrupt handlers

    Bjorn Helgaas
     
  • - Fix mvebu I/O space remapping issues (Thomas Petazzoni)

    - Use generic pci_host_bridge in mvebu instead of ARM-specific API
    (Thomas Petazzoni)

    * remotes/lorenzo/pci/mvebu:
    PCI: mvebu: Drop bogus comment above mvebu_pcie_map_registers()
    PCI: mvebu: Convert to use pci_host_bridge directly
    PCI: mvebu: Use resource_size() to remap I/O space
    PCI: mvebu: Only remap I/O space if configured
    PCI: mvebu: Fix I/O space end address calculation
    PCI: mvebu: Remove redundant platform_set_drvdata() call

    Bjorn Helgaas
     
  • - Fix mobiveil iomem/phys_addr_t type usage (Lorenzo Pieralisi)

    - Fix mobiveil missing include file (Lorenzo Pieralisi)

    - Add mobiveil Kconfig/Makefile support (Lorenzo Pieralisi)

    * remotes/lorenzo/pci/mobiveil:
    PCI: mobiveil: Add Kconfig/Makefile entries
    PCI: mobiveil: Add missing ../pci.h include
    PCI: mobiveil: Fix struct mobiveil_pcie.pcie_reg_base address type
    PCI: mobiveil: Integer overflow in IB_WIN_SIZE

    Bjorn Helgaas
     
  • - Add more devices to Broadcom PAXC quirk (Ray Jui)

    - Work around corrupted Broadcom PAXC config space to enable SMMU and
    GICv3 ITS (Ray Jui)

    - Disable MSI parsing to work around broken Broadcom PAXC logic in some
    devices (Ray Jui)

    - Hide unconfigured functions to work around a Broadcom PAXC defect (Ray
    Jui)

    - Lower iproc log level to reduce console output during boot (Ray Jui)

    * remotes/lorenzo/pci/iproc:
    PCI: iproc: Reduce inbound/outbound mapping print level
    PCI: iproc: Reject unconfigured physical functions from PAXC
    PCI: iproc: Disable MSI parsing in certain PAXC blocks
    PCI: iproc: Fix up corrupted PAXC root complex config registers
    PCI: iproc: Activate PAXC bridge quirk for more devices

    Bjorn Helgaas
     
  • - Remove unnecessary GFP_ATOMIC from Hyper-V "new child" allocation
    (Jia-Ju Bai)

    * remotes/lorenzo/pci/hv:
    PCI: hv: Replace GFP_ATOMIC with GFP_KERNEL in new_pcichild_device()

    Bjorn Helgaas
     
  • - Add Kirin MSI support (Xiaowei Song)

    - Drop unnecessary root_bus_nr setting from exynos, imx6, keystone,
    armada8k, artpec6, designware-plat, histb, qcom, spear13xx (Shawn Guo)

    - Move link notification settings from DesignWare core to individual
    drivers (Gustavo Pimentel)

    - Add endpoint library MSI-X interfaces (Gustavo Pimentel)

    - Correct signature of endpoint library IRQ interfaces (Gustavo Pimentel)

    - Add DesignWare endpoint library MSI-X callbacks (Gustavo Pimentel)

    - Add endpoint library MSI-X test support (Gustavo Pimentel)

    * remotes/lorenzo/pci/dwc:
    PCI: endpoint: Add MSI set maximum restriction
    tools: PCI: Add MSI-X support
    pci_endpoint_test: Add 2 ioctl commands
    pci-epf-test/pci_endpoint_test: Add MSI-X support
    pci-epf-test/pci_endpoint_test: Use irq_type module parameter
    pci-epf-test/pci_endpoint_test: Cleanup PCI_ENDPOINT_TEST memspace
    PCI: dwc: Add legacy interrupt callback handler
    PCI: dwc: Rework MSI callbacks handler
    PCI: dwc: Add MSI-X callbacks handler
    PCI: Update xxx_pcie_ep_raise_irq() and pci_epc_raise_irq() signatures
    PCI: endpoint: Add MSI-X interfaces
    PCI: dwc: Fix EP link notification implementation
    PCI: spear13xx: Drop unnecessary root_bus_nr setting
    PCI: qcom: Drop unnecessary root_bus_nr setting
    PCI: histb: Drop unnecessary root_bus_nr setting
    PCI: designware-plat: Drop unnecessary root_bus_nr setting
    PCI: artpec6: Drop unnecessary root_bus_nr setting
    PCI: armada8k: Drop unnecessary root_bus_nr setting
    PCI: keystone: Drop unnecessary root_bus_nr setting
    PCI: imx6: Drop unnecessary root_bus_nr setting
    PCI: exynos: Drop unnecessary root_bus_nr setting
    PCI: kirin: Add MSI support

    Bjorn Helgaas
     
  • - Correct the Cadence cdns_pcie_writel() signature (Alan Douglas)

    - Add Cadence support for optional generic PHYs (Alan Douglas)

    - Add Cadence power management ops (Alan Douglas)

    - Remove redundant variable from Cadence driver (Colin Ian King)

    * remotes/lorenzo/pci/cadence:
    PCI: pcie-cadence-ep: Remove redundant variable mmc
    PCI: cadence: Add shutdown callback to host driver
    PCI: cadence: Add Power Management ops for host and EP
    dt-bindings: PCI: cadence: Add DT bindings for optional PHYs
    PCI: cadence: Add generic PHY support to host and EP drivers
    PCI: cadence: Update cdns_pcie_writel() function signature

    Bjorn Helgaas
     
  • - Remove Aardvark outbound window configuration (Evan Wang)

    - Fix Aardvark bridge window sizing issue (Zachary Zhang)

    - Convert Aardvark to use pci_host_probe() to reduce code duplication
    (Thomas Petazzoni)

    * remotes/lorenzo/pci/aardvark:
    PCI: aardvark: Convert to use pci_host_probe()
    PCI: aardvark: Size bridges before resources allocation
    PCI: aardvark: Remove PCIe outbound window configuration
    PCI: aardvark: Introduce an advk_pcie_valid_device() helper

    # Conflicts:
    # drivers/pci/controller/pci-aardvark.c

    Bjorn Helgaas
     
  • - Remove Xilinx AXI-PCIe host bridge arch dependency (Palmer Dabbelt)

    * remotes/lorenzo/pci/controller/misc:
    PCI/xilinx: Depend on OF instead of the ARCH

    Bjorn Helgaas
     
  • - To avoid bus errors, enable PASID only if entire path supports End-End
    TLP prefixes (Sinan Kaya)

    - Unify slot and bus reset functions and remove hotplug knowledge from
    callers (Sinan Kaya)

    - Add Function-Level Reset quirks for Intel and Samsung NVMe devices to
    fix guest reboot issues (Alex Williamson)

    - Add function 1 DMA alias quirk for Marvell 88SS9183 PCIe SSD Controller
    (Bjorn Helgaas)

    * pci/virtualization:
    PCI: Add function 1 DMA alias quirk for Marvell 88SS9183
    PCI: Delay after FLR of Intel DC P3700 NVMe
    PCI: Disable Samsung SM961/PM961 NVMe before FLR
    PCI: Export pcie_has_flr()
    PCI: Rename pci_try_reset_bus() to pci_reset_bus()
    PCI: Deprecate pci_reset_bus() and pci_reset_slot() functions
    PCI: Unify try slot and bus reset API
    PCI: Hide pci_reset_bridge_secondary_bus() from drivers
    IB/hfi1: Use pci_try_reset_bus() for initiating PCI Secondary Bus Reset
    PCI: Handle error return from pci_reset_bridge_secondary_bus()
    PCI/IOV: Tidy pci_sriov_set_totalvfs()
    PCI: Enable PASID only if entire path supports End-End TLP prefixes

    # Conflicts:
    # drivers/pci/hotplug/pciehp_hpc.c

    Bjorn Helgaas
     
  • - Add DMA alias quirk for Microsemi Switchtec NTB (Doug Meyer)

    - Expand documentation for pci_add_dma_alias() (Logan Gunthorpe)

    * pci/switchtec:
    PCI: Expand documentation for pci_add_dma_alias()
    PCI: Add DMA alias quirk for Microsemi Switchtec NTB
    switchtec: Use generic PCI Vendor ID and Class Code

    # Conflicts:
    # drivers/pci/quirks.c

    Bjorn Helgaas
     
  • - Clean up devm_of_pci_get_host_bridge_resources() resource allocation
    (Jan Kiszka)

    - Fixup resizable BARs after suspend/resume (Christian König)

    - Make "pci=earlydump" generic (Sinan Kaya)

    - Fix ROM BAR access routines to stay in bounds and check for signature
    correctly (Rex Zhu)

    * pci/resource:
    PCI: Make pci_get_rom_size() static
    PCI: Add check code for last image indicator not set
    PCI: Avoid accessing memory outside the ROM BAR
    PCI: Make early dump functionality generic
    PCI: Cleanup PCI_REBAR_CTRL_BAR_SHIFT handling
    PCI: Restore resized BAR state on resume
    PCI: Clean up resource allocation in devm_of_pci_get_host_bridge_resources()

    # Conflicts:
    # Documentation/admin-guide/kernel-parameters.txt

    Bjorn Helgaas
     
  • - Add "pci=disable_acs_redir=" parameter to disable ACS redirection for
    peer-to-peer DMA support (we don't have the peer-to-peer support yet;
    this is just one piece) (Logan Gunthorpe)

    * pci/peer-to-peer:
    PCI: Add ACS Redirect disable quirk for Intel Sunrise Point
    PCI: Add device-specific ACS Redirect disable infrastructure
    PCI: Convert device-specific ACS quirks from NULL termination to ARRAY_SIZE
    PCI: Add "pci=disable_acs_redir=" parameter for peer-to-peer support
    PCI: Allow specifying devices using a base bus and path of devfns
    PCI: Make specifying PCI devices in kernel parameters reusable
    PCI: Hide ACS quirk declarations inside PCI core

    Bjorn Helgaas
     
  • - Set IRQCHIP_ONESHOT_SAFE for PCI MSI irqchips (Heiner Kallweit)

    * pci/msi:
    PCI/MSI: Set IRQCHIP_ONESHOT_SAFE for PCI-MSI irqchips

    Bjorn Helgaas
     
  • - Mark fall-through switch cases before enabling -Wimplicit-fallthrough
    (Gustavo A. R. Silva)

    - Move DMA-debug PCI init from arch code to PCI core (Christoph Hellwig)

    - Fix pci_request_irq() usage of IRQF_ONESHOT when no handler is supplied
    (Heiner Kallweit)

    - Unify PCI and DMA direction #defines (Shunyong Yang)

    - Add PCI_DEVICE_DATA() macro (Andy Shevchenko)

    - Check for VPD completion before checking for timeout (Bert Kenward)

    - Limit Netronome NFP5000 config space size to work around erratum (Jakub
    Kicinski)

    * pci/misc:
    PCI: Limit config space size for Netronome NFP5000
    PCI/VPD: Check for VPD access completion before checking for timeout
    PCI: Add PCI_DEVICE_DATA() macro to fully describe device ID entry
    PCI: Unify PCI and normal DMA direction definitions
    PCI: Use IRQF_ONESHOT if pci_request_irq() called with no handler
    PCI: Call dma_debug_add_bus() for pci_bus_type from PCI core
    PCI: Mark fall-through switch cases before enabling -Wimplicit-fallthrough

    # Conflicts:
    # drivers/pci/hotplug/pciehp_ctrl.c

    Bjorn Helgaas
     
  • - Simplify SHPC existence/permission checks (Bjorn Helgaas)

    - Remove hotplug sample skeleton driver (Lukas Wunner)

    - Convert pciehp to threaded IRQ handling (Lukas Wunner)

    - Improve pciehp tolerance of missed events and initially unstable links
    (Lukas Wunner)

    - Clear spurious pciehp events on resume (Lukas Wunner)

    - Add pciehp runtime PM support, including for Thunderbolt controllers
    (Lukas Wunner)

    - Support interrupts from pciehp bridges in D3hot (Lukas Wunner)

    * pci/hotplug:
    PCI: pciehp: Deduplicate presence check on probe & resume
    PCI: pciehp: Avoid implicit fallthroughs in switch statements
    PCI: Whitelist Thunderbolt ports for runtime D3
    PCI: Whitelist native hotplug ports for runtime D3
    PCI: sysfs: Resume to D0 on function reset
    PCI: pciehp: Resume parent to D0 on config space access
    PCI: pciehp: Resume to D0 on enable/disable
    PCI: pciehp: Support interrupts sent from D3hot
    PCI: pciehp: Obey compulsory command delay after resume
    PCI: pciehp: Clear spurious events earlier on resume
    PCI: portdrv: Deduplicate PM callback iterator
    PCI: pciehp: Avoid slot access during reset
    PCI: pciehp: Always enable occupied slot on probe
    PCI: pciehp: Become resilient to missed events
    PCI: pciehp: Tolerate initially unstable link
    PCI: pciehp: Declare pciehp_enable/disable_slot() static
    PCI: pciehp: Drop enable/disable lock
    PCI: pciehp: Enable/disable exclusively from IRQ thread
    PCI: pciehp: Track enable/disable status
    PCI: pciehp: Publish to user space last on probe
    PCI: hotplug: Demidlayer registration with the core
    PCI: pciehp: Drop slot workqueue
    PCI: pciehp: Handle events synchronously
    PCI: pciehp: Stop blinking on slot enable failure
    PCI: pciehp: Convert to threaded polling
    PCI: pciehp: Convert to threaded IRQ
    PCI: pciehp: Document struct slot and struct controller
    PCI: pciehp: Declare pciehp_unconfigure_device() void
    PCI: pciehp: Drop unnecessary NULL pointer check
    PCI: pciehp: Fix unprotected list iteration in IRQ handler
    PCI: pciehp: Fix use-after-free on unplug
    PCI: hotplug: Don't leak pci_slot on registration failure
    PCI: hotplug: Delete skeleton driver
    PCI: shpchp: Separate existence of SHPC and permission to use it

    Bjorn Helgaas
     
  • - Work around IDT switch ACS Source Validation erratum (James
    Puthukattukaran)

    - Emit diagnostics for all cases of PCIe Link downtraining (Links
    operating slower than they're capable of) (Alexandru Gagniuc)

    - Skip VFs when configuring Max Payload Size (Myron Stowe)

    - Reduce Root Port Max Payload Size if necessary when hot-adding a device
    below it (Myron Stowe)

    * pci/enumeration:
    PCI: Match Root Port's MPS to endpoint's MPSS as necessary
    PCI: Skip MPS logic for Virtual Functions (VFs)
    PCI: Check for PCIe Link downtraining
    PCI: Workaround IDT switch ACS Source Validation erratum

    Bjorn Helgaas
     
  • - Defer DPC event handling to work queue (Keith Busch)

    - Use threaded IRQ for DPC bottom half (Keith Busch)

    - Print AER status while handling DPC events (Keith Busch)

    * pci/dpc:
    PCI/DPC: Remove indirection waiting for inactive link
    PCI/DPC: Use threaded IRQ for bottom half handling
    PCI/DPC: Print AER status in DPC event handling
    PCI/DPC: Remove rp_pio_status from dpc struct
    PCI/DPC: Defer event handling to work queue
    PCI/DPC: Leave interrupts enabled while handling event

    Bjorn Helgaas
     
  • - Use sysfs_match_string() to simplify ASPM sysfs parsing (Andy
    Shevchenko)

    - Remove unnecessary includes of (Bjorn Helgaas)

    * pci/aspm:
    PCI: Remove unnecessary include of
    iwlwifi: Remove unnecessary include of
    ath9k: Remove unnecessary include of
    igb: Remove unnecessary include of
    PCI/ASPM: Convert to use sysfs_match_string() helper

    Bjorn Helgaas
     
  • - Decode AER errors with names similar to "lspci" (Tyler Baicar)

    - Expose AER statistics in sysfs (Rajat Jain)

    - Clear AER status bits selectively based on the type of recovery (Oza
    Pawandeep)

    - Honor "pcie_ports=native" even if HEST sets FIRMWARE_FIRST (Alexandru
    Gagniuc)

    - Don't clear AER status bits if we're using the "Firmware-First"
    strategy where firmware owns the registers (Alexandru Gagniuc)

    * pci/aer:
    PCI/AER: Don't clear AER bits if error handling is Firmware-First
    PCI/AER: Remove duplicate PCI_EXP_AER_FLAGS definition
    PCI/portdrv: Remove pcie_portdrv_err_handler.slot_reset
    PCI/AER: Clear device status bits during ERR_COR handling
    PCI/AER: Clear device status bits during ERR_FATAL and ERR_NONFATAL
    PCI/AER: Remove ERR_FATAL code from ERR_NONFATAL path
    PCI/AER: Factor out ERR_NONFATAL status bit clearing
    PCI/AER: Clear only ERR_NONFATAL bits during non-fatal recovery
    PCI/AER: Clear only ERR_FATAL status bits during fatal recovery
    PCI/AER: Honor "pcie_ports=native" even if HEST sets FIRMWARE_FIRST
    PCI/AER: Add sysfs attributes for rootport cumulative stats
    PCI/AER: Add sysfs attributes to provide AER stats and breakdown
    PCI/AER: Define aer_stats structure for AER capable devices
    PCI/AER: Move internal declarations to drivers/pci/pci.h
    PCI/AER: Adopt lspci names for AER error decoding
    PCI/AER: Expose internal API for obtaining AER information

    # Conflicts:
    # drivers/pci/pci.h

    Bjorn Helgaas
     
  • If the platform requests Firmware-First error handling, firmware is
    responsible for reading and clearing AER status bits. If OSPM also clears
    them, we may miss errors. See ACPI v6.2, sec 18.3.2.5 and 18.4.

    This race is mostly of theoretical significance, as it is not easy to
    reasonably demonstrate it in testing.

    Signed-off-by: Alexandru Gagniuc
    [bhelgaas: add similar guards to pci_cleanup_aer_uncorrect_error_status()
    and pci_aer_clear_fatal_status()]
    Signed-off-by: Bjorn Helgaas

    Alexandru Gagniuc
     

15 Aug, 2018

4 commits

  • Like the NFP4000 and NFP6000, the NFP5000 as an erratum where reading/
    writing to PCI config space addresses above 0x600 can cause the NFP to
    generate PCIe completion timeouts.

    Limit the NFP5000's PF's config space size to 0x600 bytes as is already
    done for the NFP4000 and NFP6000.

    The NFP5000's VF is 0x6003 (PCI_DEVICE_ID_NETRONOME_NFP6000_VF), the same
    device ID as the NFP6000's VF. Thus, its config space is already limited
    by the existing use of quirk_nfp6000().

    Signed-off-by: Jakub Kicinski
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Tony Egan

    Jakub Kicinski
     
  • If flag IRQCHIP_ONESHOT_SAFE isn't set for an irqchip and we have a
    threaded interrupt with no primary handler, flag IRQF_ONESHOT needs to be
    set for the interrupt, causing some overhead in the threaded interrupt
    handler. For more detailed explanation also check following comment in
    __setup_irq():

    The interrupt was requested with handler = NULL, so we use the default
    primary handler for it. But it does not have the oneshot flag set. In
    combination with level interrupts this is deadly, because the default
    primary handler just wakes the thread, then the irq lines is reenabled,
    but the device still has the level irq asserted. Rinse and repeat....

    While this works for edge type interrupts, we play it safe and reject
    unconditionally because we can't say for sure which type this interrupt
    really has. The type flags are unreliable as the underlying chip
    implementation can override them.

    Another comment in __setup_irq() gives a hint already that this
    overhead can be avoided for PCI-MSI:

    Some irq chips like MSI based interrupts are per se one shot safe. Check
    the chip flags, so we can avoid the unmask dance at the end of the
    threaded handler for those.

    Following this let's mark all PCI-MSI irqchips as oneshot-safe.

    See also discussion here:
    https://lkml.kernel.org/r/alpine.DEB.2.21.1808032136490.1658@nanos.tec.linutronix.de

    Signed-off-by: Heiner Kallweit
    Signed-off-by: Bjorn Helgaas

    Heiner Kallweit
     
  • Previously we checked the timeout before checking the VPD access completion
    bit. On a very heavily loaded system this can cause VPD access to timeout.
    Check the completion bit before checking the timeout.

    Signed-off-by: Bert Kenward
    Signed-off-by: Bjorn Helgaas

    Bert Kenward
     
  • Merge L1 Terminal Fault fixes from Thomas Gleixner:
    "L1TF, aka L1 Terminal Fault, is yet another speculative hardware
    engineering trainwreck. It's a hardware vulnerability which allows
    unprivileged speculative access to data which is available in the
    Level 1 Data Cache when the page table entry controlling the virtual
    address, which is used for the access, has the Present bit cleared or
    other reserved bits set.

    If an instruction accesses a virtual address for which the relevant
    page table entry (PTE) has the Present bit cleared or other reserved
    bits set, then speculative execution ignores the invalid PTE and loads
    the referenced data if it is present in the Level 1 Data Cache, as if
    the page referenced by the address bits in the PTE was still present
    and accessible.

    While this is a purely speculative mechanism and the instruction will
    raise a page fault when it is retired eventually, the pure act of
    loading the data and making it available to other speculative
    instructions opens up the opportunity for side channel attacks to
    unprivileged malicious code, similar to the Meltdown attack.

    While Meltdown breaks the user space to kernel space protection, L1TF
    allows to attack any physical memory address in the system and the
    attack works across all protection domains. It allows an attack of SGX
    and also works from inside virtual machines because the speculation
    bypasses the extended page table (EPT) protection mechanism.

    The assoicated CVEs are: CVE-2018-3615, CVE-2018-3620, CVE-2018-3646

    The mitigations provided by this pull request include:

    - Host side protection by inverting the upper address bits of a non
    present page table entry so the entry points to uncacheable memory.

    - Hypervisor protection by flushing L1 Data Cache on VMENTER.

    - SMT (HyperThreading) control knobs, which allow to 'turn off' SMT
    by offlining the sibling CPU threads. The knobs are available on
    the kernel command line and at runtime via sysfs

    - Control knobs for the hypervisor mitigation, related to L1D flush
    and SMT control. The knobs are available on the kernel command line
    and at runtime via sysfs

    - Extensive documentation about L1TF including various degrees of
    mitigations.

    Thanks to all people who have contributed to this in various ways -
    patches, review, testing, backporting - and the fruitful, sometimes
    heated, but at the end constructive discussions.

    There is work in progress to provide other forms of mitigations, which
    might be less horrible performance wise for a particular kind of
    workloads, but this is not yet ready for consumption due to their
    complexity and limitations"

    * 'l1tf-final' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (75 commits)
    x86/microcode: Allow late microcode loading with SMT disabled
    tools headers: Synchronise x86 cpufeatures.h for L1TF additions
    x86/mm/kmmio: Make the tracer robust against L1TF
    x86/mm/pat: Make set_memory_np() L1TF safe
    x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert
    x86/speculation/l1tf: Invert all not present mappings
    cpu/hotplug: Fix SMT supported evaluation
    KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry
    x86/speculation: Use ARCH_CAPABILITIES to skip L1D flush on vmentry
    x86/speculation: Simplify sysfs report of VMX L1TF vulnerability
    Documentation/l1tf: Remove Yonah processors from not vulnerable list
    x86/KVM/VMX: Don't set l1tf_flush_l1d from vmx_handle_external_intr()
    x86/irq: Let interrupt handlers set kvm_cpu_l1tf_flush_l1d
    x86: Don't include linux/irq.h from asm/hardirq.h
    x86/KVM/VMX: Introduce per-host-cpu analogue of l1tf_flush_l1d
    x86/irq: Demote irq_cpustat_t::__softirq_pending to u16
    x86/KVM/VMX: Move the l1tf_flush_l1d test to vmx_l1d_flush()
    x86/KVM/VMX: Replace 'vmx_l1d_flush_always' with 'vmx_l1d_flush_cond'
    x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush()
    cpu/hotplug: detect SMT disabled by BIOS
    ...

    Linus Torvalds
     

14 Aug, 2018

3 commits

  • In commit 27d868b5e6cf ("PCI: Set MPS to match upstream bridge"), we made
    sure every device's MPS setting matches its upstream bridge, making it more
    likely that a hot-added device will work in a system with an optimized MPS
    configuration.

    Recently I've started encountering systems where the endpoint device's MPSS
    capability is less than its Root Port's current MPS value, thus the
    endpoint is not capable of matching its upstream bridge's MPS setting (see:
    bugzilla via "Link:" below). This leaves the system vulnerable - the
    upstream Root Port could respond with larger TLPs than the device can
    handle, and the device will consider them to be 'Malformed'.

    One could use the "pci=pcie_bus_safe" kernel parameter to work around the
    issue, but that forces a user to supply a kernel parameter to get the
    system to function reliably and may end up limiting MPS settings of other
    unrelated, sub-topologies which could benefit from maintaining their larger
    values.

    Augment Keith's approach to include tuning down a Root Port's MPS setting
    when its hot-added endpoint device is not capable of matching it.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200527
    Signed-off-by: Myron Stowe
    Signed-off-by: Bjorn Helgaas
    Acked-by: Jon Mason
    Cc: Keith Busch
    Cc: Sinan Kaya
    Cc: Dongdong Liu

    Myron Stowe
     
  • PCIe r4.0, sec 9.3.5.4, "Device Control Register", shows both
    Max_Payload_Size (MPS) and Max_Read_request_Size (MRRS) to be 'RsvdP' for
    VFs. Just prior to the table it states:

    "PF and VF functionality is defined in Section 7.5.3.4 except where
    noted in Table 9-16. For VF fields marked 'RsvdP', the PF setting
    applies to the VF."

    All of which implies that with respect to Max_Payload_Size Supported
    (MPSS), MPS, and MRRS values, we should not be paying any attention to the
    VF's fields, but rather only to the PF's. Only looking at the PF's fields
    also logically makes sense as it's the sole physical interface to the PCIe
    bus.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200527
    Fixes: 27d868b5e6cf ("PCI: Set MPS to match upstream bridge")
    Signed-off-by: Myron Stowe
    Signed-off-by: Bjorn Helgaas
    Cc: stable@vger.kernel.org # 4.3+
    Cc: Keith Busch
    Cc: Sinan Kaya
    Cc: Dongdong Liu
    Cc: Jon Mason

    Myron Stowe
     
  • Add function 1 DMA alias quirk for Marvell 88SS9183 PCIe SSD Controller.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=42679#c134
    Reported-and-tested-by: Felix Blüthner
    Signed-off-by: Bjorn Helgaas

    Bjorn Helgaas
     

11 Aug, 2018

1 commit

  • When both ends of a PCIe Link are capable of a higher bandwidth than is
    currently in use, the Link is said to be "downtrained". A downtrained Link
    may indicate hardware or configuration problems in the system, but it's
    hard to identify such Links from userspace.

    Refactor pcie_print_link_status() so it continues to always print PCIe
    bandwidth information, as several NIC drivers desire.

    Add a new internal __pcie_print_link_status() to emit a message only when a
    device's bandwidth is constrained by the fabric and call it from the PCI
    core for all devices, which identifies all downtrained Links. It also
    emits messages for a few cases that are technically not downtrained, such
    as a x4 device in an open-ended x1 slot.

    Signed-off-by: Alexandru Gagniuc
    [bhelgaas: changelog, move __pcie_print_link_status() declaration to
    drivers/pci/, rename pcie_check_upstream_link() to
    pcie_report_downtraining()]
    Signed-off-by: Bjorn Helgaas

    Alexandru Gagniuc
     

10 Aug, 2018

5 commits

  • Intel Sunrise Point PCH hardware has an implementation of the ACS bits that
    does not comply with the PCIe standard. Add a device-specific quirk,
    pci_quirk_disable_intel_spt_pch_acs_redir() to disable ACS Redirection on
    this system.

    Signed-off-by: Logan Gunthorpe
    [bhelgaas: changelog, split to separate patch]
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Williamson

    Logan Gunthorpe
     
  • Intel Sunrise Point (SPT) PCH hardware has an implementation of the ACS
    bits that does not comply with the PCIe standard. To deal with this we
    need device-specific quirks to disable ACS redirection.

    Add a new pci_dev_specific_disable_acs_redir() quirk and a new
    .disable_acs_redir() function pointer for use by non-compliant devices. No
    functional change intended.

    Signed-off-by: Logan Gunthorpe
    [bhelgaas: split to separate patch, move
    pci_dev_specific_disable_acs_redir() declarations to drivers/pci/pci.h]
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Williamson

    Logan Gunthorpe
     
  • Convert the search for device-specific ACS enable quirks from searching a
    NULL-terminated array to iterating through the array, which is always
    fixed-size anyway. No functional change intended.

    Signed-off-by: Logan Gunthorpe
    [bhelgaas: changelog, split to separate patch for reviewability]
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Williamson

    Logan Gunthorpe
     
  • To support peer-to-peer traffic on a segment of the PCI hierarchy, we must
    disable the ACS redirect bits for select PCI bridges. The bridges must be
    selected before the devices are discovered by the kernel and the IOMMU
    groups created. Therefore, add a kernel command line parameter to specify
    devices which must have their ACS bits disabled.

    The new parameter takes a list of devices separated by a semicolon. Each
    device specified will have its ACS redirect bits disabled. This is
    similar to the existing 'resource_alignment' parameter.

    The ACS Request P2P Request Redirect, P2P Completion Redirect and P2P
    Egress Control bits are disabled, which is sufficient to always allow
    passing P2P traffic uninterrupted. The bits are set after the kernel
    (optionally) enables the ACS bits itself. It is also done regardless of
    whether the kernel or platform firmware sets the bits.

    If the user tries to disable the ACS redirect for a device without the ACS
    capability, print a warning to dmesg.

    Signed-off-by: Logan Gunthorpe
    [bhelgaas: reorder to add the generic code first and move the
    device-specific quirk to subsequent patches]
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Stephen Bates
    Reviewed-by: Alex Williamson
    Acked-by: Christian König

    Logan Gunthorpe
     
  • When specifying PCI devices on the kernel command line using a
    bus/device/function address, bus numbers can change when adding or
    replacing a device, changing motherboard firmware, or applying kernel
    parameters like "pci=assign-buses". When bus numbers change, it's likely
    the command line tweak will be applied to the wrong device.

    Therefore, it is useful to be able to specify devices with a base bus
    number and the path of devfns needed to get to it, similar to the "device
    scope" structure in the Intel VT-d spec, Section 8.3.1.

    Thus, we add an option to specify devices in the following format:

    [:]:.[/.]*

    The path can be any segment within the PCI hierarchy of any length and
    determined through the use of 'lspci -t'. When specified this way, it is
    less likely that a renumbered bus will result in a valid device
    specification and the tweak won't be applied to the wrong device.

    Signed-off-by: Logan Gunthorpe
    [bhelgaas: use "device" instead of "slot" in documentation since that's the
    usual language in the PCI specs]
    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Stephen Bates
    Reviewed-by: Alex Williamson
    Acked-by: Christian König

    Logan Gunthorpe