From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/4] drm/i915: Emit pipelined fence changes Date: Wed, 5 Jul 2017 11:19:43 +0100 Message-ID: <99d30dd1-b518-0f9b-a412-dbf365ad690c@linux.intel.com> References: <20170703101412.30820-1-chris@chris-wilson.co.uk> <20170703101412.30820-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF08F6E3AD for ; Wed, 5 Jul 2017 10:19:45 +0000 (UTC) In-Reply-To: <20170703101412.30820-3-chris@chris-wilson.co.uk> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAzLzA3LzIwMTcgMTE6MTQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBNYW55IHllYXJzIGFn bywgbG9uZyBiZWZvcmUgcmVxdWVzdHMsIHdlIHRyaWVkIGRvaW5nIHRoaXMuIFdlIG5ldmVyCj4g cXVpdGUgZ290IGl0IHJpZ2h0LCBidXQgbm93IHdpdGggcmVxdWVzdHMgd2UgaGF2ZSB0aGUgdHJh Y2tpbmcgdG8gZG8gdGhlCj4gam9iIHByb3Blcmx5IQoKQWRkIGEgZmV3IHdvcmRzIG9uIHRoZSBi ZW5lZml0cyBpbiBjZXJ0YWluIHVzZSBjYXNlcy9iZW5jaG1hcmtzLgoKPiAKPiBPbmUgb2YgdGhl IHN0YWxsIHBvaW50cyBmb3IgZ2VuMi9nZW4zIGlzIHRoZSB1c2Ugb2YgZmVuY2UgcmVnaXN0ZXJz IGZvcgo+IEdQVSBvcGVyYXRpb25zLiBUaGVyZSBhcmUgb25seSBhIGZldyBhdmFpbGFibGUsIGFu ZCBjdXJyZW50bHkgaWYgd2UKPiBleGhhdXN0IHRoZSBhdmFpbGFibGUgZmVuY2UgcmVnaXN0ZXIg d2UgbXVzdCBzdGFsbCB0aGUgR1BVIGJldHdlZW4KPiBiYXRjaGVzLiBCeSBwaXBlbGluaW5nIHRo ZSBmZW5jZSByZWdpc3RlciB3cml0ZXMsIHdlIGNhbiBhdm9pZCB0aGUgc3RhbGwKPiBhbmQgY29u dGludW91c2x5IGVtaXQgdGhlIGJhdGNoZXMuIFRoZSBjaGFsbGVuZ2UgaXMgcmVtZW1iZXJpbmcg dG8gd2FpdAo+IGZvciB0aG9zZSBwaXBlbGluZWQgTFJJIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGZl bmNlIHdpdGggdGhlIENQVSwgYW5kCj4gdGhhdCBpcyB3aGF0IG91ciByZXF1ZXN0IHRyYWNraW5n IG1ha2VzIGVhc3kuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j ICAgICAgICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jIHwgIDE1ICsrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVu Y2VfcmVnLmMgIHwgMTkzICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaCAgfCAgIDEgKwo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAgICB8ICAgNCArCj4gICA2IGZpbGVzIGNoYW5n ZWQsIDE4NiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBpbmRleCA5MzlhMjk5MjYwZTkuLjUzMThlMzIxY2U1MCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+IEBAIC00ODgwLDYgKzQ4ODAsNyBAQCBpOTE1X2dlbV9sb2FkX2lu aXRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJZmVuY2Ut Pmk5MTUgPSBkZXZfcHJpdjsKPiAgIAkJZmVuY2UtPmlkID0gaTsKPiAgIAkJbGlzdF9hZGRfdGFp bCgmZmVuY2UtPmxpbmssICZkZXZfcHJpdi0+bW0uZmVuY2VfbGlzdCk7Cj4gKwkJaW5pdF9yZXF1 ZXN0X2FjdGl2ZSgmZmVuY2UtPnBpcGVsaW5lZCwgTlVMTCk7Cj4gICAJfQo+ICAgCWk5MTVfZ2Vt X3Jlc3RvcmVfZmVuY2VzKGRldl9wcml2KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCAyMmE5ZjUzNTgzMjIuLjE5MzQ3YWQwZTdhYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAt MzY1LDExICszNjUsMTIgQEAgZWJfcGluX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwK PiAgIAkJcmV0dXJuOwo+ICAgCj4gICAJaWYgKHVubGlrZWx5KGVudHJ5LT5mbGFncyAmIEVYRUNf T0JKRUNUX05FRURTX0ZFTkNFKSkgewo+IC0JCWlmICh1bmxpa2VseShpOTE1X3ZtYV9waW5fZmVu Y2Uodm1hKSkpIHsKPiArCQlpZiAodW5saWtlbHkoaTkxNV92bWFfcmVzZXJ2ZV9mZW5jZSh2bWEp KSkgewo+ICAgCQkJaTkxNV92bWFfdW5waW4odm1hKTsKPiAgIAkJCXJldHVybjsKPiAgIAkJfQo+ ICAgCj4gKwkJZW50cnktPmZsYWdzICY9IH5FWEVDX09CSkVDVF9BU1lOQzsKPiAgIAkJaWYgKHZt YS0+ZmVuY2UpCj4gICAJCQllbnRyeS0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9IQVNfRkVOQ0U7 Cj4gICAJfQo+IEBAIC01NjQsMTIgKzU2NSwxMyBAQCBzdGF0aWMgaW50IGViX3Jlc2VydmVfdm1h KGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+ICAgCUdFTV9CVUdfT04oZWJfdm1h X21pc3BsYWNlZChlbnRyeSwgdm1hKSk7Cj4gICAKPiAgIAlpZiAodW5saWtlbHkoZW50cnktPmZs YWdzICYgRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0UpKSB7Cj4gLQkJZXJyID0gaTkxNV92bWFfcGlu X2ZlbmNlKHZtYSk7Cj4gKwkJZXJyID0gaTkxNV92bWFfcmVzZXJ2ZV9mZW5jZSh2bWEpOwo+ICAg CQlpZiAodW5saWtlbHkoZXJyKSkgewo+ICAgCQkJaTkxNV92bWFfdW5waW4odm1hKTsKPiAgIAkJ CXJldHVybiBlcnI7Cj4gICAJCX0KPiAgIAo+ICsJCWVudHJ5LT5mbGFncyAmPSB+RVhFQ19PQkpF Q1RfQVNZTkM7CgpBIGNvbW1lbnQgaGVyZSB3b3VsZCBiZSBnb29kLgoKPiAgIAkJaWYgKHZtYS0+ ZmVuY2UpCj4gICAJCQllbnRyeS0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9IQVNfRkVOQ0U7Cj4g ICAJfQo+IEBAIC0xODQ4LDYgKzE4NTAsMTIgQEAgc3RhdGljIGludCBlYl9tb3ZlX3RvX2dwdShz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAgIAkJaWYgKHVubGlrZWx5KG9iai0+Y2FjaGVf ZGlydHkgJiYgIW9iai0+Y2FjaGVfY29oZXJlbnQpKQo+ICAgCQkJaTkxNV9nZW1fY2xmbHVzaF9v YmplY3Qob2JqLCAwKTsKPiAgIAo+ICsJCWlmICh1bmxpa2VseShlbnRyeS0+ZmxhZ3MgJiBFWEVD X09CSkVDVF9ORUVEU19GRU5DRSkpIHsKPiArCQkJZXJyID0gaTkxNV92bWFfZW1pdF9waXBlbGlu ZWRfZmVuY2Uodm1hLCBlYi0+cmVxdWVzdCk7Cj4gKwkJCWlmIChlcnIpCj4gKwkJCQlyZXR1cm4g ZXJyOwo+ICsJCX0KPiArCj4gICAJCWVyciA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfb2JqZWN0 Cj4gICAJCQkoZWItPnJlcXVlc3QsIG9iaiwgZW50cnktPmZsYWdzICYgRVhFQ19PQkpFQ1RfV1JJ VEUpOwo+ICAgCQlpZiAoZXJyKQo+IEBAIC0xOTMyLDkgKzE5NDAsNiBAQCB2b2lkIGk5MTVfdm1h X21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgCQlvYmotPmJhc2UucmVh ZF9kb21haW5zID0gMDsKPiAgIAl9Cj4gICAJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyB8PSBJOTE1 X0dFTV9HUFVfRE9NQUlOUzsKPiAtCj4gLQlpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9ORUVEU19G RU5DRSkKPiAtCQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3RfZmVuY2UsIHJlcSk7Cj4g ICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlX3JlZy5jCj4gaW5kZXggNTVhYzdiYzE0ZmNlLi5kMGNkMDUxYzE5ZmQgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+IEBAIC01NSwxMCAr NTUsOSBAQAo+ICAgICogQ1BVIHB0ZXMgaW50byBHVFQgbW1hcHMgKG5vdCB0aGUgR1RUIHB0ZXMg dGhlbXNlbHZlcykgYXMgbmVlZGVkLgo+ICAgICovCj4gICAKPiAtI2RlZmluZSBwaXBlbGluZWQg MAo+IC0KPiAtc3RhdGljIHZvaWQgaTk2NV93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGRybV9pOTE1 X2ZlbmNlX3JlZyAqZmVuY2UsCj4gLQkJCQkgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3N0YXRp YyBpbnQgaTk2NV93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVu Y2UsCj4gKwkJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiArCQkJCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcGlwZWxpbmVkKQo+ICAgewo+ICAgCWk5MTVfcmVnX3QgZmVuY2VfcmVnX2xv LCBmZW5jZV9yZWdfaGk7Cj4gICAJaW50IGZlbmNlX3BpdGNoX3NoaWZ0Owo+IEBAIC0xMTAsMTEg KzEwOSwzMCBAQCBzdGF0aWMgdm9pZCBpOTY1X3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgZHJtX2k5 MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgIAkJSTkxNV9XUklURShmZW5jZV9yZWdfaGksIHVwcGVy XzMyX2JpdHModmFsKSk7Cj4gICAJCUk5MTVfV1JJVEUoZmVuY2VfcmVnX2xvLCBsb3dlcl8zMl9i aXRzKHZhbCkpOwo+ICAgCQlQT1NUSU5HX1JFQUQoZmVuY2VfcmVnX2xvKTsKPiArCX0gZWxzZSB7 Cj4gKwkJdTMyICpjczsKPiArCj4gKwkJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHBpcGVsaW5lZCwg OCk7CgpEbyB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgcmluZyBzcGFjZSByZXNlcnZhdGlvbiBhbW91 bnQ/Cgo+ICsJCWlmIChJU19FUlIoY3MpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihjcyk7Cj4gKwo+ ICsJCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMyk7Cj4gKwkJKmNzKysgPSBpOTE1X21t aW9fcmVnX29mZnNldChmZW5jZV9yZWdfbG8pOwo+ICsJCSpjcysrID0gMDsKPiArCQkqY3MrKyA9 IGk5MTVfbW1pb19yZWdfb2Zmc2V0KGZlbmNlX3JlZ19oaSk7Cj4gKwkJKmNzKysgPSB1cHBlcl8z Ml9iaXRzKHZhbCk7Cj4gKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChmZW5jZV9yZWdf bG8pOwo+ICsJCSpjcysrID0gbG93ZXJfMzJfYml0cyh2YWwpOwo+ICsJCSpjcysrID0gTUlfTk9P UDsKPiArCQlpbnRlbF9yaW5nX2FkdmFuY2UocGlwZWxpbmVkLCBjcyk7Cj4gICAJfQo+ICsKPiAr CXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGk5MTVfd3JpdGVfZmVuY2VfcmVn KHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+IC0JCQkJIHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQo+ICtzdGF0aWMgaW50IGk5MTVfd3JpdGVfZmVuY2VfcmVnKHN0cnVjdCBkcm1faTkx NV9mZW5jZV9yZWcgKmZlbmNlLAo+ICsJCQkJc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gKwkJCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnBpcGVsaW5lZCkKPiAgIHsKPiAgIAl1MzIgdmFs Owo+ICAgCj4gQEAgLTE1MCwxMSArMTY4LDI2IEBAIHN0YXRpYyB2b2lkIGk5MTVfd3JpdGVfZmVu Y2VfcmVnKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAgCj4gICAJCUk5MTVf V1JJVEUocmVnLCB2YWwpOwo+ICAgCQlQT1NUSU5HX1JFQUQocmVnKTsKPiArCX0gZWxzZSB7Cj4g KwkJdTMyICpjczsKPiArCj4gKwkJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHBpcGVsaW5lZCwgNCk7 Cj4gKwkJaWYgKElTX0VSUihjcykpCj4gKwkJCXJldHVybiBQVFJfRVJSKGNzKTsKPiArCj4gKwkJ KmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKPiArCQkqY3MrKyA9IGk5MTVfbW1pb19y ZWdfb2Zmc2V0KEZFTkNFX1JFRyhmZW5jZS0+aWQpKTsKPiArCQkqY3MrKyA9IHZhbDsKPiArCQkq Y3MrKyA9IE1JX05PT1A7Cj4gKwkJaW50ZWxfcmluZ19hZHZhbmNlKHBpcGVsaW5lZCwgY3MpOwo+ ICAgCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBpODMwX3dy aXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAtCQkJCSBz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiArc3RhdGljIGludCBpODMwX3dyaXRlX2ZlbmNlX3JlZyhz dHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiArCQkJCXN0cnVjdCBpOTE1X3ZtYSAq dm1hLAo+ICsJCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpwaXBlbGluZWQpCj4gICB7 Cj4gICAJdTMyIHZhbDsKPiAgIAo+IEBAIC0xODIsMjkgKzIxNSw0OSBAQCBzdGF0aWMgdm9pZCBp ODMwX3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAg IAo+ICAgCQlJOTE1X1dSSVRFKHJlZywgdmFsKTsKPiAgIAkJUE9TVElOR19SRUFEKHJlZyk7Cj4g Kwl9IGVsc2Ugewo+ICsJCXUzMiAqY3M7Cj4gKwo+ICsJCWNzID0gaW50ZWxfcmluZ19iZWdpbihw aXBlbGluZWQsIDQpOwo+ICsJCWlmIChJU19FUlIoY3MpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihj cyk7Cj4gKwo+ICsJCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7Cj4gKwkJKmNzKysg PSBpOTE1X21taW9fcmVnX29mZnNldChGRU5DRV9SRUcoZmVuY2UtPmlkKSk7Cj4gKwkJKmNzKysg PSB2YWw7Cj4gKwkJKmNzKysgPSBNSV9OT09QOwo+ICsJCWludGVsX3JpbmdfYWR2YW5jZShwaXBl bGluZWQsIGNzKTsKPiAgIAl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGlj IHZvaWQgZmVuY2Vfd3JpdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCj4gLQkJ CXN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICtzdGF0aWMgaW50IGZlbmNlX3dyaXRlKHN0cnVjdCBk cm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICsJCSAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZt YSwKPiArCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAr CWludCBlcnI7Cj4gKwo+ICAgCS8qIFByZXZpb3VzIGFjY2VzcyB0aHJvdWdoIHRoZSBmZW5jZSBy ZWdpc3RlciBpcyBtYXJzaGFsbGVkIGJ5Cj4gICAJICogdGhlIG1iKCkgaW5zaWRlIHRoZSBmYXVs dCBoYW5kbGVycyAoaTkxNV9nZW1fcmVsZWFzZV9tbWFwcykKPiAgIAkgKiBhbmQgZXhwbGljaXRs eSBtYW5hZ2VkIGZvciBpbnRlcm5hbCB1c2Vycy4KPiAgIAkgKi8KPiAgIAo+ICAgCWlmIChJU19H RU4yKGZlbmNlLT5pOTE1KSkKPiAtCQlpODMwX3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hKTsK PiArCQllcnIgPSBpODMwX3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hLCBycSk7Cj4gICAJZWxz ZSBpZiAoSVNfR0VOMyhmZW5jZS0+aTkxNSkpCj4gLQkJaTkxNV93cml0ZV9mZW5jZV9yZWcoZmVu Y2UsIHZtYSk7Cj4gKwkJZXJyID0gaTkxNV93cml0ZV9mZW5jZV9yZWcoZmVuY2UsIHZtYSwgcnEp Owo+ICAgCWVsc2UKPiAtCQlpOTY1X3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hKTsKPiArCQll cnIgPSBpOTY1X3dyaXRlX2ZlbmNlX3JlZyhmZW5jZSwgdm1hLCBycSk7Cj4gKwlpZiAoZXJyKQo+ ICsJCXJldHVybiBlcnI7Cj4gICAKPiAgIAkvKiBBY2Nlc3MgdGhyb3VnaCB0aGUgZmVuY2VkIHJl Z2lvbiBhZnRlcndhcmRzIGlzCj4gICAJICogb3JkZXJlZCBieSB0aGUgcG9zdGluZyByZWFkcyB3 aGlsc3Qgd3JpdGluZyB0aGUgcmVnaXN0ZXJzLgo+ICAgCSAqLwo+ICAgCj4gICAJZmVuY2UtPmRp cnR5ID0gZmFsc2U7Cj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBmZW5j ZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCj4gQEAgLTIxMiwxNyAr MjY1LDE1IEBAIHN0YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9y ZWcgKmZlbmNlLAo+ICAgewo+ICAgCWludCByZXQ7Cj4gICAKPiArCXJldCA9IGk5MTVfZ2VtX2Fj dGl2ZV9yZXRpcmUoJmZlbmNlLT5waXBlbGluZWQsCj4gKwkJCQkgICAgICZmZW5jZS0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCkgPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gICAJ aWYgKHZtYSkgewo+ICAgCQlpZiAoIWk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2VhYmxlKHZtYSkp Cj4gICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+IC0JCWlmIChXQVJOKCFpOTE1X2dlbV9vYmpl Y3RfZ2V0X3N0cmlkZSh2bWEtPm9iaikgfHwKPiAtCQkJICFpOTE1X2dlbV9vYmplY3RfZ2V0X3Rp bGluZyh2bWEtPm9iaiksCj4gLQkJCSAiYm9ndXMgZmVuY2Ugc2V0dXAgd2l0aCBzdHJpZGU6IDB4 JXgsIHRpbGluZyBtb2RlOiAlaVxuIiwKPiAtCQkJIGk5MTVfZ2VtX29iamVjdF9nZXRfc3RyaWRl KHZtYS0+b2JqKSwKPiAtCQkJIGk5MTVfZ2VtX29iamVjdF9nZXRfdGlsaW5nKHZtYS0+b2JqKSkp Cj4gLQkJCXJldHVybiAtRUlOVkFMOwo+IC0KPiAgIAkJcmV0ID0gaTkxNV9nZW1fYWN0aXZlX3Jl dGlyZSgmdm1hLT5sYXN0X2ZlbmNlLAo+ICAgCQkJCQkgICAgICZ2bWEtPm9iai0+YmFzZS5kZXYt PnN0cnVjdF9tdXRleCk7Cj4gICAJCWlmIChyZXQpCj4gQEAgLTI1Myw3ICszMDQsNyBAQCBzdGF0 aWMgaW50IGZlbmNlX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAg IAkgKiB0byB0aGUgcnVudGltZSByZXN1bWUsIHNlZSBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcygp Lgo+ICAgCSAqLwo+ICAgCWlmIChpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZmVuY2Ut Pmk5MTUpKSB7Cj4gLQkJZmVuY2Vfd3JpdGUoZmVuY2UsIHZtYSk7Cj4gKwkJZmVuY2Vfd3JpdGUo ZmVuY2UsIHZtYSwgTlVMTCk7Cj4gICAJCWludGVsX3J1bnRpbWVfcG1fcHV0KGZlbmNlLT5pOTE1 KTsKPiAgIAl9Cj4gICAKPiBAQCAtMjg3LDYgKzMzOCw4IEBAIGludCBpOTE1X3ZtYV9wdXRfZmVu Y2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gICAJaWYgKCFmZW5jZSkKPiAgIAkJcmV0dXJuIDA7 Cj4gICAKPiArCUdFTV9CVUdfT04oZmVuY2UtPnZtYSAhPSB2bWEpOwo+ICsKPiAgIAlpZiAoZmVu Y2UtPnBpbl9jb3VudCkKPiAgIAkJcmV0dXJuIC1FQlVTWTsKPiAgIAo+IEBAIC0zNDQsMTEgKzM5 NywxNiBAQCBpOTE1X3ZtYV9waW5fZmVuY2Uoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gICAJYXNz ZXJ0X3JwbV93YWtlbG9ja19oZWxkKHZtYS0+dm0tPmk5MTUpOwo+ICAgCj4gICAJLyogSnVzdCB1 cGRhdGUgb3VyIHBsYWNlIGluIHRoZSBMUlUgaWYgb3VyIGZlbmNlIGlzIGdldHRpbmcgcmV1c2Vk LiAqLwo+IC0JaWYgKHZtYS0+ZmVuY2UpIHsKPiAtCQlmZW5jZSA9IHZtYS0+ZmVuY2U7Cj4gKwlm ZW5jZSA9IHZtYS0+ZmVuY2U7Cj4gKwlpZiAoZmVuY2UpIHsKPiAgIAkJR0VNX0JVR19PTihmZW5j ZS0+dm1hICE9IHZtYSk7Cj4gICAJCWZlbmNlLT5waW5fY291bnQrKzsKPiAgIAkJaWYgKCFmZW5j ZS0+ZGlydHkpIHsKPiArCQkJZXJyID0gaTkxNV9nZW1fYWN0aXZlX3JldGlyZSgmZmVuY2UtPnBp cGVsaW5lZCwKPiArCQkJCQkJICAgICAmZmVuY2UtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJCQlpZiAoZXJyKQo+ICsJCQkJZ290byBlcnJfdW5waW47CgpDb21tZW50IGV4cGxhaW5pbmcg dGhlIG5lZWQgZm9yIHRoaXMgYmxvY2suIFRoZXJlIGlzIG9uZSBDUFUgd2FpdCBvbiB0aGUgCmZl bmNlX3VwZGF0ZSBwYXRoIGFscmVhZHkuIEF0IGxlYXN0IEkgY291bGRuJ3QgZWFzaWx5IGZpZ3Vy ZSBpdCBvdXQuIEFuZCAKd2h5IGFsc28gaW4gdGhlICFkaXJ0eSBjYXNlIHNwZWNpZmljYWxseT8K Cj4gKwo+ICAgCQkJbGlzdF9tb3ZlX3RhaWwoJmZlbmNlLT5saW5rLAo+ICAgCQkJCSAgICAgICAm ZmVuY2UtPmk5MTUtPm1tLmZlbmNlX2xpc3QpOwo+ICAgCQkJcmV0dXJuIDA7Cj4gQEAgLTM3Miw2 ICs0MzAsOTMgQEAgaTkxNV92bWFfcGluX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAg CXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiAraW50IGk5MTVfdm1hX3Jlc2VydmVfZmVuY2Uoc3Ry dWN0IGk5MTVfdm1hICp2bWEpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZl bmNlOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+ICsJR0VNX0JVR19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5v ZGUpKTsKPiArCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKTsKPiArCj4gKwlm ZW5jZSA9IHZtYS0+ZmVuY2U7Cj4gKwlpZiAoIWZlbmNlKSB7Cj4gKwkJaWYgKCFpOTE1X2dlbV9v YmplY3RfaXNfdGlsZWQodm1hLT5vYmopKQo+ICsJCQlyZXR1cm4gMDsKPiArCj4gKwkJaWYgKCFp OTE1X3ZtYV9pc19tYXBfYW5kX2ZlbmNlYWJsZSh2bWEpKQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwkJZmVuY2UgPSBmZW5jZV9maW5kKHZtYS0+dm0tPmk5MTUpOwo+ICsJCWlmIChJU19F UlIoZmVuY2UpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihmZW5jZSk7CgpJZiBhbGwgZmVuY2VzIGFy ZSBwaW5uZWQgdmlhIGk5MTVfZ2VtX2ZhdWx0IHdoaWNoIEkgdGhvdWdodCBjYW4gaGFwcGVuIAp3 aXRoIHRoZSBwcmV2aW91cyBwYXRjaCB0aGVuIGhlcmUgd2UgZXJyb3Igb3V0IGluc3RlYWQgb2Yg d2FpdGluZz8KCj4gKwo+ICsJCXZtYS0+ZmVuY2UgPSBmZW5jZTsKPiArCj4gKwkJaWYgKGZlbmNl LT52bWEpIHsKPiArCQkJaTkxNV9nZW1fcmVsZWFzZV9tbWFwKGZlbmNlLT52bWEtPm9iaik7Cj4g KwkJCWZlbmNlLT52bWEtPmZlbmNlID0gTlVMTDsKPiArCQl9Cj4gKwkJZmVuY2UtPnZtYSA9IHZt YTsKPiArCQlmZW5jZS0+ZGlydHkgPSB0cnVlOwo+ICsJfQo+ICsJZmVuY2UtPnBpbl9jb3VudCsr Owo+ICsJbGlzdF9tb3ZlX3RhaWwoJmZlbmNlLT5saW5rLCAmZmVuY2UtPmk5MTUtPm1tLmZlbmNl X2xpc3QpOwo+ICsKPiArCUdFTV9CVUdfT04oIWk5MTVfZ2VtX29iamVjdF9pc190aWxlZCh2bWEt Pm9iaikpOwo+ICsJR0VNX0JVR19PTighaTkxNV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUodm1h KSk7Cj4gKwlHRU1fQlVHX09OKHZtYS0+bm9kZS5zaXplICE9IHZtYS0+ZmVuY2Vfc2l6ZSk7Cj4g KwlHRU1fQlVHX09OKCFJU19BTElHTkVEKHZtYS0+bm9kZS5zdGFydCwgdm1hLT5mZW5jZV9hbGln bm1lbnQpKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGk5MTVfdm1hX2VtaXRf cGlwZWxpbmVkX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICsJCQkJICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVn ICpmZW5jZSA9IHZtYS0+ZmVuY2U7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnBy ZXY7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJR0VNX0JVR19PTihmZW5jZSAmJiAhZmVuY2UtPnBp bl9jb3VudCk7Cj4gKwo+ICsJaWYgKCFmZW5jZSkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlwcmV2 ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmZmVuY2UtPnBpcGVsaW5lZCwKPiArCQkJCSAgICZmZW5j ZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAocHJldikgewo+ICsJCWVyciA9IGk5 MTVfZ2VtX3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxLCAmcHJldi0+ZmVuY2UpOwo+ICsJCWlm IChlcnIpCj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFmZW5jZS0+ZGlydHkp Cj4gKwkJZ290byBvdXQ7CgpIbSBzbyB1bmxlc3MgImRpcnR5IiBubyBhY3R1YWwgZmVuY2UgbWFu YWdlbWVudCB3aWxsIGhhcHBlbi4gV2hhdCBpcyB0aGUgCm1lYW5pbmcgb2YgZGlydHk/IEhhcyBp dCBjaGFuZ2VkPyBEb2VzIGl0IG5lZWRzIGEgd3JpdGUgdXAgaW4gdGhlIGhlYWRlciAKZmlsZT8K Ckxvb2tzIGxpa2UgaW4gYW55IGNhc2UgSSB3aWxsIG5lZWQgdG8gYXBwbHkgdGhpcyB0byBmb2xs b3cgdGhlIGZsb3cuCgpSZWdhcmRzLAoKVHZydGtvCgo+ICsKPiArCUdFTV9CVUdfT04oIWk5MTVf dm1hX2lzX21hcF9hbmRfZmVuY2VhYmxlKHZtYSkpOwo+ICsKPiArCWlmIChmZW5jZS0+dm1hKSB7 Cj4gKwkJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmZlbmNlLT52bWEtPmxhc3RfZmVuY2Us Cj4gKwkJCQkJICAgJmZlbmNlLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCQlpZiAocHJl dikgewo+ICsJCQllcnIgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShycSwKPiAr CQkJCQkJCSAgICAgICAmcHJldi0+ZmVuY2UpOwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJcmV0dXJu IGVycjsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZXJyID0gZmVuY2Vfd3JpdGUoZmVuY2UsIHZtYSwg cnEpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWk5MTVfZ2VtX2FjdGl2 ZV9zZXQoJmZlbmNlLT5waXBlbGluZWQsIHJxKTsKPiArb3V0Ogo+ICsJaTkxNV9nZW1fYWN0aXZl X3NldCgmdm1hLT5sYXN0X2ZlbmNlLCBycSk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIC8q Kgo+ICAgICogaTkxNV9nZW1fcmV2b2tlX2ZlbmNlcyAtIHJldm9rZSBmZW5jZSBzdGF0ZQo+ICAg ICogQGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2YXRlCj4gQEAgLTQyOSw3ICs1NzQsNyBAQCB2 b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAkJCXZtYSA9IE5VTEw7Cj4gICAJCX0KPiAgIAo+IC0JCWZlbmNlX3dyaXRlKHJl Zywgdm1hKTsKPiArCQlmZW5jZV93cml0ZShyZWcsIHZtYSwgTlVMTCk7Cj4gICAJCXJlZy0+dm1h ID0gdm1hOwo+ICAgCX0KPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZmVuY2VfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5j ZV9yZWcuaAo+IGluZGV4IDk5YTMxZGVkNGRmZC4uY2U0NTk3MmZjNWM2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmgKPiBAQCAtNDcsNiArNDcsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnIHsKPiAgIAkgKiBjb21tYW5kIChzdWNoIGFzIEJMVCBv biBnZW4yLzMpLCBhcyBhICJmZW5jZSIuCj4gICAJICovCj4gICAJYm9vbCBkaXJ0eTsKPiArCXN0 cnVjdCBpOTE1X2dlbV9hY3RpdmUgcGlwZWxpbmVkOwo+ICAgfTsKPiAgIAo+ICAgI2VuZGlmCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gaW5kZXggZWZiZmVlOGVhYzk5Li4wYzQ4OTA5MGQ0YWIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtNzI4LDYgKzcyOCw3IEBAIGludCBp OTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gICAJCV9faTkxNV92bWFfaW91 bm1hcCh2bWEpOwo+ICAgCQl2bWEtPmZsYWdzICY9IH5JOTE1X1ZNQV9DQU5fRkVOQ0U7Cj4gICAJ fQo+ICsJR0VNX0JVR19PTih2bWEtPmZlbmNlKTsKPiAgIAo+ICAgCWlmIChsaWtlbHkoIXZtYS0+ dm0tPmNsb3NlZCkpIHsKPiAgIAkJdHJhY2VfaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYS5oCj4gaW5kZXggMTlmNThhZjRmMWJmLi5mMGRjNmVhZWJlYWIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiBAQCAtMzY3LDUgKzM2Nyw5IEBAIGk5MTVfdm1hX3Vu cGluX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCQlfX2k5MTVfdm1hX3VucGluX2Zl bmNlKHZtYSk7Cj4gICB9Cj4gICAKPiAraW50IF9fbXVzdF9jaGVjayBpOTE1X3ZtYV9yZXNlcnZl X2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAraW50IGk5MTVfdm1hX2VtaXRfcGlwZWxp bmVkX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICsJCQkJICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJxKTsKPiArCj4gICAjZW5kaWYKPiAgIAo+IApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK