dt-bindings: mtd: partitions: support marking rootfs partition
Subsystems (2)
PATCH v3 1/2 dt-bindings: mtd: partitions: support marking rootfs partition
From: Rafał Miłecki <[email protected]>
Linux needs to know what to use as root device. On embedded devices with flash the only common way to specify that is cmdline & root= parameter.
That solution works with U-Boot which is Linux & cmdline aware but isn't available with all market bootloaders. Also that method is fragile:
1. Requires specific probing order on multi-flash devices
2. Uses hardcoded partitions indexes
A lot of devices use different partitioning methods. It may be "fixed-partitions" or some dynamic partitioning (e.g. based on parts table). For such cases allow "linux,rootfs" property to mark correct flash partition.
---
V2: Use "linux,rootfs" as more accurate. Thanks Rob.
--- .../devicetree/bindings/mtd/partitions/fixed-partitions.yaml | 1 + .../devicetree/bindings/mtd/partitions/partition.yaml | 4 ++++ 2 files changed, 5 insertions(+)
Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml +1 -0
@@ -84,6 +84,7 @@ examples: partition@0 { label = "filesystem"; reg = <0x00000000 0x1 0x00000000>; + linux,rootfs; }; };
Documentation/devicetree/bindings/mtd/partitions/partition.yaml +4 -0
@@ -52,6 +52,10 @@ properties: immune to paired-pages corruptions type: boolean + linux,rootfs: + description: Marks partition that contains root filesystem to mount and boot + user space from + if: not: required: [ reg ]
Signature · 1 line
2.34.1
PATCH v3 2/2 mtd: core: set ROOT_DEV for partitions marked as rootfs in DT
From: Rafał Miłecki <[email protected]>
This adds support for "linux,rootfs" binding that is used to mark flash partition containing rootfs. It's useful for devices using device tree that don't have bootloader passing root info in cmdline.
---
V2: Use "linux,rootfs" as more accurate. Thanks Rob.
V3: Add IS_BUILTIN(CONFIG_MTD) check to avoid
ERROR: modpost: "ROOT_DEV" [drivers/mtd/mtd.ko] undefined!
--- drivers/mtd/mtdcore.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
drivers/mtd/mtdcore.c +12 -0
@@ -28,6 +28,7 @@#include <linux/leds.h> #include <linux/debugfs.h> #include <linux/nvmem-provider.h> +#include <linux/root_dev.h> #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h>
@@ -735,6 +736,17 @@ int add_mtd_device(struct mtd_info *mtd) not->add (mtd);mutex_unlock (&mtd_table_mutex); + +if (of_find_property (mtd_get_of_node (mtd),"linux,rootfs" ,NULL )) { +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); + }else { +pr_warn ("mtd: can't set mtd%d (%s) as root device - mtd must be builtin\n" , + mtd->index, mtd->name); + } + } +/* We _know_ we aren't being removed, because our caller is still holding us here. So none of this try_ nonsense, and no bitching about it
Signature · 1 line
2.34.1
Re: [PATCH V3 2/2] mtd: core: set ROOT_DEV for partitions marked as rootfs in DT
Quoted 7 lines · On Sat, 2022-10-22 at 21:13:18 UTC, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= wrote:
From: Rafał Miłecki <[email protected]>
This adds support for "linux,rootfs" binding that is used to mark flash partition containing rootfs. It's useful for devices using device tree that don't have bootloader passing root info in cmdline.
Signed-off-by Rafał Miłecki <[email protected]>
Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.
Miquel
Quoted 15 lines · Rafał Miłecki
From: Rafał Miłecki <[email protected]>
Linux needs to know what to use as root device. On embedded devices with flash the only common way to specify that is cmdline & root= parameter.
That solution works with U-Boot which is Linux & cmdline aware but isn't available with all market bootloaders. Also that method is fragile:
1. Requires specific probing order on multi-flash devices
2. Uses hardcoded partitions indexesA lot of devices use different partitioning methods. It may be "fixed-partitions" or some dynamic partitioning (e.g. based on parts table). For such cases allow "linux,rootfs" property to mark correct flash partition.
Quoted 8 lines
Signed-off-by Rafał Miłecki <[email protected]>---
V2: Use "linux,rootfs" as more accurate. Thanks Rob.--- .../devicetree/bindings/mtd/partitions/fixed-partitions.yaml | 1 + .../devicetree/bindings/mtd/partitions/partition.yaml | 4 ++++ 2 files changed, 5 insertions(+)
Quoted 10 lines · On Sat, 2022-10-22 at 21:13:17 UTC, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= wrote:
From: Rafał Miłecki <[email protected]>
Linux needs to know what to use as root device. On embedded devices with flash the only common way to specify that is cmdline & root= parameter.
That solution works with U-Boot which is Linux & cmdline aware but isn't available with all market bootloaders. Also that method is fragile:
1. Requires specific probing order on multi-flash devices
2. Uses hardcoded partitions indexes
Quoted 7 lines
A lot of devices use different partitioning methods. It may be "fixed-partitions" or some dynamic partitioning (e.g. based on parts table). For such cases allow "linux,rootfs" property to mark correct flash partition.
Signed-off-by Rafał Miłecki <[email protected]>Reviewed-by Rob Herring <[email protected]>
Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.
Miquel