[RFC PATCH v2 3/3] bootm: handle global.bootm.root_dev

Sascha Hauer s.hauer at pengutronix.de
Mon Aug 10 05:45:53 EDT 2020


Hi Robert,

On Wed, Aug 05, 2020 at 12:15:50PM +0200, Robert Karszniewicz wrote:
> On 8/5/20 12:10 PM, Robert Karszniewicz wrote:
> > ---
> >   common/bootm.c | 13 ++++++++++++-
> >   1 file changed, 12 insertions(+), 1 deletion(-)
> > 
> > diff --git a/common/bootm.c b/common/bootm.c
> > index 73409bf9f70c..01b54ab93958 100644
> > --- a/common/bootm.c
> > +++ b/common/bootm.c
> > @@ -656,7 +656,18 @@ int bootm_boot(struct bootm_data *bootm_data)
> >   	if (bootm_data->appendroot) {
> >   		char *rootarg;
> > -		rootarg = path_get_linux_rootarg(data->os_file);
> > +		if (bootm_data->root_dev) {
> > +			const char *root_dev_name = devpath_to_name(bootm_data->root_dev);
> > +			const struct cdev *root_cdev = cdev_by_name(root_dev_name);
> > +
> > +			if (root_cdev && root_cdev->partuuid[0] != 0) {
> > +				rootarg = basprintf("root=PARTUUID=%s", root_cdev->partuuid);
> > +			} else {
> > +				rootarg = path_get_linux_rootarg("invalid");
> 
> Here I wasn't sure if I should be uniform and let the function return an
> error or just straight assign ERR_PTR(-EINVAL).

The latter looks better IMO.

You could be more verbose in the error case. Something like

		if (!root_cdev)
			pr_err("no cdev for %s found\n", root_dev_name);
		if (!root_cdev->partuuid[0])
			pr_err("%s doesn't have a PARTUUID, cannot set root= option\n",
				root_dev_name);

Otherwise the patch looks fine to me.

Sascha

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list