[kernel] r16490 - in dists/trunk/linux-2.6/debian: . patches/bugfix/arm patches/series

Martin Michlmayr tbm at alioth.debian.org
Mon Oct 25 18:29:05 UTC 2010


Author: tbm
Date: Mon Oct 25 18:28:57 2010
New Revision: 16490

Log:
better fix

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/arm/kirkwood-restrict-pcie-reset.patch
Deleted:
   dists/trunk/linux-2.6/debian/patches/bugfix/arm/kirkwood-revert-pcie-reset.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/base

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Mon Oct 25 15:10:27 2010	(r16489)
+++ dists/trunk/linux-2.6/debian/changelog	Mon Oct 25 18:28:57 2010	(r16490)
@@ -23,8 +23,7 @@
   * [x86] Disable DRM_I830; the i915 driver is now used instead
 
   [ Martin Michlmayr ]
-  * Revert "orion/kirkwood: reset PCIe unit on boot" since it breaks
-    the QNAP TS-209.
+  * Kirkwood: restrict the scope of the PCIe reset workaround
 
  -- Ben Hutchings <ben at decadent.org.uk>  Thu, 07 Oct 2010 03:24:21 +0100
 

Added: dists/trunk/linux-2.6/debian/patches/bugfix/arm/kirkwood-restrict-pcie-reset.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/arm/kirkwood-restrict-pcie-reset.patch	Mon Oct 25 18:28:57 2010	(r16490)
@@ -0,0 +1,90 @@
+From: Nicolas Pitre <nico at fluxnic.net>
+Date: Thu, 21 Oct 2010 19:48:33 +0000 (-0400)
+Subject: [ARM] Kirkwood: restrict the scope of the PCIe reset workaround
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnico%2Forion.git;a=commitdiff_plain;h=3924996bab2845bdf9a9d16ff7c20445de1ab55d
+
+[ARM] Kirkwood: restrict the scope of the PCIe reset workaround
+
+Commit 21f0ba90a447 "orion/kirkwood: reset PCIe unit on boot" made the
+reset of the PCIe unit unconditional.  While this may fix problems on some
+targets, this also causes problems on other targets.
+
+Saeed Bishara <saeed at marvell.com> said about the original problem: "We
+couln't pinpoint the root cause of this issue, actually we failed to
+reproduce that issue."
+
+So let's restrict the reset of the PCIe unit only to the target where
+the original problem was observed.
+
+Signed-off-by: Nicolas Pitre <nico at fluxnic.net>
+---
+
+diff --git a/arch/arm/mach-kirkwood/ts41x-setup.c b/arch/arm/mach-kirkwood/ts41x-setup.c
+index 2e14afe..6995199 100644
+--- a/arch/arm/mach-kirkwood/ts41x-setup.c
++++ b/arch/arm/mach-kirkwood/ts41x-setup.c
+@@ -27,6 +27,10 @@
+ #include "mpp.h"
+ #include "tsx1x-common.h"
+ 
++/* for the PCIe reset workaround */
++#include <plat/pcie.h>
++
++
+ #define QNAP_TS41X_JUMPER_JP1	45
+ 
+ static struct i2c_board_info __initdata qnap_ts41x_i2c_rtc = {
+@@ -140,8 +144,16 @@ static void __init qnap_ts41x_init(void)
+ 
+ static int __init ts41x_pci_init(void)
+ {
+-	if (machine_is_ts41x())
++	if (machine_is_ts41x()) {
++		/*
++		 * Without this explicit reset, the PCIe SATA controller
++		 * (Marvell 88sx7042/sata_mv) is known to stop working
++		 * after a few minutes.
++		 */
++		orion_pcie_reset((void __iomem *)PCIE_VIRT_BASE);
++
+ 		kirkwood_pcie_init(KW_PCIE0);
++	}
+ 
+    return 0;
+ }
+diff --git a/arch/arm/plat-orion/include/plat/pcie.h b/arch/arm/plat-orion/include/plat/pcie.h
+index 3ebfef7..cc99163 100644
+--- a/arch/arm/plat-orion/include/plat/pcie.h
++++ b/arch/arm/plat-orion/include/plat/pcie.h
+@@ -11,12 +11,15 @@
+ #ifndef __PLAT_PCIE_H
+ #define __PLAT_PCIE_H
+ 
++struct pci_bus;
++
+ u32 orion_pcie_dev_id(void __iomem *base);
+ u32 orion_pcie_rev(void __iomem *base);
+ int orion_pcie_link_up(void __iomem *base);
+ int orion_pcie_x4_mode(void __iomem *base);
+ int orion_pcie_get_local_bus_nr(void __iomem *base);
+ void orion_pcie_set_local_bus_nr(void __iomem *base, int nr);
++void orion_pcie_reset(void __iomem *base);
+ void orion_pcie_setup(void __iomem *base,
+ 		      struct mbus_dram_target_info *dram);
+ int orion_pcie_rd_conf(void __iomem *base, struct pci_bus *bus,
+diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c
+index 779553a..af2d733 100644
+--- a/arch/arm/plat-orion/pcie.c
++++ b/arch/arm/plat-orion/pcie.c
+@@ -182,11 +182,6 @@ void __init orion_pcie_setup(void __iomem *base,
+ 	u32 mask;
+ 
+ 	/*
+-	 * soft reset PCIe unit
+-	 */
+-	orion_pcie_reset(base);
+-
+-	/*
+ 	 * Point PCIe unit MBUS decode windows to DRAM space.
+ 	 */
+ 	orion_pcie_setup_wins(base, dram);

Modified: dists/trunk/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/base	Mon Oct 25 15:10:27 2010	(r16489)
+++ dists/trunk/linux-2.6/debian/patches/series/base	Mon Oct 25 18:28:57 2010	(r16490)
@@ -48,4 +48,4 @@
 + bugfix/all/perf-Fix-detection-of-script-extension.patch
 + bugfix/x86/Skip-looking-for-ioapic-overrides-when-ioapics-are-not-present.patch
 + features/x86/ata_piix-Add-device-ID-for-ICH4-L.patch
-+ bugfix/arm/kirkwood-revert-pcie-reset.patch
++ bugfix/arm/kirkwood-restrict-pcie-reset.patch



More information about the Kernel-svn-changes mailing list