Display freeze: nvidia-modeset hangs in nvWriteGpEntry from DIFR prefetch after external monitor hotplug
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- c, linux, ubuntu
调研方向
Start by reviewing the reported stack in nvWriteGpEntry, PrefetchHelperSurfaceEvo, and nvDIFRPrefetchSurfaces, then examine the attached kernel logs for the hotplug sequence. The report describes the failure path and reproduction steps, but does not identify source files or tests; reproduce across monitor disconnect and reconnect and confirm modesetting no longer hangs.
由索引模型根据 Issue 内容生成。
描述
NVIDIA Open GPU Kernel Modules Version
615.71.09 (also reproduced on 595.99.02), Ubuntu packages nvidia-driver-615-open / nvidia-driver-595-open
Please confirm this issue does not happen with the proprietary driver (of the same version). This issue tracker is only for bugs specific to the open kernel driver.
- I confirm that this does not happen with the proprietary driver package.
Operating System and Version
Ubuntu 26.04
Kernel Release
7.0.0-38-generic
Please confirm you are running a stable release kernel (e.g. not a -rc). We do not accept bug reports for unreleased kernels.
- I am running on a stable kernel release.
Hardware: GPU
GeForce RTX 4090 Laptop GPU (AD103M, 10de:2757), hybrid graphics with Intel Raptor Lake-S UHD (i915). Alienware m18 R2, BIOS 1.23.0.
Describe the bug
The whole desktop locks up after the external monitor (Samsung U28E590 on HDMI-A-1, which is wired to the NVIDIA GPU) disconnects and reconnects. The monitor reconnect coincides with a USB UGREEN KVM hub reconnecting. The kernel stays alive (SysRq works), but the display is frozen and switching to a VT doesn't work either. The only recovery is REISUB or a hard power-off.
Desktop: GNOME Shell 50.1 on Wayland, with nvidia-drm.modeset=1.
The kernel's hung-task detector shows mutter's KMS thread stuck in nv_drm_atomic_apply_modeset_config, waiting on a semaphore held by the nvidia-modeset kthread. That kthread is runnable (state R) and spins inside the DIFR prefetch path. Every snapshot (six, taken 20 seconds apart, plus SysRq+W) shows the same stack:
RIP: 0010:nvWriteGpEntry+0x.../0x370 [nvidia_modeset]
nvPushKickoff+0x28/0x50 [nvidia_modeset]
PrefetchHelperSurfaceEvo+0x45c/0x650 [nvidia_modeset]
nvDIFRPrefetchSurfaces+0x12f/0x1f0 [nvidia_modeset]
DifrPrefetchEventDeferredWork+0x16/0x30 [nvidia_modeset]
nvkms_kthread_q_callback+0xe9/0x190 [nvidia_modeset]
_main_loop+0x99/0x160 [nvidia_modeset]
It looks like nvWriteGpEntry is waiting for GPFIFO space that the GPU never frees after the hotplug, and it holds the nvkms lock while it spins, so every modeset from the compositor blocks.
Timeline of the 615.71.09 occurrence (2026-10-29, local time):
- 15:17:54 external monitor and USB hub disconnect
- 15:30:07 monitor and hub reconnect
- ~15:31:27 display frozen; hung-task reports start at 15:31:47
- 15:33:25 SysRq+W captured, then REISUB
There are no Xid errors in the log. There's no module parameter or registry key that I can find to turn DIFR off as a workaround.
To Reproduce
- Laptop with hybrid graphics, external monitor connected to an output driven by the NVIDIA GPU, GNOME Wayland session.
- Disconnect the external monitor (or let it drop off) and reconnect it.
- It doesn't happen every time. Several reconnects succeed, but it has happened 4 times in about 4 days.
Bug Incidence
Sometimes
nvidia-bug-report.log.gz
nvidia-bug-report-redacted.log.gz
Attached, with hardware serials, MAC addresses, the monitor EDID and user/host names redacted. The report was generated after the reboot, so it doesn't contain the hang itself. The kernel log from two hangs (on 595.99.02 and 615.71.09) is attached separately as nvidia-freeze-kernel-log-redacted.log.gz.
nvidia-freeze-kernel-log-redacted.log.gz
More Info
Happy to test patches or collect more data (for example with nvidia_modeset debug=1).
- 主要语言
- C
- 星标
- 17.5k
- 派生
- 1.9k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NVIDIA/open-gpu-kernel-modules 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 76/100
NVIDIA/open-gpu-kernel-modules#1479 · 2 条评论 ·
维护者通常 1 天内回复
-
PlatformRequestHandler: missing !bInit guard on bSystemParamLimitUpdate causes NV_ERR_INVALID_DATA at boot可能已有人在做 @SammyTourani 于 37 天前认领。 未关闭
难度 1/5 1 小时以内 新手友好度 88/100
NVIDIA/open-gpu-kernel-modules#1360 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
NVIDIA/open-gpu-kernel-modules#1343 · 3 条评论 ·
维护者通常 1 天内回复
-
HKC G27H7Pro redundant long-HPD loop after DisplayPort link training (RTX 5060 Laptop, 610.57.04)未关闭bug
难度 2/5 1-3 小时 新手友好度 88/100
NVIDIA/open-gpu-kernel-modules#1323 ·
维护者通常 1 天内回复
-
build-problem
难度 2/5 1-3 小时 新手友好度 74/100
NVIDIA/open-gpu-kernel-modules#1155 · 1 条评论 ·
维护者通常 1 天内回复
查看 NVIDIA/open-gpu-kernel-modules 的全部 Issue
相似的 Issue
-
examples/dnsdoctor: cleanup.sh stops at the first missing piece of a setup.sh that did not finish未关闭severity: low
难度 2/5 1-3 小时 新手友好度 70/100
luainkernel/lunatik#2263 ·
维护者通常 1 天内回复
-
难度 2/5 半天 新手友好度 72/100
vercel-labs/scriptc#2910 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
darktable-org/darktable#22939 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 82/100
espressif/idf-extra-components#903 ·
维护者通常 1 天内回复
-
os: input_password leaves terminal echo disabled when reading fails可能已有人在做 @davlgd 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复