summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/gsp_phys_booter.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index ca58c28..208c135 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -1189,8 +1189,16 @@ bool gsp_phys_boot_requested(void)
* PM ctxsw buffer: the captured raw size 0xd100 (the allocation is page
* rounded; the promote entry keeps the captured raw size).
*/
+/*
+ * USERD_INDEX_VALUE: the captured user-lane word is index 3 on page 1, but
+ * the golden channel D already owns the fixed ChID derived from index 3, so
+ * V7 takes the m29-proven free slot index 4 (page bits are ignored for a
+ * sysmem USERD, m14). Requesting index 3 makes kfifoChidMgrAllocChid_IMPL
+ * fail NV_ERR_NO_MEMORY (0x51) exactly like GOLDEN9_SIBLING_A did before
+ * 9877623b.
+ */
#define GSP_PHYS_RMCALL_CHANNEL_FLAG_USER_LANE \
- (u32)(GSP_PHYS_RMCALL_CHANNEL_FLAG_PRIVILEGED | (3u << 8) | \
+ (u32)(GSP_PHYS_RMCALL_CHANNEL_FLAG_PRIVILEGED | (4u << 8) | \
(1u << 21))
#define GSP_PHYS_RMCALL_CHANNEL_INTERNALFLAGS_USER_LANE 0x1du
#define GSP_PHYS_RMCALL_TSG_FAULT_BUF_SIZE 0x2000u