summaryrefslogtreecommitdiffstats
path: root/scripts/debug_guest_init.sh
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 14:25:18 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-07 14:25:18 -0400
commitbd8ad491365bf0164d7b397564f051b014da92d1 (patch)
treeb5f3086ecbb2e92496eb9da629c9f933434bc725 /scripts/debug_guest_init.sh
parentcfdf2de445f8459a0a6bd3ec9c19d8af1ef927a1 (diff)
downloadopen-iov-bd8ad491365bf0164d7b397564f051b014da92d1.tar.gz
open-iov-bd8ad491365bf0164d7b397564f051b014da92d1.zip
vgsp: m99 - identity-map the forwarded kernel's guest data pages into the engine tree
The m97/m98 decode proved the SM instruction fetch and const reads work; the wall is the kernel's first global data access (prologue instruction at +0x80) to a guest-VA device pointer (param page words 6..9 carry the demo's two 16MB buffers at 0x763dXXXXXXXX), which is not mapped in the engine's page tables. The walker walks OUR root->PD2->PD1->PD0->PT tree (SC PDB == our VASPDB chunk, proven by matching the same-run INST base to the PDB-root DMA log), and fresh direct-planted tables are visible at first fetch. Service side (gsp_sema_service.c): svc_gr_data_fill() scans the param (c[0x0]) page for plausible device VAs, resolves the containing 2MB windows (-1..+16 windows, early stop when a window resolves nothing) via svc_resolve_va on the service thread, and carries {va, pa} in svc_fwd_req.gr_data; svc_fwd_gr_work() converts PA->HPA and attaches the list to the submit. Backend (gsp_phys_booter.c): gsp_phys_rmcall_gr_data_map() plants VA->HPA leaf PTEs (GENERIC_MEMORY kind 0x06, like UVM/RM on Turing) into lazily allocated PD1/PD0/PT chunk branches under root[0] (VAs < 2^47), caching branches per index; the submit maps all req->data pages before publish and logs the count.
Diffstat (limited to 'scripts/debug_guest_init.sh')
0 files changed, 0 insertions, 0 deletions