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;
signature.asc
Description: This is a digitally signed message part