[PATCH 03/13] drm/xe/sa: Cleanup internal BO data at device removal
Matthew Brost
matthew.brost at intel.com
Thu Dec 12 03:07:19 UTC 2024
On Thu, Dec 12, 2024 at 02:01:31AM +0100, Michal Wajdeczko wrote:
> The underlying buffer object used by the sub-allocator is
> device managed and it will be released on device removal.
> Thus we should not wait with cleanup of related BO members
> until drm cleanup, but do that at the same time as BO.
> Add another device action and move there related cleanups.
>
Kinda seems overkill to split this. I'd leave as is or just remove 'if
(!bo)' from xe_sa_bo_manager_fini.
Matt
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Matthew Brost <matthew.brost at intel.com>
> ---
> drivers/gpu/drm/xe/xe_sa.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c
> index eb314ca75355..a5e05237b646 100644
> --- a/drivers/gpu/drm/xe/xe_sa.c
> +++ b/drivers/gpu/drm/xe/xe_sa.c
> @@ -16,18 +16,19 @@
> static void xe_sa_bo_manager_fini(struct drm_device *drm, void *arg)
> {
> struct xe_sa_manager *sa_manager = arg;
> - struct xe_bo *bo = sa_manager->bo;
> -
> - if (!bo) {
> - drm_err(drm, "no bo for sa manager\n");
> - return;
> - }
>
> drm_suballoc_manager_fini(&sa_manager->base);
> +}
> +
> +static void sa_bo_manager_fini_bo(void *arg)
> +{
> + struct xe_sa_manager *sa_manager = arg;
>
> if (sa_manager->is_iomem)
> kvfree(sa_manager->cpu_ptr);
>
> + sa_manager->cpu_ptr = NULL;
> + sa_manager->gpu_addr = 0;
> sa_manager->bo = NULL;
> }
>
> @@ -66,6 +67,10 @@ struct xe_sa_manager *xe_sa_bo_manager_init(struct xe_tile *tile, u32 size, u32
> memset(sa_manager->cpu_ptr, 0, bo->ttm.base.size);
> }
>
> + ret = devm_add_action_or_reset(xe->drm.dev, sa_bo_manager_fini_bo, sa_manager);
> + if (ret)
> + return ERR_PTR(ret);
> +
> drm_suballoc_manager_init(&sa_manager->base, managed_size, align);
> ret = drmm_add_action_or_reset(&xe->drm, xe_sa_bo_manager_fini,
> sa_manager);
> --
> 2.47.1
>
More information about the Intel-xe
mailing list