PCI: pcie: Add support for setting default ASPM policy
Matthew Garrett [Tue, 19 Jun 2012 08:48:58 +0000 (13:48 +0530)]
Distributions may wish to provide different defaults for PCIE ASPM
depending on their target audience. Provide a configuration option for
choosing the default policy.

Bug 815499

(cherry picked from commit ad71c96213a68dfe6d761e3ff7ac7ac267fd612a
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;
a=commitdiff;h=ad71c96213a68dfe6d761e3ff7ac7ac267fd612a)

Change-Id: I36bd72517af0cf8d637552e66b18afe576e72c20
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Reviewed-on: http://git-master/r/109739
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>

drivers/pci/pcie/Kconfig
drivers/pci/pcie/aspm.c

index dc29348..c370624 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 cbfbab1..d65b568 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",