aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/octeon/patches-3.10/0001-MIPS-Octeon-Fix-DT-pruning-bug-with-pip-ports.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/octeon/patches-3.10/0001-MIPS-Octeon-Fix-DT-pruning-bug-with-pip-ports.patch')
-rw-r--r--target/linux/octeon/patches-3.10/0001-MIPS-Octeon-Fix-DT-pruning-bug-with-pip-ports.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/target/linux/octeon/patches-3.10/0001-MIPS-Octeon-Fix-DT-pruning-bug-with-pip-ports.patch b/target/linux/octeon/patches-3.10/0001-MIPS-Octeon-Fix-DT-pruning-bug-with-pip-ports.patch
new file mode 100644
index 0000000000..6f1270020e
--- /dev/null
+++ b/target/linux/octeon/patches-3.10/0001-MIPS-Octeon-Fix-DT-pruning-bug-with-pip-ports.patch
@@ -0,0 +1,46 @@
+From ab2bb148c5932712d2717a7f3a452846f07a660a Mon Sep 17 00:00:00 2001
+From: Faidon Liambotis <paravoid@debian.org>
+Date: Thu, 11 Jul 2013 21:08:09 +0000
+Subject: [PATCH] MIPS: Octeon: Fix DT pruning bug with pip ports
+
+During the pruning of the device tree octeon_fdt_pip_iface() is called
+for each PIP interface and every port up to the port count is removed
+from the device tree. However, the count was set to the return value of
+cvmx_helper_interface_enumerate() which doesn't actually return the
+count but just returns zero on success. This effectively removed *all*
+ports from the tree.
+
+Use cvmx_helper_ports_on_interface() instead to fix this. This
+successfully restores the 3 ports of my ERLite-3 and fixes the "kernel
+assigns random MAC addresses" issue.
+
+Signed-off-by: Faidon Liambotis <paravoid@debian.org>
+Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Acked-by: David Daney <david.daney@cavium.com>
+Cc: linux-mips@linux-mips.org
+Patchwork: https://patchwork.linux-mips.org/patch/5587/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+---
+ arch/mips/cavium-octeon/octeon-platform.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/arch/mips/cavium-octeon/octeon-platform.c b/arch/mips/cavium-octeon/octeon-platform.c
+index 7b746e7..1830874 100644
+--- a/arch/mips/cavium-octeon/octeon-platform.c
++++ b/arch/mips/cavium-octeon/octeon-platform.c
+@@ -334,9 +334,10 @@ static void __init octeon_fdt_pip_iface(int pip, int idx, u64 *pmac)
+ char name_buffer[20];
+ int iface;
+ int p;
+- int count;
++ int count = 0;
+
+- count = cvmx_helper_interface_enumerate(idx);
++ if (cvmx_helper_interface_enumerate(idx) == 0)
++ count = cvmx_helper_ports_on_interface(idx);
+
+ snprintf(name_buffer, sizeof(name_buffer), "interface@%d", idx);
+ iface = fdt_subnode_offset(initial_boot_params, pip, name_buffer);
+--
+1.7.10.4
+