Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5dd4be54 authored by David Stevens's avatar David Stevens Committed by Alistair Delva
Browse files

FROMLIST: drm/prime: add support for virtio exported objects



This change exposes dma-buf's get_uuid callback to PRIME drivers.

Signed-off-by: default avatarDavid Stevens <stevensd@chromium.org>

BUG=b:136269340
TEST=boot ARCVM and launch play store

Signed-off-by: default avatarKeiichi Watanabe <keiichiw@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2090951


Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
Reviewed-by: default avatarGurchetan Singh <gurchetansingh@chromium.org>
Tested-by: default avatarDavid Stevens <stevensd@chromium.org>
Commit-Queue: David Stevens <stevensd@chromium.org>
Bug: 153580313
Link: https://lore.kernel.org/lkml/20200311112004.47138-3-stevensd@chromium.org/


Change-Id: I0599ce4cafee3dc705805c1ad97295bea264cfdf
Signed-off-by: default avatarLingfeng Yang <lfy@google.com>
parent 9b7d0c9a
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -433,6 +433,28 @@ void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr)
}
EXPORT_SYMBOL(drm_gem_dmabuf_vunmap);

/**
 * drm_gem_dmabuf_get_uuid - dma_buf get_uuid implementation for GEM
 * @dma_buf: buffer to query
 * @uuid: uuid outparam
 *
 * Queries the buffer's virtio UUID. This can be used as the
 * &dma_buf_ops.get_uuid callback. Calls into &drm_driver.gem_prime_get_uuid.
 *
 * Returns 0 on success or a negative error code on failure.
 */
int drm_gem_dmabuf_get_uuid(struct dma_buf *dma_buf, uuid_t *uuid)
{
	struct drm_gem_object *obj = dma_buf->priv;
	struct drm_device *dev = obj->dev;

	if (!dev->driver->gem_prime_get_uuid)
		return -ENODEV;

	return dev->driver->gem_prime_get_uuid(obj, uuid);
}
EXPORT_SYMBOL(drm_gem_dmabuf_get_uuid);

/**
 * drm_gem_dmabuf_kmap - map implementation for GEM
 * @dma_buf: buffer to be mapped
@@ -494,6 +516,7 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = {
	.mmap = drm_gem_dmabuf_mmap,
	.vmap = drm_gem_dmabuf_vmap,
	.vunmap = drm_gem_dmabuf_vunmap,
	.get_uuid = drm_gem_dmabuf_get_uuid,
};

/**
+10 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@

#include <linux/list.h>
#include <linux/irqreturn.h>
#include <linux/uuid.h>

#include <drm/drm_device.h>

@@ -496,6 +497,15 @@ struct drm_driver {
	int (*gem_prime_mmap)(struct drm_gem_object *obj,
				struct vm_area_struct *vma);

	/**
	 * @gem_prime_get_uuid
	 *
	 * get_uuid hook for GEM drivers. Retrieves the virtio uuid of the
	 * given GEM buffer.
	 */
	int (*gem_prime_get_uuid)(struct drm_gem_object *obj,
				  uuid_t *uuid);

	/**
	 * @dumb_create:
	 *