From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 02/12] drm/i915/execlists: Suppress mere WAIT preemption Date: Mon, 4 Feb 2019 12:08:50 +0000 Message-ID: <78ad8b9c-d3e0-13c7-1e60-72e4bbd39877@linux.intel.com> References: <20190204084116.3013-1-chris@chris-wilson.co.uk> <20190204084116.3013-2-chris@chris-wilson.co.uk> <9bf200c7-fd76-ccf2-1ed5-c6e1277f84f6@linux.intel.com> <154927551777.14784.14997877901062180125@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D8C3E8921A for ; Mon, 4 Feb 2019 12:08:43 +0000 (UTC) In-Reply-To: <154927551777.14784.14997877901062180125@skylake-alporthouse-com> Content-Language: en-US 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 Ck9uIDA0LzAyLzIwMTkgMTA6MTgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTAyLTA0IDEwOjA2OjM1KQo+Pgo+PiBPbiAwNC8wMi8yMDE5IDA4OjQx LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBXQUlUIGlzIG9jY2FzaW9uYWxseSBzdXBwcmVzc2Vk IGJ5IHZpcnR1ZSBvZiBwcmVlbXB0ZWQgcmVxdWVzdHMgYmVpbmcKPj4+IHByb21vdGVkIHRvIE5F V0NMSUVOVCBpZmYgdGhleSBoYXZlIG5vdCBhbGwgcmVhZHkgcmVjZWl2ZWQgdGhhdCBib29zdC4K Pj4KPj4gcy9pZmYvaWYvCj4gCj4gaWZmID09IGlmLCBhbmQgb25seSBpZgo+IAo+IEJ1dCBpdCB3 YXMgcHJvYmFibHkgYSB0eXBvLgo+ICAgCj4+PiBNYWtlIHRoaXMgY29uc2lzdGVudCBmb3IgYWxs IFdBSVQgYm9vc3RzIHRoYXQgdGhleSBhcmUgbm90IGFsbG93ZWQgdG8KPj4+IHByZWVtcHQgZXhl Y3V0aW5nIGNvbnRleHRzIGFuZCBhcmUgbWVyZWx5IGdyYW50ZWQgdGhlIHJpZ2h0IHRvIGJlIGF0 IHRoZQo+Pj4gZnJvbnQgb2YgdGhlIHF1ZXVlIGZvciB0aGUgbmV4dCBleGVjdXRpb24gc2xvdC4g VGhpcyBpcyBpbiBrZWVwaW5nIHdpdGgKPj4+IHRoZSBkZXNpcmUgdGhhdCB0aGUgV0FJVCBib29z dCBiZSBhIG1pbm9yIHR3ZWFrIHRoYXQgZG9lcyBub3QgZ2l2ZQo+Pj4gZXhjZXNzaXZlIHByb21v dGlvbiB0byBpdHMgdXNlciBhbmQgb3BlbiBvdXJzZWx2ZXMgdG8gdHJpdmlhbCBhYnVzZS4KPj4+ Cj4+PiBUaGUgcHJvYmxlbSB3aXRoIHRoZSBpbmNvbnNpc3RlbnQgV0FJVCBwcmVlbXB0aW9uIGJl Y29tZXMgbW9yZSBhcHBhcmVudAo+Pj4gYXMgdGhlIHByZWVtcHRpb24gaXMgcHJvcGFnYXRlZCBh Y3Jvc3MgdGhlIGVuZ2luZXMsIHdoZXJlIG9uZSBlbmdpbmUgbWF5Cj4+PiBwcmVlbXB0IGFuZCB0 aGUgb3RoZXIgbm90LCBhbmQgd2UgYmUgcmVseWluZyBvbiB0aGUgZXhhY3QgZXhlY3V0aW9uCj4+ PiBvcmRlciBiZWluZyBjb25zaXN0ZW50IGFjcm9zcyBlbmdpbmVzIChlLmcuIHVzaW5nIEhXIHNl bWFwaG9yZXMgdG8KPj4+IGNvb3JkaW5hdGUgcGFyYWxsZWwgZXhlY3V0aW9uKS4KPj4+Cj4+PiB2 MjogQWxzbyBwcm90ZWN0IEd1QyBzdWJtaXNzaW9uIGZyb20gZmFsc2UgcHJlZW1wdGlvbiBsb29w cy4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KPj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t Pgo+Pj4gLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAg ICAgICB8ICAxMSArKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIu aCAgICAgICAgfCAgIDIgKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uYyAgfCAgIDIgKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jICAgICAgICAgICAgIHwgICA5ICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaWd0X3NwaW5uZXIuYyB8ICAgOSArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2ludGVsX2xyYy5jICAgfCAxNTYgKysrKysrKysrKysrKysrKysrKwo+Pj4gICAg NiBmaWxlcyBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+Pj4gaW5kZXggOWVkNWJhZjE1N2EzLi43 OTY4ODc1ZDBiZWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPj4+ IEBAIC0zNzcsMTIgKzM3NywyMyBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Pj4gICAgCj4+PiAgICAgICAgLyogV2UgbWF5IGJlIHJl Y3Vyc2luZyBmcm9tIHRoZSBzaWduYWwgY2FsbGJhY2sgb2YgYW5vdGhlciBpOTE1IGZlbmNlICov Cj4+PiAgICAgICAgc3Bpbl9sb2NrX25lc3RlZCgmcmVxdWVzdC0+bG9jaywgU0lOR0xFX0RFUFRI X05FU1RJTkcpOwo+Pj4gKwo+Pj4gICAgICAgIEdFTV9CVUdfT04odGVzdF9iaXQoSTkxNV9GRU5D RV9GTEFHX0FDVElWRSwgJnJlcXVlc3QtPmZlbmNlLmZsYWdzKSk7Cj4+PiAgICAgICAgc2V0X2Jp dChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAmcmVxdWVzdC0+ZmVuY2UuZmxhZ3MpOwo+Pj4gKwo+ Pj4gICAgICAgIHJlcXVlc3QtPmdsb2JhbF9zZXFubyA9IHNlcW5vOwo+Pj4gICAgICAgIGlmICh0 ZXN0X2JpdChETUFfRkVOQ0VfRkxBR19FTkFCTEVfU0lHTkFMX0JJVCwgJnJlcXVlc3QtPmZlbmNl LmZsYWdzKSAmJgo+Pj4gICAgICAgICAgICAhaTkxNV9yZXF1ZXN0X2VuYWJsZV9icmVhZGNydW1i KHJlcXVlc3QpKQo+Pj4gICAgICAgICAgICAgICAgaW50ZWxfZW5naW5lX3F1ZXVlX2JyZWFkY3J1 bWJzKGVuZ2luZSk7Cj4+PiArCj4+PiArICAgICAvKgo+Pj4gKyAgICAgICogQXMgd2UgZG8gbm90 IGFsbG93IFdBSVQgdG8gcHJlZW1wdCBpbmZsaWdodCByZXF1ZXN0cywKPj4+ICsgICAgICAqIG9u Y2Ugd2UgaGF2ZSBleGVjdXRlZCBhIHJlcXVlc3QsIGFsb25nIHdpdGggdHJpZ2dlcmluZwo+Pj4g KyAgICAgICogYW55IGV4ZWN1dGlvbiBjYWxsYmFja3MsIHdlIG11c3QgcHJlc2VydmUgaXRzIG9y ZGVyaW5nCj4+PiArICAgICAgKiB3aXRoaW4gdGhlIG5vbi1wcmVlbXB0aWJsZSBGSUZPLgo+Pj4g KyAgICAgICovCj4+PiArICAgICByZXF1ZXN0LT5zY2hlZC5hdHRyLnByaW9yaXR5IHw9IF9fTk9f UFJFRU1QVElPTjsKPj4+ICsKPj4+ICAgICAgICBzcGluX3VubG9jaygmcmVxdWVzdC0+bG9jayk7 Cj4+PiAgICAKPj4+ICAgICAgICBlbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iKHJlcXVlc3Qs Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPj4+IGluZGV4IGRiZTljYjdl Y2Q4Mi4uNTRiZDZjODk4MTdlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zY2hlZHVsZXIuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hl ZHVsZXIuaAo+Pj4gQEAgLTMzLDYgKzMzLDggQEAgZW51bSB7Cj4+PiAgICAjZGVmaW5lIEk5MTVf UFJJT1JJVFlfV0FJVCAgKCh1OClCSVQoMCkpCj4+PiAgICAjZGVmaW5lIEk5MTVfUFJJT1JJVFlf TkVXQ0xJRU5UICAgICAoKHU4KUJJVCgxKSkKPj4+ICAgIAo+Pj4gKyNkZWZpbmUgX19OT19QUkVF TVBUSU9OIChJOTE1X1BSSU9SSVRZX1dBSVQpCj4+PiArCj4+PiAgICBzdHJ1Y3QgaTkxNV9zY2hl ZF9hdHRyIHsKPj4+ICAgICAgICAvKioKPj4+ICAgICAgICAgKiBAcHJpb3JpdHk6IGV4ZWN1dGlv biBhbmQgc2VydmljZSBwcmlvcml0eQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfc3VibWlzc2lvbi5jCj4+PiBpbmRleCA4YmM4YWE1NGFhMzUuLjk0Njk1ZWI4MTljMiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPj4+ IEBAIC03MjAsNyArNzIwLDcgQEAgc3RhdGljIGlubGluZSBpbnQgcnFfcHJpbyhjb25zdCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPj4+ICAgIAo+Pj4gICAgc3RhdGljIGlubGluZSBpbnQgcG9y dF9wcmlvKGNvbnN0IHN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0KQo+Pj4gICAgewo+Pj4gLSAg ICAgcmV0dXJuIHJxX3ByaW8ocG9ydF9yZXF1ZXN0KHBvcnQpKTsKPj4+ICsgICAgIHJldHVybiBy cV9wcmlvKHBvcnRfcmVxdWVzdChwb3J0KSkgfCBfX05PX1BSRUVNUFRJT047Cj4+PiAgICB9Cj4+ PiAgICAKPj4+ICAgIHN0YXRpYyBib29sIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+IGluZGV4IGE5ZWIw MjExY2U3Ny4uNzczZGYwYmQ2ODViIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4+PiBAQCAtMTg4LDYgKzE4OCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBycV9wcmlvKGNvbnN0 IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+Pj4gICAgICAgIHJldHVybiBycS0+c2NoZWQuYXR0 ci5wcmlvcml0eTsKPj4+ICAgIH0KPj4+ICAgIAo+Pj4gK3N0YXRpYyBpbnQgZWZmZWN0aXZlX3By aW8oY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4+PiArewo+Pj4gKyAgICAgLyogUmVz dHJpY3QgbWVyZSBXQUlUIGJvb3N0cyBmcm9tIHRyaWdnZXJpbmcgcHJlZW1wdGlvbiAqLwo+Pj4g KyAgICAgcmV0dXJuIHJxX3ByaW8ocnEpIHwgX19OT19QUkVFTVBUSU9OOwo+Pj4gK30KPj4KPj4g SSBzdWdnZXN0IGFkZGluZyBpOTE1X3JlcXVlc3RfZWZmZWN0aXZlX3ByaW8gdG8gaTkxNV9yZXF1 ZXN0LmggLSBpdCBpcwo+PiB2ZXJib3NlIGJ1dCBhdm9pZHMgdHdvIGltcGxlbWVudGF0aW9uLgo+ IAo+IFRvbyB2ZXJib3NlLi4uIEFuZCBpdCBtYXkgZGlmZmVyIGRlcGVuZGluZyBvbiBiYWNrZW5k IGRldGFpbHMuLi4KPiAKPiBXZSBkb24ndCBldmVuIG5lZWQgdG8gb3IgaW4gbm8tcHJlZW1wdGlv biB1bnRpbCBsYXRlci4uLgoKSG1tLi4gSSB3b3VsZCBob3BlIGl0IHdvdWxkbid0IGRlcGVuZCBv biB0aGUgYmFja2VuZC4gV2Ugc2hvdWxkIGF0IGxlYXN0IApJIHRoaW5rIHRyeSB0byBtYWtlIHRo aW5ncyBkZWNvdXBsZWQgYXQgdGhpcyBsZXZlbC4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gICAKPj4g QlVJTERfQlVHX09OKGh3ZWlnaHQzMihfX05PX1BSRUVNUFRJT04pICE9IDEpOyBhcyB3ZWxsPyBU byBlbnN1cmUgaXQgaXMKPj4gZGVmaW5lZCB0byBpbnRlcm5hbCBwcmlvcml0eSBsZXZlbHMuCj4g Cj4gWW91IG1lYW4gX19OT19QUkVFTVBUSU9OICYgfkk5MTVfUFJJT1JJVFlfTUFTSyA/Cj4gCj4+ PiAgICBzdGF0aWMgaW50IHF1ZXVlX3ByaW8oY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cykKPj4+ICAgIHsKPj4+ICAgICAgICBzdHJ1Y3QgaTkxNV9wcmlvbGlz dCAqcDsKPj4+IEBAIC0yMDgsNyArMjE0LDcgQEAgc3RhdGljIGludCBxdWV1ZV9wcmlvKGNvbnN0 IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCj4+PiAgICBzdGF0aWMg aW5saW5lIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKPj4+ICAgIHsKPj4+IC0gICAgIGNvbnN0IGludCBsYXN0X3ByaW8gPSBy cV9wcmlvKHJxKTsKPj4+ICsgICAgIGludCBsYXN0X3ByaW87Cj4+PiAgICAKPj4+ICAgICAgICBp ZiAoIWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlvbihlbmdpbmUpKQo+Pj4gICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwo+Pj4gQEAgLTIyOCw2ICsyMzQsNyBAQCBzdGF0aWMgaW5saW5lIGJv b2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4+ ICAgICAgICAgKiBwcmVlbXB0LiBJZiB0aGF0IGhpbnQgaXMgc3RhbGUgb3Igd2UgbWF5IGJlIHRy eWluZyB0byBwcmVlbXB0Cj4+PiAgICAgICAgICogb3Vyc2VsdmVzLCBpZ25vcmUgdGhlIHJlcXVl c3QuCj4+PiAgICAgICAgICovCj4+PiArICAgICBsYXN0X3ByaW8gPSBlZmZlY3RpdmVfcHJpbyhy cSk7Cj4+Cj4+IElzbid0IHRoaXMgcmVkdW5kYW50PyBFdmVyeSBzdWJtaXR0ZWQgcmVxdWVzdCBh bHJlYWR5IGhhZAo+PiBfX05PX1BSRUVNUFRJT04gYXBwbGllZCBpbiBfX2k5MTVfcmVxdWVzdF9z dWJtaXQuCj4gCj4gQnV0IG5vdCBpbiB0aGUgbmV4dCBwYXRjaCB3aGljaCBleHBhbmRzIHVwb24g dGhpcy4KPiAKPj4+ICAgICAgICBpZiAoIV9fZXhlY2xpc3RzX25lZWRfcHJlZW1wdChlbmdpbmUt PmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50LAo+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxhc3RfcHJpbykpCj4+PiAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9z cGlubmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwo+ Pj4gaW5kZXggOWViZDkyMjU2ODRlLi44NjM1NGU1MWJkZDMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmMKPj4+IEBAIC0xNDIsMTAgKzE0 MiwxNyBAQCBpZ3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNw aW4sCj4+PiAgICAgICAgKmJhdGNoKysgPSB1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCk7 Cj4+PiAgICAgICAgKmJhdGNoKysgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOyAvKiBub3QgcmVhY2hl ZCAqLwo+Pj4gICAgCj4+PiAtICAgICBpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHNwaW4tPmk5MTUp Owo+Pj4gKyAgICAgaWYgKGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIgJiYKPj4+ICsgICAg ICAgICBycS0+dGltZWxpbmUtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpIHsKPj4+ICsgICAgICAg ICAgICAgZXJyID0gZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYihycSk7Cj4+PiArICAgICAg ICAgICAgIGlmIChlcnIpCj4+PiArICAgICAgICAgICAgICAgICAgICAgZ290byBjYW5jZWxfcnE7 Cj4+PiArICAgICB9Cj4+PiAgICAKPj4+ICAgICAgICBlcnIgPSBlbmdpbmUtPmVtaXRfYmJfc3Rh cnQocnEsIHZtYS0+bm9kZS5zdGFydCwgUEFHRV9TSVpFLCAwKTsKPj4+ICAgIAo+Pj4gKyAgICAg aTkxNV9nZW1fY2hpcHNldF9mbHVzaChzcGluLT5pOTE1KTsKPj4+ICsKPj4+ICAgIGNhbmNlbF9y cToKPj4+ICAgICAgICBpZiAoZXJyKSB7Cj4+PiAgICAgICAgICAgICAgICBpOTE1X3JlcXVlc3Rf c2tpcChycSwgZXJyKTsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bHJjLmMKPj4+IGluZGV4IGZiMzVmNTNjOWNlMy4uODZmZDQ1ODlmNWYwIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKPj4+IEBAIC00MDUsNiAr NDA1LDE2MSBAQCBzdGF0aWMgaW50IGxpdmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KHZvaWQgKmFy ZykKPj4+ICAgICAgICBnb3RvIGVycl9jbGllbnRfYjsKPj4+ICAgIH0KPj4+ICAgIAo+Pj4gK3N0 YXRpYyBpbnQgX19pOTE1X3N3X2ZlbmNlX2NhbGwKPj4+ICtkdW1teV9ub3RpZnkoc3RydWN0IGk5 MTVfc3dfZmVuY2UgKmZlbmNlLCBlbnVtIGk5MTVfc3dfZmVuY2Vfbm90aWZ5IHN0YXRlKQo+Pj4g K3sKPj4+ICsgICAgIHJldHVybiBOT1RJRllfRE9ORTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGlj IHN0cnVjdCBpOTE1X3JlcXVlc3QgKmR1bW15X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+Pj4g Kwo+Pj4gKyAgICAgcnEgPSBrbWFsbG9jKHNpemVvZigqcnEpLCBHRlBfS0VSTkVMIHwgX19HRlBf WkVSTyk7Cj4+PiArICAgICBpZiAoIXJxKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsK Pj4+ICsKPj4+ICsgICAgIElOSVRfTElTVF9IRUFEKCZycS0+YWN0aXZlX2xpc3QpOwo+Pj4gKyAg ICAgcnEtPmVuZ2luZSA9IGVuZ2luZTsKPj4+ICsKPj4+ICsgICAgIGk5MTVfc2NoZWRfbm9kZV9p bml0KCZycS0+c2NoZWQpOwo+Pj4gKwo+Pj4gKyAgICAgLyogbWFyayB0aGlzIHJlcXVlc3QgYXMg cGVybWFuZW50bHkgaW5jb21wbGV0ZSAqLwo+Pj4gKyAgICAgcnEtPmZlbmNlLnNlcW5vID0gMTsK Pj4+ICsgICAgIHJxLT5od3NwX3NlcW5vID0gKHUzMiAqKSZycS0+ZmVuY2Uuc2Vxbm8gKyAxOwo+ Pgo+PiBIYWNrZXJ5IGxldmVsIDEwIHVubG9ja2VkISA6KQo+Pgo+PiBBZGQgdG8gY29tbWVudCAi Li5ieSBwb2ludGluZyB0aGUgaHdzcF9zZXFubyB0byBoaWdoICh1bnVzZWQpIDMyLWJpdHMgb2YK Pj4gc2Vxbm8iLgo+IAo+IEkgcHV0IHRoZSB3aHkuLi4gSG93IHRoYXQgaXMgYWN0dWFsbHkgYWNj b21wbGlzaGVkIGlzIG1lcmUKPiBpbXBsZW1lbnRhdGlvbiwgYW5kIHlvdSBjYW4gcmVhZCB0aGUg Y29kZS4gOi1wCj4gCj4+IEFsc28gc291bmRzIGxpa2UgYSBnb29kIGlkZWEgdG8gYWRkCj4+IEJV SUxEX0JVR19PTih0eXBlb2YocmVxLT5mZW5jZS5zZXFubykgPT0gdHlwZW9mKHU2NCkpPwo+Pgo+ Pj4gKwo+Pj4gKyAgICAgaTkxNV9zd19mZW5jZV9pbml0KCZycS0+c3VibWl0LCBkdW1teV9ub3Rp ZnkpOwo+Pj4gKyAgICAgaTkxNV9zd19mZW5jZV9jb21taXQoJnJxLT5zdWJtaXQpOwo+Pj4gKwo+ Pj4gKyAgICAgcmV0dXJuIHJxOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkdW1teV9y ZXF1ZXN0X2ZyZWUoc3RydWN0IGk5MTVfcmVxdWVzdCAqZHVtbXkpCj4+PiArewo+Pj4gKyAgICAg aTkxNV9yZXF1ZXN0X21hcmtfY29tcGxldGUoZHVtbXkpOwo+Pj4gKyAgICAgaTkxNV9zY2hlZF9u b2RlX2ZpbmkoZHVtbXktPmVuZ2luZS0+aTkxNSwgJmR1bW15LT5zY2hlZCk7Cj4+PiArICAgICBr ZnJlZShkdW1teSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgbGl2ZV9zdXBwcmVzc193 YWl0X3ByZWVtcHQodm9pZCAqYXJnKQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gYXJnOwo+Pj4gKyAgICAgc3RydWN0IHByZWVtcHRfY2xpZW50IGNsaWVu dFs0XTsKPj4+ICsgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4+ICsgICAg IGVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+Pj4gKyAgICAgaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Cj4+PiArICAgICBpbnQgZXJyID0gLUVOT01FTTsKPj4+ICsgICAgIGludCBpOwo+Pj4gKwo+ Pj4gKyAgICAgLyoKPj4+ICsgICAgICAqIFdhaXRlcnMgYXJlIGdpdmVuIGEgbGl0dGxlIHByaW9y aXR5IG51ZGdlLCBidXQgbm90IGVub3VnaAo+Pj4gKyAgICAgICogdG8gYWN0dWFsbHkgY2F1c2Ug YW55IHByZWVtcHRpb24uIERvdWJsZSBjaGVjayB0aGF0IHdlIGRvCj4+PiArICAgICAgKiBub3Qg bmVlZGxlc3NseSBnZW5lcmF0ZSBwcmVlbXB0LXRvLWlkbGUgY3ljbGVzLgo+Pj4gKyAgICAgICov Cj4+PiArCj4+PiArICAgICBpZiAoIUhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihpOTE1KSkK Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+PiArCj4+PiArICAgICBtdXRleF9sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPj4+ICsgICAgIHdha2VyZWYgPSBpbnRlbF9ydW50aW1l X3BtX2dldChpOTE1KTsKPj4+ICsKPj4+ICsgICAgIGlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5 MTUsICZjbGllbnRbMF0pKSAvKiBFTFNQWzBdICovCj4+PiArICAgICAgICAgICAgIGdvdG8gZXJy X3VubG9jazsKPj4+ICsgICAgIGlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZjbGllbnRb MV0pKSAvKiBFTFNQWzFdICovCj4+PiArICAgICAgICAgICAgIGdvdG8gZXJyX2NsaWVudF8wOwo+ Pj4gKyAgICAgaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmNsaWVudFsyXSkpIC8qIGhl YWQgb2YgcXVldWUgKi8KPj4+ICsgICAgICAgICAgICAgZ290byBlcnJfY2xpZW50XzE7Cj4+PiAr ICAgICBpZiAocHJlZW1wdF9jbGllbnRfaW5pdChpOTE1LCAmY2xpZW50WzNdKSkgLyogYnlzdGFu ZGVyICovCj4+PiArICAgICAgICAgICAgIGdvdG8gZXJyX2NsaWVudF8yOwo+Pj4gKwo+Pj4gKyAg ICAgZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPj4+ICsgICAgICAgICAgICAg aW50IGRlcHRoOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICBpZiAoIWVuZ2luZS0+ZW1pdF9pbml0 X2JyZWFkY3J1bWIpCj4+PiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+PiArCj4+ PiArICAgICAgICAgICAgIGZvciAoZGVwdGggPSAwOyBkZXB0aCA8IEFSUkFZX1NJWkUoY2xpZW50 KTsgZGVwdGgrKykgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxW0FSUkFZX1NJWkUoY2xpZW50KV07Cj4+PiArICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqZHVtbXk7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAg ZW5naW5lLT5leGVjbGlzdHMucHJlZW1wdF9oYW5nLmNvdW50ID0gMDsKPj4+ICsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICBkdW1teSA9IGR1bW15X3JlcXVlc3QoZW5naW5lKTsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICBpZiAoIWR1bW15KQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ290byBlcnJfY2xpZW50XzM7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAg Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY2xpZW50KTsgaSsrKSB7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBycVtpXSA9IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZj bGllbnRbaV0uc3BpbiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50W2ldLmN0eCwgZW5naW5lLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNSV9OT09QKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19F UlIocnFbaV0pKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy ciA9IFBUUl9FUlIocnFbaV0pOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGVycl93ZWRnZWQ7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEaXNhYmxlIE5FV0NM SUVOVCBwcm9tb3Rpb24gKi8KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk5MTVf Z2VtX2FjdGl2ZV9zZXQoJnJxW2ldLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1teSk7Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOTE1X3JlcXVlc3RfYWRkKHJxW2ldKTsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICB9Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAg ZHVtbXlfcmVxdWVzdF9mcmVlKGR1bW15KTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICBHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnFbMF0pKTsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICBpZiAoIWlndF93YWl0X2Zvcl9zcGlubmVyKCZjbGllbnRbMF0uc3Bpbiwg cnFbMF0pKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcl9lcnIoIkZpcnN0 IGNsaWVudCBmYWlsZWQgdG8gc3RhcnRcbiIpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ290byBlcnJfd2VkZ2VkOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0KPj4+ICsg ICAgICAgICAgICAgICAgICAgICBHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3Rfc3RhcnRlZChycVsw XSkpOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChpOTE1X3JlcXVlc3Rfd2Fp dChycVtkZXB0aF0sCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEk5MTVfV0FJVF9MT0NLRUQgfAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJOTE1X1dBSVRfUFJJT1JJVFksCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEpICE9IC1FVElNRSkgewo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJfZXJyKCJXYWl0ZXIgZGVwdGg6JWQgY29tcGxldGVkIVxuIiwg ZGVwdGgpOwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfd2VkZ2Vk Owo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjbGllbnQpOyBpKyspCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZ3Rfc3Bpbm5lcl9lbmQoJmNsaWVudFtpXS5zcGluKTsK Pj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwg STkxNV9XQUlUX0xPQ0tFRCkpCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IGVycl93ZWRnZWQ7Cj4+PiArCj4+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZ2luZS0+ ZXhlY2xpc3RzLnByZWVtcHRfaGFuZy5jb3VudCkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJfZXJyKCJQcmVlbXB0aW9uIHJlY29yZGVkIHglZCwgZGVwdGggJWQ7IHNob3Vs ZCBoYXZlIGJlZW4gc3VwcHJlc3NlZCFcbiIsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW5naW5lLT5leGVjbGlzdHMucHJlZW1wdF9oYW5nLmNvdW50LAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoKTsKPj4KPj4gV29ydGggbG9n Z2luZyBlbmdpbmUgbmFtZXMgd2l0aCBhbGwgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2VzPwo+IAo+ IEkgaG9uZXN0bHkgZG91YnQgd2UgbmVlZCBwZXItZW5naW5lIHNpbmNlIHRoaXMgaXMganVzdCBh Ym91dCBvYnNlcnZpbmcgU1cuCj4gQnV0IGFzIHdlIGFyZSBleGVyY2lzaW5nIGFjcm9zcyBlbmdp bmVzLCBpdCBtYXkgYXMgd2VsbCBpbmNsdWRlIHRoYXQKPiBpbmZvcm1hdGlvbi4KPiAtQ2hyaXMK PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==