Re: linux 3.6-rc2, undefined reference to omap_musb_mailbox

2012-09-05 Thread Pantelis Antoniou
Felipe,

That seems like what this patch of mine fixes (was about to send it when
I saw this on my mailbox).

It is not enough to just do a dependency; the patch fixes it by having
a helper that's always resident, and also making sure we don't drop
events.

Regards

-- Pantelis

On Aug 24, 2012, at 10:27 AM, Felipe Balbi wrote:

> On Thu, Aug 23, 2012 at 10:38:59PM +0200, Peter Meerwald wrote:
>> On Mon, 20 Aug 2012, Felipe Balbi wrote:
>> 
>>> On Mon, Aug 20, 2012 at 04:37:28PM +0530, ABRAHAM, KISHON VIJAY wrote:
>>>> Hi,
>>>> 
>>>> On Mon, Aug 20, 2012 at 3:56 PM, Felipe Balbi  wrote:
>>>>> On Mon, Aug 20, 2012 at 03:46:07PM +0530, ABRAHAM, KISHON VIJAY wrote:
>>>>>> Hi,
>>>>>> 
>>>>>> On Mon, Aug 20, 2012 at 3:24 PM, Felipe Balbi  wrote:
>>>>>>> On Mon, Aug 20, 2012 at 11:06:34AM +0530, ABRAHAM, KISHON VIJAY wrote:
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> On Sat, Aug 18, 2012 at 9:34 PM, Peter Meerwald  
>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> 3.6-rc2 fails to compile with
>>>>>>>>> CONFIG_USB_MUSB_HDRC=m
>>>>>>>>> CONFIG_USB_MUSB_OMAP2PLUS=m
>>>>>>>>> 
>>>>>>>>>  LD  init/built-in.o
>>>>>>>>> drivers/built-in.o: In function `twl4030_usb_irq':
>>>>>>>>> /home/pmeerw/linux-3.6-rc2/drivers/usb/otg/twl4030-usb.c:518: 
>>>>>>>>> undefined reference to `omap_musb_mailbox'
>>>>>>>>> drivers/built-in.o: In function `twl4030_usb_phy_init':
>>>>>>>>> /home/pmeerw/linux-3.6-rc2/drivers/usb/otg/twl4030-usb.c:540: 
>>>>>>>>> undefined reference to `omap_musb_mailbox'
>>>>>>>> 
>>>>>>>> Having TWL4030_USB as a module will get rid of this.
>>>>>>>> I'll see how this can be resolved when some modules are *built-in* and
>>>>>>>> some are made as *modules*.
>>>>>>> 
>>>>>>> EXPORT_SYMBOL_GPL() should sort that out, right ?
>>>>>> 
>>>>>> No :-( I already have EXPORT_SYMBOL_GPL() in omap2430.c.
>>>>> 
>>>>> I see you're missing an "extern" on the function prototype (on the
>>>>> header). Not sure how modules.dep is generated, but maybe it needs the
>>>>> "extern" there. Can you check it out ?
>>>> 
>>>> That isn't helping either.
>>> 
>>> oh, ok... twl4030-usb is built-in... now that makes sense. Since
>>> twl4030-usb uses a symbol from omap2430, then it should depend on it,
>>> otherwise this will always happen.
>> 
>> so add USB_MUSB_OMAP2PLUS to the depends of TWL4030_USB in 
>> drivers/usb/otg/Kconfig?
> 
> correct ;-)
> 
> -- 
> balbi

commit e191e7226099d90ba077719313d4964cf42834ca
Author: Pantelis Antoniou 
Date:   Fri Aug 10 13:07:43 2012 +

musb: Introduce mailbox helper

When MUSB_OMAP2 is compiled as a module while the musb mailbox callers are
not build fails. Introduce a helper to get around the problem.

diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
index f5ed3d7..6a868bc 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -53,6 +53,7 @@ obj-$(CONFIG_USB_ATM) += atm/
 obj-$(CONFIG_USB_SPEEDTOUCH)   += atm/
 
 obj-$(CONFIG_USB_MUSB_HDRC)+= musb/
+obj-$(CONFIG_USB_MUSB_OMAP2PLUS_MBOX_HELPER)   += musb/
 obj-$(CONFIG_USB_CHIPIDEA) += chipidea/
 obj-$(CONFIG_USB_RENESAS_USBHS)+= renesas_usbhs/
 obj-$(CONFIG_USB_GADGET)   += gadget/
diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
index 6259f0d..9201c3e 100644
--- a/drivers/usb/musb/Kconfig
+++ b/drivers/usb/musb/Kconfig
@@ -50,6 +50,7 @@ config USB_MUSB_TUSB6010
 config USB_MUSB_OMAP2PLUS
tristate "OMAP2430 and onwards"
depends on ARCH_OMAP2PLUS
+   select USB_MUSB_OMAP2PLUS_MBOX_HELPER
 
 config USB_MUSB_AM35X
tristate "AM35x"
@@ -69,6 +70,9 @@ config USB_MUSB_UX500
 
 endchoice
 
+config USB_MUSB_OMAP2PLUS_MBOX_HELPER
+   bool
+
 choice
prompt 'MUSB DMA mode'
default USB_UX500_DMA if USB_MUSB_UX500
diff --git a/drivers/usb/musb/Makefile b/drivers/usb/musb/Makefile
index 3b85871..9126fa2 100644
--- a/drivers/usb/musb/Makefile
+++ b/drivers/usb/musb/Makefile
@@ -12,6 +12,7 @@ musb_hdrc-$(CONFIG_DEBUG_FS)  += 
musb_debugfs.o
 
 # Hardware Glue Lay

[PATCH] musb: Kill __init from function that are called at other times as well.

2012-09-05 Thread Pantelis Antoniou
Marking functions as __init or __devinit and calling them at other times
leads to predictable crashes (if you're lucky).

Remove them for now.

Signed-off-by: Pantelis Antoniou 
---
 drivers/usb/musb/musb_core.c| 16 
 drivers/usb/musb/musb_debugfs.c |  2 +-
 drivers/usb/musb/musb_dma.h |  2 +-
 drivers/usb/musb/musb_gadget.c  |  6 +++---
 drivers/usb/musb/musbhsdma.c|  2 +-
 drivers/usb/musb/omap2430.c |  2 +-
 6 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index 26f1bef..215d2d5 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1160,7 +1160,7 @@ static struct musb_fifo_cfg __devinitdata mode_5_cfg[] = {
  *
  * returns negative errno or offset for next fifo.
  */
-static int __devinit
+static int
 fifo_setup(struct musb *musb, struct musb_hw_ep  *hw_ep,
const struct musb_fifo_cfg *cfg, u16 offset)
 {
@@ -1235,7 +1235,7 @@ static struct musb_fifo_cfg __devinitdata ep0_cfg = {
.style = FIFO_RXTX, .maxpacket = 64,
 };
 
-static int __devinit ep_config_from_table(struct musb *musb)
+static int ep_config_from_table(struct musb *musb)
 {
const struct musb_fifo_cfg  *cfg;
unsignedi, n;
@@ -1326,7 +1326,7 @@ done:
  * ep_config_from_hw - when MUSB_C_DYNFIFO_DEF is false
  * @param musb the controller
  */
-static int __devinit ep_config_from_hw(struct musb *musb)
+static int ep_config_from_hw(struct musb *musb)
 {
u8 epnum = 0;
struct musb_hw_ep *hw_ep;
@@ -1373,7 +1373,7 @@ enum { MUSB_CONTROLLER_MHDRC, MUSB_CONTROLLER_HDRC, };
 /* Initialize MUSB (M)HDRC part of the USB hardware subsystem;
  * configure endpoints, or take their config from silicon
  */
-static int __devinit musb_core_init(u16 musb_type, struct musb *musb)
+static int musb_core_init(u16 musb_type, struct musb *musb)
 {
u8 reg;
char *type;
@@ -1797,7 +1797,7 @@ static void musb_irq_work(struct work_struct *data)
  * Init support
  */
 
-static struct musb *__devinit
+static struct musb *
 allocate_instance(struct device *dev,
struct musb_hdrc_config *config, void __iomem *mbase)
 {
@@ -1873,7 +1873,7 @@ static void musb_free(struct musb *musb)
  * @mregs: virtual address of controller registers,
  * not yet corrected for platform-specific offsets
  */
-static int __devinit
+static int
 musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
 {
int status;
@@ -2101,7 +2101,7 @@ fail0:
 static u64 *orig_dma_mask;
 #endif
 
-static int __devinit musb_probe(struct platform_device *pdev)
+static int musb_probe(struct platform_device *pdev)
 {
struct device   *dev = &pdev->dev;
int irq = platform_get_irq_byname(pdev, "mc");
@@ -2397,7 +2397,7 @@ static struct platform_driver musb_driver = {
 
 /*-*/
 
-static int __init musb_init(void)
+static int /* __init */ musb_init(void)
 {
if (usb_disabled())
return 0;
diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
index 40a37c9..8f8597d 100644
--- a/drivers/usb/musb/musb_debugfs.c
+++ b/drivers/usb/musb/musb_debugfs.c
@@ -235,7 +235,7 @@ static const struct file_operations musb_test_mode_fops = {
.release= single_release,
 };
 
-int __devinit musb_init_debugfs(struct musb *musb)
+int musb_init_debugfs(struct musb *musb)
 {
struct dentry   *root;
struct dentry   *file;
diff --git a/drivers/usb/musb/musb_dma.h b/drivers/usb/musb/musb_dma.h
index 3a97c4e..69254c8 100644
--- a/drivers/usb/musb/musb_dma.h
+++ b/drivers/usb/musb/musb_dma.h
@@ -178,7 +178,7 @@ struct dma_controller {
 extern void musb_dma_completion(struct musb *musb, u8 epnum, u8 transmit);
 
 
-extern struct dma_controller *__init
+extern struct dma_controller * /* __init */
 dma_controller_create(struct musb *, void __iomem *);
 
 extern void dma_controller_destroy(struct dma_controller *);
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index f7194cf..f3d9f4e 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1795,7 +1795,7 @@ static void musb_gadget_release(struct device *dev)
 }
 
 
-static void __devinit
+static void
 init_peripheral_ep(struct musb *musb, struct musb_ep *ep, u8 epnum, int is_in)
 {
struct musb_hw_ep   *hw_ep = musb->endpoints + epnum;
@@ -1832,7 +1832,7 @@ init_peripheral_ep(struct musb *musb, struct musb_ep *ep, 
u8 epnum, int is_in)
  * Initialize the endpoints exposed to peripheral drivers, with backlinks
  * to the rest of the driver state.
  */
-static inline void __devinit musb_g_init_endpoints(struct musb *musb)
+static inline void musb_g_init_endpoints(struct musb *musb)
 {
u8  epnum;

Re: [PATCH] musb: Kill __init from function that are called at other times as well.

2012-09-06 Thread Pantelis Antoniou
Hi Felipe,

A proper answer required some instrumentation printks().

So what I did is that I peppered each function marked with a removed
__init or __devinit with a 

> printk(KERN_INFO "%s:%d (%s) %s\n", __FILE__, __LINE__, KBUILD_MODNAME, 
> __func__);
> 

Both omap2430 & musb_hdrc are compiled as module, and I issued the following 
commands on a beagleboard xm.

# modprobe omap2430
# modprobe g_mass_storage file=backing_file
# rmmod g_mass_storage
# rmmod omap2430
# modprobe omap2430

The problem is obvious when you see that functions marked as init or devinit are
called when re-loading the omap2430 module again. Those functions if marked as
much can (and will as I have witnessed) be removed from memory, leading to a 
crash.

What do you think?

Regards

-- Pantelis


On Sep 6, 2012, at 4:04 PM, Felipe Balbi wrote:

> On Thu, Sep 06, 2012 at 05:01:46PM +0300, Pantelis Antoniou wrote:
>> Marking functions as __init or __devinit and calling them at other times
>> leads to predictable crashes (if you're lucky).
>> 
>> Remove them for now.
>> 
>> Signed-off-by: Pantelis Antoniou 
>> ---
>> drivers/usb/musb/musb_core.c| 16 
>> drivers/usb/musb/musb_debugfs.c |  2 +-
>> drivers/usb/musb/musb_dma.h |  2 +-
>> drivers/usb/musb/musb_gadget.c  |  6 +++---
>> drivers/usb/musb/musbhsdma.c|  2 +-
>> drivers/usb/musb/omap2430.c |  2 +-
>> 6 files changed, 15 insertions(+), 15 deletions(-)
>> 
>> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
>> index 26f1bef..215d2d5 100644
>> --- a/drivers/usb/musb/musb_core.c
>> +++ b/drivers/usb/musb/musb_core.c
>> @@ -1160,7 +1160,7 @@ static struct musb_fifo_cfg __devinitdata mode_5_cfg[] 
>> = {
>>  *
>>  * returns negative errno or offset for next fifo.
>>  */
>> -static int __devinit
>> +static int
>> fifo_setup(struct musb *musb, struct musb_hw_ep  *hw_ep,
>>  const struct musb_fifo_cfg *cfg, u16 offset)
> 
> Are you sure all these functions are called from outside .init.text ? At
> least fifo_setup(), ep_config_from_table() and musb_core_init() are only
> during probe(), which sits in .init.text too.
> 
> -- 
> balbi


Log...

> root@beagleboard:~# modprobe omap2430 
> [  114.643920] drivers/usb/musb/omap2430.c:584 (omap2430) omap2430_init
> [  114.650939] drivers/usb/musb/omap2430.c:445 (omap2430) omap2430_probe
> [  114.792205] drivers/usb/musb/musb_core.c:2409 (musb_hdrc) musb_init
> [  114.798889] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
> [  114.805358] drivers/usb/musb/musb_core.c:2118 (musb_hdrc) musb_probe
> [  114.812225] drivers/usb/musb/musb_core.c:1888 (musb_hdrc) 
> musb_init_controller
> [  114.819824] drivers/usb/musb/musb_core.c:1813 (musb_hdrc) allocate_instance
> [  114.835723] twl4030_usb twl4030_usb: twl4030_phy_resume
> [  114.841339] drivers/usb/musb/musbhsdma.c:391 (musb_hdrc) 
> dma_controller_create
> [  114.848999] drivers/usb/musb/musb_core.c:1388 (musb_hdrc) musb_core_init
> [  114.856079] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, 
> bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
> [  114.867095] musb-hdrc: MHDRC RTL version 1.800 
> [  114.871887] drivers/usb/musb/musb_core.c:1246 (musb_hdrc) 
> ep_config_from_table
> [  114.879486] musb-hdrc: setup fifo_mode 4
> [  114.883666] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.890319] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.897033] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.903686] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.910369] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.917083] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.923767] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.930480] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.937133] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.943817] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.950500] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.957183] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.963867] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.970550] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.977264] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.983947] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.990631] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  114.997314] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  115.003997] drivers/usb/musb/musb_core.c:1173 

Re: [PATCH] musb: Kill __init from function that are called at other times as well.

2012-09-06 Thread Pantelis Antoniou
Hi Felipe

I see about __devinit.
There's no crash because in those logs the __init modifiers are gone.

Regards

-- Pantelis


On Sep 6, 2012, at 8:07 PM, Felipe Balbi wrote:

> Hi,
> 
> On Thu, Sep 06, 2012 at 05:58:27PM +0300, Pantelis Antoniou wrote:
>> Hi Felipe,
>> 
>> A proper answer required some instrumentation printks().
>> 
>> So what I did is that I peppered each function marked with a removed
>> __init or __devinit with a 
>> 
>>> printk(KERN_INFO "%s:%d (%s) %s\n", __FILE__, __LINE__, KBUILD_MODNAME, 
>>> __func__);
>>> 
>> 
>> Both omap2430 & musb_hdrc are compiled as module, and I issued the following 
>> commands on a beagleboard xm.
>> 
>> # modprobe omap2430
>> # modprobe g_mass_storage file=backing_file
>> # rmmod g_mass_storage
>> # rmmod omap2430
>> # modprobe omap2430
>> 
>> The problem is obvious when you see that functions marked as init or devinit 
>> are
>> called when re-loading the omap2430 module again. Those functions if marked 
>> as
>> much can (and will as I have witnessed) be removed from memory, leading to a 
>> crash.
>> 
>> What do you think?
> 
> the problem would be with usage of __init. __devinit will only drop
> .devinit.text if HOTPLUG and MODULE isn't set, AFAICT. I also can't see
> a crash on below logs.
> 
> -- 
> balbi

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] musb: Kill __init from function that are called at other times as well.

2012-09-06 Thread Pantelis Antoniou

On Sep 6, 2012, at 8:37 PM, Felipe Balbi wrote:

> Hi,
> 
> On Thu, Sep 06, 2012 at 08:36:39PM +0300, Pantelis Antoniou wrote:
>> Hi Felipe
>> 
>> I see about __devinit.
>> There's no crash because in those logs the __init modifiers are gone.
> 
> it'd be cool to see the crash, though ;-)
> 
> -- 
> balbi

Heh, OK,

My word is not enough? :)

Gimme a few minutes...

-- Pantelis

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] musb: Kill __init from function that are called at other times as well.

2012-09-06 Thread Pantelis Antoniou
Hi Felipe,

On Sep 6, 2012, at 8:41 PM, Felipe Balbi wrote:

> Hi,
> 
> On Thu, Sep 06, 2012 at 08:42:56PM +0300, Pantelis Antoniou wrote:
>> 
>> On Sep 6, 2012, at 8:37 PM, Felipe Balbi wrote:
>> 
>>> Hi,
>>> 
>>> On Thu, Sep 06, 2012 at 08:36:39PM +0300, Pantelis Antoniou wrote:
>>>> Hi Felipe
>>>> 
>>>> I see about __devinit.
>>>> There's no crash because in those logs the __init modifiers are gone.
>>> 
>>> it'd be cool to see the crash, though ;-)
>>> 
>>> -- 
>>> balbi
>> 
>> Heh, OK,
>> 
>> My word is not enough? :)
>> 
>> Gimme a few minutes...
> 
> Didn't say that, but I don't know what issue you're talking about since
> __devinit is supposed to keep .devinit.text intact unless !HOTPLUG.
> 
> This could be a bug on some linker script (though unlikely) just trying
> to get understand the issue before I apply the patch, that's all.
> 
> -- 
> balbi

With my init removal patch reverted, but with the instrumentation printk still 
in
Board hanged this time. It is not certain you will crash, you might get a hang 
or
anything else. It all depends on what kind of garbage is there in memory when 
you
start calling into the void.

The results are boundedly undefined :)

Regards

-- Pantelis
  
 
> root@beagleboard:~# modprobe omap2430
> [  119.741851] drivers/usb/musb/omap2430.c:584 (omap2430) omap2430_init
> [  119.748870] drivers/usb/musb/omap2430.c:445 (omap2430) omap2430_probe
> root@beagleboard:~# [  119.797760] drivers/usb/musb/musb_core.c:2409 
> (musb_hdrc) musb_init
> [  119.804504] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
> [  119.811004] drivers/usb/musb/musb_core.c:2118 (musb_hdrc) musb_probe
> [  119.817962] drivers/usb/musb/musb_core.c:1888 (musb_hdrc) 
> musb_init_controller
> [  119.825622] drivers/usb/musb/musb_core.c:1813 (musb_hdrc) allocate_instance
> [  119.841735] twl4030_usb twl4030_usb: twl4030_phy_resume
> [  119.847290] drivers/usb/musb/musbhsdma.c:391 (musb_hdrc) 
> dma_controller_create
> [  119.855041] drivers/usb/musb/musb_core.c:1388 (musb_hdrc) musb_core_init
> [  119.862121] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, 
> bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
> [  119.873229] musb-hdrc: MHDRC RTL version 1.800 
> [  119.877990] drivers/usb/musb/musb_core.c:1246 (musb_hdrc) 
> ep_config_from_table
> [  119.885620] musb-hdrc: setup fifo_mode 4
> [  119.889801] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.896514] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.903228] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.909912] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.916625] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.923339] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.930084] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.936798] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.943542] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.950256] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.956939] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.963653] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.970367] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.977081] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.983825] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.990539] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  119.997253] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.003936] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.010650] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.017364] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.024078] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.030792] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.037536] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.044250] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.050933] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.057678] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.064392] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.071105] drivers/usb/musb/musb_core.c:1173 (musb_hdrc) fifo_setup
> [  120.077819] musb-hdrc: 28/31 max ep, 16384/16384 memory
> [  120.083587] drivers/usb/musb/musb_gadget.c:1879 (musb_hdrc) 
> musb_gadget_setup
> [  120.091156] d