[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