From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/3] drm/i915: Fix some invalid requests cancellations Date: Fri, 19 Feb 2016 12:29:00 +0000 Message-ID: <56C70A8C.8070900@linux.intel.com> References: <1454086145-16160-1-git-send-email-chris@chris-wilson.co.uk> <1454086145-16160-2-git-send-email-chris@chris-wilson.co.uk> <56BC862E.2020305@linux.intel.com> <20160215094726.GH11240@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 5F2386E11A for ; Fri, 19 Feb 2016 12:29:02 +0000 (UTC) In-Reply-To: <20160215094726.GH11240@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxNS8wMi8xNiAwOTo0NywgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIEZlYiAx MSwgMjAxNiBhdCAwMTowMTozNFBNICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4gT24g MjkvMDEvMTYgMTY6NDksIENocmlzIFdpbHNvbiB3cm90ZToKPj4+IEFzIHdlIGFkZCB0aGUgVk1B IHRvIHRoZSByZXF1ZXN0IGVhcmx5LCBpdCBtYXkgYmUgY2FuY2VsbGVkIGR1cmluZwo+Pj4gZXhl Y2J1ZiByZXNlcnZhdGlvbi4gVGhpcyB3aWxsIGxlYXZlIHRoZSBjb250ZXh0IG9iamVjdCBwb2lu dGluZyB0byBhCj4+Cj4+IEkgZG9uJ3QgZ2V0IGl0LCByZXF1ZXN0IGlzIGNyZWF0ZWQgYWZ0ZXIg dGhlIHJlc2VydmF0aW9uLgo+Cj4gVGhhdCdzIHRoZSBwcm9ibGVtIC0gd2UgYWRkIHZtYSBmb3Ig YSBnaXZlbiByZXF1ZXN0ICh3ZWxsIHJpbmcvc2Vxbm8gcGFpcikKPiBiZWZvcmUgdGhhdCByZXF1 ZXN0IGV4aXN0cy4KCldoeSBjYW4ndCB3ZSByZW1vdmUgdGhlbT8KClNvcnJ5IEkganVzdCBjYW4n dCBwZW5ldHJhdGUgdGhlIGNvbW1pdCBtZXNzYWdlLiBEb24ndCBnZXQgd2hhdCAKd2FpdF9yZXF1 ZXN0IGlzIGl0IHRhbGtpbmcgYWJvdXQgd2hlbiB0aGUgcmVxdWVzdCBpcyBjYW5jZWxlZCBzbyBu byAKbW9yZS4gT3IgaG93IGRvIGNvbnRleHRzIHBvaW50IHRvIHJlcXVlc3RzIGV0Yy4KCk1heWJl IHRoZW4gZmluZCBzb21lb25lIGVsc2UgdG8gcmV2aWV3IHRoaXMuCgpSZWdhcmRzLAoKVHZydGtv Cgo+IC1EYW5pZWwKCj4KPj4KPj4+IGRhbmdsaW5nIHJlcXVlc3Q7IGk5MTVfd2FpdF9yZXF1ZXN0 KCkgc2ltcGx5IHNraXBzIHRoZSB3YWl0IGFuZCBzbyB3ZQo+Pj4gbWF5IHVuYmluZCB0aGUgb2Jq ZWN0IHdoaWxzdCBpdCBpcyBzdGlsbCBhY3RpdmUuCj4+Pgo+Pj4gSG93ZXZlciwgaWYgYXQgYW55 IHBvaW50IHdlIG1ha2UgYSBjaGFuZ2UgdG8gdGhlIGhhcmR3YXJlIChhbmQgZXF1YWxseQo+Pj4g aW1wb3J0YW50bHkgb3VyIGJvb2trZWVwaW5nIGluIHRoZSBkcml2ZXIpLCB3ZSBjYW5ub3QgY2Fu Y2VsIHRoZSByZXF1ZXN0Cj4+PiBhcyB3aGF0IGhhcyBhbHJlYWR5IGJlZW4gd3JpdHRlbiBtdXN0 IGJlIHN1Ym1pdHRlZC4gU3VibWl0dGluZyBhIHBhcnRpYWwKPj4+IHJlcXVlc3QgaXMgZmFyIGVh c2llciB0aGFuIHRyeWluZyB0byB1bndpbmQgdGhlIGluY29tcGxldGUgY2hhbmdlLgo+Pj4KPj4+ IFVuZm9ydHVuYXRlbHkgdGhpcyBwYXRjaCB1bmRvZXMgdGhlIGV4Y2VzcyBicmVhZGNydW1iIHVz YWdlIHRoYXQgb2xyCj4+PiBwcmV2ZW50ZWQsIGUuZy4gaWYgd2UgaW50ZXJydXB0IGJhdGNoYnVm ZmVyIHN1Ym1pc3Npb24gdGhlbiB3ZSBzdWJtaXQKPj4+IHRoZSByZXF1ZXN0cyBhbG9uZyB3aXRo IHRoZSBtZW1vcnkgd3JpdGVzIGFuZCBpbnRlcnJ1cHQgKGV2ZW4gdGhvdWdoIHdlCj4+PiBkbyBu byByZWFsIHdvcmspLiBEaXNhc3NvY2lhdGluZyByZXF1ZXN0cyBmcm9tIGJyZWFkY3J1bWJzIChh bmQKPj4+IHNlbWFwaG9yZXMpIGlzIGEgdG9waWMgZm9yIGEgcGFzdC9mdXR1cmUgc2VyaWVzLCBi dXQgbm93IG11Y2ggbW9yZQo+Pj4gaW1wb3J0YW50Lgo+Pj4KPj4+IHYyOiBSZWJhc2UKPj4+Cj4+ PiBOb3RlIHRoYXQgaWd0L2dlbV9jb25jdXJyZW50X2JsaXQgdGlnZ2VycyBib3RoIG1pc3JlbmRl cmluZyBhbmQgYSBHUEYKPj4+IHRoYXQgaXMgZml4ZWQgYnkgdGhpcyBwYXRjaC4KPj4+Cj4+PiBC dWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM5 MDcKPj4+IFRlc3RjYXNlOiBpZ3QvZ2VtX2NvbmN1cnJlbnRfYmxpdAo+Pj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+PiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPj4+IENjOiBzdGFibGVAdmdlci5rZXJu ZWwub3JnCj4+PiAtLS0KPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgIHwgIDEgLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAg ICAgICAgfCAgNyArKy0tLS0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYyAgICB8IDIxICsrKysrKysrKy0tLS0tLS0tLS0tLQo+Pj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAxNiArKysrKy0tLS0tLS0tLS0tCj4+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICB8ICAyICstCj4+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8ICAxIC0KPj4+ICAg NiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+IGluZGV4IGEyZDJmMDhiNzUxNS4uZjgyOGE3ZmZl ZDM3IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gQEAgLTI4MjMsNyArMjgy Myw2IEBAIGludCBpOTE1X2dlbV9zd19maW5pc2hfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPj4+ICAgCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7 Cj4+PiAgIHZvaWQgaTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgbGlz dF9oZWFkICp2bWFzLAo+Pj4gICAJCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KTsKPj4+IC12b2lkIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmV0aXJlX2NvbW1hbmRzKHN0cnVjdCBp OTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMpOwo+Pj4gICBpbnQgaTkxNV9nZW1fcmluZ2J1 ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4+ PiAgIAkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdzLAo+Pj4gICAJ CQkJICAgc3RydWN0IGxpc3RfaGVhZCAqdm1hcyk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK Pj4+IGluZGV4IGU5YjE5YmNhMTM4My4uZjc2NGYzMzU4MGZjIDEwMDY0NAo+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+Pj4gQEAgLTM0MDcsMTIgKzM0MDcsOSBAQCBpbnQgaTkxNV9ncHVfaWRs ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4gICAJCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsK Pj4+Cj4+PiAgIAkJCXJldCA9IGk5MTVfc3dpdGNoX2NvbnRleHQocmVxKTsKPj4+IC0JCQlpZiAo cmV0KSB7Cj4+PiAtCQkJCWk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHJlcSk7Cj4+PiAtCQkJCXJl dHVybiByZXQ7Cj4+PiAtCQkJfQo+Pj4gLQo+Pj4gICAJCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2Zs dXNoKHJlcSk7Cj4+PiArCQkJaWYgKHJldCkKPj4+ICsJCQkJcmV0dXJuIHJldDsKPj4+ICAgCQl9 Cj4+Pgo+Pj4gICAJCXJldCA9IGludGVsX3JpbmdfaWRsZShyaW5nKTsKPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj4+IGluZGV4IDgzYTA5N2M5NDkxMS4uNWRhN2Fk YzNmN2IyIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK Pj4+IEBAIC02NTIsNyArNjUyLDYgQEAgc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOwo+Pj4gICAJc3RydWN0IGludGVsX2NvbnRl eHQgKmZyb20gPSByaW5nLT5sYXN0X2NvbnRleHQ7Cj4+PiAgIAl1MzIgaHdfZmxhZ3MgPSAwOwo+ Pj4gLQlib29sIHVuaW5pdGlhbGl6ZWQgPSBmYWxzZTsKPj4+ICAgCWludCByZXQsIGk7Cj4+Pgo+ Pj4gICAJaWYgKGZyb20gIT0gTlVMTCAmJiByaW5nID09ICZkZXZfcHJpdi0+cmluZ1tSQ1NdKSB7 Cj4+PiBAQCAtNzU5LDYgKzc1OCwxNSBAQCBzdGF0aWMgaW50IGRvX3N3aXRjaChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4+ICAgCQkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8 aSk7Cj4+PiAgIAl9Cj4+Pgo+Pj4gKwlpZiAoIXRvLT5sZWdhY3lfaHdfY3R4LmluaXRpYWxpemVk KSB7Cj4+PiArCQlpZiAocmluZy0+aW5pdF9jb250ZXh0KSB7Cj4+PiArCQkJcmV0ID0gcmluZy0+ aW5pdF9jb250ZXh0KHJlcSk7Cj4+PiArCQkJaWYgKHJldCkKPj4+ICsJCQkJZ290byB1bnBpbl9v dXQ7Cj4+PiArCQl9Cj4+PiArCQl0by0+bGVnYWN5X2h3X2N0eC5pbml0aWFsaXplZCA9IHRydWU7 Cj4+PiArCX0KPj4+ICsKPj4+ICAgCS8qIFRoZSBiYWNraW5nIG9iamVjdCBmb3IgdGhlIGNvbnRl eHQgaXMgZG9uZSBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlCj4+PiAgIAkgKiAqbmV4dCogY29udGV4 dC4gVGhlcmVmb3JlIHdlIGNhbm5vdCByZXRpcmUgdGhlIHByZXZpb3VzIGNvbnRleHQgdW50aWwK Pj4+ICAgCSAqIHRoZSBuZXh0IGNvbnRleHQgaGFzIGFscmVhZHkgc3RhcnRlZCBydW5uaW5nLiBJ biBmYWN0LCB0aGUgYmVsb3cgY29kZQo+Pj4gQEAgLTc4MiwyMSArNzkwLDEwIEBAIHN0YXRpYyBp bnQgZG9fc3dpdGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Pj4gICAJCWk5 MTVfZ2VtX2NvbnRleHRfdW5yZWZlcmVuY2UoZnJvbSk7Cj4+PiAgIAl9Cj4+Pgo+Pj4gLQl1bmlu aXRpYWxpemVkID0gIXRvLT5sZWdhY3lfaHdfY3R4LmluaXRpYWxpemVkOwo+Pj4gLQl0by0+bGVn YWN5X2h3X2N0eC5pbml0aWFsaXplZCA9IHRydWU7Cj4+PiAtCj4+PiAgIGRvbmU6Cj4+PiAgIAlp OTE1X2dlbV9jb250ZXh0X3JlZmVyZW5jZSh0byk7Cj4+PiAgIAlyaW5nLT5sYXN0X2NvbnRleHQg PSB0bzsKPj4+Cj4+PiAtCWlmICh1bmluaXRpYWxpemVkKSB7Cj4+PiAtCQlpZiAocmluZy0+aW5p dF9jb250ZXh0KSB7Cj4+PiAtCQkJcmV0ID0gcmluZy0+aW5pdF9jb250ZXh0KHJlcSk7Cj4+PiAt CQkJaWYgKHJldCkKPj4+IC0JCQkJRFJNX0VSUk9SKCJyaW5nIGluaXQgY29udGV4dDogJWRcbiIs IHJldCk7Cj4+PiAtCQl9Cj4+PiAtCX0KPj4+IC0KPj4+ICAgCXJldHVybiAwOwo+Pj4KPj4+ICAg dW5waW5fb3V0Ogo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu Ywo+Pj4gaW5kZXggOGZkMDBkMjc5NDQ3Li42MWJiMTU1MDdiMzAgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+Pj4gQEAgLTExMzMsNyArMTEz Myw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUoc3RydWN0IGxpc3RfaGVh ZCAqdm1hcywKPj4+ICAgCX0KPj4+ICAgfQo+Pj4KPj4+IC12b2lkCj4+PiArc3RhdGljIHZvaWQK Pj4+ICAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXRpcmVfY29tbWFuZHMoc3RydWN0IGk5MTVfZXhl Y2J1ZmZlcl9wYXJhbXMgKnBhcmFtcykKPj4+ICAgewo+Pj4gICAJLyogVW5jb25kaXRpb25hbGx5 IGZvcmNlIGFkZF9yZXF1ZXN0IHRvIGVtaXQgYSBmdWxsIGZsdXNoLiAqLwo+Pj4gQEAgLTEzMTgs NyArMTMxOCw2IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+Pj4gICAJdHJhY2VfaTkxNV9nZW1fcmluZ19kaXNw YXRjaChwYXJhbXMtPnJlcXVlc3QsIHBhcmFtcy0+ZGlzcGF0Y2hfZmxhZ3MpOwo+Pj4KPj4+ICAg CWk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUodm1hcywgcGFyYW1zLT5yZXF1ZXN0 KTsKPj4+IC0JaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXRpcmVfY29tbWFuZHMocGFyYW1zKTsKPj4K Pj4gSG0gdGhpcyB3aG9sZSBibG9jayBibG9jayBmcm9tIHRyYWNlXy4uLiB0bwo+PiBpOTE1X2dl bV9leGVjYnVmZmVyX3JldGlyZV9jb21tYW5kcyBjb3VsZCBiZSBtb3ZlZCB0byBkb19leGVjYnVm ZmVyIGFzIGFuZAo+PiBpbmRlcGVuZGVudCBjbGVhbnVwIHBhdGNoIGlmIHVuZGVyICJpZiAocmV0 ID09IDApIi4KPj4KPj4gU28gdGhlIGNvbmNlcm4gaXMgdGhhdCBzb21ldGhpbmcgaGFzIGJlZW4g d3JpdHRlbiB0byB0aGUgcmluZ2J1ZmZlciBidXQgbm90Cj4+IGFsbCBvZiBpdD8KPj4KPj4gV2h5 IGRvIHdlIGhhdmUgdG8gc3VibWl0IHRoYXQsIEkgYW0gYXNzdW1pbmcgd2hhdGV2ZXIgd2FzIHdy aXR0ZW4gaXMgbm90Cj4+IGludGVyZXN0aW5nIHRvIGJlIGV4ZWN1dGVkIHVubGVzcyB0aGUgd2hv bGUgYmIgd2VudCBpbi4KPj4KPj4gU28gY291bGQgd2UganVzdCByZXdpbmQgdGhlIHBvaW50ZXJz PyBTdG9yZSB0aGVtIGF0IHRoZSBiZWdpbm5pbmcgYW5kIHJld2luZAo+PiBpZiBzb21ldGhpbmcg ZmFpbGVkLgo+Pgo+Pj4KPj4+ICAgCXJldHVybiAwOwo+Pj4gICB9Cj4+PiBAQCAtMTYxNiw4ICsx NjE1LDEwIEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPj4+ICAgCX0KPj4+Cj4+PiAgIAlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2Fk ZF90b19jbGllbnQocmVxLCBmaWxlKTsKPj4+IC0JaWYgKHJldCkKPj4+ICsJaWYgKHJldCkgewo+ Pj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwocmVxKTsKPj4+ICAgCQlnb3RvIGVycl9iYXRj aF91bnBpbjsKPj4+ICsJfQo+Pgo+PiBEb2Vzbid0IGxvb2sgbGlrZSB0aGlzIGNhbiBmYWlsIHNv IGEgc2lkZSBjbGVhbnVwIG9ubHk/Cj4+Cj4+IFJlZ2FyZHMsCj4+Cj4+IFR2cnRrbwo+Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com ([134.134.136.20]:51863 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932074AbcBSM3D (ORCPT ); Fri, 19 Feb 2016 07:29:03 -0500 Subject: Re: [Intel-gfx] [PATCH 2/3] drm/i915: Fix some invalid requests cancellations To: Daniel Vetter References: <1454086145-16160-1-git-send-email-chris@chris-wilson.co.uk> <1454086145-16160-2-git-send-email-chris@chris-wilson.co.uk> <56BC862E.2020305@linux.intel.com> <20160215094726.GH11240@phenom.ffwll.local> Cc: Chris Wilson , intel-gfx@lists.freedesktop.org, Daniel Vetter , stable@vger.kernel.org From: Tvrtko Ursulin Message-ID: <56C70A8C.8070900@linux.intel.com> Date: Fri, 19 Feb 2016 12:29:00 +0000 MIME-Version: 1.0 In-Reply-To: <20160215094726.GH11240@phenom.ffwll.local> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: On 15/02/16 09:47, Daniel Vetter wrote: > On Thu, Feb 11, 2016 at 01:01:34PM +0000, Tvrtko Ursulin wrote: >> On 29/01/16 16:49, 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 >> >> I don't get it, request is created after the reservation. > > That's the problem - we add vma for a given request (well ring/seqno pair) > before that request exists. Why can't we remove them? Sorry I just can't penetrate the commit message. Don't get what wait_request is it talking about when the request is canceled so no more. Or how do contexts point to requests etc. Maybe then find someone else to review this. Regards, Tvrtko > -Daniel > >> >>> dangling request; i915_wait_request() simply skips the wait and so we >>> may unbind the object whilst it is still active. >>> >>> However, if at any point we make a change to the hardware (and equally >>> importantly our bookkeeping in the driver), we cannot cancel the request >>> as what has already been written must be submitted. Submitting a partial >>> request is far easier than trying to unwind the incomplete change. >>> >>> Unfortunately this patch undoes the excess breadcrumb usage that olr >>> prevented, e.g. if we interrupt batchbuffer submission then we submit >>> the requests along with the memory writes and interrupt (even though we >>> do no real work). Disassociating requests from breadcrumbs (and >>> semaphores) is a topic for a past/future series, but now much more >>> important. >>> >>> v2: Rebase >>> >>> Note that igt/gem_concurrent_blit tiggers both misrendering and a GPF >>> that is fixed by this patch. >>> >>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93907 >>> Testcase: igt/gem_concurrent_blit >>> Signed-off-by: Chris Wilson >>> Cc: Daniel Vetter >>> Cc: stable@vger.kernel.org >>> --- >>> drivers/gpu/drm/i915/i915_drv.h | 1 - >>> drivers/gpu/drm/i915/i915_gem.c | 7 ++----- >>> drivers/gpu/drm/i915/i915_gem_context.c | 21 +++++++++------------ >>> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 16 +++++----------- >>> drivers/gpu/drm/i915/intel_display.c | 2 +- >>> drivers/gpu/drm/i915/intel_lrc.c | 1 - >>> 6 files changed, 17 insertions(+), 31 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h >>> index a2d2f08b7515..f828a7ffed37 100644 >>> --- a/drivers/gpu/drm/i915/i915_drv.h >>> +++ b/drivers/gpu/drm/i915/i915_drv.h >>> @@ -2823,7 +2823,6 @@ int i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, >>> struct drm_file *file_priv); >>> void i915_gem_execbuffer_move_to_active(struct list_head *vmas, >>> struct drm_i915_gem_request *req); >>> -void i915_gem_execbuffer_retire_commands(struct i915_execbuffer_params *params); >>> int i915_gem_ringbuffer_submission(struct i915_execbuffer_params *params, >>> struct drm_i915_gem_execbuffer2 *args, >>> struct list_head *vmas); >>> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c >>> index e9b19bca1383..f764f33580fc 100644 >>> --- a/drivers/gpu/drm/i915/i915_gem.c >>> +++ b/drivers/gpu/drm/i915/i915_gem.c >>> @@ -3407,12 +3407,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_ring_idle(ring); >>> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c >>> index 83a097c94911..5da7adc3f7b2 100644 >>> --- a/drivers/gpu/drm/i915/i915_gem_context.c >>> +++ b/drivers/gpu/drm/i915/i915_gem_context.c >>> @@ -652,7 +652,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]) { >>> @@ -759,6 +758,15 @@ static int do_switch(struct drm_i915_gem_request *req) >>> to->remap_slice &= ~(1<>> } >>> >>> + 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 >>> @@ -782,21 +790,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: >>> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c >>> index 8fd00d279447..61bb15507b30 100644 >>> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c >>> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c >>> @@ -1133,7 +1133,7 @@ i915_gem_execbuffer_move_to_active(struct list_head *vmas, >>> } >>> } >>> >>> -void >>> +static void >>> i915_gem_execbuffer_retire_commands(struct i915_execbuffer_params *params) >>> { >>> /* Unconditionally force add_request to emit a full flush. */ >>> @@ -1318,7 +1318,6 @@ i915_gem_ringbuffer_submission(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); >> >> Hm this whole block block from trace_... to >> i915_gem_execbuffer_retire_commands could be moved to do_execbuffer as and >> independent cleanup patch if under "if (ret == 0)". >> >> So the concern is that something has been written to the ringbuffer but not >> all of it? >> >> Why do we have to submit that, I am assuming whatever was written is not >> interesting to be executed unless the whole bb went in. >> >> So could we just rewind the pointers? Store them at the beginning and rewind >> if something failed. >> >>> >>> return 0; >>> } >>> @@ -1616,8 +1615,10 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, >>> } >>> >>> ret = i915_gem_request_add_to_client(req, file); >>> - if (ret) >>> + if (ret) { >>> + i915_gem_request_cancel(req); >>> goto err_batch_unpin; >>> + } >> >> Doesn't look like this can fail so a side cleanup only? >> >> Regards, >> >> Tvrtko >