Bug 72651 - [NV11] Hang during suspend/resume on Geforce 2 MX200 & MX400
Summary: [NV11] Hang during suspend/resume on Geforce 2 MX200 & MX400
Status: RESOLVED MOVED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-12 22:28 UTC by Michal Welnicki
Modified: 2019-12-04 08:41 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
Serial console dump from MX200 card (boot + crash) (179.61 KB, text/plain)
2013-12-12 22:28 UTC, Michal Welnicki
no flags Details
Serial console dump from MX400 card (crash only) (53.85 KB, text/plain)
2013-12-12 22:29 UTC, Michal Welnicki
no flags Details
VBIOS from MX200 card (47.00 KB, application/octet-stream)
2013-12-12 22:31 UTC, Michal Welnicki
no flags Details
VBIOS from MX400 card (51.00 KB, application/octet-stream)
2013-12-12 22:32 UTC, Michal Welnicki
no flags Details
Workaround: don't create the TMDS output (1.14 KB, patch)
2013-12-12 22:37 UTC, Michal Welnicki
no flags Details | Splinter Review

Description Michal Welnicki 2013-12-12 22:28:32 UTC
Created attachment 90680 [details]
Serial console dump from MX200 card (boot + crash)

Hibernation and suspend/resume always hangs on a GeForce2 MX200/MX400 (NV11) with nouveau loaded.

Steps to reproduce:
- boot a kernel, load nouveau
- echo "disk" > /sys/power/state
- machine hangs after suspending devices but before the image writing begins
- after several seconds, the monitor complains about "input signal out of range"

Same thing happens with "echo freeze > /sys/power/state".
If nouveau is unloaded before hibernation, everything works fine.

This happens on two different systems with a GeForce2 MX200/400:
1) Athlon XP 1700+ on an Asrock K7VT2,
   GeForce2 MX400 64MB AGP, with VGA output
2) Pentium II 400 on a 440BX-based Gigabyte GA-BX2000+,
   GeForce2 MX200 32MB AGP, with VGA and TV-out (S-Video + Cinch)

I'm using CentOS 6 userspace, and various kernels:
linux-2.6.32-358.18.1.el6
linux-3.0.x
linux-3.10.x
linux-3.12.1
linux-3.12.4

Using a serial console I was able to narrow down the hang to run_tmds_table(), called from nv04_dfp_restore().
Dmesg output and VBIOS of both cards is attached.

Note that neither of my cards has DVI/HDMI.
It seems that the flat panel connector is wrongly fabricated in nouveau_bios.c:fabricate_dcb_encoder_table().

Commenting out the call to fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, ...) makes hibernation work fine (patch attached).

The current condition of checking bios->tmds.output{0,1}_script_ptr seems wrong. But since I don't have any NV11 with DVI output, I'm not sure what to key creating the TMDS output on.
Comment 1 Michal Welnicki 2013-12-12 22:29:52 UTC
Created attachment 90681 [details]
Serial console dump from MX400 card (crash only)
Comment 2 Michal Welnicki 2013-12-12 22:31:22 UTC
Created attachment 90682 [details]
VBIOS from MX200 card
Comment 3 Michal Welnicki 2013-12-12 22:32:00 UTC
Created attachment 90683 [details]
VBIOS from MX400 card
Comment 4 Michal Welnicki 2013-12-12 22:37:09 UTC
Created attachment 90684 [details] [review]
Workaround: don't create the TMDS output
Comment 5 Martin Peres 2019-12-04 08:41:21 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/78.


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.