diff options
author | Ankit Nautiyal <ankit.k.nautiyal@intel.com> | 2025-09-25 18:48:44 +0530 |
---|---|---|
committer | Ankit Nautiyal <ankit.k.nautiyal@intel.com> | 2025-09-25 18:48:44 +0530 |
commit | 554a2000d0691b337c8fce3d25fc4066f0a2488e (patch) | |
tree | b5f8e9c04a5b9d4a29ed59afe23977cd4b84cadb | |
parent | e28360ae1b1e2ccf25181108479ceb032a061931 (diff) | |
parent | 6fa6c7a50e465c32a075d3e0341bcd4f0fe0bb47 (diff) |
Merge remote-tracking branch 'drm-intel/drm-intel-gt-next' into drm-tip
-rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c | 3 |
2 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c index b9dae15c1d16..26dda55a07ff 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c @@ -441,11 +441,20 @@ shmem_pwrite(struct drm_i915_gem_object *obj, written = file->f_op->write_iter(&kiocb, &iter); BUG_ON(written == -EIOCBQUEUED); - if (written != size) - return -EIO; - + /* + * First, check if write_iter returned a negative error. + * If the write failed, return the real error code immediately. + * This prevents it from being overwritten by the short write check below. + */ if (written < 0) return written; + /* + * Check for a short write (written bytes != requested size). + * Even if some data was written, return -EIO to indicate that the + * write was not fully completed. + */ + if (written != size) + return -EIO; return 0; } diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c index eb0158e43417..1330c0b431a7 100644 --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c @@ -962,13 +962,14 @@ emit_rpcs_query(struct drm_i915_gem_object *obj, if (IS_ERR(rpcs)) return PTR_ERR(rpcs); + i915_gem_ww_ctx_init(&ww, false); + batch = i915_vma_instance(rpcs, ce->vm, NULL); if (IS_ERR(batch)) { err = PTR_ERR(batch); goto err_put; } - i915_gem_ww_ctx_init(&ww, false); retry: err = i915_gem_object_lock(obj, &ww); if (!err) |