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 10:06:35 +0000 Message-ID: <9bf200c7-fd76-ccf2-1ed5-c6e1277f84f6@linux.intel.com> References: <20190204084116.3013-1-chris@chris-wilson.co.uk> <20190204084116.3013-2-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 489696E15E for ; Mon, 4 Feb 2019 10:06:29 +0000 (UTC) In-Reply-To: <20190204084116.3013-2-chris@chris-wilson.co.uk> 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 Ck9uIDA0LzAyLzIwMTkgMDg6NDEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXQUlUIGlzIG9jY2Fz aW9uYWxseSBzdXBwcmVzc2VkIGJ5IHZpcnR1ZSBvZiBwcmVlbXB0ZWQgcmVxdWVzdHMgYmVpbmcK PiBwcm9tb3RlZCB0byBORVdDTElFTlQgaWZmIHRoZXkgaGF2ZSBub3QgYWxsIHJlYWR5IHJlY2Vp dmVkIHRoYXQgYm9vc3QuCgpzL2lmZi9pZi8KCj4gTWFrZSB0aGlzIGNvbnNpc3RlbnQgZm9yIGFs bCBXQUlUIGJvb3N0cyB0aGF0IHRoZXkgYXJlIG5vdCBhbGxvd2VkIHRvCj4gcHJlZW1wdCBleGVj dXRpbmcgY29udGV4dHMgYW5kIGFyZSBtZXJlbHkgZ3JhbnRlZCB0aGUgcmlnaHQgdG8gYmUgYXQg dGhlCj4gZnJvbnQgb2YgdGhlIHF1ZXVlIGZvciB0aGUgbmV4dCBleGVjdXRpb24gc2xvdC4gVGhp cyBpcyBpbiBrZWVwaW5nIHdpdGgKPiB0aGUgZGVzaXJlIHRoYXQgdGhlIFdBSVQgYm9vc3QgYmUg YSBtaW5vciB0d2VhayB0aGF0IGRvZXMgbm90IGdpdmUKPiBleGNlc3NpdmUgcHJvbW90aW9uIHRv IGl0cyB1c2VyIGFuZCBvcGVuIG91cnNlbHZlcyB0byB0cml2aWFsIGFidXNlLgo+IAo+IFRoZSBw cm9ibGVtIHdpdGggdGhlIGluY29uc2lzdGVudCBXQUlUIHByZWVtcHRpb24gYmVjb21lcyBtb3Jl IGFwcGFyZW50Cj4gYXMgdGhlIHByZWVtcHRpb24gaXMgcHJvcGFnYXRlZCBhY3Jvc3MgdGhlIGVu Z2luZXMsIHdoZXJlIG9uZSBlbmdpbmUgbWF5Cj4gcHJlZW1wdCBhbmQgdGhlIG90aGVyIG5vdCwg YW5kIHdlIGJlIHJlbHlpbmcgb24gdGhlIGV4YWN0IGV4ZWN1dGlvbgo+IG9yZGVyIGJlaW5nIGNv bnNpc3RlbnQgYWNyb3NzIGVuZ2luZXMgKGUuZy4gdXNpbmcgSFcgc2VtYXBob3JlcyB0bwo+IGNv b3JkaW5hdGUgcGFyYWxsZWwgZXhlY3V0aW9uKS4KPiAKPiB2MjogQWxzbyBwcm90ZWN0IEd1QyBz dWJtaXNzaW9uIGZyb20gZmFsc2UgcHJlZW1wdGlvbiBsb29wcy4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgIHwgIDExICsrCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oICAgICAgICB8ICAgMiArCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICAgfCAgIDkgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jIHwgICA5ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMgICB8IDE1NiArKysrKysrKysrKysrKysr KysrCj4gICA2IGZpbGVzIGNoYW5nZWQsIDE4NiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggOWVkNWJhZjE1N2Ez Li43OTY4ODc1ZDBiZWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBA IC0zNzcsMTIgKzM3NywyMyBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCj4gICAJLyogV2UgbWF5IGJlIHJlY3Vyc2luZyBmcm9t IHRoZSBzaWduYWwgY2FsbGJhY2sgb2YgYW5vdGhlciBpOTE1IGZlbmNlICovCj4gICAJc3Bpbl9s b2NrX25lc3RlZCgmcmVxdWVzdC0+bG9jaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwo+ICsKPiAg IAlHRU1fQlVHX09OKHRlc3RfYml0KEk5MTVfRkVOQ0VfRkxBR19BQ1RJVkUsICZyZXF1ZXN0LT5m ZW5jZS5mbGFncykpOwo+ICAgCXNldF9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwgJnJlcXVl c3QtPmZlbmNlLmZsYWdzKTsKPiArCj4gICAJcmVxdWVzdC0+Z2xvYmFsX3NlcW5vID0gc2Vxbm87 Cj4gICAJaWYgKHRlc3RfYml0KERNQV9GRU5DRV9GTEFHX0VOQUJMRV9TSUdOQUxfQklULCAmcmVx dWVzdC0+ZmVuY2UuZmxhZ3MpICYmCj4gICAJICAgICFpOTE1X3JlcXVlc3RfZW5hYmxlX2JyZWFk Y3J1bWIocmVxdWVzdCkpCj4gICAJCWludGVsX2VuZ2luZV9xdWV1ZV9icmVhZGNydW1icyhlbmdp bmUpOwo+ICsKPiArCS8qCj4gKwkgKiBBcyB3ZSBkbyBub3QgYWxsb3cgV0FJVCB0byBwcmVlbXB0 IGluZmxpZ2h0IHJlcXVlc3RzLAo+ICsJICogb25jZSB3ZSBoYXZlIGV4ZWN1dGVkIGEgcmVxdWVz dCwgYWxvbmcgd2l0aCB0cmlnZ2VyaW5nCj4gKwkgKiBhbnkgZXhlY3V0aW9uIGNhbGxiYWNrcywg d2UgbXVzdCBwcmVzZXJ2ZSBpdHMgb3JkZXJpbmcKPiArCSAqIHdpdGhpbiB0aGUgbm9uLXByZWVt cHRpYmxlIEZJRk8uCj4gKwkgKi8KPiArCXJlcXVlc3QtPnNjaGVkLmF0dHIucHJpb3JpdHkgfD0g X19OT19QUkVFTVBUSU9OOwo+ICsKPiAgIAlzcGluX3VubG9jaygmcmVxdWVzdC0+bG9jayk7Cj4g ICAKPiAgIAllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iKHJlcXVlc3QsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCj4gaW5kZXggZGJlOWNiN2VjZDgyLi41NGJkNmM4OTgx N2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPiBAQCAtMzMsNiAr MzMsOCBAQCBlbnVtIHsKPiAgICNkZWZpbmUgSTkxNV9QUklPUklUWV9XQUlUCSgodTgpQklUKDAp KQo+ICAgI2RlZmluZSBJOTE1X1BSSU9SSVRZX05FV0NMSUVOVAkoKHU4KUJJVCgxKSkKPiAgIAo+ ICsjZGVmaW5lIF9fTk9fUFJFRU1QVElPTiAoSTkxNV9QUklPUklUWV9XQUlUKQo+ICsKPiAgIHN0 cnVjdCBpOTE1X3NjaGVkX2F0dHIgewo+ICAgCS8qKgo+ICAgCSAqIEBwcmlvcml0eTogZXhlY3V0 aW9uIGFuZCBzZXJ2aWNlIHByaW9yaXR5Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfc3VibWlzc2lvbi5jCj4gaW5kZXggOGJjOGFhNTRhYTM1Li45NDY5NWViODE5YzIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtNzIw LDcgKzcyMCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJxX3ByaW8oY29uc3Qgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgaW50IHBvcnRfcHJpbyhjb25zdCBz dHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCkKPiAgIHsKPiAtCXJldHVybiBycV9wcmlvKHBvcnRf cmVxdWVzdChwb3J0KSk7Cj4gKwlyZXR1cm4gcnFfcHJpbyhwb3J0X3JlcXVlc3QocG9ydCkpIHwg X19OT19QUkVFTVBUSU9OOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgYm9vbCBfX2d1Y19kZXF1ZXVl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IGluZGV4IGE5ZWIwMjExY2U3Ny4uNzczZGYwYmQ2ODViIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBAQCAtMTg4LDYgKzE4OCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBycV9w cmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCXJldHVybiBycS0+c2NoZWQu YXR0ci5wcmlvcml0eTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IGVmZmVjdGl2ZV9wcmlvKGNv bnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICt7Cj4gKwkvKiBSZXN0cmljdCBtZXJlIFdB SVQgYm9vc3RzIGZyb20gdHJpZ2dlcmluZyBwcmVlbXB0aW9uICovCj4gKwlyZXR1cm4gcnFfcHJp byhycSkgfCBfX05PX1BSRUVNUFRJT047Cj4gK30KCkkgc3VnZ2VzdCBhZGRpbmcgaTkxNV9yZXF1 ZXN0X2VmZmVjdGl2ZV9wcmlvIHRvIGk5MTVfcmVxdWVzdC5oIC0gaXQgaXMgCnZlcmJvc2UgYnV0 IGF2b2lkcyB0d28gaW1wbGVtZW50YXRpb24uCgpCVUlMRF9CVUdfT04oaHdlaWdodDMyKF9fTk9f UFJFRU1QVElPTikgIT0gMSk7IGFzIHdlbGw/IFRvIGVuc3VyZSBpdCBpcyAKZGVmaW5lZCB0byBp bnRlcm5hbCBwcmlvcml0eSBsZXZlbHMuCgo+ICsKPiAgIHN0YXRpYyBpbnQgcXVldWVfcHJpbyhj b25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQo+ICAgewo+ICAg CXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwOwo+IEBAIC0yMDgsNyArMjE0LDcgQEAgc3RhdGljIGlu dCBxdWV1ZV9wcmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlz dHMpCj4gICBzdGF0aWMgaW5saW5lIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCQljb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKPiAgIHsKPiAtCWNvbnN0IGludCBsYXN0X3ByaW8gPSBycV9wcmlvKHJxKTsKPiArCWludCBs YXN0X3ByaW87Cj4gICAKPiAgIAlpZiAoIWludGVsX2VuZ2luZV9oYXNfcHJlZW1wdGlvbihlbmdp bmUpKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTIyOCw2ICsyMzQsNyBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgIAkgKiBwcmVlbXB0LiBJZiB0aGF0IGhpbnQgaXMgc3RhbGUgb3Igd2UgbWF5IGJlIHRy eWluZyB0byBwcmVlbXB0Cj4gICAJICogb3Vyc2VsdmVzLCBpZ25vcmUgdGhlIHJlcXVlc3QuCj4g ICAJICovCj4gKwlsYXN0X3ByaW8gPSBlZmZlY3RpdmVfcHJpbyhycSk7CgpJc24ndCB0aGlzIHJl ZHVuZGFudD8gRXZlcnkgc3VibWl0dGVkIHJlcXVlc3QgYWxyZWFkeSBoYWQgCl9fTk9fUFJFRU1Q VElPTiBhcHBsaWVkIGluIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdC4KCj4gICAJaWYgKCFfX2V4ZWNs aXN0c19uZWVkX3ByZWVtcHQoZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3JpdHlfaGludCwK PiAgIAkJCQkgICAgICBsYXN0X3ByaW8pKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmMKPiBpbmRleCA5ZWJkOTIyNTY4 NGUuLjg2MzU0ZTUxYmRkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaWd0X3NwaW5uZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pZ3Rfc3Bpbm5lci5jCj4gQEAgLTE0MiwxMCArMTQyLDE3IEBAIGlndF9zcGlubmVyX2NyZWF0 ZV9yZXF1ZXN0KHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiwKPiAgIAkqYmF0Y2grKyA9IHVwcGVy XzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KTsKPiAgIAkqYmF0Y2grKyA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7IC8qIG5vdCByZWFjaGVkICovCj4gICAKPiAtCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2go c3Bpbi0+aTkxNSk7Cj4gKwlpZiAoZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYiAmJgo+ICsJ ICAgIHJxLT50aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikgewo+ICsJCWVyciA9IGVu Z2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIocnEpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8g Y2FuY2VsX3JxOwo+ICsJfQo+ICAgCj4gICAJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJx LCB2bWEtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwgMCk7Cj4gICAKPiArCWk5MTVfZ2VtX2NoaXBz ZXRfZmx1c2goc3Bpbi0+aTkxNSk7Cj4gKwo+ICAgY2FuY2VsX3JxOgo+ICAgCWlmIChlcnIpIHsK PiAgIAkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IGluZGV4IGZiMzVmNTNjOWNlMy4uODZmZDQ1ODlmNWYw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IEBA IC00MDUsNiArNDA1LDE2MSBAQCBzdGF0aWMgaW50IGxpdmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0 KHZvaWQgKmFyZykKPiAgIAlnb3RvIGVycl9jbGllbnRfYjsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg aW50IF9faTkxNV9zd19mZW5jZV9jYWxsCj4gK2R1bW15X25vdGlmeShzdHJ1Y3QgaTkxNV9zd19m ZW5jZSAqZmVuY2UsIGVudW0gaTkxNV9zd19mZW5jZV9ub3RpZnkgc3RhdGUpCj4gK3sKPiArCXJl dHVybiBOT1RJRllfRE9ORTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KmR1bW15X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCj4gKwlycSA9IGttYWxsb2Moc2l6ZW9mKCpycSks IEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKPiArCWlmICghcnEpCj4gKwkJcmV0dXJuIE5VTEw7 Cj4gKwo+ICsJSU5JVF9MSVNUX0hFQUQoJnJxLT5hY3RpdmVfbGlzdCk7Cj4gKwlycS0+ZW5naW5l ID0gZW5naW5lOwo+ICsKPiArCWk5MTVfc2NoZWRfbm9kZV9pbml0KCZycS0+c2NoZWQpOwo+ICsK PiArCS8qIG1hcmsgdGhpcyByZXF1ZXN0IGFzIHBlcm1hbmVudGx5IGluY29tcGxldGUgKi8KPiAr CXJxLT5mZW5jZS5zZXFubyA9IDE7Cj4gKwlycS0+aHdzcF9zZXFubyA9ICh1MzIgKikmcnEtPmZl bmNlLnNlcW5vICsgMTsKCkhhY2tlcnkgbGV2ZWwgMTAgdW5sb2NrZWQhIDopCgpBZGQgdG8gY29t bWVudCAiLi5ieSBwb2ludGluZyB0aGUgaHdzcF9zZXFubyB0byBoaWdoICh1bnVzZWQpIDMyLWJp dHMgb2YgCnNlcW5vIi4KCkFsc28gc291bmRzIGxpa2UgYSBnb29kIGlkZWEgdG8gYWRkIApCVUlM RF9CVUdfT04odHlwZW9mKHJlcS0+ZmVuY2Uuc2Vxbm8pID09IHR5cGVvZih1NjQpKT8KCj4gKwo+ ICsJaTkxNV9zd19mZW5jZV9pbml0KCZycS0+c3VibWl0LCBkdW1teV9ub3RpZnkpOwo+ICsJaTkx NV9zd19mZW5jZV9jb21taXQoJnJxLT5zdWJtaXQpOwo+ICsKPiArCXJldHVybiBycTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgZHVtbXlfcmVxdWVzdF9mcmVlKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KmR1bW15KQo+ICt7Cj4gKwlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShkdW1teSk7Cj4gKwlp OTE1X3NjaGVkX25vZGVfZmluaShkdW1teS0+ZW5naW5lLT5pOTE1LCAmZHVtbXktPnNjaGVkKTsK PiArCWtmcmVlKGR1bW15KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaXZlX3N1cHByZXNzX3dh aXRfcHJlZW1wdCh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gYXJnOwo+ICsJc3RydWN0IHByZWVtcHRfY2xpZW50IGNsaWVudFs0XTsKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlpbnQgZXJyID0gLUVOT01FTTsKPiArCWlu dCBpOwo+ICsKPiArCS8qCj4gKwkgKiBXYWl0ZXJzIGFyZSBnaXZlbiBhIGxpdHRsZSBwcmlvcml0 eSBudWRnZSwgYnV0IG5vdCBlbm91Z2gKPiArCSAqIHRvIGFjdHVhbGx5IGNhdXNlIGFueSBwcmVl bXB0aW9uLiBEb3VibGUgY2hlY2sgdGhhdCB3ZSBkbwo+ICsJICogbm90IG5lZWRsZXNzbHkgZ2Vu ZXJhdGUgcHJlZW1wdC10by1pZGxlIGN5Y2xlcy4KPiArCSAqLwo+ICsKPiArCWlmICghSEFTX0xP R0lDQUxfUklOR19QUkVFTVBUSU9OKGk5MTUpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCW11dGV4 X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICsKPiArCWlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZj bGllbnRbMF0pKSAvKiBFTFNQWzBdICovCj4gKwkJZ290byBlcnJfdW5sb2NrOwo+ICsJaWYgKHBy ZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmNsaWVudFsxXSkpIC8qIEVMU1BbMV0gKi8KPiArCQln b3RvIGVycl9jbGllbnRfMDsKPiArCWlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZjbGll bnRbMl0pKSAvKiBoZWFkIG9mIHF1ZXVlICovCj4gKwkJZ290byBlcnJfY2xpZW50XzE7Cj4gKwlp ZiAocHJlZW1wdF9jbGllbnRfaW5pdChpOTE1LCAmY2xpZW50WzNdKSkgLyogYnlzdGFuZGVyICov Cj4gKwkJZ290byBlcnJfY2xpZW50XzI7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwg aTkxNSwgaWQpIHsKPiArCQlpbnQgZGVwdGg7Cj4gKwo+ICsJCWlmICghZW5naW5lLT5lbWl0X2lu aXRfYnJlYWRjcnVtYikKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWZvciAoZGVwdGggPSAwOyBk ZXB0aCA8IEFSUkFZX1NJWkUoY2xpZW50KTsgZGVwdGgrKykgewo+ICsJCQlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycVtBUlJBWV9TSVpFKGNsaWVudCldOwo+ICsJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpkdW1teTsKPiArCj4gKwkJCWVuZ2luZS0+ZXhlY2xpc3RzLnByZWVtcHRfaGFuZy5jb3VudCA9 IDA7Cj4gKwo+ICsJCQlkdW1teSA9IGR1bW15X3JlcXVlc3QoZW5naW5lKTsKPiArCQkJaWYgKCFk dW1teSkKPiArCQkJCWdvdG8gZXJyX2NsaWVudF8zOwo+ICsKPiArCQkJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoY2xpZW50KTsgaSsrKSB7Cj4gKwkJCQlycVtpXSA9IGlndF9zcGlubmVyX2Ny ZWF0ZV9yZXF1ZXN0KCZjbGllbnRbaV0uc3BpbiwKPiArCQkJCQkJCQkgICBjbGllbnRbaV0uY3R4 LCBlbmdpbmUsCj4gKwkJCQkJCQkJICAgTUlfTk9PUCk7Cj4gKwkJCQlpZiAoSVNfRVJSKHJxW2ld KSkgewo+ICsJCQkJCWVyciA9IFBUUl9FUlIocnFbaV0pOwo+ICsJCQkJCWdvdG8gZXJyX3dlZGdl ZDsKPiArCQkJCX0KPiArCj4gKwkJCQkvKiBEaXNhYmxlIE5FV0NMSUVOVCBwcm9tb3Rpb24gKi8K PiArCQkJCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnJxW2ldLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0 LAo+ICsJCQkJCQkgICAgZHVtbXkpOwo+ICsJCQkJaTkxNV9yZXF1ZXN0X2FkZChycVtpXSk7Cj4g KwkJCX0KPiArCj4gKwkJCWR1bW15X3JlcXVlc3RfZnJlZShkdW1teSk7Cj4gKwo+ICsJCQlHRU1f QlVHX09OKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnFbMF0pKTsKPiArCQkJaWYgKCFpZ3Rfd2Fp dF9mb3Jfc3Bpbm5lcigmY2xpZW50WzBdLnNwaW4sIHJxWzBdKSkgewo+ICsJCQkJcHJfZXJyKCJG aXJzdCBjbGllbnQgZmFpbGVkIHRvIHN0YXJ0XG4iKTsKPiArCQkJCWdvdG8gZXJyX3dlZGdlZDsK PiArCQkJfQo+ICsJCQlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3Rfc3RhcnRlZChycVswXSkpOwo+ ICsKPiArCQkJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxW2RlcHRoXSwKPiArCQkJCQkgICAgICBJ OTE1X1dBSVRfTE9DS0VEIHwKPiArCQkJCQkgICAgICBJOTE1X1dBSVRfUFJJT1JJVFksCj4gKwkJ CQkJICAgICAgMSkgIT0gLUVUSU1FKSB7Cj4gKwkJCQlwcl9lcnIoIldhaXRlciBkZXB0aDolZCBj b21wbGV0ZWQhXG4iLCBkZXB0aCk7Cj4gKwkJCQlnb3RvIGVycl93ZWRnZWQ7Cj4gKwkJCX0KPiAr Cj4gKwkJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNsaWVudCk7IGkrKykKPiArCQkJCWln dF9zcGlubmVyX2VuZCgmY2xpZW50W2ldLnNwaW4pOwo+ICsKPiArCQkJaWYgKGlndF9mbHVzaF90 ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJCQkJZ290byBlcnJfd2VkZ2VkOwo+ICsK PiArCQkJaWYgKGVuZ2luZS0+ZXhlY2xpc3RzLnByZWVtcHRfaGFuZy5jb3VudCkgewo+ICsJCQkJ cHJfZXJyKCJQcmVlbXB0aW9uIHJlY29yZGVkIHglZCwgZGVwdGggJWQ7IHNob3VsZCBoYXZlIGJl ZW4gc3VwcHJlc3NlZCFcbiIsCj4gKwkJCQkgICAgICAgZW5naW5lLT5leGVjbGlzdHMucHJlZW1w dF9oYW5nLmNvdW50LAo+ICsJCQkJICAgICAgIGRlcHRoKTsKCldvcnRoIGxvZ2dpbmcgZW5naW5l IG5hbWVzIHdpdGggYWxsIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlcz8KCj4gKwkJCQllcnIgPSAt RUlOVkFMOwo+ICsJCQkJZ290byBlcnJfY2xpZW50XzM7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4g Kwo+ICsJZXJyID0gMDsKPiArZXJyX2NsaWVudF8zOgo+ICsJcHJlZW1wdF9jbGllbnRfZmluaSgm Y2xpZW50WzNdKTsKPiArZXJyX2NsaWVudF8yOgo+ICsJcHJlZW1wdF9jbGllbnRfZmluaSgmY2xp ZW50WzJdKTsKPiArZXJyX2NsaWVudF8xOgo+ICsJcHJlZW1wdF9jbGllbnRfZmluaSgmY2xpZW50 WzFdKTsKPiArZXJyX2NsaWVudF8wOgo+ICsJcHJlZW1wdF9jbGllbnRfZmluaSgmY2xpZW50WzBd KTsKPiArZXJyX3VubG9jazoKPiArCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRf TE9DS0VEKSkKPiArCQllcnIgPSAtRUlPOwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwg d2FrZXJlZik7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJ cmV0dXJuIGVycjsKPiArCj4gK2Vycl93ZWRnZWQ6Cj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShjbGllbnQpOyBpKyspCj4gKwkJaWd0X3NwaW5uZXJfZW5kKCZjbGllbnRbaV0uc3Bpbik7 Cj4gKwlpOTE1X2dlbV9zZXRfd2VkZ2VkKGk5MTUpOwo+ICsJZXJyID0gLUVJTzsKPiArCWdvdG8g ZXJyX2NsaWVudF8zOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBsaXZlX3ByZWVtcHRfaGFuZyh2 b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7 Cj4gQEAgLTc4NSw2ICs5NDAsNyBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3Rz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCQlTVUJURVNUKGxpdmVfcHJlZW1w dCksCj4gICAJCVNVQlRFU1QobGl2ZV9sYXRlX3ByZWVtcHQpLAo+ICAgCQlTVUJURVNUKGxpdmVf c3VwcHJlc3Nfc2VsZl9wcmVlbXB0KSwKPiArCQlTVUJURVNUKGxpdmVfc3VwcHJlc3Nfd2FpdF9w cmVlbXB0KSwKPiAgIAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfaGFuZyksCj4gICAJCVNVQlRFU1Qo bGl2ZV9wcmVlbXB0X3Ntb2tlKSwKPiAgIAl9Owo+IAoKUmVnYXJkcywKClR2cnRrbwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK