* [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() @ 2015-12-17 18:18 Chris Wilson 2015-12-18 7:49 ` ✗ warning: Fi.CI.BAT Patchwork ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Chris Wilson @ 2015-12-17 18:18 UTC (permalink / raw) To: intel-gfx; +Cc: Chris Wilson, Daniel Vetter, stable As we add the VMA to the request early, it may be cancelled during execbuf reservation. This will leave the context object pointing to a dangling request; i915_wait_request() simply skips the wait and so we may unbind the object whilst it is still active. We can partially prevent such atrocity by doing the RCS context initialisation earlier. This ensures that one callsite from blowing up (and for igt this is a frequent culprit due to how the stressful batches are submitted). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: stable@vger.kernel.org --- drivers/gpu/drm/i915/i915_gem_context.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index 900ffd044db8..657686e6492f 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -657,7 +657,6 @@ static int do_switch(struct drm_i915_gem_request *req) struct drm_i915_private *dev_priv = ring->dev->dev_private; struct intel_context *from = ring->last_context; u32 hw_flags = 0; - bool uninitialized = false; int ret, i; if (from != NULL && ring == &dev_priv->ring[RCS]) { @@ -764,6 +763,15 @@ static int do_switch(struct drm_i915_gem_request *req) to->remap_slice &= ~(1<<i); } + if (!to->legacy_hw_ctx.initialized) { + if (ring->init_context) { + ret = ring->init_context(req); + if (ret) + goto unpin_out; + } + to->legacy_hw_ctx.initialized = true; + } + /* The backing object for the context is done after switching to the * *next* context. Therefore we cannot retire the previous context until * the next context has already started running. In fact, the below code @@ -772,6 +780,14 @@ static int do_switch(struct drm_i915_gem_request *req) */ if (from != NULL) { from->legacy_hw_ctx.rcs_state->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; + /* XXX Note very well this is dangerous! + * We are pinning this object using this request as our + * active reference. However, this request may yet be cancelled + * during the execbuf dispatch, leaving us waiting on a + * dangling request. Waiting upon this dangling request is + * ignored, which means that we may unbind the context whilst + * the GPU is still writing to the backing storage. + */ i915_vma_move_to_active(i915_gem_obj_to_ggtt(from->legacy_hw_ctx.rcs_state), req); /* As long as MI_SET_CONTEXT is serializing, ie. it flushes the * whole damn pipeline, we don't need to explicitly mark the @@ -787,21 +803,10 @@ static int do_switch(struct drm_i915_gem_request *req) i915_gem_context_unreference(from); } - uninitialized = !to->legacy_hw_ctx.initialized; - to->legacy_hw_ctx.initialized = true; - done: i915_gem_context_reference(to); ring->last_context = to; - if (uninitialized) { - if (ring->init_context) { - ret = ring->init_context(req); - if (ret) - DRM_ERROR("ring init context: %d\n", ret); - } - } - return 0; unpin_out: -- 2.6.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* ✗ warning: Fi.CI.BAT 2015-12-17 18:18 [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Chris Wilson @ 2015-12-18 7:49 ` Patchwork 2015-12-21 12:28 ` [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Daniel Vetter 2015-12-21 13:12 ` ✗ warning: Fi.CI.BAT Patchwork 2 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2015-12-18 7:49 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Summary == Built on ac2305b6c91b9a84cc12566016ece257c3ebcba3 drm-intel-nightly: 2015y-12m-17d-16h-19m-23s UTC integration manifest Test igt@kms_flip@basic-flip-vs-wf_vblank on bsw-nuc-2 pass -> dmesg-warn Test igt@kms_flip@basic-flip-vs-wf_vblank on skl-i7k-2 dmesg-fail -> dmesg-warn Test igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence on bsw-nuc-2 dmesg-warn -> pass Test igt@kms_pipe_crc_basic@read-crc-pipe-b on snb-dellxps dmesg-warn -> pass Test igt@kms_setmode@basic-clone-single-crtc on snb-dellxps pass -> dmesg-warn Test igt@kms_flip@basic-flip-vs-modeset on hsw-brixbox pass -> dmesg-warn Test igt@kms_flip@basic-flip-vs-modeset on bsw-nuc-2 dmesg-warn -> pass bsw-nuc-2 total:135 pass:114 dwarn:1 dfail:0 fail:0 skip:20 hsw-brixbox total:135 pass:126 dwarn:2 dfail:0 fail:0 skip:7 hsw-gt2 total:135 pass:130 dwarn:1 dfail:0 fail:0 skip:4 ilk-hp8440p total:135 pass:100 dwarn:0 dfail:0 fail:2 skip:33 ivb-t430s total:135 pass:128 dwarn:1 dfail:1 fail:1 skip:4 skl-i5k-2 total:135 pass:122 dwarn:5 dfail:0 fail:0 skip:8 skl-i7k-2 total:135 pass:122 dwarn:5 dfail:0 fail:0 skip:8 snb-dellxps total:135 pass:121 dwarn:2 dfail:0 fail:0 skip:12 snb-x220t total:135 pass:121 dwarn:2 dfail:0 fail:1 skip:11 Results at /archive/results/CI_IGT_test/Patchwork_707/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() 2015-12-17 18:18 [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Chris Wilson 2015-12-18 7:49 ` ✗ warning: Fi.CI.BAT Patchwork @ 2015-12-21 12:28 ` Daniel Vetter 2015-12-21 12:59 ` Chris Wilson 2015-12-21 13:12 ` ✗ warning: Fi.CI.BAT Patchwork 2 siblings, 1 reply; 7+ messages in thread From: Daniel Vetter @ 2015-12-21 12:28 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx, Daniel Vetter, stable On Thu, Dec 17, 2015 at 06:18:05PM +0000, Chris Wilson wrote: > As we add the VMA to the request early, it may be cancelled during > execbuf reservation. This will leave the context object pointing to a > dangling request; i915_wait_request() simply skips the wait and so we > may unbind the object whilst it is still active. > > We can partially prevent such atrocity by doing the RCS context > initialisation earlier. This ensures that one callsite from blowing up > (and for igt this is a frequent culprit due to how the stressful batches > are submitted). > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: stable@vger.kernel.org > --- > drivers/gpu/drm/i915/i915_gem_context.c | 29 +++++++++++++++++------------ > 1 file changed, 17 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index 900ffd044db8..657686e6492f 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -657,7 +657,6 @@ static int do_switch(struct drm_i915_gem_request *req) > struct drm_i915_private *dev_priv = ring->dev->dev_private; > struct intel_context *from = ring->last_context; > u32 hw_flags = 0; > - bool uninitialized = false; > int ret, i; > > if (from != NULL && ring == &dev_priv->ring[RCS]) { > @@ -764,6 +763,15 @@ static int do_switch(struct drm_i915_gem_request *req) > to->remap_slice &= ~(1<<i); > } > > + if (!to->legacy_hw_ctx.initialized) { > + if (ring->init_context) { > + ret = ring->init_context(req); > + if (ret) > + goto unpin_out; > + } > + to->legacy_hw_ctx.initialized = true; > + } > + > /* The backing object for the context is done after switching to the > * *next* context. Therefore we cannot retire the previous context until > * the next context has already started running. In fact, the below code > @@ -772,6 +780,14 @@ static int do_switch(struct drm_i915_gem_request *req) > */ > if (from != NULL) { > from->legacy_hw_ctx.rcs_state->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; > + /* XXX Note very well this is dangerous! > + * We are pinning this object using this request as our > + * active reference. However, this request may yet be cancelled > + * during the execbuf dispatch, leaving us waiting on a > + * dangling request. Waiting upon this dangling request is > + * ignored, which means that we may unbind the context whilst > + * the GPU is still writing to the backing storage. > + */ > i915_vma_move_to_active(i915_gem_obj_to_ggtt(from->legacy_hw_ctx.rcs_state), req); Hm, since this is just a partial fix, what about instead marking any request that has been put to use already in move_to_active. And then when we try to cancel it from execbuf notice that and not cancel it? Fixes both bugs and makes the entire thing a bit more robust since it allows us to throw stuff at a request without ordering constraints. -Daniel > /* As long as MI_SET_CONTEXT is serializing, ie. it flushes the > * whole damn pipeline, we don't need to explicitly mark the > @@ -787,21 +803,10 @@ static int do_switch(struct drm_i915_gem_request *req) > i915_gem_context_unreference(from); > } > > - uninitialized = !to->legacy_hw_ctx.initialized; > - to->legacy_hw_ctx.initialized = true; > - > done: > i915_gem_context_reference(to); > ring->last_context = to; > > - if (uninitialized) { > - if (ring->init_context) { > - ret = ring->init_context(req); > - if (ret) > - DRM_ERROR("ring init context: %d\n", ret); > - } > - } > - > return 0; > > unpin_out: > -- > 2.6.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() 2015-12-21 12:28 ` [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Daniel Vetter @ 2015-12-21 12:59 ` Chris Wilson 0 siblings, 0 replies; 7+ messages in thread From: Chris Wilson @ 2015-12-21 12:59 UTC (permalink / raw) To: Daniel Vetter; +Cc: intel-gfx, Daniel Vetter, stable On Mon, Dec 21, 2015 at 01:28:17PM +0100, Daniel Vetter wrote: > On Thu, Dec 17, 2015 at 06:18:05PM +0000, Chris Wilson wrote: > > As we add the VMA to the request early, it may be cancelled during > > execbuf reservation. This will leave the context object pointing to a > > dangling request; i915_wait_request() simply skips the wait and so we > > may unbind the object whilst it is still active. > > > > We can partially prevent such atrocity by doing the RCS context > > initialisation earlier. This ensures that one callsite from blowing up > > (and for igt this is a frequent culprit due to how the stressful batches > > are submitted). > > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/i915/i915_gem_context.c | 29 +++++++++++++++++------------ > > 1 file changed, 17 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > > index 900ffd044db8..657686e6492f 100644 > > --- a/drivers/gpu/drm/i915/i915_gem_context.c > > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > > @@ -657,7 +657,6 @@ static int do_switch(struct drm_i915_gem_request *req) > > struct drm_i915_private *dev_priv = ring->dev->dev_private; > > struct intel_context *from = ring->last_context; > > u32 hw_flags = 0; > > - bool uninitialized = false; > > int ret, i; > > > > if (from != NULL && ring == &dev_priv->ring[RCS]) { > > @@ -764,6 +763,15 @@ static int do_switch(struct drm_i915_gem_request *req) > > to->remap_slice &= ~(1<<i); > > } > > > > + if (!to->legacy_hw_ctx.initialized) { > > + if (ring->init_context) { > > + ret = ring->init_context(req); > > + if (ret) > > + goto unpin_out; > > + } > > + to->legacy_hw_ctx.initialized = true; > > + } > > + > > /* The backing object for the context is done after switching to the > > * *next* context. Therefore we cannot retire the previous context until > > * the next context has already started running. In fact, the below code > > @@ -772,6 +780,14 @@ static int do_switch(struct drm_i915_gem_request *req) > > */ > > if (from != NULL) { > > from->legacy_hw_ctx.rcs_state->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; > > + /* XXX Note very well this is dangerous! > > + * We are pinning this object using this request as our > > + * active reference. However, this request may yet be cancelled > > + * during the execbuf dispatch, leaving us waiting on a > > + * dangling request. Waiting upon this dangling request is > > + * ignored, which means that we may unbind the context whilst > > + * the GPU is still writing to the backing storage. > > + */ > > i915_vma_move_to_active(i915_gem_obj_to_ggtt(from->legacy_hw_ctx.rcs_state), req); > > Hm, since this is just a partial fix, what about instead marking any > request that has been put to use already in move_to_active. And then when > we try to cancel it from execbuf notice that and not cancel it? Fixes both > bugs and makes the entire thing a bit more robust since it allows us to > throw stuff at a request without ordering constraints. Hmm, it leaks a bit furter than execbuffer. For example, we need to submit the request to maintain our state tracking correctly for the semaphores and whatnot for incomplete CS flips. >From inspection, we need: diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 730a6d2f5163..c33dd6f59064 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2708,12 +2708,9 @@ int i915_gpu_idle(struct drm_device *dev) return PTR_ERR(req); ret = i915_switch_context(req); - if (ret) { - i915_gem_request_cancel(req); - return ret; - } - i915_add_request_no_flush(req); + if (ret) + return ret; } ret = intel_engine_idle(ring); diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index be2302f8a0cf..2496dc0948e1 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -1306,7 +1306,6 @@ execbuf_submit(struct i915_execbuffer_params *params, trace_i915_gem_ring_dispatch(params->request, params->dispatch_flags); i915_gem_execbuffer_move_to_active(vmas, params->request); - i915_gem_execbuffer_retire_commands(params); return 0; } @@ -1603,8 +1602,10 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, } ret = i915_gem_request_add_to_client(params->request, file); - if (ret) - goto err_request; + if (ret) { + i915_gem_request_cancel(params->request); + goto err_batch_unpin; + } /* * Save assorted stuff away to pass through to *_submission(). @@ -1620,15 +1621,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, params->ctx = ctx; ret = execbuf_submit(params, args, &eb->vmas); - -err_request: - /* - * If the request was created but not successfully submitted then it - * must be freed again. If it was submitted then it is being tracked - * on the active request list and no clean up is required here. - */ - if (ret) - i915_gem_request_cancel(params->request); + i915_gem_execbuffer_retire_commands(params); err_batch_unpin: /* diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f73c06387ac3..c01765dea0c9 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -11671,7 +11671,7 @@ cleanup_unpin: intel_unpin_fb_obj(fb, crtc->primary->state); cleanup_request: if (request) - i915_gem_request_cancel(request); + i915_add_request_no_flush(request); cleanup_pending: atomic_dec(&intel_crtc->unpin_work_count); mutex_unlock(&dev->struct_mutex); And then everytime we need to consider, can I actually cancel this request? -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() @ 2015-12-21 12:59 ` Chris Wilson 0 siblings, 0 replies; 7+ messages in thread From: Chris Wilson @ 2015-12-21 12:59 UTC (permalink / raw) To: Daniel Vetter; +Cc: Daniel Vetter, intel-gfx, stable On Mon, Dec 21, 2015 at 01:28:17PM +0100, Daniel Vetter wrote: > On Thu, Dec 17, 2015 at 06:18:05PM +0000, Chris Wilson wrote: > > As we add the VMA to the request early, it may be cancelled during > > execbuf reservation. This will leave the context object pointing to a > > dangling request; i915_wait_request() simply skips the wait and so we > > may unbind the object whilst it is still active. > > > > We can partially prevent such atrocity by doing the RCS context > > initialisation earlier. This ensures that one callsite from blowing up > > (and for igt this is a frequent culprit due to how the stressful batches > > are submitted). > > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Cc: stable@vger.kernel.org > > --- > > drivers/gpu/drm/i915/i915_gem_context.c | 29 +++++++++++++++++------------ > > 1 file changed, 17 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > > index 900ffd044db8..657686e6492f 100644 > > --- a/drivers/gpu/drm/i915/i915_gem_context.c > > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > > @@ -657,7 +657,6 @@ static int do_switch(struct drm_i915_gem_request *req) > > struct drm_i915_private *dev_priv = ring->dev->dev_private; > > struct intel_context *from = ring->last_context; > > u32 hw_flags = 0; > > - bool uninitialized = false; > > int ret, i; > > > > if (from != NULL && ring == &dev_priv->ring[RCS]) { > > @@ -764,6 +763,15 @@ static int do_switch(struct drm_i915_gem_request *req) > > to->remap_slice &= ~(1<<i); > > } > > > > + if (!to->legacy_hw_ctx.initialized) { > > + if (ring->init_context) { > > + ret = ring->init_context(req); > > + if (ret) > > + goto unpin_out; > > + } > > + to->legacy_hw_ctx.initialized = true; > > + } > > + > > /* The backing object for the context is done after switching to the > > * *next* context. Therefore we cannot retire the previous context until > > * the next context has already started running. In fact, the below code > > @@ -772,6 +780,14 @@ static int do_switch(struct drm_i915_gem_request *req) > > */ > > if (from != NULL) { > > from->legacy_hw_ctx.rcs_state->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; > > + /* XXX Note very well this is dangerous! > > + * We are pinning this object using this request as our > > + * active reference. However, this request may yet be cancelled > > + * during the execbuf dispatch, leaving us waiting on a > > + * dangling request. Waiting upon this dangling request is > > + * ignored, which means that we may unbind the context whilst > > + * the GPU is still writing to the backing storage. > > + */ > > i915_vma_move_to_active(i915_gem_obj_to_ggtt(from->legacy_hw_ctx.rcs_state), req); > > Hm, since this is just a partial fix, what about instead marking any > request that has been put to use already in move_to_active. And then when > we try to cancel it from execbuf notice that and not cancel it? Fixes both > bugs and makes the entire thing a bit more robust since it allows us to > throw stuff at a request without ordering constraints. Hmm, it leaks a bit furter than execbuffer. For example, we need to submit the request to maintain our state tracking correctly for the semaphores and whatnot for incomplete CS flips. From inspection, we need: diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 730a6d2f5163..c33dd6f59064 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2708,12 +2708,9 @@ int i915_gpu_idle(struct drm_device *dev) return PTR_ERR(req); ret = i915_switch_context(req); - if (ret) { - i915_gem_request_cancel(req); - return ret; - } - i915_add_request_no_flush(req); + if (ret) + return ret; } ret = intel_engine_idle(ring); diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index be2302f8a0cf..2496dc0948e1 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -1306,7 +1306,6 @@ execbuf_submit(struct i915_execbuffer_params *params, trace_i915_gem_ring_dispatch(params->request, params->dispatch_flags); i915_gem_execbuffer_move_to_active(vmas, params->request); - i915_gem_execbuffer_retire_commands(params); return 0; } @@ -1603,8 +1602,10 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, } ret = i915_gem_request_add_to_client(params->request, file); - if (ret) - goto err_request; + if (ret) { + i915_gem_request_cancel(params->request); + goto err_batch_unpin; + } /* * Save assorted stuff away to pass through to *_submission(). @@ -1620,15 +1621,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, params->ctx = ctx; ret = execbuf_submit(params, args, &eb->vmas); - -err_request: - /* - * If the request was created but not successfully submitted then it - * must be freed again. If it was submitted then it is being tracked - * on the active request list and no clean up is required here. - */ - if (ret) - i915_gem_request_cancel(params->request); + i915_gem_execbuffer_retire_commands(params); err_batch_unpin: /* diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f73c06387ac3..c01765dea0c9 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -11671,7 +11671,7 @@ cleanup_unpin: intel_unpin_fb_obj(fb, crtc->primary->state); cleanup_request: if (request) - i915_gem_request_cancel(request); + i915_add_request_no_flush(request); cleanup_pending: atomic_dec(&intel_crtc->unpin_work_count); mutex_unlock(&dev->struct_mutex); And then everytime we need to consider, can I actually cancel this request? -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Intel-gfx] [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() 2015-12-21 12:59 ` Chris Wilson (?) @ 2015-12-22 21:27 ` Chris Wilson -1 siblings, 0 replies; 7+ messages in thread From: Chris Wilson @ 2015-12-22 21:27 UTC (permalink / raw) To: Daniel Vetter, intel-gfx, Daniel Vetter, stable On Mon, Dec 21, 2015 at 12:59:01PM +0000, Chris Wilson wrote: > Hmm, it leaks a bit furter than execbuffer. For example, we need to > submit the request to maintain our state tracking correctly for the > semaphores and whatnot for incomplete CS flips. > > From inspection, we need: And there's more from engine->init_context(). -Chris -- Chris Wilson, Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 7+ messages in thread
* ✗ warning: Fi.CI.BAT 2015-12-17 18:18 [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Chris Wilson 2015-12-18 7:49 ` ✗ warning: Fi.CI.BAT Patchwork 2015-12-21 12:28 ` [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Daniel Vetter @ 2015-12-21 13:12 ` Patchwork 2 siblings, 0 replies; 7+ messages in thread From: Patchwork @ 2015-12-21 13:12 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Summary == Built on ac2305b6c91b9a84cc12566016ece257c3ebcba3 drm-intel-nightly: 2015y-12m-17d-16h-19m-23s UTC integration manifest Test kms_flip: Subgroup basic-flip-vs-modeset: dmesg-warn -> PASS (bsw-nuc-2) pass -> DMESG-WARN (hsw-brixbox) Subgroup basic-flip-vs-wf_vblank: pass -> DMESG-WARN (bsw-nuc-2) dmesg-fail -> DMESG-WARN (skl-i7k-2) Test kms_pipe_crc_basic: Subgroup read-crc-pipe-a-frame-sequence: dmesg-warn -> PASS (byt-nuc) Subgroup read-crc-pipe-b: dmesg-warn -> PASS (snb-dellxps) Subgroup read-crc-pipe-c-frame-sequence: dmesg-warn -> PASS (bsw-nuc-2) Test kms_setmode: Subgroup basic-clone-single-crtc: pass -> DMESG-WARN (snb-dellxps) bsw-nuc-2 total:135 pass:114 dwarn:1 dfail:0 fail:0 skip:20 byt-nuc total:135 pass:120 dwarn:2 dfail:0 fail:0 skip:13 hsw-brixbox total:135 pass:126 dwarn:2 dfail:0 fail:0 skip:7 hsw-gt2 total:135 pass:130 dwarn:1 dfail:0 fail:0 skip:4 ilk-hp8440p total:135 pass:100 dwarn:0 dfail:0 fail:2 skip:33 ivb-t430s total:135 pass:128 dwarn:1 dfail:1 fail:1 skip:4 skl-i5k-2 total:135 pass:122 dwarn:5 dfail:0 fail:0 skip:8 skl-i7k-2 total:135 pass:122 dwarn:5 dfail:0 fail:0 skip:8 snb-dellxps total:135 pass:121 dwarn:2 dfail:0 fail:0 skip:12 snb-x220t total:135 pass:121 dwarn:2 dfail:0 fail:1 skip:11 Results at /archive/results/CI_IGT_test/Patchwork_707/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-12-22 21:27 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-12-17 18:18 [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Chris Wilson 2015-12-18 7:49 ` ✗ warning: Fi.CI.BAT Patchwork 2015-12-21 12:28 ` [PATCH] drm/i915: Hide one invalid cancellation bug in i915_switch_context() Daniel Vetter 2015-12-21 12:59 ` Chris Wilson 2015-12-21 12:59 ` Chris Wilson 2015-12-22 21:27 ` [Intel-gfx] " Chris Wilson 2015-12-21 13:12 ` ✗ warning: Fi.CI.BAT Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.