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

Commit f3cb1078 authored by Jordan Crouse's avatar Jordan Crouse
Browse files

drm/msm: Support importing secure buffers



Check to see if an imported buffer is an Ion secure buffer and mark
it as such so that it can be used for secure rendering.

Change-Id: Ic0dedbadb414dcbb11d70785d61481a1b7bd4e19
Signed-off-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
parent 90dbea37
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -469,7 +469,7 @@ int msm_gem_new_handle(struct drm_device *dev, struct drm_file *file,
struct drm_gem_object *msm_gem_new(struct drm_device *dev,
		uint32_t size, uint32_t flags);
struct drm_gem_object *msm_gem_import(struct drm_device *dev,
		uint32_t size, struct sg_table *sgt);
		uint32_t size, struct sg_table *sgt, u32 flags);
void msm_gem_sync(struct drm_gem_object *obj, u32 op);

int msm_framebuffer_prepare(struct drm_framebuffer *fb,
+4 −1
Original line number Diff line number Diff line
@@ -756,7 +756,7 @@ fail:
}

struct drm_gem_object *msm_gem_import(struct drm_device *dev,
		uint32_t size, struct sg_table *sgt)
		uint32_t size, struct sg_table *sgt, u32 flags)
{
	struct msm_gem_object *msm_obj;
	struct drm_gem_object *obj;
@@ -789,6 +789,9 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
		goto fail;
	}

	/* OR the passed in flags */
	msm_obj->flags |= flags;

	ret = drm_prime_sg_to_page_addr_arrays(sgt, msm_obj->pages, NULL, npages);
	if (ret)
		goto fail;
+11 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include "msm_gem.h"

#include <linux/dma-buf.h>
#include <linux/ion.h>

struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj)
{
@@ -55,7 +56,16 @@ int msm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
struct drm_gem_object *msm_gem_prime_import_sg_table(struct drm_device *dev,
		struct dma_buf_attachment *attach, struct sg_table *sg)
{
	return msm_gem_import(dev, attach->dmabuf->size, sg);
	u32 flags = 0;

	/*
	 * Check to see if this is a secure buffer by way of Ion and set the
	 * appropriate flag if so.
	 */
	if (ion_dma_buf_is_secure(attach->dmabuf))
		flags |= MSM_BO_SECURE;

	return msm_gem_import(dev, attach->dmabuf->size, sg, flags);
}

int msm_gem_prime_pin(struct drm_gem_object *obj)