[PATCH 06/11] ahlp

Chris Wilson chris at chris-wilson.co.uk
Thu Nov 14 22:54:01 UTC 2019


---
 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 21 +++++++++++++++------
 include/uapi/drm/i915_drm.h              |  7 ++++---
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index 62ebc24b219f..07696e1f5180 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -587,6 +587,11 @@ static int gem_mmap_offset(struct drm_device *dev, void *data,
 	enum i915_mmap_type type;
 
 	switch (args->flags) {
+	case I915_MMAP_OFFSET_GTT:
+		if (!i915_ggtt_has_aperture(&to_i915(dev)->ggtt))
+			return -ENODEV;
+		type = I915_MMAP_TYPE_GTT;
+		break;
 	case I915_MMAP_OFFSET_WC:
 		if (!boot_cpu_has(X86_FEATURE_PAT))
 			return -ENODEV;
@@ -602,8 +607,7 @@ static int gem_mmap_offset(struct drm_device *dev, void *data,
 		break;
 	default:
 		return -EINVAL;
-
-	};
+	}
 
 	return __assign_gem_object_mmap_data(file, args->handle, type,
 					     &args->offset);
@@ -615,11 +619,16 @@ i915_gem_mmap_dumb(struct drm_file *file,
 		  u32 handle,
 		  u64 *offset)
 {
-	enum i915_mmap_type mmap_type = boot_cpu_has(X86_FEATURE_PAT) ?
-		I915_MMAP_TYPE_WC : I915_MMAP_TYPE_GTT;
+	enum i915_mmap_type mmap_type;
+
+	if (boot_cpu_has(X86_FEATURE_PAT))
+		mmap_type = I915_MMAP_TYPE_WC;
+	else if (!i915_ggtt_has_aperture(&to_i915(dev)->ggtt))
+		return -ENODEV;
+	else
+		mmap_type = I915_MMAP_TYPE_GTT;
 
-	return __assign_gem_object_mmap_data(file, handle, mmap_type,
-					     offset);
+	return __assign_gem_object_mmap_data(file, handle, mmap_type, offset);
 }
 
 /**
diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index e99999a80b94..5f9e18e15613 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -811,9 +811,10 @@ struct drm_i915_gem_mmap_offset {
 	 * should be passed here.
 	 */
 	__u64 flags;
-#define I915_MMAP_OFFSET_WC 1
-#define I915_MMAP_OFFSET_WB 2
-#define I915_MMAP_OFFSET_UC 3
+#define I915_MMAP_OFFSET_GTT 1
+#define I915_MMAP_OFFSET_WC  2
+#define I915_MMAP_OFFSET_WB  3
+#define I915_MMAP_OFFSET_UC  4
 
 	__u64 extensions;
 };
-- 
2.24.0



More information about the Intel-gfx-trybot mailing list