diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-06 17:55:05 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-06 17:55:05 -0400 |
| commit | cb0400ff86e1a0c427a089b96ca4a87d81a5413a (patch) | |
| tree | d1b170b53dde3aa7971144ed2252085f148d9dc4 | |
| parent | 945c9428e0a9be995d5c486c6337f34e9c3aa5ca (diff) | |
| download | open-iov-cb0400ff86e1a0c427a089b96ca4a87d81a5413a.tar.gz open-iov-cb0400ff86e1a0c427a089b96ca4a87d81a5413a.zip | |
vgsp: mode 33 construct A object pre-promote (m43 post-promote 0x57)
| -rw-r--r-- | kernel/gsp_phys_booter.c | 26 |
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)", |
