[PATCH libdrm] amdgpu: only add DRM_RDWR when kernel accept it

Christian König christian.koenig at amd.com
Tue Apr 17 08:59:22 UTC 2018


Hi guys,

CCing: dri-devel.

question to the usual suspects here: Does somebody of hand knows when 
DRM_RDWR was added and how we can check reliable if it's available or not?

Using the version number of amdgpu for this sounds a bit questionable, 
cause that reflects amdgpu functionality level and not DRM prime 
functionality level.

Thanks,
Christian.

Am 17.04.2018 um 10:48 schrieb Qiang Yu:
> For kernel < 4.6 drm_prime_handle_to_fd_ioctl won't
> accept DRM_RDWR.
>
> Sigend-off-by: Qiang Yu <Qiang.Yu at amd.com>
> ---
>   amdgpu/amdgpu_bo.c       | 8 ++++++--
>   amdgpu/amdgpu_internal.h | 2 ++
>   2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/amdgpu/amdgpu_bo.c b/amdgpu/amdgpu_bo.c
> index 9e37b14..17f848f 100644
> --- a/amdgpu/amdgpu_bo.c
> +++ b/amdgpu/amdgpu_bo.c
> @@ -229,6 +229,7 @@ int amdgpu_bo_export(amdgpu_bo_handle bo,
>   		     uint32_t *shared_handle)
>   {
>   	int r;
> +	uint32_t flags;
>   
>   	switch (type) {
>   	case amdgpu_bo_handle_type_gem_flink_name:
> @@ -246,8 +247,11 @@ int amdgpu_bo_export(amdgpu_bo_handle bo,
>   
>   	case amdgpu_bo_handle_type_dma_buf_fd:
>   		amdgpu_add_handle_to_table(bo);
> -		return drmPrimeHandleToFD(bo->dev->fd, bo->handle,
> -					  DRM_CLOEXEC | DRM_RDWR,
> +		flags = DRM_CLOEXEC;
> +		if (AMDGPU_VERSION(bo->dev->major_version, bo->dev->minor_version) >=
> +		    AMDGPU_VERSION(3, 1))
> +			flags |= DRM_RDWR;
> +		return drmPrimeHandleToFD(bo->dev->fd, bo->handle, flags,
>   					  (int*)shared_handle);
>   	}
>   	return -EINVAL;
> diff --git a/amdgpu/amdgpu_internal.h b/amdgpu/amdgpu_internal.h
> index 99b8ce0..09f5036 100644
> --- a/amdgpu/amdgpu_internal.h
> +++ b/amdgpu/amdgpu_internal.h
> @@ -39,6 +39,8 @@
>   #define ROUND_UP(x, y) ((((x)-1) | __round_mask(x, y))+1)
>   #define ROUND_DOWN(x, y) ((x) & ~__round_mask(x, y))
>   
> +#define AMDGPU_VERSION(major, minor) ((major << 16) | minor)
> +
>   #define AMDGPU_INVALID_VA_ADDRESS	0xffffffffffffffff
>   #define AMDGPU_NULL_SUBMIT_SEQ		0
>   



More information about the dri-devel mailing list