Message ID | 20191009211947.6815-9-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/9] drm/i915/perf: store the associated engine of a stream | expand |
On 10/10/2019 00:19, Chris Wilson wrote: > We set out-of-bound parameters inside the i915_requests.flags field, > such as disabling preemption or marking the end-of-context. We should > not coalesce consecutive requests if they have differing instructions > as we only inspect the last active request in a context. Thus if we > allow a later request to be merged into the same execution context, it > will mask any of the earlier flags. > > References: 2a98f4e65bba ("drm/i915: add infrastructure to hold off preemption on a request") > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Nice. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> > --- > drivers/gpu/drm/i915/gt/intel_lrc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > index 7ea58335f04c..d0687a94c8d9 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -1233,6 +1233,9 @@ static bool can_merge_rq(const struct i915_request *prev, > if (i915_request_completed(next)) > return true; > > + if (unlikely(prev->flags ^ next->flags) & I915_REQUEST_NOPREEMPT) > + return false; > + > if (!can_merge_ctx(prev->hw_context, next->hw_context)) > return false; >
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index 7ea58335f04c..d0687a94c8d9 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -1233,6 +1233,9 @@ static bool can_merge_rq(const struct i915_request *prev, if (i915_request_completed(next)) return true; + if (unlikely(prev->flags ^ next->flags) & I915_REQUEST_NOPREEMPT) + return false; + if (!can_merge_ctx(prev->hw_context, next->hw_context)) return false;
We set out-of-bound parameters inside the i915_requests.flags field, such as disabling preemption or marking the end-of-context. We should not coalesce consecutive requests if they have differing instructions as we only inspect the last active request in a context. Thus if we allow a later request to be merged into the same execution context, it will mask any of the earlier flags. References: 2a98f4e65bba ("drm/i915: add infrastructure to hold off preemption on a request") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> --- drivers/gpu/drm/i915/gt/intel_lrc.c | 3 +++ 1 file changed, 3 insertions(+)