On Sat, 10 Jan 2009, Robert Noland wrote:
> I just merged drm (Direct Rendering) from HEAD.
>
> - Support for latest Intel chips
> - Support and fixes for many AMD/ATI chips r500 and below
> - Support AMD/ATI IGP based chips (rs690/rs485)
> - Lots of code cleanups
> - Lots of other fixes and changes since the existing drm
> is 2+ years old
>
> If you are experiencing a "garbled" screen with certain pci/pci-e
based
> radeons, I have another patch in HEAD that isn't included yet.
>
I have a workstation with a [Radeon X600 (PCIE)] card. The X display has
been garbled since these DRM updates went in in January, and remains
garbled with 7.1-STABLE as of yesterday. As a work-around, I'm running
the up-to-date 7.1-STABLE system (both world and ports) with a
7.1-RELEASE-p2 kernel. The display is fine with the old kernel and X
works great; I even see dramatically improved performance with the new
Xorg and EXA acceleration. Your work is much appreciated.
But the garbled display with the recent DRM still plagues me.
Here's how pciconf identifies the card:
vgapci0@pci0:1:0:0: class=0x030000 card=0x06021002 chip=0x5b621002 rev=0x00
hdr=0x00
vendor = 'ATI Technologies Inc'
device = 'RV380 RADEON X600 Series 265MB'
class = display
subclass = VGA
vgapci1@pci0:1:0:1: class=0x038000 card=0x06031002 chip=0x5b721002 rev=0x00
hdr=0x00
vendor = 'ATI Technologies Inc'
device = 'Radeon X600 Series - Secondary'
class = display
The old DRM probe:
vgapci0: <VGA-compatible display> port 0x2000-0x20ff mem
0xe0000000-0xe7ffffff,0xe8500000-0xe850ffff irq 16 at device 0.0 on pci1
drm0: <ATI Radeon RV370 X600 Pro> on vgapci0
info: [drm] Initialized radeon 1.25.0 20060524
vgapci1: <VGA-compatible display> mem 0xe8510000-0xe851ffff at device 0.1
on pci1
...
vgapci0: Reserved 0x10000 bytes for rid 0x18 type 3 at 0xe8500000
vgapci0: Reserved 0x8000000 bytes for rid 0x10 type 3 at 0xe0000000
info: [drm] Setting GART location based on new memory map
info: [drm] Loading R300 Microcode
info: [drm] writeback test succeeded in 1 usecs
ioapic0: Assigning PCI IRQ 16 to local APIC 0
ioapic0: routing intpin 16 (PCI IRQ 16) to vector 60
drm0: [MPSAFE]
The new DRM probe:
vgapci0: <VGA-compatible display> port 0x2000-0x20ff mem
0xe0000000-0xe7ffffff,0xe8500000-0xe850ffff irq 16 at device 0.0 on pci1
drm0: <ATI Radeon RV370 X600 Pro> on vgapci0
vgapci0: Reserved 0x10000 bytes for rid 0x18 type 3 at 0xe8500000
vgapci0: child drm0 requested pci_enable_busmaster
info: [drm] Initialized radeon 1.29.0 20080528
vgapci1: <VGA-compatible display> mem 0xe8510000-0xe851ffff at device 0.1
on pci1
...
vgapci0: Reserved 0x8000000 bytes for rid 0x10 type 3 at 0xe0000000
info: [drm] Setting GART location based on new memory map
info: [drm] Loading R300 Microcode
info: [drm] Num pipes: 1
info: [drm] writeback test succeeded in 1 usecs
ioapic0: Assigning PCI IRQ 16 to local APIC 0
ioapic0: routing intpin 16 (PCI IRQ 16) to vector 59
drm0: [MPSAFE]
drm0: [ITHREAD]
info: [drm] Num pipes: 1
Difference between the Xorg logs when it's working and when it's not:
--- ok/Xorg.0.log 2009-03-16 14:39:40.000000000 -0500
+++ garbled/Xorg.0.log 2009-03-16 14:46:13.000000000 -0500
@@ -6 +6 @@
-Current Operating System: FreeBSD xxx.xxx.xxxxx.xxx 7.1-RELEASE-p2 FreeBSD
7.1-RELEASE-p2 #0: Fri Jan 16 18:00:35 CST 2009
root@xxx.xxx.xxxxx.xxx:/usr/obj/usr/src/sys/SMALL-SMP i386
+Current Operating System: FreeBSD xxx.xxx.xxxxx.xxx 7.1-STABLE FreeBSD
7.1-STABLE #0: Mon Mar 16 11:42:42 CDT 2009
root@xxx.xxx.xxxxx.xxx:/usr/obj/usr/src/sys/SMALL-SMP i386
@@ -14 +14 @@
-(==) Log file: "/var/log/Xorg.0.log", Time: Mon Mar 16 14:39:34 2009
+(==) Log file: "/var/log/Xorg.0.log", Time: Mon Mar 16 14:22:00 2009
@@ -407 +407 @@
-(II) RADEON(0): [dri] Found DRI library version 1.3.0 and kernel module version
1.25.0
+(II) RADEON(0): [dri] Found DRI library version 1.3.0 and kernel module version
1.29.0
@@ -774,5 +774,5 @@
-(II) RADEON(0): [pci] 32768 kB allocated with handle 0xc56d4000
-(II) RADEON(0): [pci] ring handle = 0xc56d4000
-(II) RADEON(0): [pci] Ring mapped at 0x90a00000
-(II) RADEON(0): [pci] Ring contents 0x00000000
-(II) RADEON(0): [pci] ring read ptr handle = 0xc57d5000
+(II) RADEON(0): [pci] 32768 kB allocated with handle 0xe7732000
+(II) RADEON(0): [pci] ring handle = 0xe7732000
+(II) RADEON(0): [pci] Ring mapped at 0x88a00000
+(II) RADEON(0): [pci] Ring contents 0xff7d8c94
+(II) RADEON(0): [pci] ring read ptr handle = 0xe7833000
@@ -780,6 +780,6 @@
-(II) RADEON(0): [pci] Ring read ptr contents 0x00000000
-(II) RADEON(0): [pci] vertex/indirect buffers handle = 0xc57d6000
-(II) RADEON(0): [pci] Vertex/indirect buffers mapped at 0x90b01000
-(II) RADEON(0): [pci] Vertex/indirect buffers contents 0x00000000
-(II) RADEON(0): [pci] GART texture map handle = 0xc59d6000
-(II) RADEON(0): [pci] GART Texture map mapped at 0x90d01000
+(II) RADEON(0): [pci] Ring read ptr contents 0xff180000
+(II) RADEON(0): [pci] vertex/indirect buffers handle = 0xe7834000
+(II) RADEON(0): [pci] Vertex/indirect buffers mapped at 0x90c00000
+(II) RADEON(0): [pci] Vertex/indirect buffers contents 0xff100049
+(II) RADEON(0): [pci] GART texture map handle = 0xe7a34000
+(II) RADEON(0): [pci] GART Texture map mapped at 0x90e34000
@@ -806 +805,0 @@
-(WW) RADEON(0): Failed to determine num pipes from DRM, falling back to manual
look-up!
I tried setting hw.dri.0.debug=1. That produced a lot of output, but
nothing that looked like an error or warning. Do you have any idea what
might be causing this, or how to troubleshoot further?
--
Greg Rivers