| # SPDX-License-Identifier: GPL-2.0 |
| # |
| # PCI Express Port Bus Configuration |
| # |
| config PCIEPORTBUS |
| bool "PCI Express Port Bus support" |
| default y if USB4 |
| help |
| This enables PCI Express Port Bus support. Users can then enable |
| support for Native Hot-Plug, Advanced Error Reporting, Power |
| Management Events, and Downstream Port Containment. |
| |
| # |
| # Include service Kconfig here |
| # |
| config HOTPLUG_PCI_PCIE |
| bool "PCI Express Hotplug driver" |
| depends on HOTPLUG_PCI && PCIEPORTBUS |
| default y if USB4 |
| help |
| Say Y here if you have a motherboard that supports PCIe native |
| hotplug. |
| |
| Thunderbolt/USB4 PCIe tunneling depends on native PCIe hotplug. |
| |
| When in doubt, say N. |
| |
| config PCIEAER |
| bool "PCI Express Advanced Error Reporting support" |
| depends on PCIEPORTBUS |
| select RAS |
| help |
| This enables PCI Express Root Port Advanced Error Reporting |
| (AER) driver support. Error reporting messages sent to Root |
| Port will be handled by PCI Express AER driver. |
| |
| config PCIEAER_INJECT |
| tristate "PCI Express error injection support" |
| depends on PCIEAER |
| select GENERIC_IRQ_INJECTION |
| help |
| This enables PCI Express Root Port Advanced Error Reporting |
| (AER) software error injector. |
| |
| Debugging AER code is quite difficult because it is hard |
| to trigger various real hardware errors. Software-based |
| error injection can fake almost all kinds of errors with the |
| help of a user space helper tool aer-inject, which can be |
| gotten from: |
| https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/ |
| |
| config PCIEAER_CXL |
| bool "PCI Express CXL RAS support" |
| default y |
| depends on PCIEAER && CXL_PCI |
| help |
| Enables CXL error handling. |
| |
| If unsure, say Y. |
| |
| # |
| # PCI Express ECRC |
| # |
| config PCIE_ECRC |
| bool "PCI Express ECRC settings control" |
| depends on PCIEAER |
| help |
| Used to override firmware/bios settings for PCI Express ECRC |
| (transaction layer end-to-end CRC checking). |
| |
| When in doubt, say N. |
| |
| # |
| # PCI Express ASPM |
| # |
| config PCIEASPM |
| bool "PCI Express ASPM control" if EXPERT |
| default y |
| help |
| This enables OS control over PCI Express ASPM (Active State |
| Power Management) and Clock Power Management. ASPM supports |
| state L0/L0s/L1. |
| |
| ASPM is initially set up by the firmware. With this option enabled, |
| Linux can modify this state in order to disable ASPM on known-bad |
| hardware or configurations and enable it when known-safe. |
| |
| ASPM can be disabled or enabled at runtime via |
| /sys/module/pcie_aspm/parameters/policy |
| |
| When in doubt, say Y. |
| |
| choice |
| prompt "Default ASPM policy" |
| default PCIEASPM_DEFAULT |
| depends on PCIEASPM |
| |
| config PCIEASPM_DEFAULT |
| bool "BIOS default" |
| depends on PCIEASPM |
| help |
| Use the BIOS defaults for PCI Express ASPM. |
| |
| config PCIEASPM_POWERSAVE |
| bool "Powersave" |
| depends on PCIEASPM |
| help |
| Enable PCI Express ASPM L0s and L1 where possible, even if the |
| BIOS did not. |
| |
| config PCIEASPM_POWER_SUPERSAVE |
| bool "Power Supersave" |
| depends on PCIEASPM |
| help |
| Same as PCIEASPM_POWERSAVE, except it also enables L1 substates where |
| possible. This would result in higher power savings while staying in L1 |
| where the components support it. |
| |
| config PCIEASPM_PERFORMANCE |
| bool "Performance" |
| depends on PCIEASPM |
| help |
| Disable PCI Express ASPM L0s and L1, even if the BIOS enabled them. |
| endchoice |
| |
| config PCIE_PME |
| def_bool y |
| depends on PCIEPORTBUS && PM |
| |
| config PCIE_DPC |
| bool "PCI Express Downstream Port Containment support" |
| depends on PCIEPORTBUS && PCIEAER |
| help |
| This enables PCI Express Downstream Port Containment (DPC) |
| driver support. DPC events from Root and Downstream ports |
| will be handled by the DPC driver. If your system doesn't |
| have this capability or you do not want to use this feature, |
| it is safe to answer N. |
| |
| config PCIE_PTM |
| bool "PCI Express Precision Time Measurement support" |
| help |
| This enables PCI Express Precision Time Measurement (PTM) |
| support. |
| |
| This is only useful if you have devices that support PTM, but it |
| is safe to enable even if you don't. |
| |
| config PCIE_EDR |
| bool "PCI Express Error Disconnect Recover support" |
| depends on PCIE_DPC && ACPI |
| help |
| This option adds Error Disconnect Recover support as specified |
| in the Downstream Port Containment Related Enhancements ECN to |
| the PCI Firmware Specification r3.2. Enable this if you want to |
| support hybrid DPC model which uses both firmware and OS to |
| implement DPC. |