summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 20:17:53 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 20:17:53 -0400
commit27d969d9a1850e096a46d43b268de0e2eb91e8b5 (patch)
treef5b8ae3e2bb4b3b89432fd0c6e30f1560a6c5aab /kernel/gsp_phys_booter.c
parent0c1e58b9ceeeff42931222ab14e36a18530a6b7b (diff)
downloadopen-iov-27d969d9a1850e096a46d43b268de0e2eb91e8b5.tar.gz
open-iov-27d969d9a1850e096a46d43b268de0e2eb91e8b5.zip
vgsp: mode 35 - V7 USERD index 4 (free fixed slot; index 3 collided with golden D, NV_ERR_NO_MEMORY 0x51)
Diffstat (limited to 'kernel/gsp_phys_booter.c')
-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