Thanks for digging into this problem.
Here are a few more things to try according to your feedback.

> On Sun, 26 May 2002, hy0 wrote:
>
> > This one (VT switching lockup with DRI) has been haunting us for a
> > while. It appears to be hardware (Agp chipset) related.
>
> Yes, and here is something a bit odd:  in one of my boxes, replacing a
> Tyan S2460 motherboard (AMD 760MP chipset) with an ASUS A7M266-D
> motherboard (AMD 760MPX chipset) got rid of the problem.  But the 760MP
> and 760MPX chipset have the same northbridge, the AMD 762, and differ only
> in the southbridge (AMD 766 vs AMD 768).  I just checked, the two boards
> have the same revision of the AMD 762.  So shouldn't these motherboards be
> identical from the AGP point of view?  Unless the BIOSes set up the
> northbridge differently on each machine.

What does the "[agp] Mode..." line say with ASUS A7M266-D motherboard?

> > Unfortunately I can't reproduce this problem on all my boxes. There are
> > a few things you can try to narrow the problem down:
> >
> > 1. What is the agp mode used by drmAgpEnable call? This should already
> > be in your log file -- search for '[agp] Mode' line.
>
> If I don't put any Option AGPMode line in my XF86Config, it reads
> "[agp] Mode 0x0f000211 [AGP 0x1022/0x700c; Card 0x1002/0x5159]".  With
> Option AGPMode 4, the first hex value is instead 0x0f000217.

Right before drmAgpEnable call in radeon_dri.c, try to add following line:
mode = 0x1f000201;
Can it make any difference?
(After making the change, you don't need to recompile the whole X server,
just go to ...xfree86/drivers/ati directory do a make install there, then
restart X)

> > 2. Try to verify if the lockup happens in RADEONCP_START call (from
> > RADEONEnterVT in radeon_driver.c). If you can still remote login or do a
> > hot reboot after the lockup, this can be easily verified by adding some
> > log messages around that call.
>
> It happens after RADEONCP_START.  Well, I decided to try all your
> suggestions at once (see below), so all I can say is that with sleep(1)
> before and after RADEONCP_START, the lockup happens after RADEONCP_START.
>
> > Also what does the dmesg say after the lockup?
>
> Nothing--the lockup appears to be only X (and hence the console).  I don't
> have a machine handy to remotely login with, but if I did, I bet I could
> kill X and then if I could reinitialize the video card and console, I'd be
> back in business.
>
> > 3. Since you can see some drawings, the lockup seems to happen later
> > (after the CP_START call). If that's the case, try to add some delay
> > (sleep(1)) before and after RADEONCP_START in RADEONEnterVT. If it
> > doesn't help, you can add a "return;" right after "a->sync = ..." in
> > RADEONCPAccelInit of radeon_accel.c. This will disable all 2D
> > acceleration routines, just to see
>
> OK, I decided to try everything you suggested at once, so as to only
> recompile X once.  Below is first the patch I used (relative to the
> directory xc/programs/Xserver/hw/xfree86/drivers/ati), then the full
> XFree86.0.log.  I turned on RADEON_DEBUG, and I had to fix a couple things
> to get it to compile with RADEON_DEBUG turned on.
>
> I should note that without this patch, when switching back to X, it just
> shows the screen with the top just garbage, then is frozen (I'm guessing
> this is because the chipset is reconfigured for the graphics display, and
> it is just showing the contents of the framebuffer, which is what it was
> when I switched to the text VT, but the top part was scribbled over by the
> text VT).  With the patch, there's clearly three different screens: first
> I would say the screen with the top scribbled, then the screen without the
> top scribbled, but it is still not quite right (maybe the border is
> funny?), then the screen with the top scribbled again.  Anyway, it was
> still kind of fast, so I don't know if my impressions are accurate or that
> useful.

Add a trace after DRIUnlock in RADEONEnterVT, just in case it locks up there
(unlikely though).
Leave all acceleration routines disabled (return after  a->Sync =
RADEONCPWaitForIdle). In RADEONCPWaitForIdle of radeon_accel.c, comment off
FLUSH_RING() and add a log message there. Also add a trace right after
drmATIWaitForIdleCP call, check what this call returns.

Hopefully this can further narrow down where the lockup occurs. Thanks.

Hui

> Cheers,
> Wayne
>



_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm

_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to