lkml.org 
[lkml]   [2014]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
From
Subjecthigh cpu load on omap3 using musb
With a USB 2.0 webcam attached to the OTG port on an OMAP3 (applies to 
overo gumstix, beagleboard, probably others) we see a high CPU load in a
kworker thread.

Between 2.6.33 and 2.6.34 musb_core.c changed.

IRQ handlers changed with the result that a worker in musb_core.c got
scheduled far more frequently than needed.

I've included a patch below against 3.7, but i think it'll apply against
mainline.
[I apologize for any whitespace mangling. I've also attached the patch.]

I'd like more eyeballs to tell me if this is right. I'd also like to
know who I need to talk to to get this pushed into mainline.

--Adam

# The MUSB IRQ schedules work on every interrupt.
# This is unnecessary, and causes excessive CPU load.
#
# Here we only schedule work if there is something for
# the worker to do.

Index: git/drivers/usb/musb/musb_core.c
===================================================================
--- git.orig/drivers/usb/musb/musb_core.c
+++ git/drivers/usb/musb/musb_core.c
@@ -925,7 +925,9 @@ b_host:
}
#endif

- schedule_work(&musb->irq_work);
+ if (musb->xceiv->state != musb->xceiv_old_state) {
+ schedule_work(&musb->irq_work);
+ }

return handled;
}
# The MUSB IRQ schedules work on every interrupt.
# This is unnecessary, and causes excessive CPU load.
#
# Here we only schedule work if there is something for
# the worker to do.

Index: git/drivers/usb/musb/musb_core.c
===================================================================
--- git.orig/drivers/usb/musb/musb_core.c
+++ git/drivers/usb/musb/musb_core.c
@@ -925,7 +925,9 @@ b_host:
}
#endif

- schedule_work(&musb->irq_work);
+ if (musb->xceiv->state != musb->xceiv_old_state) {
+ schedule_work(&musb->irq_work);
+ }

return handled;
}
\
 
 \ /
  Last update: 2014-01-29 18:21    [W:0.067 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site