openwrt/target/linux/generic/hack-5.10/421-mtd-fix-squashfs-root-on-targets-with-CONFIG_FIT_PAR.patch
Rafał Miłecki 932378aeb6 kernel: backport support for "linux,rootfs" in DT
This DT property allows marking flash partition that Linux should use as
a root device. It's useful for devices that don't use U-Boot and cmdline
parser for partitioning. It may be used with "fixed-partitions" or some
dynamic partitioning based on flash content.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit d33e49857e)
2022-11-21 16:37:24 +01:00

32 lines
1023 B
Diff

From: Felix Fietkau <nbd@nbd.name>
Date: Sat Apr 10 17:00:57 2021 +0200
Subject: [PATCH] mtd: fix squashfs root on targets with CONFIG_FIT_PARTITION
Fix assumption about the block device index
---
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -758,12 +758,18 @@ int add_mtd_device(struct mtd_info *mtd)
if (of_find_property(mtd_get_of_node(mtd), "linux,rootfs", NULL) ||
(IS_ENABLED(CONFIG_MTD_ROOTFS_ROOT_DEV) && !strcmp(mtd->name, "rootfs") && ROOT_DEV == 0)) {
+ unsigned int index = mtd->index;
+
+#ifdef CONFIG_FIT_PARTITION
+ index <<= 2;
+#endif
+
if (IS_BUILTIN(CONFIG_MTD)) {
- pr_info("mtd: setting mtd%d (%s) as root device\n", mtd->index, mtd->name);
- ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
+ pr_info("mtd: setting mtd%d (%s) as root device\n", index, mtd->name);
+ ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, index);
} else {
pr_warn("mtd: can't set mtd%d (%s) as root device - mtd must be builtin\n",
- mtd->index, mtd->name);
+ index, mtd->name);
}
}