Bugzilla – Bug 5341
System locks up when starting X w/ DRI on a Radeon RV370 (X300)
Last modified: 2008-01-11 12:10:14 UTC
Using DRM modules from DRM CVS and Xorg and Mesa from CVS (all taken as of
yesterday), the system locks up when starting X if DRI is enabled.
The same DRM/Xorg/Mesa combination works perfectly on a Radeon Mobility 9600
PCI ID of graphics card triggering the lockup: 1002:5b60, Subsystem 174b:0500
The same card with the same Xorg/Mesa works nicely (but without 3D) if I move
the radeon.ko kernel module out of the way.
Does changing option GARTSize to 16, 32 or 64 affect anything?
Also check that EnablePageFlip isnt true...
Same effect with GARTSize 16, 32 and 64 and an explicit Option
Last couple of lines from
mount -o remount,sync /
Xorg -verbose 9 &>X.log
(II) RADEON(0): [DRI] installation complete
(II) RADEON(0): [drm] Added 32 65536 byte vertex/indirect buffers
(II) RADEON(0): [drm] Mapped 32 vertex/indirect buffers
(II) RADEON(0): [drm] dma control initialized, using IRQ 10
(II) RADEON(0): [drm] Initialized kernel GART heap manager, 13369344
(II) RADEON(0): Direct rendering enabled
Does it work if you edit radeon_driver.c, function RADEONSetFBLocation() and
comment out those 2 lines:
The code that "calculates" those values is totally bogus imho and may conflict
with what the DRM is doing. I'll try to come up with a proper patch later, but
it would be interesting if that is the cause of your problem.
Removing those 2 lines doesn't change anything.
The same problem also occurs on a different brand X300 (PCI ID 1002:5b60,
Subsystem 196d:1070). Both machines showing this problem here are Athlon64
boxes running in 32bit mode.
I guess your card is a PCI express card? I have exactly the same problem with
PCI express X600 (5b62), but I am running 64-bit version of Linux on Athlon64.
Yes, all X300/X600/... cards are PCI Express.
The driver works perfectly on the AGP cards (at least as far as the 9600 is
FWIW, no problems here with an X550 (1002:5b60 / 174b:1490) with 64-bit
X11R6.9RC2 and the rest from CVS.
same on Xpress 200M (RV370 based). i think the lock only happens with cards
that didn't have memory on board and so have to share the ram.
Ok, let's try another one. In RADEONSetFBLocation(), comment out this one:
OUTREG (RADEON_BUS_CNTL, bus_cntl | RADEON_BUS_MASTER_DIS);
I tried commenting that line both with and without the previous two from comment
#3 and had no luck at all.
However I located the location where system crashes. On my system the crash
occurs when DRM tries to zero out the pci-gart table in function
drm_ati_pcigart_init on line 186 in ati_pcigart.c.
does you card have any onboard RAM??
I'm thinking I need to make some changes to the GART allocate for PCIE for those
types of cards..
My X600 has 128 MB DDR memory onboard.
can you attach a DRM log ?? echo 1 > /sys/module/drm/parameters/debug
though you might need a serial console to get it all...
Created attachment 4206 [details]
drm debug messages up to the point of the crash
(In reply to comment #14)
> Created an attachment (id=4206) 
> drm debug messages up to the point of the crash
Can you change the DRM_DEBUG in drivers/char/drm/radeon_cp.c
DRM_DEBUG("Setting phys_pci_gart to %p %08lX\n", dev_priv->gart_info.addr,
to also printout dev_priv->gart_info.bus_addr?
I'm wondering if there is some issue there...
Created attachment 4214 [details]
drm debug messages with gart_info.bus_addr
(In reply to comment #15)
> Can you change the DRM_DEBUG in drivers/char/drm/radeon_cp.c
> DRM_DEBUG("Setting phys_pci_gart to %p %08lX\n", dev_priv->gart_info.addr,
> to also printout dev_priv->gart_info.bus_addr?
> I'm wondering if there is some issue there...
Here you go
I got my X600 working under Linux/i386 with Ben's latests patches. I haven't
tried it without them yet. However, DRI still doesn't work under FreeBSD/amd64.
I had my serial console attached and got quite a lot debug data. It crashes in
radeon_cp_init_ring_buffer() with gpf. I'll try to compile a debug kernel with
all fancy debug data and find out the exact location.
Created attachment 4488 [details]
new full debug messages from FreeBSD from serial console
I'm afraid Ben's three patches did _not_ help my FreeBSD-6.0-STABLE (updated
1/30/06) system with an X300 PCIe Dell dual-head. I've also tried killing the
HyperThreading, the second head, etc., to no avail. This, on the standard X.org
6.9 as installed through ports. I remade xorg-libraries after patching the
(--) PCI:*(1:0:0) ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)] rev 0,
Mem @ 0xd0000000/27, 0xdfde0000/16, I/O @ 0xdc00/8, BIOS @ 0xdfe00000/17
(--) PCI: (1:0:1) ATI Technologies Inc RV370 [Radeon X300SE] rev 0, Mem @
The X log does not get written when it locks up. What else can I post that
Created attachment 4523 [details] [review]
Fix current DRM on FreeBSD
The virtual field of struct drm_sg_mem_t was not initialized in drm_sg_alloc
which caused crashes. This patch addresses this issue and also makes current
DRM compile on FreeBSD.
(In reply to comment #19)
> I'm afraid Ben's three patches did _not_ help my FreeBSD-6.0-STABLE (updated
> 1/30/06) system with an X300 PCIe Dell dual-head. I've also tried killing the
> HyperThreading, the second head, etc., to no avail. This, on the standard X.org
> 6.9 as installed through ports. I remade xorg-libraries after patching the
> radeon_driver.c file.
Try the patch I attached with CVS versions of DRM and xorg. I also needed to
apply two of Ben's patches (radeon-memmap-7.0-2.diff and
radeon-memmap-drm-3.diff). The patch fixes an issue that only exists with
non-agp radeon cards.
> The X log does not get written when it locks up. What else can I post that
> would help?
I was able to get the vital debugging information via a serial console only.
Just compile kernel with DDB in and attach another computer with a null-modem
cable. There is more help about this subject in the FreeBSD developers handbook.
Oh... And don't forget to set sysctl hw.dri.0.debug to 1 to see the DRM debug
(In reply to Comment #21) I'm afraid my g-world firewall is blocking my direct
CVS access. I'll have to set up a redirect through my outside server as I do
for CVSup. Thanks for the rapid response, Markus! I understand what I need to
do and will do it.
Just one q: Where will I find Ben's memmap patches?
(In reply to comment #22)
> Just one q: Where will I find Ben's memmap patches?
Sorry. I tought I mentioned this. You can find the patches from
(In reply to comment #8)
> same on Xpress 200M (RV370 based). i think the lock only happens with cards
> that didn't have memory on board and so have to share the ram.
I think I may be seeing this same issue. I'm running Xorg/Mesa/dri/drm from CVS
today, plus Ben's Radeon memmap-3 patch. Everything works well if I don't
In order to get the radeon DRM module to recognize my chip, I had to add this to
the drm_pciids.txt file:
0x1002 0x5955 CHIP_RV350|CHIP_IS_IGP "ATI Radeon XPRESS 200M"
From searching the net, RV350 seems to be the most appropriate choice
(CHIP_RV370 doesn't appear to exist), but I could be wrong.
X starts to a blank screen and freezes. Can't switch VTs, NumLock/CapsLock
don't work, and I can't kill X.
However, the box isn't locked hard. ssh sessions to the laptop still work as
normal and I can reboot. chvt hangs if I try to switch back to a text console.
I enabled DRM_DEBUG as described in the thread, and my dmesg gets spammed with this:
[drm:drm_ioctl] ret = fffffff0
[drm:drm_ioctl] pid=5587, cmd=0x6444, nr=0x44, dev 0xe200, auth=1
There was some init stuff at the beginning, but it scrolled out of the buffer
no idea what the state of this bug is modulo the addition of a comment about
something completely unrelated.
author please reopon if you still have problem with latest code.
Bugzilla Upgrade Mass Bug Change
NEEDSINFO state was removed in Bugzilla 3.x, reopening any bugs previously listed as NEEDSINFO.
closing. please reopen if you are still having problems with a more recent version of the driver.