[Nouveau] [Bug 40630] nouveau: corrupted opengl/3d/composited graphics after suspend/hibernate

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Sep 10 08:41:21 PDT 2011


https://bugs.freedesktop.org/show_bug.cgi?id=40630

--- Comment #35 from maximlevitsky at gmail.com 2011-09-10 08:41:20 PDT ---
Small update and corrections:

This is a summary of findings  so far:

1. Fault always happens in MP1 of TP0, after resume from ram
   That's of course very strange

2. It doesn't matter if program was run through suspend 
    or launched afrer suspend.
   Which means that its not an error of preserving channel/program state
   through suspend. Everything is uploaded new after the program starts.

3. It doesn't matter if there was suspend or hibernate, 
   even hibernate without BIOS suport (echo shutdown > /sys/power/disk)
   Or in other words 'magic init' done on boot but missing after resume,
   or opposite a screwup by bios after resume is ruled out.

4. Actual size of allocated buffer doesn't matter. However just 
   pretending that we allocated smaller buffers for each code type 
   (by passing  smaller size to nouveau_resource_alloc fixes the issue. 
   (32K was largest size that was working)
   Also support for large pages was disabled in kernel and that didn't help.
   This means that its not allocation, failure. It could be memory copy failure
   though, although initially buffer is allocated in video ram.

   This also means that the _code offset_ is what matters.
   In addition to that note that code was uploaded by SIFC but it takes end 
   address of area to copy to, thus really offset from start of out buffer 
   shouldn't matter.

5. Buffers that glxgears happen to upload (tested on his and my system and
   appears not to change:

   7fc00 - 2nd vertex shader - 392 bytes
   7fe00 - vertex shader 392 bytes
   fff00 - pixel shader - 24 bytes

   However fault address is almost always 7bf00 or something very close to it 
   (7bf08, 7c000)

   That address is way outside the areas that were uploaded, which means that
   TP1 really executes undefined code that just wasn't uploaded.

   Filling the whole code buffer with pattern (using nouveau_bo_map) with 
   pattern made  TP1 execute that pattern once again at 7bf00. Tested 
   many times.
   However if in addition to doing so, the code buffer upload was skipped, all
   TPs  (all 4 of them) faulted in tandem at 7fe00 (vertex shader) trying to
   execute the  pattern.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the Nouveau mailing list