Libdrm compiled with gcc 4.8 makes card hang on resume from s2disk
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Nouveau Xorg driver |
Fix Released
|
Medium
|
|||
gcc |
New
|
Undecided
|
Unassigned | ||
libdrm (Ubuntu) |
Fix Released
|
High
|
Maarten Lankhorst | ||
Saucy |
Fix Released
|
High
|
Maarten Lankhorst |
Bug Description
[Impact]
* Relocations on nv04-nv4f are completely broken, any kind of memory stress will result in userspace failure.
[Test Case]
* Suspend on a system with an affected nvidia card.
* Resume should complete without any errors in FIFO.
* Other test is to run max-texture-size from piglit, system should survive.
* For m-a same change: confirm libdrm-dev:amd64 and libdrm-dev:i386 coinstall.
[Regression Potential]
* Original bug report was caused by undefined behavior in gcc:
- *push->cur++ = pushbuf_krel(push)
- pushbuf_krel uses (push->cur - push->bgn) to calculate offset.
- It's undefined whether push->cur is incremented before calling pushbuf_krel or not.
- New gcc changed the order, causing the bug.
- Fixed by calling push->cur++ in a separate statement.
* Bug reports will be watched for any new problems that may pop up.
[Original bug report]
My initial bugreport was here: https:/
- Recompiling libdrm with gcc 4.7 fixed the bug.
Upstream GCC mail thread here: http://
This was fixed thanks to Emil Velikov from the nouveau project.
Related branches
Changed in nouveau: | |
importance: | Unknown → Medium |
status: | Unknown → Confirmed |
tags: | added: saucy trusty |
Changed in libdrm (Ubuntu): | |
assignee: | nobody → Maarten Lankhorst (mlankhorst) |
Changed in libdrm (Ubuntu Saucy): | |
assignee: | nobody → Maarten Lankhorst (mlankhorst) |
Changed in libdrm (Ubuntu): | |
importance: | Undecided → High |
Changed in libdrm (Ubuntu Saucy): | |
importance: | Undecided → High |
Changed in libdrm (Ubuntu): | |
status: | Fix Committed → Fix Released |
Changed in libdrm (Ubuntu Saucy): | |
status: | New → In Progress |
Changed in nouveau: | |
status: | Confirmed → Fix Released |
description: | updated |
Created attachment 88462
Attempt to resume
[ 0.197865] nouveau [ DEVICE] [0000:01: 00.0] Chipset: NV34 (NV34) [0000:01: 00.0] Family : NV30
[ 0.197869] nouveau [ DEVICE]
After *only upgrading userspace* from Ubuntu 13.04 to Ubuntu 13.10 the card fails to properly resume from s2disk.
Important upgraded packages:
xserver- xorg-core: i386 2:1.13.3-0ubuntu6.2 -> 2:1.14.3-3ubuntu2 xorg-video- nouveau: i386 1:1.0.7-0ubuntu1 -> 1:1.0.9-2ubuntu1
xserver-
libdrm2:i386 2.4.43-0ubuntu1.1 -> 2.4.46-1
libpciaccess0:i386 0.13.1-2 -> 0.13.2-1