summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-03 15:35:16 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-03 15:35:16 -0500
commit9b801327ffd9e3f2e1f031f9f3752f3ffe3240fd (patch)
tree868e3cd23c2c3facbd19691afc139fbd8ac53e86
parentb0171765c06af069210893b29c43fd9179e2cfd2 (diff)
downloadopen-iov-9b801327ffd9e3f2e1f031f9f3752f3ffe3240fd.tar.gz
open-iov-9b801327ffd9e3f2e1f031f9f3752f3ffe3240fd.zip
vgsp-sph: emit j=2/j=5 REGISTER_COUNT/BINDING records in the SPH-bind prelude (guard 13u->19u, headers 0x20020823/0x20020853, values 0x1a/0x0) - supplies the per-stage validation input the DS checks on the synthesized stage slots (a2040x00/SPH9 wall); constants shaped from the captured j=1 record, fail-closed (no relocation)
-rw-r--r--kernel/gsp_phys_booter.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index 5a5412e..9774869 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -27299,7 +27299,7 @@ gr_page_unmapped:
* from guest RAM (`20020825 [0,04400200]`,
* `20020855 [0,04400000]`).
*/
- if (nfin + 13u <= 64u) {
+ if (nfin + 19u <= 64u) {
in[nfin++] = 0x20000000u | (2u << 16) |
(0x2094u >> 2);
in[nfin++] = (u32)((fam + 0x200u) >> 32) & 0xffu;
@@ -27329,6 +27329,22 @@ gr_page_unmapped:
(0x2140u >> 2);
in[nfin++] = 1u | (5u << 4);
/*
+ * SESSION 153-CONTINUED-90: the per-stage
+ * REGISTER_COUNT/BINDING records for the
+ * synthesized j=2/j=5 slots - the DS SPH
+ * validation's last missing per-stage input;
+ * same shape as the captured stage-1 pair
+ * (reg count 26, group 0).
+ */
+ in[nfin++] = 0x20000000u | (2u << 16) |
+ (0x208cu >> 2);
+ in[nfin++] = 0x1au;
+ in[nfin++] = 0x0u;
+ in[nfin++] = 0x20000000u | (2u << 16) |
+ (0x214cu >> 2);
+ in[nfin++] = 0x1au;
+ in[nfin++] = 0x0u;
+ /*
* SESSION 153-CONTINUED-89: the client's
* init-push stage-1 REGISTER_COUNT/BINDING
* pair (`20020813 0000001a 00000000` in the