Public bug reported:

I encountered a complete display freeze while manually selecting Nouveau
performance states through the debugfs pstate interface on an NVIDIA
GT216GLM (Quadro FX 880M). The freeze occurred during a repeated-
transition test with glxgears active and required a forced powerdown.

Hardware and software:
- Lenovo ThinkPad W510
- NVIDIA GT216GLM / Quadro FX 880M, PCI ID 10de:0a3c, revision A2
- GPU subsystem ID 17aa:2145
- GPU VBIOS 70.16.5f.00.0d
- Linux Mint 22.2, based on Ubuntu 24.04 Noble
- Kernel 7.0.0-30-generic #30~24.04.1-Ubuntu
- Kernel version signature Ubuntu 7.0.0-30.30~24.04.1-generic 7.0.12
- Mesa 25.2.8-0ubuntu0.24.04.2
- libdrm 2.4.125-1ubuntu0.1~24.04.2
- Xorg server 21.1.12-1ubuntu1.6
- xf86-video-nouveau 1.0.17-2ubuntu0.1

Only Nouveau was loaded for the GPU. The proprietary NVIDIA driver, nvidiafb, 
and rivafb were not loaded.
Nouveau exposes the following states through 
/sys/kernel/debug/dri/0000:01:00.0/pstate:

03  core 135 MHz, shader 270 MHz, memory 135 MHz
07  core 405 MHz, shader 810 MHz, memory 324 MHz
0f  core 550 MHz, shader 1210 MHz, memory 790 MHz

A small experimental userspace governor selected 03 after ten seconds of
inactivity and 0f after detecting graphics activity. It changed states
by writing the two-character hexadecimal state followed by a newline to
the debugfs pstate file. Write attempts were limited to no more than one
per second and were made only when the requested state differed from the
last retained state.

Several isolated pstate transitions and complete 03 to 0f to 03 cycles 
completed without visible display problems. A hardware VDPAU decoding test also 
completed a full 03 to 0f to 03 transition successfully.
For the failing test, the governor was left running while glxgears was started 
and stopped repeatedly to exercise multiple LOW-to-HIGH-to-LOW transitions. The 
display froze during the third graphics-workload cycle.

Expected result:
Nouveau should either complete a supported manual pstate transition safely or 
reject or defer the request without hanging PGRAPH and the display server.

Actual result:
The kernel log first reported an illegal graphics method from glxgears and a 
trapped PGRAPH write from Xorg. Two seconds later, the Nouveau pstate worker 
timed out in gt215_clk_pre(). Nouveau then repeatedly reported PGRAPH TLB flush 
idle timeout fail, and Xorg eventually failed to idle its channel.

The initial failure sequence was:
nouveau 0000:01:00.0: gr: DATA_ERROR 0000000c [INVALID_BITFIELD]
nouveau 0000:01:00.0: gr: TRAP DISPATCH_QUERY
nouveau 0000:01:00.0: gr: no stuck command?
nouveau 0000:01:00.0: gr: 00300010 [ILLEGAL_MTHD] ch 8 [003efdc000 
glxgears[41630]] subc 3 class 8597 mthd 15e0 data a9a80000
nouveau 0000:01:00.0: fb: trapped write at 0000000000 on channel 2 [3fa90000 
Xorg[1130]] engine 00 [PGRAPH] client 03 [DISPATCH] subclient 02 [QUERY] reason 
00000006 [NULL_DMAOBJ]
nouveau 0000:01:00.0: gr: PGRAPH TLB flush idle timeout fail
nouveau 0000:01:00.0: gr: PGRAPH_STATUS 0007ff13 [BUSY DISPATCH UNK4 CTXPROG 
VFETCH CCACHE_PREGEOM STRMOUT_VATTR_POSTGEOM VCLIP RATTR_APLANE TRAST CLIPID 
ZCULL ENG2D RMASK]
nouveau 0000:01:00.0: timeout
WARNING: drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.c:331 at 
gt215_clk_pre+0x270/0x280 [nouveau]
Workqueue: events nvkm_pstate_work [nouveau]
Call Trace:
 gt215_clk_prog+0x38/0x230 [nouveau]
 nvkm_cstate_prog.constprop.0+0x260/0x280 [nouveau]
 nvkm_pstate_work+0x1a3/0x280 [nouveau]

The PGRAPH TLB flush idle timeout fail message repeated approximately every two 
seconds until shutdown. 
The last relevant message was:
nouveau 0000:01:00.0: Xorg[1130]: failed to idle channel 8 [Xorg[1130]]

I have not attempted to reproduce this again because it risks another
forced powerdown.

A similar gt215_clk_pre() timeout followed by PGRAPH TLB-flush failures was 
reported when reclocking a GT218 during an active WebGL workload in 2016:
https://www.mail-archive.com/dri-devel%40lists.freedesktop.org/msg153861.html

Older GT215 reports also show the same repeated PGRAPH TLB-flush failure 
pattern:
https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-nouveau/+bug/977588

Regression status is unknown. I have not repeated this hazardous test using 
another kernel.
I would particularly like to know whether manual GT216 pstate selection is 
expected to be safe while graphics channels are active, whether there is a 
known fix for this gt215_clk_pre() timeout, and whether the driver can reject 
or defer reclocking when PGRAPH cannot become idle.

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

** Attachment added: "Ubuntu-requested kernel version signature and 
unprivileged lspci -vnvn hardware information, combined into a single archive 
because the form permits only one attachment."
   
https://bugs.launchpad.net/bugs/2165201/+attachment/5995741/+files/bluemax-ubuntu-required.tar.gz

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2165201

Title:
  GT216GLM display hangs when changing Nouveau pstate during an active
  graphics workload

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2165201/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to