summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2019-11-13 06:25:21 +0000
committerjsg <jsg@openbsd.org>2019-11-13 06:25:21 +0000
commit95bc4d5a2144d65f1b150b0f3165a1700b27aa82 (patch)
tree6c8aed42a8db328adf4e7755cf062110d3ae7cf0
parentdrm/i915: Support ro ppgtt mapped cmdparser shadow buffers (diff)
downloadwireguard-openbsd-95bc4d5a2144d65f1b150b0f3165a1700b27aa82.tar.xz
wireguard-openbsd-95bc4d5a2144d65f1b150b0f3165a1700b27aa82.zip
drm/i915: Allow parsing of unsized batches
From Jon Bloomfield fea688c5dd8197fe1ad14a5a2596fee36f993bb8 in linux 4.19.y/4.19.84 435e8fc059dbe0eec823a75c22da2972390ba9e0 in mainline linux
-rw-r--r--sys/dev/pci/drm/i915/i915_gem_execbuffer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/pci/drm/i915/i915_gem_execbuffer.c b/sys/dev/pci/drm/i915/i915_gem_execbuffer.c
index 7639a16df05..3f9aa19f108 100644
--- a/sys/dev/pci/drm/i915/i915_gem_execbuffer.c
+++ b/sys/dev/pci/drm/i915/i915_gem_execbuffer.c
@@ -316,7 +316,8 @@ static inline u64 gen8_noncanonical_addr(u64 address)
static inline bool eb_use_cmdparser(const struct i915_execbuffer *eb)
{
return intel_engine_requires_cmd_parser(eb->engine) ||
- (intel_engine_using_cmd_parser(eb->engine) && eb->batch_len);
+ (intel_engine_using_cmd_parser(eb->engine) &&
+ eb->args->batch_len);
}
static int eb_create(struct i915_execbuffer *eb)
@@ -2373,6 +2374,9 @@ i915_gem_do_execbuffer(struct drm_device *dev,
goto err_vma;
}
+ if (eb.batch_len == 0)
+ eb.batch_len = eb.batch->size - eb.batch_start_offset;
+
if (eb_use_cmdparser(&eb)) {
struct i915_vma *vma;
@@ -2383,9 +2387,6 @@ i915_gem_do_execbuffer(struct drm_device *dev,
}
}
- if (eb.batch_len == 0)
- eb.batch_len = eb.batch->size - eb.batch_start_offset;
-
/*
* snb/ivb/vlv conflate the "batch in ppgtt" bit with the "non-secure
* batch" bit. Hence we need to pin secure batches into the global gtt.