[PATCH 3/6] nouveau/gsp: add logging entries for r570
Dave Airlie <[email protected]> Wed, 29 Jul 2026 14:15:27 +1000
| Newsgroups | org.freedesktop.lists.nouveau,org.freedesktop.lists.dri-devel |
|---|---|
| Message-ID | <[email protected]> |
From: Dave Airlie <[email protected]> r570 adds logmnoc and logkrnl. logkrnl is only used for libos3, so add a flag to pick libos2 out and not init on that. Signed-off-by: Dave Airlie <[email protected]> --- .../gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 2 ++ .../drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 2 ++ .../drm/nouveau/nvkm/subdev/gsp/rm/r535/rm.c | 1 + .../drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 23 +++++++++++++++---- .../drm/nouveau/nvkm/subdev/gsp/rm/r570/rm.c | 1 + .../gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 1 + 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h b/drivers/gp= u/drm/nouveau/include/nvkm/subdev/gsp.h index 64fed208e4cf..d45351ce08a1 100644 --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h @@ -145,6 +145,8 @@ struct nvkm_gsp { =09struct nvkm_gsp_mem loginit; =09struct nvkm_gsp_mem logintr; =09struct nvkm_gsp_mem logrm; +=09struct nvkm_gsp_mem logmnoc; +=09struct nvkm_gsp_mem logkrnl; =09struct nvkm_gsp_mem rmargs; =20 =09struct nvkm_gsp_mem wpr_meta; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c b/driver= s/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c index 8e1ad2e79d3e..77a5a1882472 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c @@ -2108,6 +2108,8 @@ r535_gsp_dtor(struct nvkm_gsp *gsp) =20 =09r535_gsp_libos_debugfs_fini(gsp); =20 +=09nvkm_gsp_mem_dtor(&gsp->logkrnl); +=09nvkm_gsp_mem_dtor(&gsp->logmnoc); =09nvkm_gsp_mem_dtor(&gsp->loginit); =09nvkm_gsp_mem_dtor(&gsp->logintr); =09nvkm_gsp_mem_dtor(&gsp->logrm); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rm.c b/drivers= /gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rm.c index a4190676e1ad..e198212df9c5 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rm.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rm.c @@ -11,6 +11,7 @@ r535_wpr_libos2 =3D { =09.os_carveout_size =3D GSP_FW_HEAP_PARAM_OS_SIZE_LIBOS2, =09.base_size =3D GSP_FW_HEAP_PARAM_BASE_RM_SIZE_TU10X, =09.heap_size_min =3D GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS2_MIN_MB, +=09.is_libos2 =3D true, }; =20 static const struct nvkm_rm_wpr diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c b/driver= s/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c index 64011430f4c0..d9786830153d 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c @@ -236,6 +236,7 @@ r570_gsp_libos_init(struct nvkm_gsp *gsp) { =09LibosMemoryRegionInitArgument *args; =09int ret; +=09int idx; =20 =09ret =3D nvkm_gsp_mem_ctor(gsp, 0x1000, &gsp->libos); =09if (ret) @@ -255,15 +256,27 @@ r570_gsp_libos_init(struct nvkm_gsp *gsp) =09if (ret) =09=09return ret; =20 +=09ret =3D gsp_fill_libos_entry(gsp, &args[3], 0x10000, &gsp->logmnoc, "LO= GMNOC"); +=09if (ret) +=09=09return ret; + +=09idx =3D 4; +=09if (!gsp->rm->wpr->is_libos2) { +=09=09ret =3D gsp_fill_libos_entry(gsp, &args[idx], 0x10000, &gsp->logkrnl= , "LOGKRNL"); +=09=09if (ret) +=09=09=09return ret; +=09=09idx++; +=09} + =09ret =3D r535_gsp_rmargs_init(gsp, false); =09if (ret) =09=09return ret; =20 -=09args[3].id8 =3D r535_gsp_libos_id8("RMARGS"); -=09args[3].pa =3D gsp->rmargs.addr; -=09args[3].size =3D gsp->rmargs.size; -=09args[3].kind =3D LIBOS_MEMORY_REGION_CONTIGUOUS; -=09args[3].loc =3D LIBOS_MEMORY_REGION_LOC_SYSMEM; +=09args[idx].id8 =3D r535_gsp_libos_id8("RMARGS"); +=09args[idx].pa =3D gsp->rmargs.addr; +=09args[idx].size =3D gsp->rmargs.size; +=09args[idx].kind =3D LIBOS_MEMORY_REGION_CONTIGUOUS; +=09args[idx].loc =3D LIBOS_MEMORY_REGION_LOC_SYSMEM; =20 #ifdef CONFIG_DEBUG_FS =09r535_gsp_libos_debugfs_init(gsp); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/rm.c b/drivers= /gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/rm.c index 498658d0c60c..fa012756a731 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/rm.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/rm.c @@ -11,6 +11,7 @@ r570_wpr_libos2 =3D { =09.os_carveout_size =3D GSP_FW_HEAP_PARAM_OS_SIZE_LIBOS2, =09.base_size =3D GSP_FW_HEAP_PARAM_BASE_RM_SIZE_TU10X, =09.heap_size_min =3D GSP_FW_HEAP_SIZE_OVERRIDE_LIBOS2_MIN_MB, +=09.is_libos2 =3D true, }; =20 static const struct nvkm_rm_wpr diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h b/drivers/gpu/= drm/nouveau/nvkm/subdev/gsp/rm/rm.h index cc9f33202673..b77059e0ac12 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h @@ -28,6 +28,7 @@ struct nvkm_rm_wpr { =09u32 heap_size_non_wpr; =09u32 rsvd_size_pmu; =09bool offset_set_by_acr; +=09bool is_libos2; }; =20 struct nvkm_rm_api { --=20 2.55.0