diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-08 05:57:26 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-08 05:57:26 -0500 |
| commit | 7c7d4c15a09556ff79c19c8d4890f25af43e531d (patch) | |
| tree | 24ec78f50b7b611e9c93b7120d513ec00d2f4b40 /kernel/include | |
| parent | 5e6cd3cf5df1ab61208848866c30c29ce8907530 (diff) | |
| download | open-iov-7c7d4c15a09556ff79c19c8d4890f25af43e531d.tar.gz open-iov-7c7d4c15a09556ff79c19c8d4890f25af43e531d.zip | |
vgsp-disp: resolve the notifier via the announced display instance memory
The guest announces the display instance-memory block (8 KB
context-DMA hash table + entries, vidmem PA 0x1fff0000 on r1627) via
NV2080_CTRL_CMD_INTERNAL_DISPLAY_WRITE_INST_MEM (0x20800a49), but the
engine ignored it and scanned its FB shadow blindly, never finding the
hash entry - so SET_NOTIFIER_DMA handle 0x10013 resolved to pa=0 and
UPDATE never wrote FINISHED (r1627: UPDATE armed=1 notifier=0x0/0).
Handle 0xa49, record pa/size/address space per guest, read the block
through the FB shadow (or guest RAM for sysmem), and parse the hash
table from the announced location with bounded diagnostics.
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/gsp_display_engine.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/include/gsp_display_engine.h b/kernel/include/gsp_display_engine.h index bf2ee58..aa0ad98 100644 --- a/kernel/include/gsp_display_engine.h +++ b/kernel/include/gsp_display_engine.h @@ -57,6 +57,15 @@ void gsp_disp_engine_note_object(struct nv_vgpu_device *vgpu, u32 hclass, /* Run one pass for a guest (called from the sema service thread). */ void gsp_disp_engine_pump(struct nv_vgpu_device *vgpu); +/* + * Display instance memory location from + * NV2080_CTRL_CMD_INTERNAL_DISPLAY_WRITE_INST_MEM (0x20800a49): + * instMemPhysAddr / instMemSize / instMemAddrSpace. The notifier + * context-DMA handles resolve through this block's hash table. + */ +void gsp_disp_engine_inst_mem(struct nv_vgpu_device *vgpu, u64 pa, u64 size, + u32 addr_space); + /* Drop all display channels of one guest (mdev cleanup). */ void gsp_disp_engine_vgpu_cleanup(struct nv_vgpu_device *vgpu); |
