Commit 0514f63c authored by Felix Kuehling's avatar Felix Kuehling Committed by Alex Deucher

Revert "drm/prime: Unexport helpers for fd/handle conversion"

This reverts commit 71a7974a.

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@amd.com>
CC: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Acked-by: default avatarDaniel Vetter <daniel@ffwll.ch>
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ed6e4f0a
...@@ -278,7 +278,7 @@ void drm_gem_dmabuf_release(struct dma_buf *dma_buf) ...@@ -278,7 +278,7 @@ void drm_gem_dmabuf_release(struct dma_buf *dma_buf)
} }
EXPORT_SYMBOL(drm_gem_dmabuf_release); EXPORT_SYMBOL(drm_gem_dmabuf_release);
/* /**
* drm_gem_prime_fd_to_handle - PRIME import function for GEM drivers * drm_gem_prime_fd_to_handle - PRIME import function for GEM drivers
* @dev: drm_device to import into * @dev: drm_device to import into
* @file_priv: drm file-private structure * @file_priv: drm file-private structure
...@@ -292,9 +292,9 @@ EXPORT_SYMBOL(drm_gem_dmabuf_release); ...@@ -292,9 +292,9 @@ EXPORT_SYMBOL(drm_gem_dmabuf_release);
* *
* Returns 0 on success or a negative error code on failure. * Returns 0 on success or a negative error code on failure.
*/ */
static int drm_gem_prime_fd_to_handle(struct drm_device *dev, int drm_gem_prime_fd_to_handle(struct drm_device *dev,
struct drm_file *file_priv, int prime_fd, struct drm_file *file_priv, int prime_fd,
uint32_t *handle) uint32_t *handle)
{ {
struct dma_buf *dma_buf; struct dma_buf *dma_buf;
struct drm_gem_object *obj; struct drm_gem_object *obj;
...@@ -360,6 +360,7 @@ static int drm_gem_prime_fd_to_handle(struct drm_device *dev, ...@@ -360,6 +360,7 @@ static int drm_gem_prime_fd_to_handle(struct drm_device *dev,
dma_buf_put(dma_buf); dma_buf_put(dma_buf);
return ret; return ret;
} }
EXPORT_SYMBOL(drm_gem_prime_fd_to_handle);
int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data, int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv) struct drm_file *file_priv)
...@@ -408,7 +409,7 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev, ...@@ -408,7 +409,7 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev,
return dmabuf; return dmabuf;
} }
/* /**
* drm_gem_prime_handle_to_fd - PRIME export function for GEM drivers * drm_gem_prime_handle_to_fd - PRIME export function for GEM drivers
* @dev: dev to export the buffer from * @dev: dev to export the buffer from
* @file_priv: drm file-private structure * @file_priv: drm file-private structure
...@@ -421,10 +422,10 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev, ...@@ -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 * The actual exporting from GEM object to a dma-buf is done through the
* &drm_gem_object_funcs.export callback. * &drm_gem_object_funcs.export callback.
*/ */
static int drm_gem_prime_handle_to_fd(struct drm_device *dev, int drm_gem_prime_handle_to_fd(struct drm_device *dev,
struct drm_file *file_priv, uint32_t handle, struct drm_file *file_priv, uint32_t handle,
uint32_t flags, uint32_t flags,
int *prime_fd) int *prime_fd)
{ {
struct drm_gem_object *obj; struct drm_gem_object *obj;
int ret = 0; int ret = 0;
...@@ -506,6 +507,7 @@ static int drm_gem_prime_handle_to_fd(struct drm_device *dev, ...@@ -506,6 +507,7 @@ static int drm_gem_prime_handle_to_fd(struct drm_device *dev,
return ret; return ret;
} }
EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
int drm_prime_handle_to_fd_ioctl(struct drm_device *dev, void *data, int drm_prime_handle_to_fd_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv) struct drm_file *file_priv)
...@@ -864,9 +866,9 @@ EXPORT_SYMBOL(drm_prime_get_contiguous_size); ...@@ -864,9 +866,9 @@ EXPORT_SYMBOL(drm_prime_get_contiguous_size);
* @obj: GEM object to export * @obj: GEM object to export
* @flags: flags like DRM_CLOEXEC and DRM_RDWR * @flags: flags like DRM_CLOEXEC and DRM_RDWR
* *
* This is the implementation of the &drm_gem_object_funcs.export functions * This is the implementation of the &drm_gem_object_funcs.export functions for GEM drivers
* for GEM drivers using the PRIME helpers. It is used as the default for * using the PRIME helpers. It is used as the default in
* drivers that do not set their own. * drm_gem_prime_handle_to_fd().
*/ */
struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj, struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
int flags) int flags)
...@@ -962,9 +964,10 @@ EXPORT_SYMBOL(drm_gem_prime_import_dev); ...@@ -962,9 +964,10 @@ EXPORT_SYMBOL(drm_gem_prime_import_dev);
* @dev: drm_device to import into * @dev: drm_device to import into
* @dma_buf: dma-buf object to import * @dma_buf: dma-buf object to import
* *
* This is the implementation of the gem_prime_import functions for GEM * This is the implementation of the gem_prime_import functions for GEM drivers
* drivers using the PRIME helpers. It is the default for drivers that do * using the PRIME helpers. Drivers can use this as their
* not set their own &drm_driver.gem_prime_import. * &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 * Drivers must arrange to call drm_prime_gem_destroy() from their
* &drm_gem_object_funcs.free hook when using this function. * &drm_gem_object_funcs.free hook when using this function.
......
...@@ -60,12 +60,19 @@ enum dma_data_direction; ...@@ -60,12 +60,19 @@ enum dma_data_direction;
struct drm_device; struct drm_device;
struct drm_gem_object; struct drm_gem_object;
struct drm_file;
/* core prime functions */ /* core prime functions */
struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev, struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
struct dma_buf_export_info *exp_info); struct dma_buf_export_info *exp_info);
void drm_gem_dmabuf_release(struct dma_buf *dma_buf); 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 */ /* helper functions for exporting */
int drm_gem_map_attach(struct dma_buf *dma_buf, int drm_gem_map_attach(struct dma_buf *dma_buf,
struct dma_buf_attachment *attach); struct dma_buf_attachment *attach);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment