mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
b2103ccbb6
Add support for ASPM L1 substates. For details about L1 substates, see the PCIe r3.1 spec, which includes the ECN below in secs 5.5 and 7.33. Add macros for the 4 new L1 substates, and add a new ASPM "POWER_SUPERSAVE" policy that can be used to enable L1 substates on a system if desired. The new policy is in a sense, a superset of the existing POWERSAVE policy. The 4 policies are now: DEFAULT: Reads and uses whatever ASPM states BIOS enabled PERFORMANCE: Everything except L0 disabled. POWERSAVE: L0s and L1 enabled (but not L1 substates) POWER_SUPERSAVE: L0s + L1 + L1 substates also enabled [bhelgaas: add PCIe r3.1 spec reference] Link: https://pcisig.com/sites/default/files/specification_documents/ECN_L1_PM_Substates_with_CLKREQ_31_May_2013_Rev10a.pdf Signed-off-by: Rajat Jain <rajatja@google.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
114 lines
2.9 KiB
Plaintext
114 lines
2.9 KiB
Plaintext
#
|
|
# PCI Express Port Bus Configuration
|
|
#
|
|
config PCIEPORTBUS
|
|
bool "PCI Express Port Bus support"
|
|
depends on PCI
|
|
help
|
|
This automatically enables PCI Express Port Bus support. Users can
|
|
choose Native Hot-Plug support, Advanced Error Reporting support,
|
|
Power Management Event support and Virtual Channel support to run
|
|
on PCI Express Ports (Root or Switch).
|
|
|
|
#
|
|
# Include service Kconfig here
|
|
#
|
|
config HOTPLUG_PCI_PCIE
|
|
bool "PCI Express Hotplug driver"
|
|
depends on HOTPLUG_PCI && PCIEPORTBUS
|
|
help
|
|
Say Y here if you have a motherboard that supports PCI Express Native
|
|
Hotplug
|
|
|
|
When in doubt, say N.
|
|
|
|
source "drivers/pci/pcie/aer/Kconfig"
|
|
|
|
#
|
|
# PCI Express ASPM
|
|
#
|
|
config PCIEASPM
|
|
bool "PCI Express ASPM control" if EXPERT
|
|
depends on PCI && PCIEPORTBUS
|
|
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.
|
|
|
|
config PCIEASPM_DEBUG
|
|
bool "Debug PCI Express ASPM"
|
|
depends on PCIEASPM
|
|
default n
|
|
help
|
|
This enables PCI Express ASPM debug support. It will add per-device
|
|
interface to control ASPM.
|
|
|
|
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 "PCIe Downstream Port Containment support"
|
|
depends on PCIEPORTBUS
|
|
default n
|
|
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 "PCIe Precision Time Measurement support"
|
|
default n
|
|
depends on PCIEPORTBUS
|
|
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.
|