]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 Apr 2012 17:10:13 +0000 (10:10 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 Apr 2012 17:10:13 +0000 (10:10 -0700)
added patches:
aspm-fix-pcie-devices-with-non-pcie-children.patch

queue-3.0/aspm-fix-pcie-devices-with-non-pcie-children.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/aspm-fix-pcie-devices-with-non-pcie-children.patch b/queue-3.0/aspm-fix-pcie-devices-with-non-pcie-children.patch
new file mode 100644 (file)
index 0000000..3fe646a
--- /dev/null
@@ -0,0 +1,70 @@
+From c9651e70ad0aa499814817cbf3cc1d0b806ed3a1 Mon Sep 17 00:00:00 2001
+From: Matthew Garrett <mjg@redhat.com>
+Date: Tue, 27 Mar 2012 10:17:41 -0400
+Subject: ASPM: Fix pcie devices with non-pcie children
+
+From: Matthew Garrett <mjg@redhat.com>
+
+commit c9651e70ad0aa499814817cbf3cc1d0b806ed3a1 upstream.
+
+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
+
+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>
+Tested-by: Hatem Masmoudi <hatem.masmoudi@gmail.com> # Dell Latitude E5520
+Tested-by: janek <jan0x6c@gmail.com> # pata_jmicron with JMB362/JMB363
+[jn: with more symptoms in log message]
+Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/pci/pcie/aspm.c |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -500,9 +500,6 @@ static int pcie_aspm_sanity_check(struct
+       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
+@@ -511,6 +508,16 @@ static int pcie_aspm_sanity_check(struct
+               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
index fa0059c633cac2c1097b03fcf923f67b33044063..407fa4f4c7573ead91b0effc06aad61cc04b6b82 100644 (file)
@@ -105,3 +105,4 @@ x86-tls-off-by-one-limit-check.patch
 compat-use-sys_sendfile64-implementation-for-sendfile-syscall.patch
 nfsd-don-t-allow-zero-length-strings-in-cache_parse.patch
 serial-sh-sci-fix-a-race-of-dma-submit_tx-on-transfer.patch
+aspm-fix-pcie-devices-with-non-pcie-children.patch