diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-08 18:30:14 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-08 18:30:14 -0500 |
| commit | df332e75fc70f81430b146ccb23481f80b89e8d3 (patch) | |
| tree | 9c9b41adb256742c5720ca474e90a344df2b6a13 /kernel/include | |
| parent | 6cd260b87557e881af1e47f82ff3f0df79d30e44 (diff) | |
| download | open-iov-df332e75fc70f81430b146ccb23481f80b89e8d3.tar.gz open-iov-df332e75fc70f81430b146ccb23481f80b89e8d3.zip | |
vgsp-disp: map class 0xc57b to its real control window (window-imm)
The header labelled 0xc57b CURSOR and mapped it to the cursor-PIO block
at 0x6d8000+n*0x1000, but 0xc57b is the immediate-mode window class
whose control window is 0x690000+(n+32)*0x1000 = 0x6d0000+n*0x1000
(0xc57a is the PIO cursor channel, valid=0). The engine therefore
polled the wrong window for every 0xc57b channel: their PUT was never
seen, no UPDATE ever completed, and r1638's GZDoom-triggered mode set
left X spinning in an RM ioctl after the window-imm flip.
Rename the constants (WINDOW_IMM 0xc57b, CURSOR_PIO 0xc57a) and return
the correct control offsets; cursor-PIO keeps 0x6d8000+n*0x1000.
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/gsp_display_engine.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/include/gsp_display_engine.h b/kernel/include/gsp_display_engine.h index aa0ad98..8b62c21 100644 --- a/kernel/include/gsp_display_engine.h +++ b/kernel/include/gsp_display_engine.h @@ -36,8 +36,8 @@ struct nv_vgpu_device; #define GSP_DISP_CLASS_CORE 0xc57d #define GSP_DISP_CLASS_WINDOW 0xc57e -#define GSP_DISP_CLASS_CURSOR 0xc57b -#define GSP_DISP_CLASS_BASE 0xc57a +#define GSP_DISP_CLASS_WINDOW_IMM 0xc57b /* immediate-mode window */ +#define GSP_DISP_CLASS_CURSOR_PIO 0xc57a /* PIO cursor (valid=0) */ /* Channel was announced by NV2080_CTRL_CMD_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER. */ void gsp_disp_engine_channel_add(struct nv_vgpu_device *vgpu, u32 hclass, |
