From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.fireflyinternet.com ([109.228.58.192]:61851 "EHLO fireflyinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752183AbeBFJqj (ORCPT ); Tue, 6 Feb 2018 04:46:39 -0500 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Cc: Chris Wilson , Tvrtko Ursulin , Joonas Lahtinen , stable@vger.kernel.org Subject: [PATCH] drm/i915/breadcrumbs: Ignore unsubmitted signalers Date: Tue, 6 Feb 2018 09:46:33 +0000 Message-Id: <20180206094633.30181-1-chris@chris-wilson.co.uk> Sender: stable-owner@vger.kernel.org List-ID: When a request is preempted, it is unsubmitted from the HW queue and removed from the active list of breadcrumbs. In the process, this however triggers the signaler and it may see the clear rbtree with the old, and still valid, seqno. This confuses the signaler into action and signaling the fence. Fixes: d6a2289d9d6b ("drm/i915: Remove the preempted request from the execution queue") Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Cc: Joonas Lahtinen Cc: # v4.12+ --- drivers/gpu/drm/i915/intel_breadcrumbs.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c b/drivers/gpu/drm/i915/intel_breadcrumbs.c index efbc627a2a25..b955f7d7bd0f 100644 --- a/drivers/gpu/drm/i915/intel_breadcrumbs.c +++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c @@ -588,29 +588,16 @@ void intel_engine_remove_wait(struct intel_engine_cs *engine, spin_unlock_irq(&b->rb_lock); } -static bool signal_valid(const struct drm_i915_gem_request *request) -{ - return intel_wait_check_request(&request->signaling.wait, request); -} - static bool signal_complete(const struct drm_i915_gem_request *request) { if (!request) return false; - /* If another process served as the bottom-half it may have already - * signalled that this wait is already completed. - */ - if (intel_wait_complete(&request->signaling.wait)) - return signal_valid(request); - - /* Carefully check if the request is complete, giving time for the + /* + * Carefully check if the request is complete, giving time for the * seqno to be visible or if the GPU hung. */ - if (__i915_request_irq_complete(request)) - return true; - - return false; + return __i915_request_irq_complete(request); } static struct drm_i915_gem_request *to_signaler(struct rb_node *rb) @@ -712,6 +699,7 @@ static int intel_breadcrumbs_signaler(void *arg) &request->fence.flags)) { local_bh_disable(); dma_fence_signal(&request->fence); + GEM_BUG_ON(!i915_gem_request_completed(request)); local_bh_enable(); /* kick start the tasklets */ } -- 2.15.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915/breadcrumbs: Ignore unsubmitted signalers Date: Tue, 6 Feb 2018 09:46:33 +0000 Message-ID: <20180206094633.30181-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A05F6E3D9 for ; Tue, 6 Feb 2018 09:46:47 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org V2hlbiBhIHJlcXVlc3QgaXMgcHJlZW1wdGVkLCBpdCBpcyB1bnN1Ym1pdHRlZCBmcm9tIHRoZSBI VyBxdWV1ZSBhbmQKcmVtb3ZlZCBmcm9tIHRoZSBhY3RpdmUgbGlzdCBvZiBicmVhZGNydW1icy4g SW4gdGhlIHByb2Nlc3MsIHRoaXMKaG93ZXZlciB0cmlnZ2VycyB0aGUgc2lnbmFsZXIgYW5kIGl0 IG1heSBzZWUgdGhlIGNsZWFyIHJidHJlZSB3aXRoIHRoZQpvbGQsIGFuZCBzdGlsbCB2YWxpZCwg c2Vxbm8uIFRoaXMgY29uZnVzZXMgdGhlIHNpZ25hbGVyIGludG8gYWN0aW9uIGFuZApzaWduYWxp bmcgdGhlIGZlbmNlLgoKRml4ZXM6IGQ2YTIyODlkOWQ2YiAoImRybS9pOTE1OiBSZW1vdmUgdGhl IHByZWVtcHRlZCByZXF1ZXN0IGZyb20gdGhlIGV4ZWN1dGlvbiBxdWV1ZSIpClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5l biA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IDxzdGFibGVAdmdlci5rZXJu ZWwub3JnPiAjIHY0LjEyKwotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1 bWJzLmMgfCAyMCArKysrLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0 aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFk Y3J1bWJzLmMKaW5kZXggZWZiYzYyN2EyYTI1Li5iOTU1ZjdkN2JkMGYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwpAQCAtNTg4LDI5ICs1ODgsMTYgQEAgdm9pZCBp bnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAog CXNwaW5fdW5sb2NrX2lycSgmYi0+cmJfbG9jayk7CiB9CiAKLXN0YXRpYyBib29sIHNpZ25hbF92 YWxpZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCi17Ci0JcmV0 dXJuIGludGVsX3dhaXRfY2hlY2tfcmVxdWVzdCgmcmVxdWVzdC0+c2lnbmFsaW5nLndhaXQsIHJl cXVlc3QpOwotfQotCiBzdGF0aWMgYm9vbCBzaWduYWxfY29tcGxldGUoY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogewogCWlmICghcmVxdWVzdCkKIAkJcmV0dXJu IGZhbHNlOwogCi0JLyogSWYgYW5vdGhlciBwcm9jZXNzIHNlcnZlZCBhcyB0aGUgYm90dG9tLWhh bGYgaXQgbWF5IGhhdmUgYWxyZWFkeQotCSAqIHNpZ25hbGxlZCB0aGF0IHRoaXMgd2FpdCBpcyBh bHJlYWR5IGNvbXBsZXRlZC4KLQkgKi8KLQlpZiAoaW50ZWxfd2FpdF9jb21wbGV0ZSgmcmVxdWVz dC0+c2lnbmFsaW5nLndhaXQpKQotCQlyZXR1cm4gc2lnbmFsX3ZhbGlkKHJlcXVlc3QpOwotCi0J LyogQ2FyZWZ1bGx5IGNoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlLCBnaXZpbmcgdGlt ZSBmb3IgdGhlCisJLyoKKwkgKiBDYXJlZnVsbHkgY2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgY29t cGxldGUsIGdpdmluZyB0aW1lIGZvciB0aGUKIAkgKiBzZXFubyB0byBiZSB2aXNpYmxlIG9yIGlm IHRoZSBHUFUgaHVuZy4KIAkgKi8KLQlpZiAoX19pOTE1X3JlcXVlc3RfaXJxX2NvbXBsZXRlKHJl cXVlc3QpKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gX19pOTE1 X3JlcXVlc3RfaXJxX2NvbXBsZXRlKHJlcXVlc3QpOwogfQogCiBzdGF0aWMgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICp0b19zaWduYWxlcihzdHJ1Y3QgcmJfbm9kZSAqcmIpCkBAIC03MTIs NiArNjk5LDcgQEAgc3RhdGljIGludCBpbnRlbF9icmVhZGNydW1ic19zaWduYWxlcih2b2lkICph cmcpCiAJCQkJICAgICAgJnJlcXVlc3QtPmZlbmNlLmZsYWdzKSkgewogCQkJCWxvY2FsX2JoX2Rp c2FibGUoKTsKIAkJCQlkbWFfZmVuY2Vfc2lnbmFsKCZyZXF1ZXN0LT5mZW5jZSk7CisJCQkJR0VN X0JVR19PTighaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpOwogCQkJCWxvY2Fs X2JoX2VuYWJsZSgpOyAvKiBraWNrIHN0YXJ0IHRoZSB0YXNrbGV0cyAqLwogCQkJfQogCi0tIAoy LjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=