[PATCH v3 4/9] drm/amdgpu: Wire up MMIO_REMAP placement and User-visible strings

Alex Deucher alexdeucher at gmail.com
Thu Aug 28 15:21:45 UTC 2025


On Thu, Aug 28, 2025 at 5:33 AM Srinivasan Shanmugam
<srinivasan.shanmugam at 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.koenig at amd.com>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
> Reviewed-by: Christian König <christian.koenig at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at 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
>


More information about the amd-gfx mailing list