Discussion:
[OpenWrt-Devel] [PATCH] gemini: Fix hard disk boot on D-Link devices
Linus Walleij
2018-05-02 07:53:21 UTC
Permalink
Since the D-Link devices boot from hard disk we need to
add the following changes to Gemini:

- Supply a bootarg in the device tree so we can boot from
the right partition (/dev/sda4 on DNS-313)
- Disable forced command line in config so the kernel picks
up the right bootargs from the device tree
- Enable EXT4 in the config as this is used for rootfs else
we get nowhere, we cannot load this as a module because,
well, it is supposed to be loaded from the root partition
(chicken and egg problem).

Also clean out the premature attempts to dynamically
modify the command line in the Image makefile: we should
pass this with the device tree bootargs instead, it works
much better.

Signed-off-by: Linus Walleij <***@linaro.org>
---
target/linux/gemini/config-4.14 | 2 +-
target/linux/gemini/image/Makefile | 6 ---
...ts-Fix-bootargs-for-Gemini-D-Link-devices.patch | 45 ++++++++++++++++++++++
3 files changed, 46 insertions(+), 7 deletions(-)
create mode 100644 target/linux/gemini/patches-4.14/0033-ARM-dts-Fix-bootargs-for-Gemini-D-Link-devices.patch

diff --git a/target/linux/gemini/config-4.14 b/target/linux/gemini/config-4.14
index 034bbcf6054a..d6dfef0bcacd 100644
--- a/target/linux/gemini/config-4.14
+++ b/target/linux/gemini/config-4.14
@@ -56,7 +56,6 @@ CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CMDLINE="console=ttyS0,19200n8"
-CONFIG_CMDLINE_FORCE=y
CONFIG_COMMON_CLK=y
CONFIG_COMMON_CLK_GEMINI=y
CONFIG_COMPACTION=y
@@ -153,6 +152,7 @@ CONFIG_ELF_CORE=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_EXPERT is not set
CONFIG_EXPORTFS=y
+CONFIG_EXT4_FS=y
CONFIG_FARADAY_FTINTC010=y
CONFIG_FHANDLE=y
CONFIG_FIRMWARE_IN_KERNEL=y
diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
index dca3b63b19ce..2e3bcdb21ccd 100644
--- a/target/linux/gemini/image/Makefile
+++ b/target/linux/gemini/image/Makefile
@@ -75,19 +75,15 @@ GEMINI_NAS_PACKAGES:=kmod-md-mod kmod-md-linear kmod-md-multipath \
kmod-nls-utf8 kmod-usb-storage-extras \
samba36-server mdadm cfdisk fdisk e2fsprogs badblocks

-DIR685_CMDLINE:=-console=ttyS0,19200n8 root=/dev/sda1 rw rootwait
define Device/dlink-dir-685
DEVICE_TITLE := D-Link DIR-685 Xtreme N Storage Router
- CMDLINE := $(DIR685_CMDLINE)
DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES) \
kmod-switch-rtl8366rb swconfig
endef
TARGET_DEVICES += dlink-dir-685

-DNS313_CMDLINE:=-console=ttyS0,19200n8 root=/dev/sda4 rw rootwait
define Device/dlink-dns-313
DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
- CMDLINE := $(DNS313_CMDLINE)
DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
IMAGES += dns313-image
IMAGE/dns313-image := dns313-images
@@ -108,10 +104,8 @@ define Device/rut1xx
endef
TARGET_DEVICES += rut1xx

-SQ201_CMDLINE:=-console=ttyS0,115200n8
define Device/sq201
DEVICE_TITLE := ITian Square One SQ201
- CMDLINE := $(SQ201_CMDLINE)
DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES) rt61-pci-firmware
endef
TARGET_DEVICES += sq201
diff --git a/target/linux/gemini/patches-4.14/0033-ARM-dts-Fix-bootargs-for-Gemini-D-Link-devices.patch b/target/linux/gemini/patches-4.14/0033-ARM-dts-Fix-bootargs-for-Gemini-D-Link-devices.patch
new file mode 100644
index 000000000000..f8cf123d7b2e
--- /dev/null
+++ b/target/linux/gemini/patches-4.14/0033-ARM-dts-Fix-bootargs-for-Gemini-D-Link-devices.patch
@@ -0,0 +1,45 @@
+From 5813b729eb9fe91fcf895a5c2f30bf34fbd46379 Mon Sep 17 00:00:00 2001
+From: Linus Walleij <***@linaro.org>
+Date: Wed, 2 May 2018 09:17:25 +0200
+Subject: [PATCH] ARM: dts: Fix bootargs for Gemini D-Link devices
+
+These machines need to be booted from very specific harddisk
+partitions (as the D-Link DNS-313 boots specifically from
+partition 4). Add the proper bootargs so that everything works
+smoothly.
+
+Signed-off-by: Linus Walleij <***@linaro.org>
+---
+ arch/arm/boot/dts/gemini-dlink-dir-685.dts | 3 ++-
+ arch/arm/boot/dts/gemini-dlink-dns-313.dts | 1 +
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/gemini-dlink-dir-685.dts b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
+index a39914dece98..840f4a32f37c 100644
+--- a/arch/arm/boot/dts/gemini-dlink-dir-685.dts
++++ b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
+@@ -20,7 +20,8 @@
+ };
+
+ chosen {
+- stdout-path = "uart0:115200n8";
++ bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait";
++ stdout-path = "uart0:19200n8";
+ };
+
+ gpio_keys {
+diff --git a/arch/arm/boot/dts/gemini-dlink-dns-313.dts b/arch/arm/boot/dts/gemini-dlink-dns-313.dts
+index 4904f1251671..685719a0b8c0 100644
+--- a/arch/arm/boot/dts/gemini-dlink-dns-313.dts
++++ b/arch/arm/boot/dts/gemini-dlink-dns-313.dts
+@@ -26,6 +26,7 @@
+ };
+
+ chosen {
++ bootargs = "console=ttyS0,19200n8 root=/dev/sda4 rw rootwait";
+ stdout-path = "uart0:19200n8";
+ };
+
+--
+2.14.3
+
--
2.14.3
Loading...