* Re: Intel graphics CPU usage - SDVO detect bogosity?
[not found] ` <AANLkTinfYBC0=DOzWaGD0DrGH8+M_rFRtuzHrM4yjRxx@mail.gmail.com>
@ 2010-08-16 14:27 ` Andy Lutomirski
2010-08-16 15:13 ` [Intel-gfx] " Adam Jackson
0 siblings, 1 reply; 2+ messages in thread
From: Andy Lutomirski @ 2010-08-16 14:27 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-kernel, DRI mailing list, intel-gfx
[cc: intel-gfx]
Linus Torvalds wrote:
> On Sun, Aug 15, 2010 at 9:06 PM, Andy Lutomirski <luto@myrealbox.com> wrote:
>> You might be hitting the infamous hotplug storm [1]. The symptoms vary by
>> kernel version.
>
> Hmm. I don't think it's a storm. The drm.debug=4 thing shows things
> just every 10 seconds. That seems pretty controlled.
OK, probably not the hotplug storm. That's always been at least once per
second and sometimes several for me.
>
> Of course, it seems to be several milliseconds worth of work then, so
> it's not _too_ controlled. I must be missing some detail.
>
>> If I'm right, the outputs of intel_bios_dumper and intel_bios_reader could
>> be instructive (both are in intel-gpu-tools).
>
> My version of intel-gpu-tools must be old (fedora 12). It has
> intel_gpu_dump and intel_reg_write and some other apps, but not the
> bios-dumper/reader.
>
> Not that I could read the output of them anyway, I bet ;)
>
>> You could also try intel_reg_write 0x61110 0x0 and see if the problem stops
>> (at least until a suspend/resume cycle). That command turns off output
>> hotplug on the card, which has the side effect that the kernel will stop
>> acting on bogus interrupts.
>
> # intel_reg_write 0x61110 0x0
> Value before: 0x4000220
> Value after: 0x0
>
> but it doesn't seem to change any behavior. Still that sdvo probe
> every 10 s, and still 1% of CPU for kworker in top. But that kworker
> thing definitely has to be separate from the 10-second sdvo probe,
> because it shows up all the time (ie top updates every second).
Almost certainly not the hotplug storm bug.
The 10 seconds is probably the timer in output_poll_execute (drm_crtc_helper.c):
#define DRM_OUTPUT_POLL_PERIOD (10*HZ)
The code in output_poll_execute (which is in your perf output) looks wrong:
list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
/* if this is HPD or polled don't check it -
TV out for instance */
if (!connector->polled)
continue;
else if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT))
repoll = true;
[ so if we have DRM_CONNECTOR_POLL_CONNECT set we requeue the *entire*
work item. or if we have DRM_CONNECTOR_POLL_DISCONNECT and it's not
even connected, we still poll. ]
old_status = connector->status;
/* if we are connected and don't want to poll for disconnect
skip it */
if (old_status == connector_status_connected &&
!(connector->polled & DRM_CONNECTOR_POLL_DISCONNECT) &&
!(connector->polled & DRM_CONNECTOR_POLL_HPD))
continue;
[ but if the status isn't connector_status_connected, we poll it even if we're
only in here due to a *different* connector ]
status = connector->funcs->detect(connector);
[ ->detect is the expensive part ]
if (old_status != status)
changed = true;
}
But that's really the problem, because intel_sdvo_dvi_init contains:
connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
I don't know if SDVO is supposed to send hotplug interrupts because that section of the docs is incomplete.
--Andy
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Intel-gfx] Intel graphics CPU usage - SDVO detect bogosity?
2010-08-16 14:27 ` Intel graphics CPU usage - SDVO detect bogosity? Andy Lutomirski
@ 2010-08-16 15:13 ` Adam Jackson
0 siblings, 0 replies; 2+ messages in thread
From: Adam Jackson @ 2010-08-16 15:13 UTC (permalink / raw)
To: Andy Lutomirski; +Cc: Linus Torvalds, intel-gfx, linux-kernel, DRI mailing list
[-- Attachment #1: Type: text/plain, Size: 1095 bytes --]
On Mon, 2010-08-16 at 10:27 -0400, Andy Lutomirski wrote:
> But that's really the problem, because intel_sdvo_dvi_init contains:
>
> connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
>
> I don't know if SDVO is supposed to send hotplug interrupts because
> that section of the docs is incomplete.
SDVO can generate interrupts, although a particular SDVO output type
might not. (The G45 docs are missing this section, but the 965 docs are
applicable.) We don't have that turned on, of course, because that
would be entirely too sensible.
You'd probably need to uncomment the #if 0'd intel_sdvo_set_hotplug() in
intel_sdvo.c, and call that from the appropriate bit of
intel_sdvo_init(). For pre-gen4 you'd probably also need to set
SDVO_INTERRUPT_ENABLE in the appropriate SDVOx register, but in gen4+
that bit is used for bpc selection.
Having done that you'd then need to wait the inevitable six months to
find out which SDVO devices actually have functioning hotplug and which
ones are just plain lying about it.
- ajax
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-08-16 15:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <AANLkTi=NFpeyo7Q31yMfqKSP2c-2OS2ccqa=Q9CQ8bpk@mail.gmail.com>
[not found] ` <4C68B92B.3080406@myrealbox.com>
[not found] ` <AANLkTinfYBC0=DOzWaGD0DrGH8+M_rFRtuzHrM4yjRxx@mail.gmail.com>
2010-08-16 14:27 ` Intel graphics CPU usage - SDVO detect bogosity? Andy Lutomirski
2010-08-16 15:13 ` [Intel-gfx] " Adam Jackson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox