From 7c7d4c15a09556ff79c19c8d4890f25af43e531d Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Sun, 8 Nov 2026 05:57:26 -0500 Subject: 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. --- kernel/include/gsp_display_engine.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'kernel/include/gsp_display_engine.h') 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); -- cgit v1.2.3