mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
-----BEGIN PGP SIGNATURE-----
iQJIBAABCgAyFiEEgMe7l+5h9hnxdsnuWYigwDrT+vwFAl+QUFkUHGJoZWxnYWFz
QGdvb2dsZS5jb20ACgkQWYigwDrT+vw6SQ/9FHiAlHIa48/l5ZweqAuN3XnU8hoO
sqMoJE8eqTkIYIT0aQdW6b1sDB0YE6b4UVxzg+UL/E0qYeJqgIUakig7QkyyF1qU
aT5hq2ic+lk88G7AAxK3kgQGPk+JvP1EFIyOu6HBWzzDDzgLme1Iuh/5ulc2/lo+
E4biy0WOnI8vMfCieXGK4bSpc17Rn0+3N4cuVwZXBlntsvicE90VqeWBzqti1sk5
R6gkZuW+EIUNHHL7TLlkCeYZq6QNbXWzhfKCiaGW2wW4eJ4Ek1/ncQjyTbCFytKU
7OIYvrH20XO3L5GEfJ5fdbWErI1dRpoHO4NmhWljyBcVh44VYnM2ixhA7TuJ+TOk
OtMbtoJAlP+QDlVdAW6rmRYmMPLFK/AQl5Aq7ftY22b2rYXqP20BobPy2MpDT71T
sGC8z0ABl/ijo23g3I+3/2VzP/RzGhZJ0ZqagrXj8jHtg8SVy2fLcR5nr/dlrgFk
TG83zML6ui1KViyx5nzElaEtw18aTqP61CNQxijQtNoYwKBTtRKNTrdRr4Qo7Hi6
6S+No3+4z8Kf8d90y0LkJQqr7JRkG6nI3AhXHO3rxXpXJOD2+QzlpwBZTQnASqq7
3kC1doUPmN97rFUYPQWWyOs6xSMcGbGIz8Uus3shH6yDtNxgpnIVoctH55hTEh6w
nSY/4ssIfzJxZCE=
=RCFo
-----END PGP SIGNATURE-----
Merge tag 'pci-v5.10-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
"Enumeration:
- Print IRQ number used by PCIe Link Bandwidth Notification (Dongdong
Liu)
- Add schedule point in pci_read_config() to reduce max latency
(Jiang Biao)
- Add Kconfig options for MPS/MRRS strategy (Jim Quinlan)
Resource management:
- Fix pci_iounmap() memory leak when !CONFIG_GENERIC_IOMAP (Lorenzo
Pieralisi)
PCIe native device hotplug:
- Reduce noisiness on hot removal (Lukas Wunner)
Power management:
- Revert "PCI/PM: Apply D2 delay as milliseconds, not microseconds"
that was done on the basis of spec typo (Bjorn Helgaas)
- Rename pci_dev.d3_delay to d3hot_delay to remove D3hot/D3cold
ambiguity (Krzysztof Wilczyński)
- Remove unused pcibios_pm_ops (Vaibhav Gupta)
IOMMU:
- Enable Translation Blocking for external devices to harden against
DMA attacks (Rajat Jain)
Error handling:
- Add an ACPI APEI notifier chain for vendor CPER records to enable
device-specific error handling (Shiju Jose)
ASPM:
- Remove struct aspm_register_info to simplify code (Saheed O.
Bolarinwa)
Amlogic Meson PCIe controller driver:
- Build as module by default (Kevin Hilman)
Ampere Altra PCIe controller driver:
- Add MCFG quirk to work around non-standard ECAM implementation
(Tuan Phan)
Broadcom iProc PCIe controller driver:
- Set affinity mask on MSI interrupts (Mark Tomlinson)
Broadcom STB PCIe controller driver:
- Make PCIE_BRCMSTB depend on ARCH_BRCMSTB (Jim Quinlan)
- Add DT bindings for more Brcmstb chips (Jim Quinlan)
- Add bcm7278 register info (Jim Quinlan)
- Add bcm7278 PERST# support (Jim Quinlan)
- Add suspend and resume pm_ops (Jim Quinlan)
- Add control of rescal reset (Jim Quinlan)
- Set additional internal memory DMA viewport sizes (Jim Quinlan)
- Accommodate MSI for older chips (Jim Quinlan)
- Set bus max burst size by chip type (Jim Quinlan)
- Add support for bcm7211, bcm7216, bcm7445, bcm7278 (Jim Quinlan)
Freescale i.MX6 PCIe controller driver:
- Use dev_err_probe() to reduce redundant messages (Anson Huang)
Freescale Layerscape PCIe controller driver:
- Enforce 4K DMA buffer alignment in endpoint test (Hou Zhiqiang)
- Add DT compatible strings for ls1088a, ls2088a (Xiaowei Bao)
- Add endpoint support for ls1088a, ls2088a (Xiaowei Bao)
- Add endpoint test support for lS1088a (Xiaowei Bao)
- Add MSI-X support for ls1088a (Xiaowei Bao)
HiSilicon HIP PCIe controller driver:
- Handle HIP-specific errors via ACPI APEI (Yicong Yang)
HiSilicon Kirin PCIe controller driver:
- Return -EPROBE_DEFER if the GPIO isn't ready (Bean Huo)
Intel VMD host bridge driver:
- Factor out physical offset, bus offset, IRQ domain, IRQ allocation
(Jon Derrick)
- Use generic PCI PM correctly (Jon Derrick)
Marvell Aardvark PCIe controller driver:
- Fix compilation on s390 (Pali Rohár)
- Implement driver 'remove' function and allow to build it as module
(Pali Rohár)
- Move PCIe reset card code to advk_pcie_train_link() (Pali Rohár)
- Convert mvebu a3700 internal SMCC firmware return codes to errno
(Pali Rohár)
- Fix initialization with old Marvell's Arm Trusted Firmware (Pali
Rohár)
Microsoft Hyper-V host bridge driver:
- Fix hibernation in case interrupts are not re-created (Dexuan Cui)
NVIDIA Tegra PCIe controller driver:
- Stop checking return value of debugfs_create() functions (Greg
Kroah-Hartman)
- Convert to use DEFINE_SEQ_ATTRIBUTE macro (Liu Shixin)
Qualcomm PCIe controller driver:
- Reset PCIe to work around Qsdk U-Boot issue (Ansuel Smith)
Renesas R-Car PCIe controller driver:
- Add DT documentation for r8a774a1, r8a774b1, r8a774e1 endpoints
(Lad Prabhakar)
- Add RZ/G2M, RZ/G2N, RZ/G2H IDs to endpoint test (Lad Prabhakar)
- Add DT support for r8a7742 (Lad Prabhakar)
Socionext UniPhier Pro5 controller driver:
- Add DT descriptions of iATU register (host and endpoint) (Kunihiko
Hayashi)
Synopsys DesignWare PCIe controller driver:
- Add link up check in dw_child_pcie_ops.map_bus() (racy, but seems
unavoidable) (Hou Zhiqiang)
- Fix endpoint Header Type check so multi-function devices work (Hou
Zhiqiang)
- Skip PCIE_MSI_INTR0* programming if MSI is disabled (Jisheng Zhang)
- Stop leaking MSI page in suspend/resume (Jisheng Zhang)
- Add common iATU register support instead of keystone-specific code
(Kunihiko Hayashi)
- Major config space access and other cleanups in dwc core and
drivers that use it (al, exynos, histb, imx6, intel-gw, keystone,
kirin, meson, qcom, tegra) (Rob Herring)
- Add multiple PFs support for endpoint (Xiaowei Bao)
- Add MSI-X doorbell mode in endpoint mode (Xiaowei Bao)
Miscellaneous:
- Use fallthrough pseudo-keyword (Gustavo A. R. Silva)
- Fix "0 used as NULL pointer" warnings (Gustavo Pimentel)
- Fix "cast truncates bits from constant value" warnings (Gustavo
Pimentel)
- Remove redundant zeroing for sg_init_table() (Julia Lawall)
- Use scnprintf(), not snprintf(), in sysfs "show" functions
(Krzysztof Wilczyński)
- Remove unused assignments (Krzysztof Wilczyński)
- Fix "0 used as NULL pointer" warning (Krzysztof Wilczyński)
- Simplify bool comparisons (Krzysztof Wilczyński)
- Use for_each_child_of_node() and for_each_node_by_name() (Qinglang
Miao)
- Simplify return expressions (Qinglang Miao)"
* tag 'pci-v5.10-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (147 commits)
PCI: vmd: Update VMD PM to correctly use generic PCI PM
PCI: vmd: Create IRQ allocation helper
PCI: vmd: Create IRQ Domain configuration helper
PCI: vmd: Create bus offset configuration helper
PCI: vmd: Create physical offset helper
PCI: v3-semi: Remove unneeded break
PCI: dwc: Add link up check in dw_child_pcie_ops.map_bus()
PCI/ASPM: Remove struct pcie_link_state.l1ss
PCI/ASPM: Remove struct aspm_register_info.l1ss_cap
PCI/ASPM: Pass L1SS Capabilities value, not struct aspm_register_info
PCI/ASPM: Remove struct aspm_register_info.l1ss_ctl1
PCI/ASPM: Remove struct aspm_register_info.l1ss_ctl2 (unused)
PCI/ASPM: Remove struct aspm_register_info.l1ss_cap_ptr
PCI/ASPM: Remove struct aspm_register_info.latency_encoding
PCI/ASPM: Remove struct aspm_register_info.enabled
PCI/ASPM: Remove struct aspm_register_info.support
PCI/ASPM: Use 'parent' and 'child' for readability
PCI/ASPM: Move LTR path check to where it's used
PCI/ASPM: Move pci_clear_and_set_dword() earlier
PCI: dwc: Fix MSI page leakage in suspend/resume
...
261 lines
7.1 KiB
Plaintext
261 lines
7.1 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
||
#
|
||
# PCI configuration
|
||
#
|
||
|
||
# select this to offer the PCI prompt
|
||
config HAVE_PCI
|
||
bool
|
||
|
||
# select this to unconditionally force on PCI support
|
||
config FORCE_PCI
|
||
bool
|
||
select HAVE_PCI
|
||
select PCI
|
||
|
||
menuconfig PCI
|
||
bool "PCI support"
|
||
depends on HAVE_PCI
|
||
help
|
||
This option enables support for the PCI local bus, including
|
||
support for PCI-X and the foundations for PCI Express support.
|
||
Say 'Y' here unless you know what you are doing.
|
||
|
||
if PCI
|
||
|
||
config PCI_DOMAINS
|
||
bool
|
||
depends on PCI
|
||
|
||
config PCI_DOMAINS_GENERIC
|
||
bool
|
||
select PCI_DOMAINS
|
||
|
||
config PCI_SYSCALL
|
||
bool
|
||
|
||
source "drivers/pci/pcie/Kconfig"
|
||
|
||
config PCI_MSI
|
||
bool "Message Signaled Interrupts (MSI and MSI-X)"
|
||
select GENERIC_MSI_IRQ
|
||
help
|
||
This allows device drivers to enable MSI (Message Signaled
|
||
Interrupts). Message Signaled Interrupts enable a device to
|
||
generate an interrupt using an inbound Memory Write on its
|
||
PCI bus instead of asserting a device IRQ pin.
|
||
|
||
Use of PCI MSI interrupts can be disabled at kernel boot time
|
||
by using the 'pci=nomsi' option. This disables MSI for the
|
||
entire system.
|
||
|
||
If you don't know what to do here, say Y.
|
||
|
||
config PCI_MSI_IRQ_DOMAIN
|
||
def_bool y
|
||
depends on PCI_MSI
|
||
select GENERIC_MSI_IRQ_DOMAIN
|
||
|
||
config PCI_MSI_ARCH_FALLBACKS
|
||
bool
|
||
|
||
config PCI_QUIRKS
|
||
default y
|
||
bool "Enable PCI quirk workarounds" if EXPERT
|
||
help
|
||
This enables workarounds for various PCI chipset bugs/quirks.
|
||
Disable this only if your target machine is unaffected by PCI
|
||
quirks.
|
||
|
||
config PCI_DEBUG
|
||
bool "PCI Debugging"
|
||
depends on DEBUG_KERNEL
|
||
help
|
||
Say Y here if you want the PCI core to produce a bunch of debug
|
||
messages to the system log. Select this if you are having a
|
||
problem with PCI support and want to see more of what is going on.
|
||
|
||
When in doubt, say N.
|
||
|
||
config PCI_REALLOC_ENABLE_AUTO
|
||
bool "Enable PCI resource re-allocation detection"
|
||
depends on PCI_IOV
|
||
help
|
||
Say Y here if you want the PCI core to detect if PCI resource
|
||
re-allocation needs to be enabled. You can always use pci=realloc=on
|
||
or pci=realloc=off to override it. It will automatically
|
||
re-allocate PCI resources if SR-IOV BARs have not been allocated by
|
||
the BIOS.
|
||
|
||
When in doubt, say N.
|
||
|
||
config PCI_STUB
|
||
tristate "PCI Stub driver"
|
||
help
|
||
Say Y or M here if you want be able to reserve a PCI device
|
||
when it is going to be assigned to a guest operating system.
|
||
|
||
When in doubt, say N.
|
||
|
||
config PCI_PF_STUB
|
||
tristate "PCI PF Stub driver"
|
||
depends on PCI_IOV
|
||
help
|
||
Say Y or M here if you want to enable support for devices that
|
||
require SR-IOV support, while at the same time the PF (Physical
|
||
Function) itself is not providing any actual services on the
|
||
host itself such as storage or networking.
|
||
|
||
When in doubt, say N.
|
||
|
||
config XEN_PCIDEV_FRONTEND
|
||
tristate "Xen PCI Frontend"
|
||
depends on X86 && XEN
|
||
select PCI_XEN
|
||
select XEN_XENBUS_FRONTEND
|
||
default y
|
||
help
|
||
The PCI device frontend driver allows the kernel to import arbitrary
|
||
PCI devices from a PCI backend to support PCI driver domains.
|
||
|
||
config PCI_ATS
|
||
bool
|
||
|
||
config PCI_ECAM
|
||
bool
|
||
|
||
config PCI_LOCKLESS_CONFIG
|
||
bool
|
||
|
||
config PCI_BRIDGE_EMUL
|
||
bool
|
||
|
||
config PCI_IOV
|
||
bool "PCI IOV support"
|
||
select PCI_ATS
|
||
help
|
||
I/O Virtualization is a PCI feature supported by some devices
|
||
which allows them to create virtual devices which share their
|
||
physical resources.
|
||
|
||
If unsure, say N.
|
||
|
||
config PCI_PRI
|
||
bool "PCI PRI support"
|
||
select PCI_ATS
|
||
help
|
||
PRI is the PCI Page Request Interface. It allows PCI devices that are
|
||
behind an IOMMU to recover from page faults.
|
||
|
||
If unsure, say N.
|
||
|
||
config PCI_PASID
|
||
bool "PCI PASID support"
|
||
select PCI_ATS
|
||
help
|
||
Process Address Space Identifiers (PASIDs) can be used by PCI devices
|
||
to access more than one IO address space at the same time. To make
|
||
use of this feature an IOMMU is required which also supports PASIDs.
|
||
Select this option if you have such an IOMMU and want to compile the
|
||
driver for it into your kernel.
|
||
|
||
If unsure, say N.
|
||
|
||
config PCI_P2PDMA
|
||
bool "PCI peer-to-peer transfer support"
|
||
depends on ZONE_DEVICE
|
||
select GENERIC_ALLOCATOR
|
||
help
|
||
Enableѕ drivers to do PCI peer-to-peer transactions to and from
|
||
BARs that are exposed in other devices that are the part of
|
||
the hierarchy where peer-to-peer DMA is guaranteed by the PCI
|
||
specification to work (ie. anything below a single PCI bridge).
|
||
|
||
Many PCIe root complexes do not support P2P transactions and
|
||
it's hard to tell which support it at all, so at this time,
|
||
P2P DMA transactions must be between devices behind the same root
|
||
port.
|
||
|
||
If unsure, say N.
|
||
|
||
config PCI_LABEL
|
||
def_bool y if (DMI || ACPI)
|
||
select NLS
|
||
|
||
config PCI_HYPERV
|
||
tristate "Hyper-V PCI Frontend"
|
||
depends on X86_64 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
|
||
select PCI_HYPERV_INTERFACE
|
||
help
|
||
The PCI device frontend driver allows the kernel to import arbitrary
|
||
PCI devices from a PCI backend to support PCI driver domains.
|
||
|
||
choice
|
||
prompt "PCI Express hierarchy optimization setting"
|
||
default PCIE_BUS_DEFAULT
|
||
depends on PCI && EXPERT
|
||
help
|
||
MPS (Max Payload Size) and MRRS (Max Read Request Size) are PCIe
|
||
device parameters that affect performance and the ability to
|
||
support hotplug and peer-to-peer DMA.
|
||
|
||
The following choices set the MPS and MRRS optimization strategy
|
||
at compile-time. The choices are the same as those offered for
|
||
the kernel command-line parameter 'pci', i.e.,
|
||
'pci=pcie_bus_tune_off', 'pci=pcie_bus_safe',
|
||
'pci=pcie_bus_perf', and 'pci=pcie_bus_peer2peer'.
|
||
|
||
This is a compile-time setting and can be overridden by the above
|
||
command-line parameters. If unsure, choose PCIE_BUS_DEFAULT.
|
||
|
||
config PCIE_BUS_TUNE_OFF
|
||
bool "Tune Off"
|
||
depends on PCI
|
||
help
|
||
Use the BIOS defaults; don't touch MPS at all. This is the same
|
||
as booting with 'pci=pcie_bus_tune_off'.
|
||
|
||
config PCIE_BUS_DEFAULT
|
||
bool "Default"
|
||
depends on PCI
|
||
help
|
||
Default choice; ensure that the MPS matches upstream bridge.
|
||
|
||
config PCIE_BUS_SAFE
|
||
bool "Safe"
|
||
depends on PCI
|
||
help
|
||
Use largest MPS that boot-time devices support. If you have a
|
||
closed system with no possibility of adding new devices, this
|
||
will use the largest MPS that's supported by all devices. This
|
||
is the same as booting with 'pci=pcie_bus_safe'.
|
||
|
||
config PCIE_BUS_PERFORMANCE
|
||
bool "Performance"
|
||
depends on PCI
|
||
help
|
||
Use MPS and MRRS for best performance. Ensure that a given
|
||
device's MPS is no larger than its parent MPS, which allows us to
|
||
keep all switches/bridges to the max MPS supported by their
|
||
parent. This is the same as booting with 'pci=pcie_bus_perf'.
|
||
|
||
config PCIE_BUS_PEER2PEER
|
||
bool "Peer2peer"
|
||
depends on PCI
|
||
help
|
||
Set MPS = 128 for all devices. MPS configuration effected by the
|
||
other options could cause the MPS on one root port to be
|
||
different than that of the MPS on another, which may cause
|
||
hot-added devices or peer-to-peer DMA to fail. Set MPS to the
|
||
smallest possible value (128B) system-wide to avoid these issues.
|
||
This is the same as booting with 'pci=pcie_bus_peer2peer'.
|
||
|
||
endchoice
|
||
|
||
source "drivers/pci/hotplug/Kconfig"
|
||
source "drivers/pci/controller/Kconfig"
|
||
source "drivers/pci/endpoint/Kconfig"
|
||
source "drivers/pci/switch/Kconfig"
|
||
|
||
endif
|