| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | # |
| 3 | # PCI Express Port Bus Configuration |
| 4 | # |
| 5 | config PCIEPORTBUS |
| 6 | bool "PCI Express Port Bus support" |
| 7 | depends on PCI |
| 8 | help |
| 9 | This automatically enables PCI Express Port Bus support. Users can |
| 10 | choose Native Hot-Plug support, Advanced Error Reporting support, |
| 11 | Power Management Event support and Virtual Channel support to run |
| 12 | on PCI Express Ports (Root or Switch). |
| 13 | |
| 14 | # |
| 15 | # Include service Kconfig here |
| 16 | # |
| 17 | config HOTPLUG_PCI_PCIE |
| 18 | bool "PCI Express Hotplug driver" |
| 19 | depends on HOTPLUG_PCI && PCIEPORTBUS |
| 20 | help |
| 21 | Say Y here if you have a motherboard that supports PCI Express Native |
| 22 | Hotplug |
| 23 | |
| 24 | When in doubt, say N. |
| 25 | |
| 26 | config PCIEAER |
| 27 | bool "PCI Express Advanced Error Reporting support" |
| 28 | depends on PCIEPORTBUS |
| 29 | select RAS |
| 30 | default y |
| 31 | help |
| 32 | This enables PCI Express Root Port Advanced Error Reporting |
| 33 | (AER) driver support. Error reporting messages sent to Root |
| 34 | Port will be handled by PCI Express AER driver. |
| 35 | |
| 36 | config PCIEAER_INJECT |
| 37 | tristate "PCI Express error injection support" |
| 38 | depends on PCIEAER |
| 39 | default n |
| 40 | help |
| 41 | This enables PCI Express Root Port Advanced Error Reporting |
| 42 | (AER) software error injector. |
| 43 | |
| 44 | Debugging AER code is quite difficult because it is hard |
| 45 | to trigger various real hardware errors. Software-based |
| 46 | error injection can fake almost all kinds of errors with the |
| 47 | help of a user space helper tool aer-inject, which can be |
| 48 | gotten from: |
| 49 | http://www.kernel.org/pub/linux/utils/pci/aer-inject/ |
| 50 | |
| 51 | # |
| 52 | # PCI Express ECRC |
| 53 | # |
| 54 | config PCIE_ECRC |
| 55 | bool "PCI Express ECRC settings control" |
| 56 | depends on PCIEAER |
| 57 | help |
| 58 | Used to override firmware/bios settings for PCI Express ECRC |
| 59 | (transaction layer end-to-end CRC checking). |
| 60 | |
| 61 | When in doubt, say N. |
| 62 | |
| 63 | # |
| 64 | # PCI Express ASPM |
| 65 | # |
| 66 | config PCIEASPM |
| 67 | bool "PCI Express ASPM control" if EXPERT |
| 68 | depends on PCI && PCIEPORTBUS |
| 69 | default y |
| 70 | help |
| 71 | This enables OS control over PCI Express ASPM (Active State |
| 72 | Power Management) and Clock Power Management. ASPM supports |
| 73 | state L0/L0s/L1. |
| 74 | |
| 75 | ASPM is initially set up by the firmware. With this option enabled, |
| 76 | Linux can modify this state in order to disable ASPM on known-bad |
| 77 | hardware or configurations and enable it when known-safe. |
| 78 | |
| 79 | ASPM can be disabled or enabled at runtime via |
| 80 | /sys/module/pcie_aspm/parameters/policy |
| 81 | |
| 82 | When in doubt, say Y. |
| 83 | |
| 84 | config PCIEASPM_DEBUG |
| 85 | bool "Debug PCI Express ASPM" |
| 86 | depends on PCIEASPM |
| 87 | default n |
| 88 | help |
| 89 | This enables PCI Express ASPM debug support. It will add per-device |
| 90 | interface to control ASPM. |
| 91 | |
| 92 | choice |
| 93 | prompt "Default ASPM policy" |
| 94 | default PCIEASPM_DEFAULT |
| 95 | depends on PCIEASPM |
| 96 | |
| 97 | config PCIEASPM_DEFAULT |
| 98 | bool "BIOS default" |
| 99 | depends on PCIEASPM |
| 100 | help |
| 101 | Use the BIOS defaults for PCI Express ASPM. |
| 102 | |
| 103 | config PCIEASPM_POWERSAVE |
| 104 | bool "Powersave" |
| 105 | depends on PCIEASPM |
| 106 | help |
| 107 | Enable PCI Express ASPM L0s and L1 where possible, even if the |
| 108 | BIOS did not. |
| 109 | |
| 110 | config PCIEASPM_POWER_SUPERSAVE |
| 111 | bool "Power Supersave" |
| 112 | depends on PCIEASPM |
| 113 | help |
| 114 | Same as PCIEASPM_POWERSAVE, except it also enables L1 substates where |
| 115 | possible. This would result in higher power savings while staying in L1 |
| 116 | where the components support it. |
| 117 | |
| 118 | config PCIEASPM_PERFORMANCE |
| 119 | bool "Performance" |
| 120 | depends on PCIEASPM |
| 121 | help |
| 122 | Disable PCI Express ASPM L0s and L1, even if the BIOS enabled them. |
| 123 | endchoice |
| 124 | |
| 125 | config PCIE_PME |
| 126 | def_bool y |
| 127 | depends on PCIEPORTBUS && PM |
| 128 | |
| 129 | config PCIE_DPC |
| 130 | bool "PCI Express Downstream Port Containment support" |
| 131 | depends on PCIEPORTBUS && PCIEAER |
| 132 | default n |
| 133 | help |
| 134 | This enables PCI Express Downstream Port Containment (DPC) |
| 135 | driver support. DPC events from Root and Downstream ports |
| 136 | will be handled by the DPC driver. If your system doesn't |
| 137 | have this capability or you do not want to use this feature, |
| 138 | it is safe to answer N. |
| 139 | |
| 140 | config PCIE_PTM |
| 141 | bool "PCI Express Precision Time Measurement support" |
| 142 | default n |
| 143 | depends on PCIEPORTBUS |
| 144 | help |
| 145 | This enables PCI Express Precision Time Measurement (PTM) |
| 146 | support. |
| 147 | |
| 148 | This is only useful if you have devices that support PTM, but it |
| 149 | is safe to enable even if you don't. |