* Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> [160330 12:26]: > On Wed, 30 Mar 2016, Ivaylo Dimitrov wrote: > > > >>> seems to be created twice :). Maybe the problem is that the first time > > >>> musb-hdrc is probed it fails with -EPROBE_DEFER, however that failure is > > >>> after gadget drivers got loaded and noone unloads them. > > >> > > >> gadget drivers will get added to a pending list, then later they'll > > >> bind. But they shouldn't bind() twice, unless there are multiple > > >> interfaces for them. > > >> > > > > > > Well, then it seems we have problem, as the 2 unbind() calls are with > > > one and the same "common" pointer (again, from memory). > > > > > >>> Just some wild guesses based on my memories as I've lost the logs (power > > >>> outage). For sure I can recreate them if needed. > > >> > > >> okay. > > > > > > I will redo dump_stack() and printks and will provide logs as soon as I > > > have some time, so to stop counting on my memories. > > > > > > > Please find attached the relevant logs. It really seems that g_nokia is > > probed twice, with all the gadgets in it created two times. I am > > starting to suspect 855ed04a3758b205e84b269f92d26ab36ed8e2f7 ("usb: > > gadget: udc-core: independent registration of gadgets and gadget > > drivers") has something to do with the problem, though reverting it > > resulted in g_nokia not being probed at all :) > > The problem is not caused by nokia_bind() getting called twice. The > log clearly shows that nokia_bind() is called only once, but it calls > usb_add_config() from two different places: > > Jan 1 02:00:10 Nokia-N900 kernel: [ 8.002838] [<c040c5b4>] (usb_add_config) from [<c041b274>] (nokia_bind+0x160/0x2f0) > Jan 1 02:00:10 Nokia-N900 kernel: [ 8.014526] [<c041b274>] (nokia_bind) from [<c040e128>] (composite_bind+0x68/0x1a0) > ... > Jan 1 02:00:10 Nokia-N900 kernel: [ 8.381286] [<c040c5b4>] (usb_add_config) from [<c041b28c>] (nokia_bind+0x178/0x2f0) > Jan 1 02:00:10 Nokia-N900 kernel: [ 8.394348] [<c041b28c>] (nokia_bind) from [<c040e128>] (composite_bind+0x68/0x1a0) > > Everything else along the two pathways is the same, so this is where > the multiple binds come from. And indeed, looking at the code in > nokia_bind() you can see the two calls: > > /* finally register the configuration */ > status = usb_add_config(cdev, &nokia_config_500ma_driver, > nokia_bind_config); > if (status < 0) > goto err_msg_luns; > > status = usb_add_config(cdev, &nokia_config_100ma_driver, > nokia_bind_config); > > This isn't supposed to cause any problems. The two instances should > never run at the same time, because they belong to different configs. Maybe drivers/usb/gadget/legacy/ether.c suffers from a similar issue as that's what I noticed the $subject problem with. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html