summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 17:55:05 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 17:55:05 -0400
commit556739301fe8c5387171b1513ddff8d5da551a9c (patch)
tree560fad0cda6a21fa74a751a09883478f90bc8064 /kernel
parent789b145638daf452f550762ad3143fb8a73f1082 (diff)
downloadopen-iov-556739301fe8c5387171b1513ddff8d5da551a9c.tar.gz
open-iov-556739301fe8c5387171b1513ddff8d5da551a9c.zip
vgsp: mode 33 construct A object pre-promote (m43 post-promote 0x57)
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_phys_booter.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index 3069fbe..b1f4b68 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -10185,25 +10185,17 @@ static int gsp_phys_rmcall_golden_sibling_alloc(void __iomem *bar0)
le32_to_cpu(ch.h_va_space),
GSP_PHYS_RMCALL_CHANNEL_FLAG_GOLDEN9_SIBLING_A);
gsp_phys_rmcall_ctx_diag_decode("post-V6-constructs pre-A-commit");
- ret = gsp_phys_rmcall_golden9_promote_on(bar0,
- GSP_PHYS_RMCALL_HANDLE_GOLDEN_SIBLING, true);
- if (ret)
- return ret;
/*
- * Mode 33: with the promote accepted, construct the TURING_COMPUTE_A
- * (0xc5c0) class object on A. The forwarded launch's SET_OBJECT binds
- * class 0xc5c0 in the execution channel's context, so the object must
- * be a child of A (V6's object 0xcaf0002c belongs to V6's context and
- * stays there for the mode-31 commit-carrier relationship). The
- * construct runs after the accepted promote by design: every construct
- * before/after the promote on the D golden channel deadlocked RM
- * (m3a-m3g, m15 -110); this is the first construct on the post-promote
- * wired sibling. A failure aborts stage 3 with no retry, exactly like
- * a failed promote.
+ * Mode 33: construct the TURING_COMPUTE_A (0xc5c0) class object on A
+ * BEFORE A's 9-entry promote. The post-promote order was refused with
+ * rpc_result=0x57 (NV_ERR_OBJECT_NOT_FOUND) in m43; V6's own 0xc5c0
+ * construct likewise runs before any promote on V6. The golden image
+ * already exists (D's replay ran), so this is a later construct and
+ * does not need the forced first-init save.
*/
if (boot_stage.rmcall_gr_promote ==
GSP_PHYS_RMCALL_GR_PROMOTE_GOLDEN_SIBLING_EXEC) {
- pr_info("vgsp-boot: rm-call: mode 33: TURING_COMPUTE_A on sibling A\n");
+ pr_info("vgsp-boot: rm-call: mode 33: TURING_COMPUTE_A on sibling A (pre-promote)\n");
ret = gsp_phys_rmcall_alloc_gr_object_class(bar0,
GSP_PHYS_RMCALL_CLASS_COMPUTE,
GSP_PHYS_RMCALL_HANDLE_GOLDEN_SIBLING_GR_OBJ,
@@ -10219,6 +10211,10 @@ static int gsp_phys_rmcall_golden_sibling_alloc(void __iomem *bar0)
boot_stage.rmcall_gr_object =
GSP_PHYS_RMCALL_HANDLE_GOLDEN_SIBLING_GR_OBJ;
}
+ ret = gsp_phys_rmcall_golden9_promote_on(bar0,
+ GSP_PHYS_RMCALL_HANDLE_GOLDEN_SIBLING, true);
+ if (ret)
+ return ret;
gsp_phys_rmcall_ctx_diag_dump("INSTANCE (post-A-commit pre-BIND)",
&boot_stage.rmcall_chunks[GSP_PHYS_RMCALL_BUF_INSTANCE]);
gsp_phys_rmcall_ctx_diag_dump("RAMFC (post-A-commit pre-BIND)",