PCI: pcie: Add support for setting default ASPM policy
authorMatthew Garrett <mjg@redhat.com>
Fri, 3 Feb 2012 15:18:13 +0000 (10:18 -0500)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Fri, 17 Feb 2012 17:22:03 +0000 (09:22 -0800)
Distributions may wish to provide different defaults for PCIE ASPM
depending on their target audience. Provide a configuration option for
choosing the default policy.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/pcie/Kconfig
drivers/pci/pcie/aspm.c

index 72962cc92e0af46402c0c6c4d38a15d82666931d..6c8bc5809787d7e2a4b82c72c590918c20f49665 100644 (file)
@@ -55,6 +55,31 @@ config PCIEASPM_DEBUG
          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_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_RUNTIME && EXPERIMENTAL && ACPI
index 1cfbf228fbb1d7f6531ae5196ca7aa12d637df4d..a0de5e123046a6216fe8afb20d4f426e9455d5f7 100644 (file)
@@ -76,7 +76,15 @@ static LIST_HEAD(link_list);
 #define POLICY_DEFAULT 0       /* BIOS default setting */
 #define POLICY_PERFORMANCE 1   /* high performance */
 #define POLICY_POWERSAVE 2     /* high power saving */
+
+#ifdef CONFIG_PCIEASPM_PERFORMANCE
+static int aspm_policy = POLICY_PERFORMANCE;
+#elif defined CONFIG_PCIEASPM_POWERSAVE
+static int aspm_policy = POLICY_POWERSAVE;
+#else
 static int aspm_policy;
+#endif
+
 static const char *policy_str[] = {
        [POLICY_DEFAULT] = "default",
        [POLICY_PERFORMANCE] = "performance",