This aligns it with DEBUG_INITCALLS, which also traces exitcalls. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- v1 -> v2: no change --- common/Kconfig | 10 ++++++++-- drivers/base/driver.c | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/common/Kconfig b/common/Kconfig index 482faea933a6..060e21d9fedf 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -1524,9 +1524,15 @@ config DEBUG_INITCALLS If enabled this will print initcall traces. config DEBUG_PROBES - bool "Trace driver probes" + bool "Trace driver probes/removes" help - If enabled this will print driver probe traces. + If enabled this will log driver probe and remove traces. If DEBUG_LL is enabled, + probes will be printed even before registering consoles. If it's disabled, they + will be collected in the log and written out once a console is active. + + Removes are written to the log and will be printed as long as consoles exist. + Most consoles do not implement a remove callback to remain operable until + the very end. Consoles using DMA, however, must be removed. config PBL_BREAK bool "Execute software break on pbl start" diff --git a/drivers/base/driver.c b/drivers/base/driver.c index dd965eb165ee..bb07e96dcaf4 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -502,11 +502,15 @@ EXPORT_SYMBOL_GPL(dev_set_name); static void devices_shutdown(void) { struct device_d *dev; + int depth = 0; list_for_each_entry(dev, &active, active) { if (dev->bus->remove) { + depth++; + pr_report_probe("%*sremove-> %s\n", depth * 4, "", dev_name(dev)); dev->bus->remove(dev); dev->driver = NULL; + depth--; } } } -- 2.30.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox