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;