From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/5] drm/i915/execlists: Direct submit onto idle engines Date: Thu, 10 May 2018 17:09:14 +0100 Message-ID: <52b631ff-5760-dc18-bc9f-e385fe8f10b9@linux.intel.com> References: <20180509142801.28130-1-chris@chris-wilson.co.uk> <20180509142801.28130-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D998C6EFB7 for ; Thu, 10 May 2018 16:09:16 +0000 (UTC) In-Reply-To: <20180509142801.28130-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 Ck9uIDA5LzA1LzIwMTggMTU6MjcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBCeXBhc3MgdXNpbmcg dGhlIHRhc2tsZXQgdG8gc3VibWl0IHRoZSBmaXJzdCByZXF1ZXN0IHRvIEhXLCBhcyB0aGUKPiB0 YXNrbGV0IG1heSBiZSBkZWZlcnJlZCB1bnRvIGtzb2Z0aXJxZCBhbmQgYXQgYSBtaW5pbXVtIHdp bGwgYWRkIGluCj4gZXhjZXNzIG9mIDEwdXMgKGFuZCBtYXliZSB0ZW5zIG9mIG1pbGxpc2Vjb25k cykgdG8gb3VyIGV4ZWN1dGlvbgo+IGxhdGVuY3kuIFRoaXMgbGF0ZW5jeSByZWR1Y3Rpb24gaXMg bW9zdCBub3RhYmxlIHdoZW4gZXhlY3V0aW9uIGZsb3dzCj4gYmV0d2VlbiBlbmdpbmVzLgo+IAo+ IHYyOiBCZXdhcmUgaGFuZGxpbmcgcHJlZW1wdGlvbiBjb21wbGV0aW9uIGZyb20gdGhlIGRpcmVj dCBzdWJtaXQgcGF0aCBhcwo+IHdlbGwuCj4gdjM6IE1ha2UgdGhlIGFidXNlIGNsZWFyIGFuZCB0 cmFjayBvdXIgZXh0cmEgc3RhdGUgaW5zaWRlIGk5MTVfdGFza2xldC4KPiAKPiBTdWdnZXN0ZWQt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3Rhc2tsZXQuaCAgICAgICAgIHwgMjQgKysrKysrKwo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8IDEwICsrLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICB8IDcxICsrKysrKysrKysrKysr KysrLS0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90YXNrbGV0 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Rhc2tsZXQuaAo+IGluZGV4IDQyYjAwMmI4 OGVkYi4uOTllMmZhMjI0MWJhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdGFza2xldC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90YXNrbGV0LmgK PiBAQCAtOCw4ICs4LDExIEBACj4gICAjZGVmaW5lIF9JOTE1X1RBU0tMRVRfSF8KPiAgIAo+ICAg I2luY2x1ZGUgPGxpbnV4L2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+Cj4g ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gICAKPiArI2luY2x1ZGUgImk5MTVfZ2Vt LmgiCj4gKwo+ICAgLyoqCj4gICAgKiBzdHJ1Y3QgaTkxNV90YXNrbGV0IC0gd3JhcHBlciBhcm91 bmQgdGFza2xldF9zdHJ1Y3QKPiAgICAqCj4gQEAgLTE5LDYgKzIyLDggQEAKPiAgICAqLwo+ICAg c3RydWN0IGk5MTVfdGFza2xldCB7Cj4gICAJc3RydWN0IHRhc2tsZXRfc3RydWN0IGJhc2U7Cj4g Kwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsjZGVmaW5lIEk5MTVfVEFTS0xFVF9ESVJFQ1RfU1VC TUlUIEJJVCgwKQoKSSB3b3VsZCBzdWdnZXN0IGEgbW9yZSBnZW5lcmljIG5hbWUgZm9yIHRoZSBi aXQgc2luY2UgaTkxNV90YXNrbGV0IGlzIApnZW5lcmljLWlzaC4gRm9yIGluc3RhbmNlIHNpbXBs eSBJOTE1X1RBU0tMRVRfRElSRUNUIHdvdWxkIHNpZ25pZnkgdGhlIApjYWxsYmFjayBoYXMgYmVl biBpbnZva2VkIGRpcmVjdGx5IGFuZCBub3QgKG5lY2Vzc2FyaWx5KSBmcm9tIHNvZnRpcnEgCmNv bnRleHQuIFRoZW4gaXQgaXMgZm9yIGVhY2ggdXNlciB0byBrbm93IHdoYXQgdGhhdCBtZWFucyBm b3IgdGhlbSAKc3BlY2lmaWNhbGx5LgoKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgdm9p ZCBpOTE1X3Rhc2tsZXRfaW5pdChzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0LAo+IEBAIC00Myw2ICs0 OCwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90YXNrbGV0X2lzX2VuYWJsZWQoY29uc3Qg c3RydWN0IGk5MTVfdGFza2xldCAqdCkKPiAgIAlyZXR1cm4gbGlrZWx5KCFhdG9taWNfcmVhZCgm dC0+YmFzZS5jb3VudCkpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Rh c2tsZXRfaXNfZGlyZWN0X3N1Ym1pdChjb25zdCBzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0KQo+ICt7 Cj4gKwkvKiBPbmx5IGxlZ2FsIHRvIGJlIGNoZWNrZWQgZnJvbSBpbnNpZGUgdGhlIHRhc2tsZXQu ICovCj4gKwlHRU1fQlVHX09OKCFpOTE1X3Rhc2tsZXRfaXNfcnVubmluZyh0KSk7Cj4gKwo+ICsJ cmV0dXJuIHQtPmZsYWdzICYgSTkxNV9UQVNLTEVUX0RJUkVDVF9TVUJNSVQ7Cj4gK30KCk9yIG1h eWJlIGk5MTVfdGFza2xldF9kaXJlY3RfaW52b2NhdGlvbj8KCj4gKwo+ICAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfdGFza2xldF9zY2hlZHVsZShzdHJ1Y3QgaTkxNV90YXNrbGV0ICp0KQo+ICAg ewo+ICAgCXRhc2tsZXRfaGlfc2NoZWR1bGUoJnQtPmJhc2UpOwo+IEBAIC03NSw0ICs4OCwxNSBA QCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV90YXNrbGV0X3NldF9mdW5jKHN0cnVjdCBpOTE1X3Rh c2tsZXQgKnQsCj4gICAJaTkxNV90YXNrbGV0X3VubG9jayh0KTsKPiAgIH0KPiAgIAo+ICtzdGF0 aWMgaW5saW5lIHZvaWQgX19pOTE1X3Rhc2tsZXRfcnVuKGNvbnN0IHN0cnVjdCBpOTE1X3Rhc2ts ZXQgKnQpCj4gK3sKPiArCXQtPmJhc2UuZnVuYyh0LT5iYXNlLmRhdGEpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW5saW5lIHZvaWQgaTkxNV90YXNrbGV0X3J1bihjb25zdCBzdHJ1Y3QgaTkxNV90YXNr bGV0ICp0KQo+ICt7Cj4gKwlHRU1fQlVHX09OKCFpOTE1X3Rhc2tsZXRfaXNfcnVubmluZyh0KSk7 Cj4gKwlfX2k5MTVfdGFza2xldF9ydW4odCk7Cj4gK30KPiArCj4gICAjZW5kaWYgLyogX0k5MTVf VEFTS0xFVF9IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Np b24uYwo+IGluZGV4IGE3YWZjOTc2YzNiOS4uZjJkZWQxNzk2NTIzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gQEAgLTc1NCwxNCArNzU0LDE4 IEBAIHN0YXRpYyBib29sIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICAgCj4gICBzdGF0aWMgdm9pZCBndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICB7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJdW5zaWduZWQg bG9uZyB1bmluaXRpYWxpemVkX3ZhcihmbGFncyk7Cj4gICAJYm9vbCBzdWJtaXQ7Cj4gICAKPiAg IAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Cj4gICAKPiAtCXNwaW5fbG9jaygmZW5naW5lLT50aW1l bGluZS5sb2NrKTsKPiArCWlmICghaTkxNV90YXNrbGV0X2lzX2RpcmVjdF9zdWJtaXQoJmVuZ2lu ZS0+ZXhlY2xpc3RzLnRhc2tsZXQpKQo+ICsJCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5s b2NrKTsKPiArCj4gICAJc3VibWl0ID0gX19ndWNfZGVxdWV1ZShlbmdpbmUpOwo+IC0Jc3Bpbl91 bmxvY2soJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gKwo+ICsJaWYgKCFpOTE1X3Rhc2tsZXRf aXNfZGlyZWN0X3N1Ym1pdCgmZW5naW5lLT5leGVjbGlzdHMudGFza2xldCkpCj4gKwkJc3Bpbl91 bmxvY2soJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gICAKPiAgIAlpZiAoc3VibWl0KQo+ICAg CQlndWNfc3VibWl0KGVuZ2luZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA1 MzlmYTAzZDc2MDAuLjA5ZmRlZDlkNDA5ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gQEAgLTM1NiwxMyArMzU2LDE1IEBAIGV4ZWNsaXN0c191bndpbmRfaW5jb21wbGV0ZV9yZXF1 ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQo+ICAgewo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9Cj4gICAJCWNvbnRhaW5lcl9vZihleGVj bGlzdHMsIHR5cGVvZigqZW5naW5lKSwgZXhlY2xpc3RzKTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gKwl1bnNpZ25lZCBsb25nIHVuaW5pdGlhbGl6ZWRfdmFyKGZsYWdzKTsKPiAgIAo+IC0J c3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICsJaWYg KCFpOTE1X3Rhc2tsZXRfaXNfZGlyZWN0X3N1Ym1pdCgmZXhlY2xpc3RzLT50YXNrbGV0KSkKPiAr CQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICAK PiAgIAlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7Cj4gICAKPiAtCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICsJaWYg KCFpOTE1X3Rhc2tsZXRfaXNfZGlyZWN0X3N1Ym1pdCgmZXhlY2xpc3RzLT50YXNrbGV0KSkKPiAr CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsK PiAgIH0KPiAgIAo+ICAgc3RhdGljIGlubGluZSB2b2lkCj4gQEAgLTYwMSw2ICs2MDMsOCBAQCBz dGF0aWMgYm9vbCBfX2V4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAkJICovCj4gICAJCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhl Y2xpc3RzLAo+ICAgCQkJCQkJRVhFQ0xJU1RTX0FDVElWRV9VU0VSKSk7Cj4gKwkJR0VNX0JVR19P TihleGVjbGlzdHNfaXNfYWN0aXZlKGV4ZWNsaXN0cywKPiArCQkJCQkgICAgICAgRVhFQ0xJU1RT X0FDVElWRV9QUkVFTVBUKSk7Cj4gICAJCUdFTV9CVUdfT04oIXBvcnRfY291bnQoJnBvcnRbMF0p KTsKPiAgIAkJaWYgKHBvcnRfY291bnQoJnBvcnRbMF0pID4gMSkKPiAgIAkJCXJldHVybiBmYWxz ZTsKPiBAQCAtNzU3LDEyICs3NjEsMTYgQEAgc3RhdGljIGJvb2wgX19leGVjbGlzdHNfZGVxdWV1 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICBzdGF0aWMgdm9pZCBleGVjbGlz dHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3Ry dWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5l eGVjbGlzdHM7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsJdW5zaWduZWQgbG9uZyB1bmlu aXRpYWxpemVkX3ZhcihmbGFncyk7Cj4gICAJYm9vbCBzdWJtaXQ7Cj4gICAKPiAtCXNwaW5fbG9j a19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiArCWlmICghaTkxNV90 YXNrbGV0X2lzX2RpcmVjdF9zdWJtaXQoJmV4ZWNsaXN0cy0+dGFza2xldCkpCj4gKwkJc3Bpbl9s b2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICsKPiAgIAlzdWJt aXQgPSBfX2V4ZWNsaXN0c19kZXF1ZXVlKGVuZ2luZSk7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiArCj4gKwlpZiAoIWk5MTVfdGFz a2xldF9pc19kaXJlY3Rfc3VibWl0KCZleGVjbGlzdHMtPnRhc2tsZXQpKQo+ICsJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgCj4gICAJ aWYgKHN1Ym1pdCkKPiAgIAkJZXhlY2xpc3RzX3N1Ym1pdF9wb3J0cyhlbmdpbmUpOwo+IEBAIC0x MTYyLDE2ICsxMTcwLDUyIEBAIHN0YXRpYyB2b2lkIHF1ZXVlX3JlcXVlc3Qoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkgICAgICAmbG9va3VwX3ByaW9saXN0KGVuZ2luZSwg cHJpbyktPnJlcXVlc3RzKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBfX3N1Ym1pdF9xdWV1 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQo+ICtzdGF0aWMgdm9p ZCBfX3dha2V1cF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlv KQo+ICAgewo+ICAgCWVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5ID0gcHJpbzsKPiAr fQoKV2h5IGlzIHRoaXMgY2FsbGVkIHdha2V1cD8gUGxhbnMgdG8gYWRkIHNvbWV0aGluZyBpbiBp dCBsYXRlcj8KCj4gKwo+ICtzdGF0aWMgdm9pZCBfX3NjaGVkdWxlX3F1ZXVlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICAgCWk5MTVfdGFza2xldF9zY2hlZHVsZSgmZW5n aW5lLT5leGVjbGlzdHMudGFza2xldCk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGJvb2wgX19kaXJl Y3Rfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpjb25zdCBleGVjbGlzdHMp Cj4gK3sKPiArCXN0cnVjdCBpOTE1X3Rhc2tsZXQgKiBjb25zdCB0ID0gJmV4ZWNsaXN0cy0+dGFz a2xldDsKPiArCj4gKwlpZiAoIXRhc2tsZXRfdHJ5bG9jaygmdC0+YmFzZSkpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCXQtPmZsYWdzIHw9IEk5MTVfVEFTS0xFVF9ESVJFQ1RfU1VCTUlUOwo+ ICsJaTkxNV90YXNrbGV0X3J1bih0KTsKPiArCXQtPmZsYWdzICY9IH5JOTE1X1RBU0tMRVRfRElS RUNUX1NVQk1JVDsKPiArCj4gKwl0YXNrbGV0X3VubG9jaygmdC0+YmFzZSk7CgpGZWVscyBsaWtl IHRoaXMgd2hvbGUgc2VxdWVuY2UgYmVsb25ncyB0byBpOTE1X3Rhc2tsZXQgc2luY2UgaXQgdG91 Y2hlcyAKdGhlIGludGVybmFscy4gTWF5YmUgaTkxNV90YXNrbGV0X3RyeV9ydW4sIG9yIGk5MTVf dGFza2xldF9ydW5fb3Jfc2NoZWR1bGU/Cgo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIF9fc3VibWl0X3F1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMg PSAmZW5naW5lLT5leGVjbGlzdHM7Cj4gKwo+ICsJR0VNX0JVR19PTighZW5naW5lLT5pOTE1LT5n dC5hd2FrZSk7Cj4gKwo+ICsJLyogSWYgaW5zaWRlIEdQVSByZXNldCwgdGhlIHRhc2tsZXQgd2ls bCBiZSBxdWV1ZWQgbGF0ZXIuICovCj4gKwlpZiAoIWk5MTVfdGFza2xldF9pc19lbmFibGVkKCZl eGVjbGlzdHMtPnRhc2tsZXQpKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKiBEaXJlY3RseSBzdWJt aXQgdGhlIGZpcnN0IHJlcXVlc3QgdG8gcmVkdWNlIHRoZSBpbml0aWFsIGxhdGVuY3kgKi8KPiAr CWlmIChwb3J0X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkgfHwgIV9fZGlyZWN0X3N1Ym1pdChleGVj bGlzdHMpKQo+ICsJCV9fc2NoZWR1bGVfcXVldWUoZW5naW5lKTsKCkhtbSBhIGJpdCBldmlsIHRv IG1heWJlIGludm9rZSBpbiB0aGUgY29uZGl0aW9uLiBXb3VsZCBpdCBiZSBhY2NlcHRhYmxlIHRv OgoKaWYgKCFwb3J0X2lzc2V0KC4uLikpCglpOTE1X3Rhc2tsZXRfcnVuX29yX3NjaGVkdWxlKC4u Lik7CmVsc2UKCWk5MTVfdGFza2xldF9zY2hlZHVsZSguLi4pOwoKSXQncyBub3QgaWRlYWwgYnV0 IG1heWJlIGEgYml0IGJldHRlci4KCj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBzdWJtaXRfcXVl dWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgcHJpbykKPiAgIHsKPiAtCWlm IChwcmlvID4gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHkpCj4gLQkJX19zdWJtaXRf cXVldWUoZW5naW5lLCBwcmlvKTsKPiArCWlmIChwcmlvID4gZW5naW5lLT5leGVjbGlzdHMucXVl dWVfcHJpb3JpdHkpIHsKPiArCQlfX3dha2V1cF9xdWV1ZShlbmdpbmUsIHByaW8pOwo+ICsJCV9f c3VibWl0X3F1ZXVlKGVuZ2luZSk7Cj4gKwl9Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGV4 ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IEBA IC0xMTgzLDEwICsxMjI3LDkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgCj4gICAJcXVldWVfcmVxdWVzdChlbmdp bmUsICZyZXF1ZXN0LT5zY2hlZCwgcnFfcHJpbyhyZXF1ZXN0KSk7Cj4gLQlzdWJtaXRfcXVldWUo ZW5naW5lLCBycV9wcmlvKHJlcXVlc3QpKTsKPiAtCj4gICAJR0VNX0JVR19PTighZW5naW5lLT5l eGVjbGlzdHMuZmlyc3QpOwo+ICAgCUdFTV9CVUdfT04obGlzdF9lbXB0eSgmcmVxdWVzdC0+c2No ZWQubGluaykpOwo+ICsJc3VibWl0X3F1ZXVlKGVuZ2luZSwgcnFfcHJpbyhyZXF1ZXN0KSk7Cj4g ICAKPiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZs YWdzKTsKPiAgIH0KPiBAQCAtMTMxNCw4ICsxMzU3LDEwIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19zY2hlZHVsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCQl9Cj4gICAKPiAg IAkJaWYgKHByaW8gPiBlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eSAmJgo+IC0JCSAg ICBpOTE1X3N3X2ZlbmNlX2RvbmUoJnNjaGVkX3RvX3JlcXVlc3Qobm9kZSktPnN1Ym1pdCkpCj4g LQkJCV9fc3VibWl0X3F1ZXVlKGVuZ2luZSwgcHJpbyk7Cj4gKwkJICAgIGk5MTVfc3dfZmVuY2Vf ZG9uZSgmc2NoZWRfdG9fcmVxdWVzdChub2RlKS0+c3VibWl0KSkgewo+ICsJCQlfX3dha2V1cF9x dWV1ZShlbmdpbmUsIHByaW8pOwo+ICsJCQlfX3NjaGVkdWxlX3F1ZXVlKGVuZ2luZSk7Cj4gKwkJ fQo+ICAgCX0KPiAgIAo+ICAgCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2Nr KTsKPiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==