GNU Linux-libre 6.8.7-gnu
[releases.git] / drivers / pci / pcie / Kconfig
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         default y if USB4
8         help
9           This enables PCI Express Port Bus support. Users can then enable
10           support for Native Hot-Plug, Advanced Error Reporting, Power
11           Management Events, and Downstream Port Containment.
12
13 #
14 # Include service Kconfig here
15 #
16 config HOTPLUG_PCI_PCIE
17         bool "PCI Express Hotplug driver"
18         depends on HOTPLUG_PCI && PCIEPORTBUS
19         default y if USB4
20         help
21           Say Y here if you have a motherboard that supports PCIe native
22           hotplug.
23
24           Thunderbolt/USB4 PCIe tunneling depends on native PCIe hotplug.
25
26           When in doubt, say N.
27
28 config PCIEAER
29         bool "PCI Express Advanced Error Reporting support"
30         depends on PCIEPORTBUS
31         select RAS
32         help
33           This enables PCI Express Root Port Advanced Error Reporting
34           (AER) driver support. Error reporting messages sent to Root
35           Port will be handled by PCI Express AER driver.
36
37 config PCIEAER_INJECT
38         tristate "PCI Express error injection support"
39         depends on PCIEAER
40         select GENERIC_IRQ_INJECTION
41         help
42           This enables PCI Express Root Port Advanced Error Reporting
43           (AER) software error injector.
44
45           Debugging AER code is quite difficult because it is hard
46           to trigger various real hardware errors. Software-based
47           error injection can fake almost all kinds of errors with the
48           help of a user space helper tool aer-inject, which can be
49           gotten from:
50              https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/
51
52 config PCIEAER_CXL
53         bool "PCI Express CXL RAS support"
54         default y
55         depends on PCIEAER && CXL_PCI
56         help
57           Enables CXL error handling.
58
59           If unsure, say Y.
60
61 #
62 # PCI Express ECRC
63 #
64 config PCIE_ECRC
65         bool "PCI Express ECRC settings control"
66         depends on PCIEAER
67         help
68           Used to override firmware/bios settings for PCI Express ECRC
69           (transaction layer end-to-end CRC checking).
70
71           When in doubt, say N.
72
73 #
74 # PCI Express ASPM
75 #
76 config PCIEASPM
77         bool "PCI Express ASPM control" if EXPERT
78         default y
79         help
80           This enables OS control over PCI Express ASPM (Active State
81           Power Management) and Clock Power Management. ASPM supports
82           state L0/L0s/L1.
83
84           ASPM is initially set up by the firmware. With this option enabled,
85           Linux can modify this state in order to disable ASPM on known-bad
86           hardware or configurations and enable it when known-safe.
87
88           ASPM can be disabled or enabled at runtime via
89           /sys/module/pcie_aspm/parameters/policy
90
91           When in doubt, say Y.
92
93 choice
94         prompt "Default ASPM policy"
95         default PCIEASPM_DEFAULT
96         depends on PCIEASPM
97
98 config PCIEASPM_DEFAULT
99         bool "BIOS default"
100         depends on PCIEASPM
101         help
102           Use the BIOS defaults for PCI Express ASPM.
103
104 config PCIEASPM_POWERSAVE
105         bool "Powersave"
106         depends on PCIEASPM
107         help
108           Enable PCI Express ASPM L0s and L1 where possible, even if the
109           BIOS did not.
110
111 config PCIEASPM_POWER_SUPERSAVE
112         bool "Power Supersave"
113         depends on PCIEASPM
114         help
115           Same as PCIEASPM_POWERSAVE, except it also enables L1 substates where
116           possible. This would result in higher power savings while staying in L1
117           where the components support it.
118
119 config PCIEASPM_PERFORMANCE
120         bool "Performance"
121         depends on PCIEASPM
122         help
123           Disable PCI Express ASPM L0s and L1, even if the BIOS enabled them.
124 endchoice
125
126 config PCIE_PME
127         def_bool y
128         depends on PCIEPORTBUS && PM
129
130 config PCIE_DPC
131         bool "PCI Express Downstream Port Containment support"
132         depends on PCIEPORTBUS && PCIEAER
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         help
143           This enables PCI Express Precision Time Measurement (PTM)
144           support.
145
146           This is only useful if you have devices that support PTM, but it
147           is safe to enable even if you don't.
148
149 config PCIE_EDR
150         bool "PCI Express Error Disconnect Recover support"
151         depends on PCIE_DPC && ACPI
152         help
153           This option adds Error Disconnect Recover support as specified
154           in the Downstream Port Containment Related Enhancements ECN to
155           the PCI Firmware Specification r3.2.  Enable this if you want to
156           support hybrid DPC model which uses both firmware and OS to
157           implement DPC.