summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-20 19:37:17 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-20 19:37:17 -0400
commitf99e6860e963b841baf486348e14c735ea12c010 (patch)
treeaba723c61a8298d61dd4ca4934706d6295380d9c /kernel/gsp_phys_booter.h
parentdb654ec86465713e13416071cdabc189aa9b1b94 (diff)
downloadopen-iov-f99e6860e963b841baf486348e14c735ea12c010.tar.gz
open-iov-f99e6860e963b841baf486348e14c735ea12c010.zip
sema/boot: r383 kill the blanket bounce copy-out (alias+staleness write surface) + write guards; REPLAY-CAPTURE closes the silent launch-drop hole; CE operand misses feed the pin-demand channel
- bounce copy-out now records staged_hpa[bi] per launch and skips: (a) recs whose hpa != staged slot content (alias/leftover), (b) pages the engine did not change (~955 of 968 per boot launch); the remaining changed pages re-validate via gsp_sema_gr_write_guard before the 4 KiB memcpy. Removes the blanket 968-page write-back that was the remaining boot-corruption lottery vector (guest slab freelist clobbered by a foreign page write). - new bounded WGUARD-SKIP guards: gr_write_guard (pin-first re-resolution) on copy-out, release-word zero/restore (rel_va plumbed through the submit), stale-recover-zero, counter release; svc_write_guard pin-agreement on 4/8-byte SYS/FB service writes; svc_copy SYS-dst hold on a fresh-pin contradiction. - svc_qmd_accum replay hole: a trusted replay of an unseen push now captures (REPLAY-CAPTURE) instead of silently dropping; known push -> LAUNCH-SKIP witness; capture history ring prevents double-capture. - svc_op_translate miss path emits the stalled-VA demand signal for CE operands.
Diffstat (limited to 'kernel/gsp_phys_booter.h')
-rw-r--r--kernel/gsp_phys_booter.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.h b/kernel/gsp_phys_booter.h
index fb7b2a4..d0c5762 100644
--- a/kernel/gsp_phys_booter.h
+++ b/kernel/gsp_phys_booter.h
@@ -421,6 +421,9 @@ struct gsp_phys_gr_submit {
u64 rel_hpa; /* guest-visible QMD release0 page, or 0 */
u32 rel_off;
u32 rel_payload;
+ u64 rel_va; /* r378: device VA rel_hpa was resolved from,
+ * for write-target re-validation before the
+ * release word is zeroed/restored */
u64 sem_hpa; /* guest-visible channel release page, or 0 */
u32 sem_off;
u32 sem_payload;