On 10/12/26 11:47, Jesse Zhang wrote:
> The uapi documents drm_amdgpu_gem_list_handles_entry.alignment as
> "physical start_addr alignment in bytes", and GEM_OP
> GET_GEM_CREATE_INFO returns the same value in bytes, but
> GEM_LIST_HANDLES returns tbo.page_alignment, which is in pages. For a BO
> created with a 64 KiB alignment on navi31:
> 
>   GET_GEM_CREATE_INFO: alignment=65536
>   GEM_LIST_HANDLES:    alignment=16
> 
> so a user such as CRIU that recreates BOs from this list uses the wrong
> alignment. Convert it to bytes.
> 
> Fixes: f9db1fc52ceb ("drm/amdgpu: Add ioctl to get all gem handles for a 
> process")
> Signed-off-by: Jesse Zhang <[email protected]>

Reviewed-by: Christian König <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index e791d066fd47..8dbd7bb77305 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -1281,7 +1281,7 @@ int amdgpu_gem_list_handles_ioctl(struct drm_device 
> *dev, void *data,
>               bo_entry->alloc_flags = bo->flags & 
> AMDGPU_GEM_CREATE_SETTABLE_MASK;
>               bo_entry->preferred_domains = bo->preferred_domains;
>               bo_entry->gem_handle = id;
> -             bo_entry->alignment = bo->tbo.page_alignment;
> +             bo_entry->alignment = (u64)bo->tbo.page_alignment << PAGE_SHIFT;
>  
>               if (bo->tbo.base.import_attach)
>                       bo_entry->flags |= 
> AMDGPU_GEM_LIST_HANDLES_FLAG_IS_IMPORT;

Reply via email to