diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-06 23:56:44 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-06 23:56:44 -0400 |
| commit | a97775aa4abddb0334ff8f35d4cee4b07c56cf01 (patch) | |
| tree | f49c57368b2e0509913fd2598ecc7ea397d61439 /kernel/gsp_phys_booter.c | |
| parent | 374292ae2d6379ffab6ed5b7eeedf712581365ab (diff) | |
| download | open-iov-a97775aa4abddb0334ff8f35d4cee4b07c56cf01.tar.gz open-iov-a97775aa4abddb0334ff8f35d4cee4b07c56cf01.zip | |
vgsp: m70 - restore the capture-exact FBMEM instance/ramfc (revert the m62 readback deviation)
The m62 sysmem-chunk instance/ramfc made the server's writes host-readable
(job done: FECS showed V7's instance loaded with VALID=1, TARGET=3 sysmem),
but the captured real lane uses FBMEM slices and the GR engine core's
context restore may require VIDMEM instance/RAMFC. Keep every fix
(R1/E2/m68 prefetch/m69 win0) and restore the capture shape.
Diffstat (limited to 'kernel/gsp_phys_booter.c')
| -rw-r--r-- | kernel/gsp_phys_booter.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c index 611a128..4fb37f4 100644 --- a/kernel/gsp_phys_booter.c +++ b/kernel/gsp_phys_booter.c @@ -12843,15 +12843,13 @@ static int gsp_phys_rmcall_alloc_user_lane_channel(void __iomem *bar0) ch.internal_flags = cpu_to_le32( GSP_PHYS_RMCALL_CHANNEL_INTERNALFLAGS_USER_LANE); /* - * Mode-35 diagnostic (m62): instance/ramfc on the host-visible sysmem - * chunks so the server's instance/RAMFC writes (WFI pointer, PBDMA - * TARGET bits) can be decoded from the driver; the captured lane uses - * FBMEM slices, which the host cannot read. One-variable diagnostic; - * revert to mem_desc_fb() to restore the capture-exact shape. + * m70: back to the capture-exact FBMEM instance/ramfc slices. The m62 + * sysmem-chunk deviation made the server's writes host-readable (that + * job is done), but the capture uses FBMEM here and the GR engine + * core's context restore may require VIDMEM instance/RAMFC. */ - ch.instance_mem = gsp_phys_rmcall_mem_desc(GSP_PHYS_RMCALL_BUF_INSTANCE); - ch.ramfc_mem = gsp_phys_rmcall_mem_desc(GSP_PHYS_RMCALL_BUF_RAMFC); - ch.ramfc_mem.size = cpu_to_le64(0x200); + ch.instance_mem = gsp_phys_rmcall_mem_desc_fb(fb, 0x1000); + ch.ramfc_mem = gsp_phys_rmcall_mem_desc_fb(fb, 0x200); ch.userd_mem = gsp_phys_rmcall_mem_desc(GSP_PHYS_RMCALL_BUF_USERD); ch.h_userd_memory[0] = cpu_to_le32(GSP_PHYS_RMCALL_HANDLE_USER_LANE_USERD); @@ -12872,7 +12870,7 @@ static int gsp_phys_rmcall_alloc_user_lane_channel(void __iomem *bar0) false, NULL, "mode 35 V7 real-client user lane channel", true, &rpc, &status); - pr_info("vgsp-boot: rm-call: mode 35 V7 channel alloc: hObject=0x%x hParent=hTsg=0x%x flags=0x%x internalFlags=0x%x engineType=0 hContextShare=0x%x hVASpace=0 gpFifoOffset=0x%llx gpFifoEntries=%u hUserdMemory[0]=0 userdMem=sysmem instance=0x%llx/0x1000 sysmem ramfc=0x%llx/0x200 sysmem (m62 diagnostic readback) hObjectError=0x%x errorNotifier=sysmem status=0x%x rpc_result=0x%x ret=%d (deviations: entries=%u vs captured 1024; sysmem USERD vs captured hUserdMemory object)\n", + pr_info("vgsp-boot: rm-call: mode 35 V7 channel alloc: hObject=0x%x hParent=hTsg=0x%x flags=0x%x internalFlags=0x%x engineType=0 hContextShare=0x%x hVASpace=0 gpFifoOffset=0x%llx gpFifoEntries=%u hUserdMemory[0]=0 userdMem=sysmem instance=0x%llx/0x1000 FBMEM ramfc=0x%llx/0x200 FBMEM (m70: capture shape) hObjectError=0x%x errorNotifier=sysmem status=0x%x rpc_result=0x%x ret=%d (deviations: entries=%u vs captured 1024; sysmem USERD vs captured hUserdMemory object)\n", GSP_PHYS_RMCALL_HANDLE_USER_LANE, boot_stage.rmcall_tsg, GSP_PHYS_RMCALL_CHANNEL_FLAG_USER_LANE, GSP_PHYS_RMCALL_CHANNEL_INTERNALFLAGS_USER_LANE, |
