linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] dt-bindings: mtd: partitions: support marking root device partition
@ 2022-10-19 11:48 Rafał Miłecki
  2022-10-19 11:50 ` [PATCH 2/2] mtd: core: set ROOT_DEV for partitions marked as root devices in DT Rafał Miłecki
  0 siblings, 1 reply; 4+ messages in thread
From: Rafał Miłecki @ 2022-10-19 11:48 UTC (permalink / raw)
  To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Rob Herring, Krzysztof Kozlowski
  Cc: Mikhail Zhilkin, Christian Marangi, Wolfram Sang,
	Chaitanya Kulkarni, Martin K . Petersen, Jens Axboe,
	Andrew Morton, linux-mtd, devicetree, linux-kernel,
	Rafał Miłecki

From: Rafał Miłecki <rafal@milecki.pl>

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,root-device" property to mark
correct flash partition.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../devicetree/bindings/mtd/partitions/fixed-partitions.yaml  | 1 +
 .../devicetree/bindings/mtd/partitions/partition.yaml         | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml
index ad3ccd250802..e627085df4fc 100644
--- a/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml
+++ b/Documentation/devicetree/bindings/mtd/partitions/fixed-partitions.yaml
@@ -84,6 +84,7 @@ examples:
         partition@0 {
             label = "filesystem";
             reg = <0x00000000 0x1 0x00000000>;
+            linux,root-device;
         };
     };
 
diff --git a/Documentation/devicetree/bindings/mtd/partitions/partition.yaml b/Documentation/devicetree/bindings/mtd/partitions/partition.yaml
index f1a02d840b12..671906acf1bd 100644
--- a/Documentation/devicetree/bindings/mtd/partitions/partition.yaml
+++ b/Documentation/devicetree/bindings/mtd/partitions/partition.yaml
@@ -52,6 +52,10 @@ properties:
       immune to paired-pages corruptions
     type: boolean
 
+  linux,root-device:
+    description: Marks partition that is a root device with filesystem to mount
+      and boot user space from
+
 if:
   not:
     required: [ reg ]
-- 
2.34.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] mtd: core: set ROOT_DEV for partitions marked as root devices in DT
  2022-10-19 11:48 [PATCH 1/2] dt-bindings: mtd: partitions: support marking root device partition Rafał Miłecki
@ 2022-10-19 11:50 ` Rafał Miłecki
  2022-10-19 11:53   ` Rafał Miłecki
  0 siblings, 1 reply; 4+ messages in thread
From: Rafał Miłecki @ 2022-10-19 11:50 UTC (permalink / raw)
  To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Rob Herring, Krzysztof Kozlowski
  Cc: Mikhail Zhilkin, Christian Marangi, Wolfram Sang,
	Chaitanya Kulkarni, Martin K . Petersen, Jens Axboe,
	Andrew Morton, linux-mtd, devicetree, linux-kernel,
	Rafał Miłecki

From: Rafał Miłecki <rafal@milecki.pl>

This adds support for "linux,root-device" binding that is used to mark
root device MTD partition. It's useful for devices using device tree
that don't have bootloader passing root info in cmdline.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 drivers/mtd/mtdcore.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 07249af4f890..034b06aff660 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -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,12 @@ 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)) {
+		pr_info("mtd: setting mtd%d (%s) as root device\n", mtd->index, mtd->name);
+		ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
+	}
+
 	/* 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
-- 
2.34.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] mtd: core: set ROOT_DEV for partitions marked as root devices in DT
  2022-10-19 11:50 ` [PATCH 2/2] mtd: core: set ROOT_DEV for partitions marked as root devices in DT Rafał Miłecki
@ 2022-10-19 11:53   ` Rafał Miłecki
  2022-10-21  1:50     ` Rob Herring
  0 siblings, 1 reply; 4+ messages in thread
From: Rafał Miłecki @ 2022-10-19 11:53 UTC (permalink / raw)
  To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Rob Herring, Krzysztof Kozlowski
  Cc: Mikhail Zhilkin, Christian Marangi, Wolfram Sang,
	Chaitanya Kulkarni, Martin K . Petersen, Jens Axboe,
	Andrew Morton, linux-mtd, devicetree, linux-kernel,
	Rafał Miłecki

On 19.10.2022 13:50, Rafał Miłecki wrote:
> From: Rafał Miłecki <rafal@milecki.pl>
> 
> This adds support for "linux,root-device" binding that is used to mark
> root device MTD partition. It's useful for devices using device tree
> that don't have bootloader passing root info in cmdline.
> 
> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> ---
>   drivers/mtd/mtdcore.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> index 07249af4f890..034b06aff660 100644
> --- a/drivers/mtd/mtdcore.c
> +++ b/drivers/mtd/mtdcore.c
> @@ -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,12 @@ 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)) {

I forgot to re-do "format-patch" after "commit --amend".
s/linux,rootfs/linux,root-device/

I'll fix that in V2 after giving this patchset some time to review.


> +		pr_info("mtd: setting mtd%d (%s) as root device\n", mtd->index, mtd->name);
> +		ROOT_DEV = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
> +	}
> +
>   	/* 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


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] mtd: core: set ROOT_DEV for partitions marked as root devices in DT
  2022-10-19 11:53   ` Rafał Miłecki
@ 2022-10-21  1:50     ` Rob Herring
  0 siblings, 0 replies; 4+ messages in thread
From: Rob Herring @ 2022-10-21  1:50 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Krzysztof Kozlowski, Mikhail Zhilkin, Christian Marangi,
	Wolfram Sang, Chaitanya Kulkarni, Martin K . Petersen,
	Jens Axboe, Andrew Morton, linux-mtd, devicetree, linux-kernel,
	Rafał Miłecki

On Wed, Oct 19, 2022 at 01:53:15PM +0200, Rafał Miłecki wrote:
> On 19.10.2022 13:50, Rafał Miłecki wrote:
> > From: Rafał Miłecki <rafal@milecki.pl>
> > 
> > This adds support for "linux,root-device" binding that is used to mark
> > root device MTD partition. It's useful for devices using device tree
> > that don't have bootloader passing root info in cmdline.
> > 
> > Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> > ---
> >   drivers/mtd/mtdcore.c | 7 +++++++
> >   1 file changed, 7 insertions(+)
> > 
> > diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
> > index 07249af4f890..034b06aff660 100644
> > --- a/drivers/mtd/mtdcore.c
> > +++ b/drivers/mtd/mtdcore.c
> > @@ -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,12 @@ 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)) {
> 
> I forgot to re-do "format-patch" after "commit --amend".
> s/linux,rootfs/linux,root-device/

It's really the filesystem you are tagging, not a device, so I think 
'linux,rootfs' is better.

Rob

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-10-21  1:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-19 11:48 [PATCH 1/2] dt-bindings: mtd: partitions: support marking root device partition Rafał Miłecki
2022-10-19 11:50 ` [PATCH 2/2] mtd: core: set ROOT_DEV for partitions marked as root devices in DT Rafał Miłecki
2022-10-19 11:53   ` Rafał Miłecki
2022-10-21  1:50     ` Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).