Ok, thank you, I didn't notice the existing thread.
On Wed, 23 Apr 2014 10:55:29 -0500
Felipe Balbi ba...@ti.com wrote:
On Wed, Apr 23, 2014 at 05:39:43PM +0200, Olivier Gayot wrote:
The following commit introduced the debugfs :
40f099e32c2a06bad7d75683421e30fcc74924cd
Author: Markus Pargmann m...@pengutronix.de
Date: Fri Jan 17 10:22:35 2014 +0100
usb: musb: dsps, debugfs files
Unfortunately, a forgotten call to a cleanup function prevents the
probing of musb in case of deferred probe.
Because musb_init_controller() often retries and creates a new
debugfs directory each time it is called, we need to remove that
directory in case the initialization fails. Otherwise, the
debugfs_create_dir() fails at subsequent calls because the
directory already exists.
Fixed by calling debugfs_remove_recursive() in the exit function.
Signed-off-by: Olivier Gayot oga...@baylibre.com
Cc: Markus Pargmann m...@pengutronix.de
---
drivers/usb/musb/musb_dsps.c |2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/usb/musb/musb_dsps.c
b/drivers/usb/musb/musb_dsps.c index 3372ded..c3de0a5 100644
--- a/drivers/usb/musb/musb_dsps.c
+++ b/drivers/usb/musb/musb_dsps.c
@@ -471,6 +471,8 @@ static int dsps_musb_exit(struct musb *musb)
del_timer_sync(glue-timer);
+ debugfs_remove_recursive(glue-dbgfs_root);
+
usb_phy_shutdown(musb-xceiv);
return 0;
First of all this commit is wrong, second of all I already have the
proper commit:
commit 0fca91b8a446d4a38b8f3d4772c4a8665ebcd7b2
Author: Daniel Mack zon...@gmail.com
Date: Wed Apr 2 11:46:51 2014 +0200
usb: musb: dsps: move debugfs_remove_recursive()
When the platform initialization fails due to missing resources,
it will return -EPROBE_DEFER after dsps_musb_init() has been called.
dsps_musb_init() calls dsps_musb_dbg_init() to allocate the
debugfs nodes. At a later point in time, the probe will be retried,
and dsps_musb_dbg_init() will be called again. debugfs_create_dir()
will fail this time, as the node already exists, and so the entire
device probe will fail with -ENOMEM.
Fix this by moving debugfs_remove_recursive() from dsps_remove()
to the plaform's exit function, so it will be cleanly torn down when
the probe fails. It also feels more natural this way, as .exit is the
counterpart to .init.
Signed-off-by: Daniel Mack zon...@gmail.com
Signed-off-by: Felipe Balbi ba...@ti.com
diff --git a/drivers/usb/musb/musb_dsps.c
b/drivers/usb/musb/musb_dsps.c index 3372ded..e2fd263 100644
--- a/drivers/usb/musb/musb_dsps.c
+++ b/drivers/usb/musb/musb_dsps.c
@@ -470,8 +470,9 @@ static int dsps_musb_exit(struct musb *musb)
struct dsps_glue *glue = dev_get_drvdata(dev-parent);
del_timer_sync(glue-timer);
-
usb_phy_shutdown(musb-xceiv);
+ debugfs_remove_recursive(glue-dbgfs_root);
+
return 0;
}
@@ -708,8 +709,6 @@ static int dsps_remove(struct platform_device
*pdev) pm_runtime_put(pdev-dev);
pm_runtime_disable(pdev-dev);
- debugfs_remove_recursive(glue-dbgfs_root);
-
return 0;
}
a pull request has already been sent to Greg, should be in v3.15-rc3
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html