summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_sema_service.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-06 22:09:22 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-06 22:09:22 -0500
commitdb401573f1a8a2a926901f752b4401e8916d976c (patch)
tree24bb1b9264478143a9dde674d70db1b8fcdca1dc /kernel/gsp_sema_service.c
parent0aec62b805c493a4200d2e8edf4e46c90890fd55 (diff)
downloadopen-iov-db401573f1a8a2a926901f752b4401e8916d976c.tar.gz
open-iov-db401573f1a8a2a926901f752b4401e8916d976c.zip
vgsp-gl: GS SPH placement/maps/context A/B knobs
Diffstat (limited to 'kernel/gsp_sema_service.c')
-rw-r--r--kernel/gsp_sema_service.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index 4ede0c7..6972172 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -10657,7 +10657,9 @@ static void svc_gl_flush(struct nv_vgpu_device *vgpu,
};
u32 gs_maps =
gsp_phys_rmcall_gr_sph_gs_maps_value();
- u64 dst = fam + 0x780u;
+ u64 dst = fam +
+ (gsp_phys_rmcall_gr_sph_gs_addr_value() ?
+ 0xe80u : 0x780u);
bool dup = false;
u32 pi4;
@@ -10678,6 +10680,19 @@ static void svc_gl_flush(struct nv_vgpu_device *vgpu,
gs_words[17] = 0u;
} else if (gs_maps == 3u) {
gs_words[17] = 0u;
+ } else if (gs_maps == 4u) {
+ /* IMAP = previous OMAP; OMAP =
+ * PS IMAP exactly (POSITION.W). */
+ gs_words[5] = 0xf0000000u;
+ gs_words[10] = 0x0000000fu;
+ gs_words[13] = 0x00008000u;
+ gs_words[17] = 0u;
+ } else if (gs_maps == 5u) {
+ /* mesh-dummy IMAP, OMAP POSITION.W. */
+ gs_words[5] = 0u;
+ gs_words[10] = 0u;
+ gs_words[13] = 0x00008000u;
+ gs_words[17] = 0u;
}
/* SESSION 155 CONT 13: mesh-dummy FASTGS
* form (bit24 ENABLE_FAST_G_S). */