From 69cfeb602f40f455ce04af65d7778393f8cb7b85 Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Wed, 9 Jun 2010 16:05:07 -0400 Subject: [PATCH] --- yaml --- r: 206093 b: refs/heads/master c: 41cd766b065970ff6f6c89dd1cf55fa706c84a3d h: refs/heads/master i: 206091: 9f54e1947aa127d89c64382f2ecdd1713421df30 v: v3 --- [refs] | 2 +- trunk/drivers/pci/pcie/aspm.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 03e45d6c57c0..939fdad6b5a8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4302e0fb7fa5b071e30f3cfb68e85155b3d69d9b +refs/heads/master: 41cd766b065970ff6f6c89dd1cf55fa706c84a3d diff --git a/trunk/drivers/pci/pcie/aspm.c b/trunk/drivers/pci/pcie/aspm.c index be53d98fa384..71222814c1ec 100644 --- a/trunk/drivers/pci/pcie/aspm.c +++ b/trunk/drivers/pci/pcie/aspm.c @@ -588,11 +588,23 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev) * update through pcie_aspm_cap_init(). */ pcie_aspm_cap_init(link, blacklist); - pcie_config_aspm_path(link); /* Setup initial Clock PM state */ pcie_clkpm_cap_init(link, blacklist); - pcie_set_clkpm(link, policy_to_clkpm_state(link)); + + /* + * At this stage drivers haven't had an opportunity to change the + * link policy setting. Enabling ASPM on broken hardware can cripple + * it even before the driver has had a chance to disable ASPM, so + * default to a safe level right now. If we're enabling ASPM beyond + * the BIOS's expectation, we'll do so once pci_enable_device() is + * called. + */ + if (aspm_policy != POLICY_POWERSAVE) { + pcie_config_aspm_path(link); + pcie_set_clkpm(link, policy_to_clkpm_state(link)); + } + unlock: mutex_unlock(&aspm_lock); out: