On Tue, 2009-03-17 at 12:20 -0500, Greg Rivers wrote:
> 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:
> vgap...@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
> vgap...@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     
> r...@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     
> r...@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?

Could you try the attached patch.  Also, I'm guessing that this is a PCI
based card, right?  Also, it isn't an integrated model?

robert.

-- 
Robert Noland <rnol...@freebsd.org>
FreeBSD
Index: drm_bufs.c
===================================================================
--- drm_bufs.c	(revision 189907)
+++ drm_bufs.c	(revision 189908)
@@ -1106,7 +1106,7 @@
 	if (size == 0)
 		return 0;
 
-	order = ffsl(size) - 1;
+	order = flsl(size) - 1;
 	if (size & ~(1ul << order))
 		++order;
 

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to