Thunderbolt, Apple Monitor & MBA, and excess kworker load

Dominik Brodowski linux at dominikbrodowski.net
Thu Jun 21 03:59:00 PDT 2012


On Wed, Jun 20, 2012 at 06:10:12PM +0200, Daniel Vetter wrote:
> On Wed, Jun 20, 2012 at 08:56:26AM -0700, Greg KH wrote:
> > On Wed, Jun 20, 2012 at 05:48:42PM +0200, Dominik Brodowski wrote:
> > > Hi,
> > > 
> > > At work, I wish to attach a 27" Apple Display using thunderbolt to my Mac
> > > Book Air 4,2 13". Using OS X, it works fine, but as I prefer using Linux, I
> > > tested out Ubuntu's stock kernel and (among other) 3.5.0-rc3+ as of f40759e.
> > > Hotplug doesn't work (known issue), but also with coldplug the display
> > > reacts _very_ slow, way too slow for real use: The screen updates only every
> > > half second or so. Is this a known bug? Might something go afoul with
> > > kworker -- they need about 75% of the CPU with the large display attached,
> > > and less than 1% _without_ the large display.
> > 
> > It's not really a known bug, but it is known that Thunderbolt doesn't
> > work all that well, if at all, in Linux due to the BIOS issues that you
> > have run into (the hotplug stuff.)

Is there anything where I could help?

> > Once the device is seen, it should just work like any other PCI device,
> > and so, that might be a DRM driver issue somehow.
> 
> A quick full-system profile would be a good start to tell where we're
> burning through all these cycles exaclty. Also, anything special going on
> with interrupts (if this excessive load is due to supurious display
> hotplug events, drm/i915 should get _tons_ of interrupts).

Did a $ perf record -a -g sleep 10 , and that shows:

-  11,67%      kworker/1:1  [kernel.kallsyms]
   + native_read_tsc
   + delay_tsc

-   9,56%      kworker/3:2  [kernel.kallsyms]
   + native_read_tsc
   + delay_tsc

and other uninteresting things. 

   $ echo workqueue:workqueue_queue_work > /sys/kernel/debug/tracing/set_event
   $ cat /sys/kernel/debug/tracing/trace_pipe

shows these top functions:

    305 i915_hotplug_work_func
    504 flush_to_ldisc
  14759 do_dbs_timer

so nothing of interest either. Interrupts: pretty normal.

Any ideas on how to debug this further?

Thanks & best,

	Dominik


More information about the dri-devel mailing list