From patchwork Wed Jun 9 14:10:18 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Garrett X-Patchwork-Id: 105138 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o59EAbwu012046 for ; Wed, 9 Jun 2010 14:10:37 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756535Ab0FIOKg (ORCPT ); Wed, 9 Jun 2010 10:10:36 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56841 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755810Ab0FIOKg (ORCPT ); Wed, 9 Jun 2010 10:10:36 -0400 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o59EAZ9W021576 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 9 Jun 2010 10:10:36 -0400 Received: from cavan.codon.org.uk (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o59EAXlS029936 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 9 Jun 2010 10:10:34 -0400 Received: from 209-6-34-250.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com ([209.6.34.250] helo=localhost.localdomain) by cavan.codon.org.uk with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1OMLzD-0005WW-J8; Wed, 09 Jun 2010 15:10:31 +0100 From: Matthew Garrett To: linux-pci@vger.kernel.org Cc: jbarnes@virtuousgeek.org, linux-kernel@vger.kernel.org, Matthew Garrett Subject: [RFC] pci: Don't enable aspm before drivers have had a chance to veto it Date: Wed, 9 Jun 2010 10:10:18 -0400 Message-Id: <1276092618-18591-1-git-send-email-mjg@redhat.com> X-SA-Do-Not-Run: Yes X-SA-Exim-Connect-IP: 209.6.34.250 X-SA-Exim-Mail-From: mjg@redhat.com X-SA-Exim-Scanned: No (on cavan.codon.org.uk); SAEximRunCond expanded to false X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Wed, 09 Jun 2010 14:10:37 +0000 (UTC) diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index be53d98..223b39e 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c @@ -562,6 +562,7 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev) { struct pcie_link_state *link; int blacklist = !!pcie_aspm_sanity_check(pdev); + int orig_policy = aspm_policy; if (aspm_disabled || !pci_is_pcie(pdev) || pdev->link_state) return; @@ -588,11 +589,23 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev) * update through pcie_aspm_cap_init(). */ pcie_aspm_cap_init(link, blacklist); + + /* + * 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. The real policy will be enabled + * once pci_enable_device is called. + */ + if (aspm_policy == POLICY_POWERSAVE) + aspm_policy = POLICY_DEFAULT; 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)); + aspm_policy = orig_policy; + unlock: mutex_unlock(&aspm_lock); out: