Hi Masahiro, On 23 July 2015 at 00:17, Masahiro Yamada <yamada.masah...@socionext.com> wrote: > This new command can dump all device resources associated to > each device. The fields in every line shows: > - The address of the resource > - The size of the resource > - The name of the release function > - The stage in which the resource has been acquired (BIND/PROBE) > > The output looks like this: > > => devres > - root_driver > - soc > - extbus > - serial@54006800 > 0xbfb541e8 (8 byte) devm_kmalloc_release BIND > 0xbfb54440 (4 byte) devm_kmalloc_release PROBE > 0xbfb54460 (4 byte) devm_kmalloc_release PROBE > - serial@54006900 > 0xbfb54270 (8 byte) devm_kmalloc_release BIND > - gpio@55000000 > - i2c@58780000 > 0xbfb5bce8 (12 byte) devm_kmalloc_release PROBE > 0xbfb5bd10 (4 byte) devm_kmalloc_release PROBE > - eeprom > 0xbfb54418 (12 byte) devm_kmalloc_release BIND
Did I miss the bit where you make device.c call devm functions for its allocation? Otherwise how will you get this output? > > Signed-off-by: Masahiro Yamada <yamada.masah...@socionext.com> > --- > > Changes in v3: None > Changes in v2: > - add static to dump_resources() > > drivers/core/Kconfig | 6 ++++++ > drivers/core/devres.c | 37 +++++++++++++++++++++++++++++++++++++ > 2 files changed, 43 insertions(+) > > diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig > index e1d8a6a..7dca35c 100644 > --- a/drivers/core/Kconfig > +++ b/drivers/core/Kconfig > @@ -81,3 +81,9 @@ config DEBUG_DEVRES > debug resource management for a managed device. > > If you are unsure about this, Say N here. > + > +config CMD_DEVRES > + bool "Managed device resources dump command" > + depends on DEBUG_DEVRES > + help > + This command displays all resources allociated to each device. > diff --git a/drivers/core/devres.c b/drivers/core/devres.c > index ae0c191..77f39a5 100644 > --- a/drivers/core/devres.c > +++ b/drivers/core/devres.c > @@ -13,6 +13,7 @@ > #include <linux/kernel.h> > #include <linux/list.h> > #include <dm/device.h> > +#include <dm/root.h> > > struct devres { > struct list_head entry; > @@ -186,6 +187,42 @@ void devres_release_all(struct udevice *dev) > release_nodes(dev, &dev->devres_head, false); > } > > +#ifdef CONFIG_CMD_DEVRES > +static void dump_resources(struct udevice *dev, int depth) > +{ > + struct devres *dr; > + struct udevice *child; > + > + printf("- %s\n", dev->name); > + > + list_for_each_entry(dr, &dev->devres_head, entry) > + printf(" 0x%p (%lu byte) %s %s\n", dr, We shouldn't need the 0x, everything is hex in U-Boot > + (unsigned long)dr->size, dr->name, > + dr->probe ? "PROBE" : "BIND"); > + > + list_for_each_entry(child, &dev->child_head, sibling_node) > + dump_resources(child, depth + 1); > +} > + > +static int do_devres(cmd_tbl_t *cmdtp, int flag, int argc, > + char * const argv[]) > +{ > + struct udevice *root; > + > + root = dm_root(); > + if (root) > + dump_resources(root, 0); > + > + return 0; > +} > + > +U_BOOT_CMD( > + devres, 1, 1, do_devres, > + "show device resources", > + "" > +); I think this should be 'dm devres' Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot