[Nouveau] nouveau interrupts firewire ISO streaming

Maarten Maathuis madman2003 at gmail.com
Thu Feb 4 03:19:14 PST 2010


On Thu, Feb 4, 2010 at 11:58 AM, Adrian Knoth <adi at drcomp.erfurt.thur.de> wrote:
> On Tue, Feb 02, 2010 at 02:35:04PM +0100, Maarten Maathuis wrote:
>
> Hi!
>
>> > When the X pointer changes from arrow to the vertical text selection
>> > bar, firewire streaming is interrupted. Same with scrolling in firefox
>> > or hovering over a link, thus changing the pointer to "hand".
>> >
>> > Looks like nouveau is disabling interrupts now and then, which leads to
>> > stalled firewire ISO streaming. I don't know what nouveau's actually
>> > doing, I'm just guessing. ;)
>> I don't think interrupts are disabled for uploading a cursor, more
>> likely is that your firewire driver depends on the big kernel lock.
>
> No, the firewire subsystem doesn't use BKL:
>
> adi at hex:/usr/src/linux-2.6.33-rc6/drivers/firewire$ grep lock_kernel *
> adi at hex:/usr/src/linux-2.6.33-rc6/drivers/firewire$ echo $?
> 1
>
> But I don't know what happens to a BKL-free subsystem when another
> subsystem calls lock_kernel.
>
>> At the moment we still hold that.
>
> I only found lock_kernel() in drm_drv.c and drm_fops.c, so I guess it's
> drm_ioctl, given that BKL is the culprit.
>
>
> I just removed the BKL around the func call, surprisingly, my system
> still worked with some minor image corruption, but it's exactly the same
> issue wrt firewire. So it might not be the BKL.
>
>
> What about DMA or PFIFO interrupts? I only read "interrupt" here, I
> don't know if they are local to the GPU or also reach other parts of the
> system. And uploading a cursor couldn't cause long DMA transfers, at
> least I guess.

It's mostly cpu copying the cursor. Now that i think of it, we keep a
copy of the cursor inside the kernel, so no need to make the userspace
side vram too. As a quick test you could try changing VRAM to GART
here http://cgit.freedesktop.org/nouveau/xf86-video-nouveau/tree/src/drmmode_display.c#n641.
Assuming you don't have an agp system, otherwise you will still be
reading from uncached memory anyway. libdrm doesn't seem prepared yet
to allocate system bo's (the kernel seems to be).

>
>
> Cheerio
>
> --
> mail: adi at thur.de       http://adi.thur.de      PGP/GPG: key via keyserver
>


More information about the Nouveau mailing list