On 09/01/2026 13:07, Boris Brezillon wrote:
> Move all panthor_kernel_bo_xxx() helpers at the end of the file, just
> before the debugfs init logic. This will make further panthor_gem.c
> refactoring more readable.
> 
> Signed-off-by: Boris Brezillon <[email protected]>

Reviewed-by: Steven Price <[email protected]>

> ---
>  drivers/gpu/drm/panthor/panthor_gem.c | 212 +++++++++++++-------------
>  1 file changed, 106 insertions(+), 106 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panthor/panthor_gem.c 
> b/drivers/gpu/drm/panthor/panthor_gem.c
> index 13e9dd3764fa..4b3d82f001d8 100644
> --- a/drivers/gpu/drm/panthor/panthor_gem.c
> +++ b/drivers/gpu/drm/panthor/panthor_gem.c
> @@ -132,112 +132,6 @@ static void panthor_gem_free_object(struct 
> drm_gem_object *obj)
>       drm_gem_object_put(vm_root_gem);
>  }
>  
> -/**
> - * panthor_kernel_bo_destroy() - Destroy a kernel buffer object
> - * @bo: Kernel buffer object to destroy. If NULL or an ERR_PTR(), the 
> destruction
> - * is skipped.
> - */
> -void panthor_kernel_bo_destroy(struct panthor_kernel_bo *bo)
> -{
> -     struct panthor_vm *vm;
> -
> -     if (IS_ERR_OR_NULL(bo))
> -             return;
> -
> -     vm = bo->vm;
> -     panthor_kernel_bo_vunmap(bo);
> -
> -     drm_WARN_ON(bo->obj->dev,
> -                 to_panthor_bo(bo->obj)->exclusive_vm_root_gem != 
> panthor_vm_root_gem(vm));
> -     panthor_vm_unmap_range(vm, bo->va_node.start, bo->va_node.size);
> -     panthor_vm_free_va(vm, &bo->va_node);
> -     drm_gem_object_put(bo->obj);
> -     panthor_vm_put(vm);
> -     kfree(bo);
> -}
> -
> -/**
> - * panthor_kernel_bo_create() - Create and map a GEM object to a VM
> - * @ptdev: Device.
> - * @vm: VM to map the GEM to. If NULL, the kernel object is not GPU mapped.
> - * @size: Size of the buffer object.
> - * @bo_flags: Combination of drm_panthor_bo_flags flags.
> - * @vm_map_flags: Combination of drm_panthor_vm_bind_op_flags (only those
> - * that are related to map operations).
> - * @gpu_va: GPU address assigned when mapping to the VM.
> - * If gpu_va == PANTHOR_VM_KERNEL_AUTO_VA, the virtual address will be
> - * automatically allocated.
> - * @name: Descriptive label of the BO's contents
> - *
> - * Return: A valid pointer in case of success, an ERR_PTR() otherwise.
> - */
> -struct panthor_kernel_bo *
> -panthor_kernel_bo_create(struct panthor_device *ptdev, struct panthor_vm *vm,
> -                      size_t size, u32 bo_flags, u32 vm_map_flags,
> -                      u64 gpu_va, const char *name)
> -{
> -     struct drm_gem_shmem_object *obj;
> -     struct panthor_kernel_bo *kbo;
> -     struct panthor_gem_object *bo;
> -     u32 debug_flags = PANTHOR_DEBUGFS_GEM_USAGE_FLAG_KERNEL;
> -     int ret;
> -
> -     if (drm_WARN_ON(&ptdev->base, !vm))
> -             return ERR_PTR(-EINVAL);
> -
> -     kbo = kzalloc(sizeof(*kbo), GFP_KERNEL);
> -     if (!kbo)
> -             return ERR_PTR(-ENOMEM);
> -
> -     obj = drm_gem_shmem_create(&ptdev->base, size);
> -     if (IS_ERR(obj)) {
> -             ret = PTR_ERR(obj);
> -             goto err_free_bo;
> -     }
> -
> -     bo = to_panthor_bo(&obj->base);
> -     kbo->obj = &obj->base;
> -     bo->flags = bo_flags;
> -     bo->base.map_wc = should_map_wc(bo, vm);
> -     bo->exclusive_vm_root_gem = panthor_vm_root_gem(vm);
> -     drm_gem_object_get(bo->exclusive_vm_root_gem);
> -     bo->base.base.resv = bo->exclusive_vm_root_gem->resv;
> -
> -     if (vm == panthor_fw_vm(ptdev))
> -             debug_flags |= PANTHOR_DEBUGFS_GEM_USAGE_FLAG_FW_MAPPED;
> -
> -     panthor_gem_kernel_bo_set_label(kbo, name);
> -     panthor_gem_debugfs_set_usage_flags(to_panthor_bo(kbo->obj), 
> debug_flags);
> -
> -     /* The system and GPU MMU page size might differ, which becomes a
> -      * problem for FW sections that need to be mapped at explicit address
> -      * since our PAGE_SIZE alignment might cover a VA range that's
> -      * expected to be used for another section.
> -      * Make sure we never map more than we need.
> -      */
> -     size = ALIGN(size, panthor_vm_page_size(vm));
> -     ret = panthor_vm_alloc_va(vm, gpu_va, size, &kbo->va_node);
> -     if (ret)
> -             goto err_put_obj;
> -
> -     ret = panthor_vm_map_bo_range(vm, bo, 0, size, kbo->va_node.start, 
> vm_map_flags);
> -     if (ret)
> -             goto err_free_va;
> -
> -     kbo->vm = panthor_vm_get(vm);
> -     return kbo;
> -
> -err_free_va:
> -     panthor_vm_free_va(vm, &kbo->va_node);
> -
> -err_put_obj:
> -     drm_gem_object_put(&obj->base);
> -
> -err_free_bo:
> -     kfree(kbo);
> -     return ERR_PTR(ret);
> -}
> -
>  static struct sg_table *
>  panthor_gem_prime_map_dma_buf(struct dma_buf_attachment *attach,
>                             enum dma_data_direction dir)
> @@ -603,6 +497,112 @@ panthor_gem_sync(struct drm_gem_object *obj, u32 type,
>       return 0;
>  }
>  
> +/**
> + * panthor_kernel_bo_destroy() - Destroy a kernel buffer object
> + * @bo: Kernel buffer object to destroy. If NULL or an ERR_PTR(), the 
> destruction
> + * is skipped.
> + */
> +void panthor_kernel_bo_destroy(struct panthor_kernel_bo *bo)
> +{
> +     struct panthor_vm *vm;
> +
> +     if (IS_ERR_OR_NULL(bo))
> +             return;
> +
> +     vm = bo->vm;
> +     panthor_kernel_bo_vunmap(bo);
> +
> +     drm_WARN_ON(bo->obj->dev,
> +                 to_panthor_bo(bo->obj)->exclusive_vm_root_gem != 
> panthor_vm_root_gem(vm));
> +     panthor_vm_unmap_range(vm, bo->va_node.start, bo->va_node.size);
> +     panthor_vm_free_va(vm, &bo->va_node);
> +     drm_gem_object_put(bo->obj);
> +     panthor_vm_put(vm);
> +     kfree(bo);
> +}
> +
> +/**
> + * panthor_kernel_bo_create() - Create and map a GEM object to a VM
> + * @ptdev: Device.
> + * @vm: VM to map the GEM to. If NULL, the kernel object is not GPU mapped.
> + * @size: Size of the buffer object.
> + * @bo_flags: Combination of drm_panthor_bo_flags flags.
> + * @vm_map_flags: Combination of drm_panthor_vm_bind_op_flags (only those
> + * that are related to map operations).
> + * @gpu_va: GPU address assigned when mapping to the VM.
> + * If gpu_va == PANTHOR_VM_KERNEL_AUTO_VA, the virtual address will be
> + * automatically allocated.
> + * @name: Descriptive label of the BO's contents
> + *
> + * Return: A valid pointer in case of success, an ERR_PTR() otherwise.
> + */
> +struct panthor_kernel_bo *
> +panthor_kernel_bo_create(struct panthor_device *ptdev, struct panthor_vm *vm,
> +                      size_t size, u32 bo_flags, u32 vm_map_flags,
> +                      u64 gpu_va, const char *name)
> +{
> +     struct drm_gem_shmem_object *obj;
> +     struct panthor_kernel_bo *kbo;
> +     struct panthor_gem_object *bo;
> +     u32 debug_flags = PANTHOR_DEBUGFS_GEM_USAGE_FLAG_KERNEL;
> +     int ret;
> +
> +     if (drm_WARN_ON(&ptdev->base, !vm))
> +             return ERR_PTR(-EINVAL);
> +
> +     kbo = kzalloc(sizeof(*kbo), GFP_KERNEL);
> +     if (!kbo)
> +             return ERR_PTR(-ENOMEM);
> +
> +     obj = drm_gem_shmem_create(&ptdev->base, size);
> +     if (IS_ERR(obj)) {
> +             ret = PTR_ERR(obj);
> +             goto err_free_bo;
> +     }
> +
> +     bo = to_panthor_bo(&obj->base);
> +     kbo->obj = &obj->base;
> +     bo->flags = bo_flags;
> +     bo->base.map_wc = should_map_wc(bo, vm);
> +     bo->exclusive_vm_root_gem = panthor_vm_root_gem(vm);
> +     drm_gem_object_get(bo->exclusive_vm_root_gem);
> +     bo->base.base.resv = bo->exclusive_vm_root_gem->resv;
> +
> +     if (vm == panthor_fw_vm(ptdev))
> +             debug_flags |= PANTHOR_DEBUGFS_GEM_USAGE_FLAG_FW_MAPPED;
> +
> +     panthor_gem_kernel_bo_set_label(kbo, name);
> +     panthor_gem_debugfs_set_usage_flags(to_panthor_bo(kbo->obj), 
> debug_flags);
> +
> +     /* The system and GPU MMU page size might differ, which becomes a
> +      * problem for FW sections that need to be mapped at explicit address
> +      * since our PAGE_SIZE alignment might cover a VA range that's
> +      * expected to be used for another section.
> +      * Make sure we never map more than we need.
> +      */
> +     size = ALIGN(size, panthor_vm_page_size(vm));
> +     ret = panthor_vm_alloc_va(vm, gpu_va, size, &kbo->va_node);
> +     if (ret)
> +             goto err_put_obj;
> +
> +     ret = panthor_vm_map_bo_range(vm, bo, 0, size, kbo->va_node.start, 
> vm_map_flags);
> +     if (ret)
> +             goto err_free_va;
> +
> +     kbo->vm = panthor_vm_get(vm);
> +     return kbo;
> +
> +err_free_va:
> +     panthor_vm_free_va(vm, &kbo->va_node);
> +
> +err_put_obj:
> +     drm_gem_object_put(&obj->base);
> +
> +err_free_bo:
> +     kfree(kbo);
> +     return ERR_PTR(ret);
> +}
> +
>  #ifdef CONFIG_DEBUG_FS
>  struct gem_size_totals {
>       size_t size;

Reply via email to