multi-card breakage

Pierre-Loup A. Griffais pgriffais at nvidia.com
Tue May 4 13:21:55 PDT 2010


Tiago,

I just reproduced something that sounds like what you're describing with two 
R520 cards (one X screen per card) and the 'radeon' driver. However, it seems 
unrelated to my change; that's what the hang looks like:

575	    VGAGet();
(gdb) bt
#0  VGAarbiterCreateGC (pGC=0x83ebab0)
     at ../../../../hw/xfree86/common/xf86VGAarbiter.c:575
#1  0x080777ba in CreateGC (pDrawable=0x82d8d78, mask=<value optimized out>,
     pval=0xbffff534, pStatus=0xbffff53c, gcid=0, client=0x81ffca8)
     at ../../dix/gc.c:647
#2  0x0819e612 in miDCMakeGC (pWin=0x82b5530) at ../../mi/midispcur.c:422
#3  0x0819e7c4 in miDCDeviceInitialize (pDev=0x83ebdf0, pScreen=0x8263688)
     at ../../mi/midispcur.c:790
#4  0x081c48cf in miSpriteDeviceCursorInitialize (pDev=0x83ebdf0,
     pScreen=0x8263688) at ../../mi/misprite.c:949
#5  0x08186364 in xf86DeviceCursorInitialize (pDev=0x83ebdf0,
     pScreen=0x8263688) at ../../../../hw/xfree86/ramdac/xf86Cursor.c:453
#6  0x081672ba in VGAarbiterDeviceCursorInitialize (pDev=0x83ebdf0,
     pScreen=0x8263688) at ../../../../hw/xfree86/common/xf86VGAarbiter.c:1035
#7  0x080a1e0c in miPointerDeviceInitialize (pDev=0x83ebdf0, pScreen=0x8263688)
     at ../../mi/mipointer.c:283
#8  0x08087ed5 in ActivateDevice (dev=0x83ebdf0, sendevent=1 '\001')
     at ../../dix/devices.c:477
#9  0x08088f08 in InitCoreDevices () at ../../dix/devices.c:610
#10 0x08066d18 in main (argc=1, argv=0xbffff8a4, envp=0xbffff8ac)
     at ../../dix/main.c:255

The reason my change exposes this bug is that it creates a GC attached to the 
second screen upfront. If I roll it back, I still get the same hang after trying 
to move a SW cursor to the second screen of connecting an X client to the second 
screen. Looking at the X log, I see:

(II) RADEON(1): PCIE card detected
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/lib/xorg/modules/libint10.so
(II) RADEON(1): initializing int10
(EE) RADEON(1): Cannot read V_BIOS (3) Input/output error
(WW) RADEON(1): Failed to read PCI ROM!
(II) RADEON(1): Attempting to read un-POSTed bios

and in the kernel log:

[ 1240.582149] pci 0000:05:00.0: Invalid ROM contents

That means the VGA arbiter tried to switch VGA access to an un-posted device, 
which is presumably the cause of the hang. It seems like the X screen should 
fail ScreenInit() and get discarded after initializing int10 fails. Whatever the 
reason behind that is, the driver ought to fail more gracefully.

In any case, I'm guessing you have similar spew in your logs?

Thanks,
  - Pierre-Loup

On 05/04/2010 10:28 AM, Pierre-Loup A. Griffais wrote:
> Tiago,
>
> This commit fixes the SW cursor with several screens, so the "multi-card case"
> is more or less the point of the change. Can you be more specific about the
> problems you're having and your testing environment? Do you have the SW cursor
> forced on?
>
> Removing the dependency on devPrivates from this layer is way outside the scope
> of this patch.
>
> Thanks,
>    - Pierre-Loup
>
> On 05/04/2010 07:10 AM, Tiago Vignatti wrote:
>> Pierre and Peter,
>>
>>
>> commit 518f3b189b6c8aa28b62837d14309fd06163ccbb
>> Author: Pierre-Loup A. Griffais<pgriffais at nvidia.com>
>> Date:   Wed Apr 21 16:46:17 2010 -0700
>>
>>       mi: don't thrash resources when displaying the software cursor across screens
>>
>>
>> This commit break my system in a very bizarre way that I cannot kill the
>> X server, neither use it anymore. I can reproduce it only when I set two video
>> cards by the server.
>>
>> I haven't checked the logic behind the commit to see exactly what's going
>> wrong. But I'd guess maybe your forgetting multi-card case? Also, we don't
>> want privates mechanism in these common layers, so you could cook a commit
>> without it.
>>
>>
>> Cheers,
>>
>>           Tiago
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list