PCI ASPM: do not clear enabled field by support field
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Wed, 19 Aug 2009 01:57:31 +0000 (10:57 +0900)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 9 Sep 2009 20:29:44 +0000 (13:29 -0700)
We must not clear bits in 'aspm_enabled' using 'aspm_support', or
'aspm_enabled' and 'aspm_default' might be different from the actual
state. In addtion, 'aspm_default' should be intialized even if
'aspm_support' is 0.

Acked-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/pcie/aspm.c

index 3d27c97e0486c9ed5b6d29b3e496723181111b32..9759714f77e778816935486032145ab610c53685 100644 (file)
@@ -346,12 +346,12 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist)
        link->latency.l0s = max_t(u32, link->latency.l0s, l0s);
        link->latency.l1 = max_t(u32, link->latency.l1, l1);
 
+       /* Save default state */
+       link->aspm_default = link->aspm_enabled;
+
        if (!link->aspm_support)
                return;
 
-       link->aspm_enabled &= link->aspm_support;
-       link->aspm_default = link->aspm_enabled;
-
        /* ENDPOINT states*/
        list_for_each_entry(child, &linkbus->devices, bus_list) {
                int pos;