diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_userptr.c | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f0f75d7c0d94..e7cd311e9fbb 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -1988,6 +1988,9 @@ enum hdmi_force_audio { | |||
1988 | #define I915_GTT_OFFSET_NONE ((u32)-1) | 1988 | #define I915_GTT_OFFSET_NONE ((u32)-1) |
1989 | 1989 | ||
1990 | struct drm_i915_gem_object_ops { | 1990 | struct drm_i915_gem_object_ops { |
1991 | unsigned int flags; | ||
1992 | #define I915_GEM_OBJECT_HAS_STRUCT_PAGE 0x1 | ||
1993 | |||
1991 | /* Interface between the GEM object and its backing storage. | 1994 | /* Interface between the GEM object and its backing storage. |
1992 | * get_pages() is called once prior to the use of the associated set | 1995 | * get_pages() is called once prior to the use of the associated set |
1993 | * of pages before to binding them into the GTT, and put_pages() is | 1996 | * of pages before to binding them into the GTT, and put_pages() is |
@@ -2003,6 +2006,7 @@ struct drm_i915_gem_object_ops { | |||
2003 | */ | 2006 | */ |
2004 | int (*get_pages)(struct drm_i915_gem_object *); | 2007 | int (*get_pages)(struct drm_i915_gem_object *); |
2005 | void (*put_pages)(struct drm_i915_gem_object *); | 2008 | void (*put_pages)(struct drm_i915_gem_object *); |
2009 | |||
2006 | int (*dmabuf_export)(struct drm_i915_gem_object *); | 2010 | int (*dmabuf_export)(struct drm_i915_gem_object *); |
2007 | void (*release)(struct drm_i915_gem_object *); | 2011 | void (*release)(struct drm_i915_gem_object *); |
2008 | }; | 2012 | }; |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index ddc21d4b388d..bb44bad15403 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -4425,6 +4425,7 @@ void i915_gem_object_init(struct drm_i915_gem_object *obj, | |||
4425 | } | 4425 | } |
4426 | 4426 | ||
4427 | static const struct drm_i915_gem_object_ops i915_gem_object_ops = { | 4427 | static const struct drm_i915_gem_object_ops i915_gem_object_ops = { |
4428 | .flags = I915_GEM_OBJECT_HAS_STRUCT_PAGE, | ||
4428 | .get_pages = i915_gem_object_get_pages_gtt, | 4429 | .get_pages = i915_gem_object_get_pages_gtt, |
4429 | .put_pages = i915_gem_object_put_pages_gtt, | 4430 | .put_pages = i915_gem_object_put_pages_gtt, |
4430 | }; | 4431 | }; |
@@ -5261,7 +5262,7 @@ i915_gem_object_get_dirty_page(struct drm_i915_gem_object *obj, int n) | |||
5261 | struct page *page; | 5262 | struct page *page; |
5262 | 5263 | ||
5263 | /* Only default objects have per-page dirty tracking */ | 5264 | /* Only default objects have per-page dirty tracking */ |
5264 | if (WARN_ON(obj->ops != &i915_gem_object_ops)) | 5265 | if (WARN_ON((obj->ops->flags & I915_GEM_OBJECT_HAS_STRUCT_PAGE) == 0)) |
5265 | return NULL; | 5266 | return NULL; |
5266 | 5267 | ||
5267 | page = i915_gem_object_get_page(obj, n); | 5268 | page = i915_gem_object_get_page(obj, n); |
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c index 19fb0bddc1cd..59e45b3a6937 100644 --- a/drivers/gpu/drm/i915/i915_gem_userptr.c +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c | |||
@@ -789,9 +789,10 @@ i915_gem_userptr_dmabuf_export(struct drm_i915_gem_object *obj) | |||
789 | } | 789 | } |
790 | 790 | ||
791 | static const struct drm_i915_gem_object_ops i915_gem_userptr_ops = { | 791 | static const struct drm_i915_gem_object_ops i915_gem_userptr_ops = { |
792 | .dmabuf_export = i915_gem_userptr_dmabuf_export, | 792 | .flags = I915_GEM_OBJECT_HAS_STRUCT_PAGE, |
793 | .get_pages = i915_gem_userptr_get_pages, | 793 | .get_pages = i915_gem_userptr_get_pages, |
794 | .put_pages = i915_gem_userptr_put_pages, | 794 | .put_pages = i915_gem_userptr_put_pages, |
795 | .dmabuf_export = i915_gem_userptr_dmabuf_export, | ||
795 | .release = i915_gem_userptr_release, | 796 | .release = i915_gem_userptr_release, |
796 | }; | 797 | }; |
797 | 798 | ||