[PATCH 1/3] Revert "drm/prime: Unexport helpers for fd/handle conversion"

Thomas Zimmermann tzimmermann at suse.de
Fri Nov 24 08:11:31 UTC 2023


Hi

Am 23.11.23 um 20:36 schrieb Felix Kuehling:
> [+Alex]
> 
> On 2023-11-17 16:44, Felix Kuehling wrote:
> 
>> This reverts commit 71a7974ac7019afeec105a54447ae1dc7216cbb3.
>>
>> These helper functions are needed for KFD to export and import DMABufs
>> the right way without duplicating the tracking of DMABufs associated with
>> GEM objects while ensuring that move notifier callbacks are working as
>> intended.
>>
>> CC: Christian König <christian.koenig at amd.com>
>> CC: Thomas Zimmermann <tzimmermann at suse.de>
>> Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com>
> 
> Re: our discussion about v2 of this patch: If this version is 
> acceptable, can I get an R-b or A-b?

Acked-by: Thomas Zimmermann <tzimmermann at suse.de>

for patch 1.

> 
> I would like to get this patch into drm-next as a prerequisite for 
> patches 2 and 3. I cannot submit it to the current amd-staging-drm-next 
> because the patch I'm reverting doesn't exist there yet.
> 
> Patch 2 and 3 could go into drm-next as well, or go through Alex's 
> amd-staging-drm-next branch once patch 1 is in drm-next. Alex, how do 
> you prefer to coordinate this?
> 
> Regards,
>    Felix
> 
> 
>> ---
>>   drivers/gpu/drm/drm_prime.c | 33 ++++++++++++++++++---------------
>>   include/drm/drm_prime.h     |  7 +++++++
>>   2 files changed, 25 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
>> index 63b709a67471..834a5e28abbe 100644
>> --- a/drivers/gpu/drm/drm_prime.c
>> +++ b/drivers/gpu/drm/drm_prime.c
>> @@ -278,7 +278,7 @@ void drm_gem_dmabuf_release(struct dma_buf *dma_buf)
>>   }
>>   EXPORT_SYMBOL(drm_gem_dmabuf_release);
>> -/*
>> +/**
>>    * drm_gem_prime_fd_to_handle - PRIME import function for GEM drivers
>>    * @dev: drm_device to import into
>>    * @file_priv: drm file-private structure
>> @@ -292,9 +292,9 @@ EXPORT_SYMBOL(drm_gem_dmabuf_release);
>>    *
>>    * Returns 0 on success or a negative error code on failure.
>>    */
>> -static int drm_gem_prime_fd_to_handle(struct drm_device *dev,
>> -                      struct drm_file *file_priv, int prime_fd,
>> -                      uint32_t *handle)
>> +int drm_gem_prime_fd_to_handle(struct drm_device *dev,
>> +                   struct drm_file *file_priv, int prime_fd,
>> +                   uint32_t *handle)
>>   {
>>       struct dma_buf *dma_buf;
>>       struct drm_gem_object *obj;
>> @@ -360,6 +360,7 @@ static int drm_gem_prime_fd_to_handle(struct 
>> drm_device *dev,
>>       dma_buf_put(dma_buf);
>>       return ret;
>>   }
>> +EXPORT_SYMBOL(drm_gem_prime_fd_to_handle);
>>   int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data,
>>                    struct drm_file *file_priv)
>> @@ -408,7 +409,7 @@ static struct dma_buf 
>> *export_and_register_object(struct drm_device *dev,
>>       return dmabuf;
>>   }
>> -/*
>> +/**
>>    * drm_gem_prime_handle_to_fd - PRIME export function for GEM drivers
>>    * @dev: dev to export the buffer from
>>    * @file_priv: drm file-private structure
>> @@ -421,10 +422,10 @@ static struct dma_buf 
>> *export_and_register_object(struct drm_device *dev,
>>    * The actual exporting from GEM object to a dma-buf is done through 
>> the
>>    * &drm_gem_object_funcs.export callback.
>>    */
>> -static int drm_gem_prime_handle_to_fd(struct drm_device *dev,
>> -                      struct drm_file *file_priv, uint32_t handle,
>> -                      uint32_t flags,
>> -                      int *prime_fd)
>> +int drm_gem_prime_handle_to_fd(struct drm_device *dev,
>> +                   struct drm_file *file_priv, uint32_t handle,
>> +                   uint32_t flags,
>> +                   int *prime_fd)
>>   {
>>       struct drm_gem_object *obj;
>>       int ret = 0;
>> @@ -506,6 +507,7 @@ static int drm_gem_prime_handle_to_fd(struct 
>> drm_device *dev,
>>       return ret;
>>   }
>> +EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
>>   int drm_prime_handle_to_fd_ioctl(struct drm_device *dev, void *data,
>>                    struct drm_file *file_priv)
>> @@ -864,9 +866,9 @@ EXPORT_SYMBOL(drm_prime_get_contiguous_size);
>>    * @obj: GEM object to export
>>    * @flags: flags like DRM_CLOEXEC and DRM_RDWR
>>    *
>> - * This is the implementation of the &drm_gem_object_funcs.export 
>> functions
>> - * for GEM drivers using the PRIME helpers. It is used as the default 
>> for
>> - * drivers that do not set their own.
>> + * This is the implementation of the &drm_gem_object_funcs.export 
>> functions for GEM drivers
>> + * using the PRIME helpers. It is used as the default in
>> + * drm_gem_prime_handle_to_fd().
>>    */
>>   struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
>>                        int flags)
>> @@ -962,9 +964,10 @@ EXPORT_SYMBOL(drm_gem_prime_import_dev);
>>    * @dev: drm_device to import into
>>    * @dma_buf: dma-buf object to import
>>    *
>> - * This is the implementation of the gem_prime_import functions for GEM
>> - * drivers using the PRIME helpers. It is the default for drivers 
>> that do
>> - * not set their own &drm_driver.gem_prime_import.
>> + * This is the implementation of the gem_prime_import functions for 
>> GEM drivers
>> + * using the PRIME helpers. Drivers can use this as their
>> + * &drm_driver.gem_prime_import implementation. It is used as the 
>> default
>> + * implementation in drm_gem_prime_fd_to_handle().
>>    *
>>    * Drivers must arrange to call drm_prime_gem_destroy() from their
>>    * &drm_gem_object_funcs.free hook when using this function.
>> diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h
>> index a7abf9f3e697..2a1d01e5b56b 100644
>> --- a/include/drm/drm_prime.h
>> +++ b/include/drm/drm_prime.h
>> @@ -60,12 +60,19 @@ enum dma_data_direction;
>>   struct drm_device;
>>   struct drm_gem_object;
>> +struct drm_file;
>>   /* core prime functions */
>>   struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
>>                         struct dma_buf_export_info *exp_info);
>>   void drm_gem_dmabuf_release(struct dma_buf *dma_buf);
>> +int drm_gem_prime_fd_to_handle(struct drm_device *dev,
>> +                   struct drm_file *file_priv, int prime_fd, uint32_t 
>> *handle);
>> +int drm_gem_prime_handle_to_fd(struct drm_device *dev,
>> +                   struct drm_file *file_priv, uint32_t handle, 
>> uint32_t flags,
>> +                   int *prime_fd);
>> +
>>   /* helper functions for exporting */
>>   int drm_gem_map_attach(struct dma_buf *dma_buf,
>>                  struct dma_buf_attachment *attach);

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20231124/d7ffb3f2/attachment-0001.sig>


More information about the dri-devel mailing list