summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_phys_booter.c')
-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)",