Bug 20130 (hax0r1337)

Summary: GT200: nv50 chipset 0xa0 2D corruption
Product: xorg Reporter: Kyle K <kylek389>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: xake
Version: git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Logs
none
dmesg drm debug=1
none
dmesg with pramin_more_flush and drm debug=1
none
Horrible hack, that may just help.
none
dmesg after applying nasty hack :P
none
Xorg.0.log-02.24.09
none
dmesg-02.24.09-while X is running
none
dmesg-02.24.09-after X lougout none

Description Kyle K 2009-02-15 19:50:09 UTC
Created attachment 22971 [details]
Logs

Hi guys,
I recently mailed in a mmiotrace of my GT200 on which I tried to enable EXA with no success. I have noticed a new commit http://cgit.freedesktop.org/mesa/drm/commit/?id=a4ac60a10239bb6d19f6d89f2c044e9b7b29837c and went ahead with latest git. After issuing startx I get a blank screen and a complete lockup. Please see the attached logs. I'm unable to provide a meaningful dmesg since it gets overwritten on the next boot after a lockup (I'm using Arch Linux). I will be more than happy to help. Thanks!
Comment 1 Kyle K 2009-02-15 20:23:54 UTC
dmesg:

[drm] Initialized drm 1.1.0 20060810
pci 0000:01:00.0: BAR 3: can't reserve mem region [0xf8000000-0xf9ffffff]
pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
pci 0000:01:00.0: setting latency timer to 64
[drm] Detected an NV50 generation card (0x0a0100a2)
[drm] Initialized nouveau 0.0.12 libdrm-2.4.4-31-g084e143d0c82f5bf6 on minor 0
[drm] Used old pci detect: framebuffer loaded
mtrr: base(0xc0000000) is not aligned on a size(0x38000000) boundary
[drm] Allocating FIFO number 1
[drm] nouveau_fifo_alloc: initialised FIFO 1
[drm] Allocating FIFO number 2
[drm] nouveau_fifo_alloc: initialised FIFO 2
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x0184 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x0188 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x018c Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x0190 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x0194 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x0198 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x019c Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01a0 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01a4 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01a8 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01ac Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01c0 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01c4 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01c8 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01cc Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01d0 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01d4 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01d8 Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x01dc Data 0x00000000:0x00000e00
[drm] PGRAPH_ERROR - nSource: DATA_ERROR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x1520 Data 0x00000000:0x00000000
[drm] PGRAPH_ERROR - nSource: PROTECTION_ERROR LIMIT_COLOR, nStatus:
[drm] PGRAPH_ERROR - Ch 2/2 Class 0x8397 Mthd 0x1520 Data 0x00000000:0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* magic set 1:
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408900: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408904: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408908: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x0040890c: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408910: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e08: 0x3f00f4e1
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e0c: 0x40002177
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e10: 0xbe7d1cda
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e14: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e18: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e1c: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e20: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00408e24: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* magic set 2:
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409900: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409904: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409908: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x0040990c: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409910: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e08: 0xefebeffd
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e0c: 0x40004e50
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e10: 0xfb7f3adf
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e14: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e18: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e1c: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e20: 0x00000000
[drm:nv50_pgraph_irq_handler] *ERROR* 	0x00409e24: 0x00000000
Comment 2 Kyle K 2009-02-17 09:56:58 UTC
Created attachment 23038 [details]
dmesg drm debug=1
Comment 3 Kyle K 2009-02-17 09:57:33 UTC
Created attachment 23039 [details]
dmesg with pramin_more_flush and drm debug=1
Comment 4 Kyle K 2009-02-17 09:59:26 UTC
I was able to log in! But there's some form of 2D image corruption, I'm able to see my background - panels - open new windows - but I can't see any *text*.
Comment 5 Ben Skeggs 2009-02-17 14:01:49 UTC
Created attachment 23049 [details] [review]
Horrible hack, that may just help.
Comment 6 Ben Skeggs 2009-02-17 14:03:44 UTC
Can you give the above patch a try.  As a warning, your kernel will OOPS when you exit X with this patch.  It's not a proper solution, but it'll tell us for sure if the issue is where I expect it is.  A proper fix will require a little more work :)
Comment 7 Kyle K 2009-02-17 15:32:25 UTC
I didn't experience an OOPS since Xorg is frozen using 100% and it doesn't respond to Ctrl+Alt+Backspace or Ctrl+Alt+F1. All I could do is halt the machine through ssh. Thanks Ben.
Comment 8 Kyle K 2009-02-17 15:33:20 UTC
Created attachment 23051 [details]
dmesg after applying nasty hack :P
Comment 9 Kyle K 2009-02-23 23:27:09 UTC
I cannot reproduce the 100% cpu Xorg, I guess something went wrong before when I tried it. I logged in +10 times and only get mild 2D corruption http://img15.imageshack.us/img15/8486/2dcorruption.jpg, so we're almost there. 
Comment 10 Kyle K 2009-02-23 23:29:24 UTC
Created attachment 23247 [details]
Xorg.0.log-02.24.09
Comment 11 Kyle K 2009-02-23 23:30:10 UTC
Created attachment 23248 [details]
dmesg-02.24.09-while X is running
Comment 12 Kyle K 2009-02-23 23:30:34 UTC
Created attachment 23249 [details]
dmesg-02.24.09-after X  lougout
Comment 13 Ben Skeggs 2009-02-24 02:18:29 UTC
Interesting that the card randomly decided to stop throwing errors, I don't think there's a good reason for that on the master branch really.  It'd be interesting to know how the modesetting-gem branch fares, not with modesetting or anything turned on, just a plain "modprobe nouveau"!

The mis-rendering looks like the 3D engine isn't working correctly though.
Comment 14 Kyle K 2009-02-24 13:00:24 UTC
With modesetting-gem I get 100% Xorg utilization since dmesg get overflowed with:

[drm:nouveau_irq_handler] *ERROR* Unhandled PMC INTR status bits 0x00020000
[drm:nouveau_irq_handler] *ERROR* Unhandled PMC INTR status bits 0x00020000
[drm:nouveau_irq_handler] *ERROR* Unhandled PMC INTR status bits 0x00020000
[drm:nouveau_irq_handler] *ERROR* Unhandled PMC INTR status bits 0x00020000
...
Comment 15 Peter Hjalmarsson 2009-05-28 12:53:18 UTC
How is this going?

Looking at the last screenshot that is what I currently gets on my:
02:00.0 VGA compatible controller [0300]: nVidia Corporation GT200b [GeForce GTX 285] [10de:05e3] (rev a1)

(i.e. nearly everything seems to draw nice exept my icons and my fonts)

That is with latest x11-drm, libdrm and xf86-video-nouveau checked out from git fresh today.

Is there anything I can provide to get this going? (I have Xorg and dmesg of drm debug=1 when it fails)

Oh, nearly forgot to tell that everything looks perfect when using NoAccel True in xorg.conf.
Comment 16 Kyle K 2009-06-01 21:16:26 UTC
Not much has changed, DRM code still needs to be tweaked, once that's done DDX driver should work pretty nicely, I hope. Let's wait when fedora gets released, maybe then Ben will have more time to look at this.
Comment 17 Kyle K 2009-06-17 20:00:56 UTC
I'm marking this as fixed for now, with patches from newttm-devel branch everything seems to work fine, kms is flawless and I even managed to run gallium3d for few minutes before a lockup :).

hax0r1337.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.