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.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index e1563dd..8756d83 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -18437,6 +18437,26 @@ static bool gsp_phys_gr_slot_golden_blank(u32 j)
}
/*
+ * eng28 (CONT.490): golden READY. With the golden overlay forced (mode 2,
+ * sema_gl_mme_golden + sema_gl_mme_golden_force), the pack fills every
+ * called slot from the driver-emitted golden program whether or not the
+ * client's 0x114 IRAM upload was captured, and golden-only blanks every
+ * body the library cannot serve (fail-closed). In that state the captured
+ * macro program is no longer a PREREQUISITE for a safe first launch, so
+ * the service's immature-skip gate (see svc_gr_request) must not
+ * software-complete beef 3D windows that the golden program can serve.
+ * The client's own state pushes (clear colour + CLEAR_SURFACE + MME macro
+ * calls) then reach the engine - without this the whole draw-state stream
+ * was consumed with zero engine contact on boots whose setup push never
+ * became readable.
+ */
+bool gsp_phys_gr_golden_ready(void)
+{
+ return READ_ONCE(gsp_phys_rmcall_gr_mme_golden) &&
+ READ_ONCE(gsp_phys_rmcall_gr_mme_golden_force);
+}
+
+/*
* SESSION 153-CONTINUED-79: per-launch method-block word cap + prelude drain.
* The r1172-r1175 A/B: every beef launch whose emitted block exceeded ~2000
* words (3083-word full-SA prelude + window, 3315-3484 words) NEVER STARTED