summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 13:47:57 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 13:47:57 -0400
commita8d4f128df384a4b5fb2fea2e2860112e38f9307 (patch)
tree4e2799a3c6407bafab5d5c7b5040bceea31295e0 /kernel/gsp_phys_booter.h
parent61c2434533045524dfbb70e4d9aa82c08a5272db (diff)
downloadopen-iov-a8d4f128df384a4b5fb2fea2e2860112e38f9307.tar.gz
open-iov-a8d4f128df384a4b5fb2fea2e2860112e38f9307.zip
vgsp: install the Tier-2 scratch-pool window spine via PDE_UPDATE + IQ2M sentinel diagnostic
- The Tier-2 shadow VAs (0x200000 + page<<21 + line<<16) had no PTE chain in the engine's table view on the shared-management VAS: pdb_build's client PD0 spine for the guest scratch PT pool is discarded by the server's root migration, so every param/program/release/alias leg the launch rewrites to a shadow VA was unreachable by the engine. Install each scratch pool window lazily through DMA_UPDATE_PDE_2 (same control shape as the Tier-1 installer, pool chunk as the leaf PT) the first time a shadow line in it is consumed; shared VAS only, idempotent via rmcall_guest_pt_win_mask. m17 confirmed the install is accepted (pdeIndex=1 VA 0x200000 status 0x0). - IQ2M sentinel: write 0xdeadbeef to the inline-QMD destination word 0 after the prewrite and report iq2m=ran/not-run in the post-mortem so 'engine stalled before the inline window' is distinguishable from 'QMD deposited but not executed' without a server capture.
Diffstat (limited to 'kernel/gsp_phys_booter.h')
-rw-r--r--kernel/gsp_phys_booter.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.h b/kernel/gsp_phys_booter.h
index 9a0331f..67d5d5c 100644
--- a/kernel/gsp_phys_booter.h
+++ b/kernel/gsp_phys_booter.h
@@ -335,6 +335,15 @@ void gsp_phys_backend_relay_counters(u64 *requested, u64 *ok, u64 *verify_fail,
#define GSP_PHYS_GR_MAX_INLINE 8u
#define GSP_PHYS_GR_INLINE_BYTES 64u
#define GSP_PHYS_GR_QMD_WORDS 64u
+/*
+ * IQ2M sentinel: written to the inline-QMD destination's word 0 after the
+ * prewrite. If the engine processes the inline window, the copy overwrites
+ * the page (word 0 -> the inline value, 0) and the post-mortem sees the page
+ * changed; if the sentinel survives, the engine stalled before the inline
+ * window and the page was never touched. Distinguishes "IQ2M never ran" from
+ * "QMD deposited but not executed" without a server-side capture.
+ */
+#define GSP_PHYS_GR_QMD_SENTINEL 0xdeadbeefu
#define GSP_PHYS_GR_QMD_WORD_NONE 0xffffffffu
#define GSP_PHYS_GR_RAW_WORDS 256u