On Thu, Aug 28, 2025 at 5:33 AM Srinivasan Shanmugam <srinivasan.shanmu...@amd.com> wrote: > > Wire up the conversions and strings for the new MMIO_REMAP placement: > > * amdgpu_mem_type_to_domain() maps AMDGPU_PL_MMIO_REMAP -> domain > * amdgpu_bo_placement_from_domain() accepts the new domain > * amdgpu_bo_mem_stats_placement() and amdgpu_bo_print_info() report it > * res cursor supports the new placement > * fdinfo prints "mmioremap" for the new placement > > Cc: Christian König <christian.koe...@amd.com> > Cc: Alex Deucher <alexander.deuc...@amd.com> > Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmu...@amd.com> > Reviewed-by: Christian König <christian.koe...@amd.com>
Reviewed-by: Alex Deucher <alexander.deuc...@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 13 +++++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 2 ++ > drivers/gpu/drm/amd/amdgpu/amdgpu_res_cursor.h | 2 ++ > 4 files changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > index 91d638098889..b349bb3676d5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c > @@ -70,6 +70,7 @@ void amdgpu_show_fdinfo(struct drm_printer *p, struct > drm_file *file) > [AMDGPU_PL_GWS] = "gws", > [AMDGPU_PL_OA] = "oa", > [AMDGPU_PL_DOORBELL] = "doorbell", > + [AMDGPU_PL_MMIO_REMAP] = "mmioremap", > }; > unsigned int hw_ip, i; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index 122a88294883..fe486988a738 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -153,6 +153,14 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo > *abo, u32 domain) > c++; > } > > + if (domain & AMDGPU_GEM_DOMAIN_MMIO_REMAP) { > + places[c].fpfn = 0; > + places[c].lpfn = 0; > + places[c].mem_type = AMDGPU_PL_MMIO_REMAP; > + places[c].flags = 0; > + c++; > + } > + > if (domain & AMDGPU_GEM_DOMAIN_GTT) { > places[c].fpfn = 0; > places[c].lpfn = 0; > @@ -1545,6 +1553,8 @@ uint32_t amdgpu_bo_mem_stats_placement(struct amdgpu_bo > *bo) > return AMDGPU_PL_OA; > case AMDGPU_GEM_DOMAIN_DOORBELL: > return AMDGPU_PL_DOORBELL; > + case AMDGPU_GEM_DOMAIN_MMIO_REMAP: > + return AMDGPU_PL_MMIO_REMAP; > default: > return TTM_PL_SYSTEM; > } > @@ -1628,6 +1638,9 @@ u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, > struct seq_file *m) > case AMDGPU_PL_DOORBELL: > placement = "DOORBELL"; > break; > + case AMDGPU_PL_MMIO_REMAP: > + placement = "MMIO REMAP"; > + break; > case TTM_PL_SYSTEM: > default: > placement = "CPU"; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > index 87523fcd4386..656b8a931dae 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h > @@ -167,6 +167,8 @@ static inline unsigned amdgpu_mem_type_to_domain(u32 > mem_type) > return AMDGPU_GEM_DOMAIN_OA; > case AMDGPU_PL_DOORBELL: > return AMDGPU_GEM_DOMAIN_DOORBELL; > + case AMDGPU_PL_MMIO_REMAP: > + return AMDGPU_GEM_DOMAIN_MMIO_REMAP; > default: > break; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_res_cursor.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_res_cursor.h > index 50fcd86e1033..be2e56ce1355 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_res_cursor.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_res_cursor.h > @@ -91,6 +91,7 @@ static inline void amdgpu_res_first(struct ttm_resource > *res, > break; > case TTM_PL_TT: > case AMDGPU_PL_DOORBELL: > + case AMDGPU_PL_MMIO_REMAP: > node = to_ttm_range_mgr_node(res)->mm_nodes; > while (start >= node->size << PAGE_SHIFT) > start -= node++->size << PAGE_SHIFT; > @@ -153,6 +154,7 @@ static inline void amdgpu_res_next(struct > amdgpu_res_cursor *cur, uint64_t size) > break; > case TTM_PL_TT: > case AMDGPU_PL_DOORBELL: > + case AMDGPU_PL_MMIO_REMAP: > node = cur->node; > > cur->node = ++node; > -- > 2.34.1 >