[PATCH 1/2] commands: devinfo: print Deep Probe status for top-level machine device

Sascha Hauer s.hauer at pengutronix.de
Mon Oct 20 03:47:48 PDT 2025


On Wed, Oct 15, 2025 at 11:27:01AM +0200, Ahmad Fatoum wrote:
> There is a log message when deep probe is disabled, but to make it
> easier to verify that it's enabled, let's introduce it as extra info
> in the devinfo command.
> 
> Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
> ---
>  commands/devinfo.c |  4 ++++
>  drivers/of/base.c  | 12 +++++++++---
>  include/of.h       |  2 ++
>  3 files changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/commands/devinfo.c b/commands/devinfo.c
> index cff4dbb92e31..e132f88bf3f3 100644
> --- a/commands/devinfo.c
> +++ b/commands/devinfo.c
> @@ -117,6 +117,10 @@ static int do_devinfo(int argc, char *argv[])
>  				printf("\n");
>  				of_print_nodes(dev->of_node, 0, ~0);
>  			}
> +
> +			if (dev == of_platform_root_device)

Can't this just be

			if (dev->of_node && !dev->of_node->parent)

?

Sascha

> +				printf("Deep probe: %s\n",
> +				       deep_probe_is_supported() ? "true" : "false");
>  		}
>  #endif
>  	}
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index c20fffb899a9..15265dc22623 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2909,12 +2909,14 @@ static int of_probe_memory(void)
>  }
>  mem_initcall(of_probe_memory);
>  
> +struct device *of_platform_root_device;
> +
>  static void of_platform_device_create_root(struct device_node *np)
>  {
> -	static struct device *dev;
> +	struct device *dev;
>  	int ret;
>  
> -	if (dev)
> +	if (of_platform_root_device)
>  		return;
>  
>  	dev = xzalloc(sizeof(*dev));
> @@ -2923,8 +2925,12 @@ static void of_platform_device_create_root(struct device_node *np)
>  	dev_set_name(dev, "machine");
>  
>  	ret = platform_device_register(dev);
> -	if (ret)
> +	if (WARN_ON(ret)) {
>  		free_device(dev);
> +		return;
> +	}
> +
> +	of_platform_root_device = dev;
>  }
>  
>  static const struct of_device_id reserved_mem_matches[] = {
> diff --git a/include/of.h b/include/of.h
> index 640d76f4aade..d1efab13c780 100644
> --- a/include/of.h
> +++ b/include/of.h
> @@ -428,6 +428,8 @@ extern int of_set_root_node(struct device_node *node);
>  extern int barebox_register_of(struct device_node *root);
>  extern int barebox_register_fdt(const void *dtb);
>  
> +extern struct device *of_platform_root_device;
> +
>  extern struct device *of_platform_device_create(struct device_node *np,
>  						struct device *parent);
>  extern void of_platform_device_dummy_drv(struct device *dev);
> -- 
> 2.47.3
> 
> 
> 

-- 
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