Message ID | 20191021104811.25663-4-abdiel.janulgue@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/5] drm/i915: Allow i915 to manage the vma offset nodes instead of drm core | expand |
Quoting Abdiel Janulgue (2019-10-21 11:48:10) > +int > +i915_gem_mmap_dumb(struct drm_file *file, > + struct drm_device *dev, > + u32 handle, > + u64 *offset) > +{ > + return __assign_gem_object_mmap_data(file, handle, I915_MMAP_TYPE_WC, It still needs to do boot_cpu_has(PAT), but it looks like kms_frontbuffer is not doing enough dirtyfb for its dumb buffer usage. Bad IGT (it's either a bug in the test for not adhering to the uabi for dumb buffers, or we have some tracking bug intel_frontbuffer). -Chris
On 21/10/2019 16.35, Chris Wilson wrote: > Quoting Abdiel Janulgue (2019-10-21 11:48:10) >> +int >> +i915_gem_mmap_dumb(struct drm_file *file, >> + struct drm_device *dev, >> + u32 handle, >> + u64 *offset) >> +{ >> + return __assign_gem_object_mmap_data(file, handle, I915_MMAP_TYPE_WC, > > It still needs to do boot_cpu_has(PAT), So we probably need a special use-case for GTT mmaps in those kind of hw, no? but it looks like > kms_frontbuffer is not doing enough dirtyfb for its dumb buffer usage. > Bad IGT (it's either a bug in the test for not adhering to the uabi > for dumb buffers, or we have some tracking bug intel_frontbuffer). > -Chris >
Quoting Abdiel Janulgue (2019-10-22 08:52:55) > > > On 21/10/2019 16.35, Chris Wilson wrote: > > Quoting Abdiel Janulgue (2019-10-21 11:48:10) > >> +int > >> +i915_gem_mmap_dumb(struct drm_file *file, > >> + struct drm_device *dev, > >> + u32 handle, > >> + u64 *offset) > >> +{ > >> + return __assign_gem_object_mmap_data(file, handle, I915_MMAP_TYPE_WC, > > > > It still needs to do boot_cpu_has(PAT), > > So we probably need a special use-case for GTT mmaps in those kind of > hw, no? enum type = boot_cpu_has(PAT) ? I915_MMAP_TYPE_WC : I915_MMAP_TYPE_GTT; Of course the machines without PAT are also the ones with tiny GGTT. -Chris
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c index a3eb194fd3b4..8e2919832483 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c @@ -566,6 +566,16 @@ static int gem_mmap_offset(struct drm_device *dev, void *data, &args->offset); } +int +i915_gem_mmap_dumb(struct drm_file *file, + struct drm_device *dev, + u32 handle, + u64 *offset) +{ + return __assign_gem_object_mmap_data(file, handle, I915_MMAP_TYPE_WC, + offset); +} + /** * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing * @dev: DRM device diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index ead2e6ca7907..2157bc961e1f 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -2752,6 +2752,7 @@ static struct drm_driver driver = { .get_scanout_position = i915_get_crtc_scanoutpos, .dumb_create = i915_gem_dumb_create, + .dumb_map_offset = i915_gem_mmap_dumb, .ioctls = i915_ioctls, .num_ioctls = ARRAY_SIZE(i915_ioctls), .fops = &i915_driver_fops, diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a407ca62888b..800674d167a5 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1934,6 +1934,8 @@ i915_mutex_lock_interruptible(struct drm_device *dev) int i915_gem_dumb_create(struct drm_file *file_priv, struct drm_device *dev, struct drm_mode_create_dumb *args); +int i915_gem_mmap_dumb(struct drm_file *file_priv, struct drm_device *dev, + u32 handle, u64 *offset); int i915_gem_mmap_gtt_version(void); int __must_check i915_gem_set_global_seqno(struct drm_device *dev, u32 seqno);
No reason for sticking to GTT mmaps now we have CPU WC mmaps via our new mmap offset plumbing. Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Cc: Matthew Auld <matthew.auld@intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_mman.c | 10 ++++++++++ drivers/gpu/drm/i915/i915_drv.c | 1 + drivers/gpu/drm/i915/i915_drv.h | 2 ++ 3 files changed, 13 insertions(+)