diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-07 18:44:21 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-07 18:44:21 -0500 |
| commit | 035d033c5a047e395a7b06bceea1dc5b594c3b90 (patch) | |
| tree | ec772c209376abf0fa65fb1cea5c1527d4ce1fbe /tools/debug/nv2080_ctrl.c | |
| parent | 22ca5d04f2fdd91500ff82b6e5154a7e5efb50d4 (diff) | |
| download | open-iov-035d033c5a047e395a7b06bceea1dc5b594c3b90.tar.gz open-iov-035d033c5a047e395a7b06bceea1dc5b594c3b90.zip | |
vgsp-disp: host-side EVO display engine (channels, push buffer, notifier, raster)
The guest nvidia-modeset drives the display through per-channel NV-DMA
push buffers kicked via the BAR0 UDISP control windows. Emulate that
engine contract host-side, unmodified guest:
- channel registration: display-channel RM objects (core 0xc57d, window
0xc57e, cursor 0xc57b, 0xc57a) are noted from the alloc stream, and the
internal control NV2080_CTRL_CMD_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER
(0x20800a58) records each push buffer (guest PA, size, class,
instance, validity);
- PUT polling + GET publication in the channel control pages (core
0x680000, window 0x690000+n*0x1000, cursor 0x6D8000+n*0x1000);
- NV-DMA method parser (METHOD/ONE_INC/NONINC/JUMP/SET_SUBDEVICE_MASK)
with the wrap-JUMP follow;
- completion: SET_CONTEXT_DMA_NOTIFIER / SET_NOTIFIER_CONTROL tracking,
exact notifier-surface resolution through the display instance hash
table (no heuristic writes), NV_DISP_NOTIFIER FINISHED on UPDATE
(0x200), and the channel completion event post;
- free-running 1080p60 raster line for NVC57E_GET_LINE.
All effects are behind independent knobs (disp_engine, disp_finish,
disp_vblank, disp_events, disp_notifier_pa) with verbose diagnostics
(disp_dbg, disp_dump), so the previous behaviour stays one load away.
Diffstat (limited to 'tools/debug/nv2080_ctrl.c')
0 files changed, 0 insertions, 0 deletions
