summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch
diff options
context:
space:
mode:
authorjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-04-23 13:55:36 +0000
committerjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-04-23 13:55:36 +0000
commite2428ebd83861f693ac94cbe2662021d4e7f3775 (patch)
tree5ef4da4d4811465ed5574bd3d084fbf7cb928e21 /target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch
parente3dfb1052672f7359784de8d1002a8eafebc2b68 (diff)
bcm63xx: update patches with upstream submissions
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36407 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch')
-rw-r--r--target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch b/target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch
new file mode 100644
index 000000000..53161a9b0
--- /dev/null
+++ b/target/linux/brcm63xx/patches-3.8/016-MIPS-BCM63XX-make-nvram-checksum-failure-non-fatal.patch
@@ -0,0 +1,74 @@
+From 152addd3a965759b69fbdb9a76526f1f5070bc9a Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jogo@openwrt.org>
+Date: Tue, 12 Feb 2013 22:00:10 +0100
+Subject: [PATCH] MIPS: BCM63XX: make nvram checksum failure non fatal
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some vendors modify the nvram layout moving the checksum to a different
+place or dropping entirely, so reduce the checksum failure to a warning.
+
+Reported-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+---
+
+I'm not sure if it should be that "loud" (pr_warn) because users can't
+actually do anything to fix it, so maybe pr_debug would be fine, too.
+
+ arch/mips/bcm63xx/boards/board_bcm963xx.c | 5 +----
+ arch/mips/bcm63xx/nvram.c | 7 +++----
+ arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h | 4 +---
+ 3 files changed, 5 insertions(+), 11 deletions(-)
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -745,10 +745,7 @@ void __init board_prom_init(void)
+ strcpy(cfe_version, "unknown");
+ printk(KERN_INFO PFX "CFE version: %s\n", cfe_version);
+
+- if (bcm63xx_nvram_init(boot_addr + BCM963XX_NVRAM_OFFSET)) {
+- printk(KERN_ERR PFX "invalid nvram checksum\n");
+- return;
+- }
++ bcm63xx_nvram_init(boot_addr + BCM963XX_NVRAM_OFFSET);
+
+ board_name = bcm63xx_nvram_get_name();
+ /* find board by name */
+--- a/arch/mips/bcm63xx/nvram.c
++++ b/arch/mips/bcm63xx/nvram.c
+@@ -38,7 +38,7 @@ struct bcm963xx_nvram {
+ static struct bcm963xx_nvram nvram;
+ static int mac_addr_used;
+
+-int __init bcm63xx_nvram_init(void *addr)
++void __init bcm63xx_nvram_init(void *addr)
+ {
+ unsigned int check_len;
+ u32 crc, expected_crc;
+@@ -60,9 +60,8 @@ int __init bcm63xx_nvram_init(void *addr
+ crc = crc32_le(~0, (u8 *)&nvram, check_len);
+
+ if (crc != expected_crc)
+- return -EINVAL;
+-
+- return 0;
++ pr_warn("nvram checksum failed, contents may be invalid (expected %08x, got %08x)\n",
++ expected_crc, crc);
+ }
+
+ u8 *bcm63xx_nvram_get_name(void)
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h
++++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_nvram.h
+@@ -9,10 +9,8 @@
+ *
+ * Initialized the local nvram copy from the target address and checks
+ * its checksum.
+- *
+- * Returns 0 on success.
+ */
+-int __init bcm63xx_nvram_init(void *nvram);
++void bcm63xx_nvram_init(void *nvram);
+
+ /**
+ * bcm63xx_nvram_get_name() - returns the board name according to nvram