[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1363628226-6679-1-git-send-email-yinghai@kernel.org>
Date: Mon, 18 Mar 2013 10:37:06 -0700
From: Yinghai Lu <yinghai@...nel.org>
To: Bjorn Helgaas <bhelgaas@...gle.com>,
"Rafael J. Wysocki" <rjw@...k.pl>
Cc: linux-pci@...r.kernel.org, linux-acpi@...r.kernel.org,
linux-kernel@...r.kernel.org, Yinghai Lu <yinghai@...nel.org>,
Taku Izumi <izumi.taku@...fujitsu.com>,
Kenji Kaneshige <kaneshige.kenji@...fujitsu.com>,
stable@...nel.org
Subject: [PATCH] PCI: Remove not needed check in disable aspm link
Roman reported ath5k does not work anymore on 3.8.
Bisected to
| commit 8c33f51df406e1a1f7fa4e9b244845b7ebd61fa6
| Author: Taku Izumi <izumi.taku@...fujitsu.com>
| Date: Tue Oct 30 15:27:13 2012 +0900
|
| PCI/ACPI: Request _OSC control before scanning PCI root bus
|
| This patch moves up the code block to request _OSC control in order to
| separate ACPI work and PCI work in acpi_pci_root_add().
It make pci_disable_link_state does not work anymore as acpi_disabled
is set before pci root bus scanning.
It will skip that in quirks and pcie_aspm_sanity_check.
We could revert to old logic, but that will make booting path and hotplug
path with different aspm_disabled again.
Acctually we don't need to check aspm_disabled in disable link, as
we already have protection about link state following.
https://bugzilla.kernel.org/show_bug.cgi?id=55211
http://article.gmane.org/gmane.linux.kernel.pci/20640
Need it for 3.8 stable.
Reported-by: Roman Yepishev <roman.yepishev@...il.com>
Bisected-by: Roman Yepishev <roman.yepishev@...il.com>
Tested-by: Roman Yepishev <roman.yepishev@...il.com>
Signed-off-by: Yinghai Lu <yinghai@...nel.org>
Cc: Taku Izumi <izumi.taku@...fujitsu.com>
Cc: Kenji Kaneshige <kaneshige.kenji@...fujitsu.com>
Cc: stable@...nel.org
---
drivers/pci/pcie/aspm.c | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
Index: linux-2.6/drivers/pci/pcie/aspm.c
===================================================================
--- linux-2.6.orig/drivers/pci/pcie/aspm.c
+++ linux-2.6/drivers/pci/pcie/aspm.c
@@ -493,15 +493,6 @@ static int pcie_aspm_sanity_check(struct
return -EINVAL;
/*
- * If ASPM is disabled then we're not going to change
- * the BIOS state. It's safe to continue even if it's a
- * pre-1.1 device
- */
-
- if (aspm_disabled)
- continue;
-
- /*
* Disable ASPM for pre-1.1 PCIe device, we follow MS to use
* RBER bit to determine if a function is 1.1 version device
*/
@@ -718,15 +709,11 @@ void pcie_aspm_powersave_config_link(str
* pci_disable_link_state - disable pci device's link state, so the link will
* never enter specific states
*/
-static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem,
- bool force)
+static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem)
{
struct pci_dev *parent = pdev->bus->self;
struct pcie_link_state *link;
- if (aspm_disabled && !force)
- return;
-
if (!pci_is_pcie(pdev))
return;
@@ -757,13 +744,13 @@ static void __pci_disable_link_state(str
void pci_disable_link_state_locked(struct pci_dev *pdev, int state)
{
- __pci_disable_link_state(pdev, state, false, false);
+ __pci_disable_link_state(pdev, state, false);
}
EXPORT_SYMBOL(pci_disable_link_state_locked);
void pci_disable_link_state(struct pci_dev *pdev, int state)
{
- __pci_disable_link_state(pdev, state, true, false);
+ __pci_disable_link_state(pdev, state, true);
}
EXPORT_SYMBOL(pci_disable_link_state);
@@ -781,7 +768,7 @@ void pcie_clear_aspm(struct pci_bus *bus
__pci_disable_link_state(child, PCIE_LINK_STATE_L0S |
PCIE_LINK_STATE_L1 |
PCIE_LINK_STATE_CLKPM,
- false, true);
+ false);
}
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists