mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 12:36:10 +07:00
drm/i915: pwrite/pread do not require obj->base.filp, just pages
The idea behind relaxing the restriction for pread/pwrite was to handle !obj->base.flip, i.e. non-shmemfs backed objects, which only requires that the object provide struct pages. v2: Remove excess (). Note enough editing after copy'n'paste. v3: Use new i915_gem_object_has_struct_page() Testcase: igt/prime_vgem/read Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Ankitprasad Sharma <ankitprasad.r.sharma@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1466431552-17860-2-git-send-email-chris@chris-wilson.co.uk
This commit is contained in:
parent
b9bcd14a2b
commit
6eae0059f9
@ -760,7 +760,7 @@ i915_gem_shmem_pread(struct drm_device *dev,
|
||||
int needs_clflush = 0;
|
||||
struct sg_page_iter sg_iter;
|
||||
|
||||
if (!obj->base.filp)
|
||||
if (!i915_gem_object_has_struct_page(obj))
|
||||
return -ENODEV;
|
||||
|
||||
user_data = u64_to_user_ptr(args->data_ptr);
|
||||
@ -1298,7 +1298,8 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
|
||||
* pread/pwrite currently are reading and writing from the CPU
|
||||
* perspective, requiring manual detiling by the client.
|
||||
*/
|
||||
if (!obj->base.filp || cpu_write_needs_clflush(obj)) {
|
||||
if (!i915_gem_object_has_struct_page(obj) ||
|
||||
cpu_write_needs_clflush(obj)) {
|
||||
ret = i915_gem_gtt_pwrite_fast(dev_priv, obj, args, file);
|
||||
/* Note that the gtt paths might fail with non-page-backed user
|
||||
* pointers (e.g. gtt mappings when moving data between
|
||||
@ -1308,7 +1309,7 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
|
||||
if (ret == -EFAULT) {
|
||||
if (obj->phys_handle)
|
||||
ret = i915_gem_phys_pwrite(obj, args, file);
|
||||
else if (obj->base.filp)
|
||||
else if (i915_gem_object_has_struct_page(obj))
|
||||
ret = i915_gem_shmem_pwrite(dev, obj, args, file);
|
||||
else
|
||||
ret = -ENODEV;
|
||||
|
Loading…
Reference in New Issue
Block a user