[PATCH 2/2] ath79: fix second boot failure issue on Netgear WNDR4300 v2 and WNDR4500 v3
Shiji Yang
yangshiji66 at outlook.com
Sat Jul 8 06:46:59 PDT 2023
From: Shiji Yang <yangshiji66 at qq.com>
>From the Netgear u-boot GPL code[1]. Bootloader always unconditionally
marks block 768, 1020 - 1023 as bad blocks on each boot. This may lead
to conflicts with the OpenWrt nand driver since these blocks may be good
blocks. In this case, U-boot will override the oob of these blocks so
that break the ubi volume. The system will be damaged on the second boot.
To avoid this issue, manually skip these blocks by using "mtd-concat".
[1] https://www.downloads.netgear.com/files/GPL/EX7300v2series-V1.0.0.146_gpl_src.tar.bz2.zip
Fixes: https://github.com/openwrt/openwrt/issues/8878
Tested-by: Yousaf <yousaf465 at gmail.com>
Signed-off-by: Shiji Yang <yangshiji66 at qq.com>
---
.../linux/ath79/dts/qca9563_netgear_wndr.dtsi | 32 +++++++++++++++++--
target/linux/ath79/image/nand.mk | 6 ++++
.../base-files/etc/board.d/05_compat-version | 15 +++++++++
3 files changed, 50 insertions(+), 3 deletions(-)
create mode 100644 target/linux/ath79/nand/base-files/etc/board.d/05_compat-version
diff --git a/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi b/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi
index a51fb1964b..9e075e46e0 100644
--- a/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi
+++ b/target/linux/ath79/dts/qca9563_netgear_wndr.dtsi
@@ -90,6 +90,22 @@
linux,default-trigger = "phy1tpt";
};
};
+
+ ubi-concat {
+ compatible = "mtd-concat";
+ devices = <&ubiconcat0 &ubiconcat1>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition at 0 {
+ label = "ubi";
+ reg = <0x0 0x0>;
+ };
+ };
+ };
};
&spi {
@@ -165,10 +181,20 @@
reg = <0x0 0x400000>;
};
- partition at 400000 {
- label = "ubi";
- reg = <0x400000 0x7c00000>;
+ ubiconcat0: partition at 400000 {
+ label = "ubiconcat0";
+ reg = <0x400000 0x5c00000>;
+ };
+
+ ubiconcat1: partition at 6020000 {
+ label = "ubiconcat1";
+ reg = <0x6020000 0x1f60000>;
};
+ /*
+ * U-boot always unconditionally marks block 768, 1020 - 1023 as
+ * bad blocks on each boot. To avoid conflicts with the nand
+ * driver, Manually skip them.
+ */
};
};
};
diff --git a/target/linux/ath79/image/nand.mk b/target/linux/ath79/image/nand.mk
index 7a3f478281..160394aa45 100644
--- a/target/linux/ath79/image/nand.mk
+++ b/target/linux/ath79/image/nand.mk
@@ -374,6 +374,9 @@ TARGET_DEVICES += netgear_wndr4300tn
define Device/netgear_wndr4300-v2
SOC := qca9563
+ DEVICE_COMPAT_VERSION := 1.1
+ DEVICE_COMPAT_MESSAGE := Partition table has changed to fix the first \
+ boot issue. Please reflash factory image with nmrp or tftp.
DEVICE_MODEL := WNDR4300
DEVICE_VARIANT := v2
UIMAGE_MAGIC := 0x27051956
@@ -385,6 +388,9 @@ TARGET_DEVICES += netgear_wndr4300-v2
define Device/netgear_wndr4500-v3
SOC := qca9563
+ DEVICE_COMPAT_VERSION := 1.1
+ DEVICE_COMPAT_MESSAGE := Partition table has changed to fix the first \
+ boot issue. Please reflash factory image with nmrp or tftp.
DEVICE_MODEL := WNDR4500
DEVICE_VARIANT := v3
UIMAGE_MAGIC := 0x27051956
diff --git a/target/linux/ath79/nand/base-files/etc/board.d/05_compat-version b/target/linux/ath79/nand/base-files/etc/board.d/05_compat-version
new file mode 100644
index 0000000000..238927aa7b
--- /dev/null
+++ b/target/linux/ath79/nand/base-files/etc/board.d/05_compat-version
@@ -0,0 +1,15 @@
+. /lib/functions.sh
+. /lib/functions/uci-defaults.sh
+
+board_config_update
+
+case "$(board_name)" in
+ netgear,wndr4300-v2|\
+ netgear,wndr4500-v3)
+ ucidef_set_compat_version "1.1"
+ ;;
+esac
+
+board_config_flush
+
+exit 0
--
2.30.2
More information about the openwrt-devel
mailing list