From: Jonathan Nieder <jrnieder@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Matthew Garrett <mjg@redhat.com>,
bhelgaas@google.com, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, stable@vger.kernel.org,
Romain Francoise <romain@orebokech.com>,
Chris Holland <bandidoirlandes@gmail.com>,
Colin Ian King <colin.king@canonical.com>,
Hatem Masmoudi <hatem.masmoudi@gmail.com>,
janek <jan0x6c@gmail.com>
Subject: [PATCH resend] ASPM: Fix pcie devices with non-pcie children
Date: Thu, 29 Mar 2012 11:32:06 -0500 [thread overview]
Message-ID: <20120329163206.GA3480@burratino> (raw)
In-Reply-To: <1332857861-11562-1-git-send-email-mjg@redhat.com>
From: Matthew Garrett <mjg@redhat.com>
Date: Tue, 27 Mar 2012 10:17:41 -0400
Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON.
Some other systems using the pata_jmicron driver fail to boot because
no disks are detected. Passing pcie_aspm=force on the kernel command
line works around it.
The cause: commit 4949be16822e ("PCI: ignore pre-1.1 ASPM quirking
when ASPM is disabled") changed the behaviour of
pcie_aspm_sanity_check() to always return 0 if aspm is disabled, in
order to avoid cases where we changed ASPM state on pre-PCIe 1.1
devices. This skipped the secondary function of
pcie_aspm_sanity_check which was to avoid us enabling ASPM on devices
that had non-PCIe children, causing trouble later on. Move the
aspm_disabled check so we continue to honour that scenario.
Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and
http://bugs.debian.org/665420
[jn: with more symptoms in log message]
Reported-by: Romain Francoise <romain@orebokech.com> # kernel panic
Reported-by: Chris Holland <bandidoirlandes@gmail.com> # disk detection trouble
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Cc: stable@vger.kernel.org
Tested-by: Hatem Masmoudi <hatem.masmoudi@gmail.com> # Dell Latitude E5520
Tested-by: janek <jan0x6c@gmail.com> # pata_jmicron with JMB362/JMB363
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Hi Andrew,
This patch only appeared a couple of days ago[1], but it fixes a
noticeable regression so I would like to make sure the patch becomes
part of mainline and the 3.2.y- and 3.3.y-stable trees soon. Could
you pick it up for linux-next until it makes its way to the PCI tree?
Regression was introduced between 3.3-rc7 and 3.3 and between 3.2.11
and 3.2.12. Prevents boot on affected machines, though there is a
workaround. Details about the symptoms and fix are above.
Thanks,
Jonathan
[1] http://thread.gmane.org/gmane.linux.kernel.pci/14503
drivers/pci/pcie/aspm.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 4bdef24cd412..b500840a143b 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -508,9 +508,6 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
int pos;
u32 reg32;
- if (aspm_disabled)
- return 0;
-
/*
* Some functions in a slot might not all be PCIe functions,
* very strange. Disable ASPM for the whole slot
@@ -519,6 +516,16 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev)
pos = pci_pcie_cap(child);
if (!pos)
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
--
1.7.10.rc1
next prev parent reply other threads:[~2012-03-29 16:32 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-27 14:17 [PATCH] ASPM: Fix pcie devices with non-pcie children Matthew Garrett
2012-03-27 16:58 ` Colin Ian King
2012-03-28 21:15 ` Jonathan Nieder
2012-03-29 16:32 ` Jonathan Nieder [this message]
2012-03-29 20:46 ` [PATCH resend] " Andrew Morton
2012-03-29 20:56 ` Matthew Garrett
2012-03-29 20:59 ` Andrew Morton
2012-03-29 21:49 ` Bjorn Helgaas
2012-03-29 21:49 ` Bjorn Helgaas
2012-03-29 21:02 ` Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120329163206.GA3480@burratino \
--to=jrnieder@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=bandidoirlandes@gmail.com \
--cc=bhelgaas@google.com \
--cc=colin.king@canonical.com \
--cc=hatem.masmoudi@gmail.com \
--cc=jan0x6c@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mjg@redhat.com \
--cc=romain@orebokech.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.