From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/12] drm/i915: Split execlist priority queue into rbtree + linked list Date: Mon, 15 May 2017 12:45:16 +0100 Message-ID: References: <20170511195922.15844-1-chris@chris-wilson.co.uk> <20170511195922.15844-8-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 3859689919 for ; Mon, 15 May 2017 11:45:26 +0000 (UTC) In-Reply-To: <20170511195922.15844-8-chris@chris-wilson.co.uk> 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 Ck9uIDExLzA1LzIwMTcgMjA6NTksIENocmlzIFdpbHNvbiB3cm90ZToKPiBBbGwgdGhlIHJlcXVl c3RzIGF0IHRoZSBzYW1lIHByaW9yaXR5IGFyZSBleGVjdXRlZCBpbiBGSUZPIG9yZGVyLiBUaGV5 Cj4gZG8gbm90IG5lZWQgdG8gYmUgc3RvcmVkIGluIHRoZSByYnRyZWUgdGhlbXNlbHZlcywgYXMg dGhleSBhcmUgYSBzaW1wbGUKPiBsaXN0IHdpdGhpbiBhIGxldmVsLiBJZiB3ZSBtb3ZlIHRoZSBy ZXF1ZXN0cyBhdCBvbmUgcHJpb3JpdHkgaW50byBhIGxpc3QsCj4gd2UgY2FuIHRoZW4gcmVkdWNl IHRoZSByYnRyZWUgdG8gdGhlIHNldCBvZiBwcmlvcml0aWVzLiBUaGlzIHNob3VsZCBrZWVwCj4g dGhlIGhlaWdodCBvZiB0aGUgcmJ0cmVlIHNtYWxsLCBhcyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBw cmlvcml0aWVzIGNhbiBub3QKPiBleGNlZWQgdGhlIG51bWJlciBvZiBhY3RpdmUgcmVxdWVzdHMg YW5kIHNob3VsZCBiZSB0eXBpY2FsbHkgb25seSBhIGZldy4KPgo+IEN1cnJlbnRseSwgd2UgaGF2 ZSB+MmsgcG9zc2libGUgZGlmZmVyZW50IHByaW9yaXR5IGxldmVscywgdGhhdCBtYXkKPiBpbmNy ZWFzZSB0byBhbGxvdyBldmVuIG1vcmUgZmluZSBncmFpbmVkIHNlbGVjdGlvbi4gQWxsb2NhdGlu ZyB0aG9zZSBpbgo+IGFkdmFuY2Ugc2VlbXMgYSB3YXN0ZSAoYW5kIG1heSBiZSBpbXBvc3NpYmxl KSwgc28gd2Ugb3B0IGZvciBhbGxvY2F0aW5nCj4gdXBvbiBmaXJzdCB1c2UsIGFuZCBmcmVlaW5n IGFmdGVyIGl0cyByZXF1ZXN0cyBhcmUgZGVwbGV0ZWQuIFRvIGF2b2lkCj4gdGhlIHBvc3NpYmls aXR5IG9mIGFuIGFsbG9jYXRpb24gZmFpbHVyZSBjYXVzaW5nIHVzIHRvIGxvc2UgYSByZXF1ZXN0 LAo+IHdlIHByZWFsbG9jYXRlIHRoZSBkZWZhdWx0IHByaW9yaXR5ICgwKSBhbmQgYnVtcCBhbnkg cmVxdWVzdCB0byB0aGF0Cj4gcHJpb3JpdHkgaWYgd2UgZmFpbCB0byBhbGxvY2F0ZSBpdCB0aGUg YXBwcm9wcmlhdGUgcGxpc3QuIEhhdmluZyBhCj4gcmVxdWVzdCAodGhhdCBpcyByZWFkeSB0byBy dW4sIHNvIG5vdCBsZWFkaW5nIHRvIGNvcnJ1cHRpb24pIGV4ZWN1dGUKPiBvdXQtb2Ytb3JkZXIg aXMgYmV0dGVyIHRoYW4gbGVha2luZyB0aGUgcmVxdWVzdCAoYW5kIGl0cyBkZXBlbmRlbmN5Cj4g dHJlZSkgZW50aXJlbHkuCj4KPiBUaGVyZSBzaG91bGQgYmUgYSBiZW5lZml0IHRvIHJlZHVjaW5n IGV4ZWNsaXN0c19kZXF1ZXVlKCkgdG8gcHJpbmNpcGFsbHkKPiB1c2luZyBhIHNpbXBsZSBsaXN0 IChhbmQgcmVkdWNpbmcgdGhlIGZyZXF1ZW5jeSBvZiBib3RoIHJidHJlZSBpdGVyYXRpb24KPiBh bmQgYmFsYW5jaW5nIG9uIGVyYXNlKSBidXQgZm9yIHR5cGljYWwgd29ya2xvYWRzLCByZXF1ZXN0 IGNvYWxlc2NpbmcKPiBzaG91bGQgYmUgc21hbGwgZW5vdWdoIHRoYXQgd2UgZG9uJ3Qgbm90aWNl IGFueSBjaGFuZ2UuIFRoZSBtYWluIGdhaW4gaXMKPiBmcm9tIGltcHJvdmluZyBQSSBjYWxscyB0 byBzY2hlZHVsZSwgYW5kIHRoZSBleHBsaWNpdCBsaXN0IHdpdGhpbiBhCj4gbGV2ZWwgc2hvdWxk IG1ha2UgcmVxdWVzdCB1bndpbmRpbmcgc2ltcGxlciAod2UganVzdCBuZWVkIHRvIGluc2VydCBh dAo+IHRoZSBoZWFkIG9mIHRoZSBsaXN0IHJhdGhlciB0aGFuIHRoZSB0YWlsIGFuZCBub3QgaGF2 ZSB0byBtYWtlIHRoZQo+IHJidHJlZSBzZWFyY2ggbW9yZSBjb21wbGljYXRlZCkuCj4KPiB2Mjog QXZvaWQgdXNlLWFmdGVyLWZyZWUgd2hlbiBkZWxldGluZyBhIGRlcGxldGVkIHByaW9saXN0Cj4K PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiBDYzogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPgo+IENj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBKb29uYXMg TGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAxMSArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICA1MCArKysrKy0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oICAgICAgICAgIHwgICA5ICsrCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8IDE3MSArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgg ICAgfCAgIDcgKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgODkgZGVs ZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDliYzg2 ZDQ2YTY1Ni4uNmQ2MWE0MzllZmQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBAQCAtMzM1Miw3ICszMzUyLDYgQEAgc3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+Cj4gIAkJaWYgKGk5MTUuZW5hYmxlX2V4 ZWNsaXN0cykgewo+ICAJCQl1MzIgcHRyLCByZWFkLCB3cml0ZTsKPiAtCQkJc3RydWN0IHJiX25v ZGUgKnJiOwo+ICAJCQl1bnNpZ25lZCBpbnQgaWR4Owo+Cj4gIAkJCXNlcV9wcmludGYobSwgIlx0 RXhlY2xpc3Qgc3RhdHVzOiAweCUwOHggJTA4eFxuIiwKPiBAQCAtMzM5Niw5ICszMzk1LDEzIEBA IHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVu dXNlZCkKPiAgCQkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4KPiAgCQkJc3Bpbl9sb2NrX2lycSgmZW5n aW5lLT50aW1lbGluZS0+bG9jayk7Cj4gLQkJCWZvciAocmIgPSBlbmdpbmUtPmV4ZWNsaXN0X2Zp cnN0OyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewo+IC0JCQkJcnEgPSByYl9lbnRyeShyYiwgdHlw ZW9mKCpycSksIHByaW90cmVlLm5vZGUpOwo+IC0JCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0 XHRRICIpOwo+ICsJCQlmb3IgKHJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsgcmI7IHJiID0g cmJfbmV4dChyYikpewo+ICsJCQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPQo+ICsJCQkJCXJi X2VudHJ5KHJiLCB0eXBlb2YoKnApLCBub2RlKTsKPiArCj4gKwkJCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHJxLCAmcC0+cmVxdWVzdHMsCj4gKwkJCQkJCSAgICBwcmlvdHJlZS5saW5rKQo+ICsJCQkJ CXByaW50X3JlcXVlc3QobSwgcnEsICJcdFx0USAiKTsKPiAgCQkJfQo+ICAJCQlzcGluX3VubG9j a19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICAJCX0gZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+IDYpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5j Cj4gaW5kZXggMTAzNjFjN2UzYjM3Li4xY2NmMjUyMmNkZmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4gQEAgLTE1OSw3ICsxNTksNyBAQCBpOTE1X3ByaW90 cmVlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3ByaW90 cmVlICpwdCkKPiAgewo+ICAJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwLCAqbmV4dDsKPgo+ IC0JR0VNX0JVR19PTighUkJfRU1QVFlfTk9ERSgmcHQtPm5vZGUpKTsKPiArCUdFTV9CVUdfT04o IWxpc3RfZW1wdHkoJnB0LT5saW5rKSk7Cj4KPiAgCS8qIEV2ZXJ5b25lIHdlIGRlcGVuZGVkIHVw b24gKHRoZSBmZW5jZXMgd2Ugd2FpdCB0byBiZSBzaWduYWxlZCkKPiAgCSAqIHNob3VsZCByZXRp cmUgYmVmb3JlIHVzIGFuZCByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIG91ciBsaXN0Lgo+IEBAIC0x ODUsNyArMTg1LDcgQEAgaTkxNV9wcmlvdHJlZV9pbml0KHN0cnVjdCBpOTE1X3ByaW90cmVlICpw dCkKPiAgewo+ICAJSU5JVF9MSVNUX0hFQUQoJnB0LT5zaWduYWxlcnNfbGlzdCk7Cj4gIAlJTklU X0xJU1RfSEVBRCgmcHQtPndhaXRlcnNfbGlzdCk7Cj4gLQlSQl9DTEVBUl9OT0RFKCZwdC0+bm9k ZSk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmcHQtPmxpbmspOwo+ICAJcHQtPnByaW9yaXR5ID0gSU5U X01JTjsKPiAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IGlu ZGV4IDBlY2ZjNWUyZDcwNy4uOGM1MDhiZDkwODhlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IEBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBpOTE1X2RlcGVu ZGVuY3kgewo+ICBzdHJ1Y3QgaTkxNV9wcmlvdHJlZSB7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIHNp Z25hbGVyc19saXN0OyAvKiB0aG9zZSBiZWZvcmUgdXMsIHdlIGRlcGVuZCB1cG9uICovCj4gIAlz dHJ1Y3QgbGlzdF9oZWFkIHdhaXRlcnNfbGlzdDsgLyogdGhvc2UgYWZ0ZXIgdXMsIHRoZXkgZGVw ZW5kIHVwb24gdXMgKi8KPiAtCXN0cnVjdCByYl9ub2RlIG5vZGU7Cj4gKwlzdHJ1Y3QgbGlzdF9o ZWFkIGxpbms7Cj4gIAlpbnQgcHJpb3JpdHk7Cj4gICNkZWZpbmUgSTkxNV9QUklPUklUWV9NQVgg MTAyNAo+ICAjZGVmaW5lIEk5MTVfUFJJT1JJVFlfTk9STUFMIDAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggZjA2OWMxZmFmOWE5Li40NDBiYWI4 NTZjYzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5j Cj4gQEAgLTY3NCwzMiArNjc0LDQyIEBAIHN0YXRpYyBib29sIGk5MTVfZ3VjX2RlcXVldWUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gIAlzcGluX2xvY2tfaXJxKCZlbmdpbmUt PnRpbWVsaW5lLT5sb2NrKTsKPiAgCXJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsKPiArCUdF TV9CVUdfT04ocmJfZmlyc3QoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpICE9IHJiKTsKPiAgCXdo aWxlIChyYikgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEgPQo+IC0JCQly Yl9lbnRyeShyYiwgdHlwZW9mKCpycSksIHByaW90cmVlLm5vZGUpOwo+IC0KPiAtCQlpZiAobGFz dCAmJiBycS0+Y3R4ICE9IGxhc3QtPmN0eCkgewo+IC0JCQlpZiAocG9ydCAhPSBlbmdpbmUtPmV4 ZWNsaXN0X3BvcnQpCj4gLQkJCQlicmVhazsKPiAtCj4gLQkJCXBvcnRfYXNzaWduKHBvcnQsIGxh c3QpOwo+IC0JCQlwb3J0Kys7Cj4gKwkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSByYl9lbnRy eShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpycSwgKnJuOwo+ICsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnEsIHJuLCAmcC0+ cmVxdWVzdHMsIHByaW90cmVlLmxpbmspIHsKPiArCQkJaWYgKGxhc3QgJiYgcnEtPmN0eCAhPSBs YXN0LT5jdHgpIHsKPiArCQkJCWlmIChwb3J0ICE9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCkgewo+ ICsJCQkJCV9fbGlzdF9kZWxfbWFueSgmcC0+cmVxdWVzdHMsCj4gKwkJCQkJCQkmcnEtPnByaW90 cmVlLmxpbmspOwo+ICsJCQkJCWdvdG8gZG9uZTsKPiArCQkJCX0KPiArCj4gKwkJCQlwb3J0X2Fz c2lnbihwb3J0LCBsYXN0KTsKPiArCQkJCXBvcnQrKzsKPiArCQkJfQo+ICsKPiArCQkJSU5JVF9M SVNUX0hFQUQoJnJxLT5wcmlvdHJlZS5saW5rKTsKPiArCQkJcnEtPnByaW90cmVlLnByaW9yaXR5 ID0gSU5UX01BWDsKPiArCj4gKwkJCWk5MTVfZ3VjX3N1Ym1pdChycSk7Cj4gKwkJCXRyYWNlX2k5 MTVfZ2VtX3JlcXVlc3RfaW4ocnEsIHBvcnQgLSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQpOwo+ICsJ CQlsYXN0ID0gcnE7Cj4gKwkJCXN1Ym1pdCA9IHRydWU7Cj4gIAkJfQo+Cj4gIAkJcmIgPSByYl9u ZXh0KHJiKTsKPiAtCQlyYl9lcmFzZSgmcnEtPnByaW90cmVlLm5vZGUsICZlbmdpbmUtPmV4ZWNs aXN0X3F1ZXVlKTsKPiAtCQlSQl9DTEVBUl9OT0RFKCZycS0+cHJpb3RyZWUubm9kZSk7Cj4gLQkJ cnEtPnByaW90cmVlLnByaW9yaXR5ID0gSU5UX01BWDsKPiAtCj4gLQkJaTkxNV9ndWNfc3VibWl0 KHJxKTsKPiAtCQl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X2luKHJxLCBwb3J0IC0gZW5naW5lLT5l eGVjbGlzdF9wb3J0KTsKPiAtCQlsYXN0ID0gcnE7Cj4gLQkJc3VibWl0ID0gdHJ1ZTsKPiArCQly Yl9lcmFzZSgmcC0+bm9kZSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+ICsJCUlOSVRfTElT VF9IRUFEKCZwLT5yZXF1ZXN0cyk7Cj4gKwkJaWYgKHAtPnByaW9yaXR5ICE9IEk5MTVfUFJJT1JJ VFlfTk9STUFMKQo+ICsJCQlrZnJlZShwKTsKPiAgCX0KPiAtCWlmIChzdWJtaXQpIHsKPiArZG9u ZToKPiArCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSByYjsKPiArCWlmIChzdWJtaXQpCj4gIAkJ cG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7Cj4gLQkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9IHJi Owo+IC0JfQo+ICAJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPgo+ ICAJcmV0dXJuIHN1Ym1pdDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV91dGlscy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gaW5kZXggZDlk ZjIzNzk1ZjlhLi4xNmVjZDFhYjEwOGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV91dGlscy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5o Cj4gQEAgLTEwNSw0ICsxMDUsMTMgQEAKPiAgCV9faWR4OwkJCQkJCQkJXAo+ICB9KQo+Cj4gKyNp bmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2Rl bF9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCj4gKwkJCQkgICBzdHJ1Y3QgbGlzdF9oZWFk ICpmaXJzdCkKPiArewo+ICsJZmlyc3QtPnByZXYgPSBoZWFkOwo+ICsJV1JJVEVfT05DRShoZWFk LT5uZXh0LCBmaXJzdCk7Cj4gK30KPiArCj4gICNlbmRpZiAvKiAhX19JOTE1X1VUSUxTX0ggKi8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDlkNzg5YWRlMTMwOC4uODQ5YjM1Nzk2 ZGU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtNDM2LDU3ICs0MzYsNzYg QEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+Cj4gIAlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiAg CXJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsKPiArCUdFTV9CVUdfT04ocmJfZmlyc3QoJmVu Z2luZS0+ZXhlY2xpc3RfcXVldWUpICE9IHJiKTsKPiAgCXdoaWxlIChyYikgewo+IC0JCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29yID0KPiAtCQkJcmJfZW50cnkocmIsIHR5cGVv ZigqY3Vyc29yKSwgcHJpb3RyZWUubm9kZSk7Cj4gLQo+IC0JCS8qIENhbiB3ZSBjb21iaW5lIHRo aXMgcmVxdWVzdCB3aXRoIHRoZSBjdXJyZW50IHBvcnQ/IEl0IGhhcyB0bwo+IC0JCSAqIGJlIHRo ZSBzYW1lIGNvbnRleHQvcmluZ2J1ZmZlciBhbmQgbm90IGhhdmUgYW55IGV4Y2VwdGlvbnMKPiAt CQkgKiAoZS5nLiBHVlQgc2F5aW5nIG5ldmVyIHRvIGNvbWJpbmUgY29udGV4dHMpLgo+IC0JCSAq Cj4gLQkJICogSWYgd2UgY2FuIGNvbWJpbmUgdGhlIHJlcXVlc3RzLCB3ZSBjYW4gZXhlY3V0ZSBi b3RoIGJ5Cj4gLQkJICogdXBkYXRpbmcgdGhlIFJJTkdfVEFJTCB0byBwb2ludCB0byB0aGUgZW5k IG9mIHRoZSBzZWNvbmQKPiAtCQkgKiByZXF1ZXN0LCBhbmQgc28gd2UgbmV2ZXIgbmVlZCB0byB0 ZWxsIHRoZSBoYXJkd2FyZSBhYm91dAo+IC0JCSAqIHRoZSBmaXJzdC4KPiAtCQkgKi8KPiAtCQlp ZiAobGFzdCAmJiAhY2FuX21lcmdlX2N0eChjdXJzb3ItPmN0eCwgbGFzdC0+Y3R4KSkgewo+IC0J CQkvKiBJZiB3ZSBhcmUgb24gdGhlIHNlY29uZCBwb3J0IGFuZCBjYW5ub3QgY29tYmluZQo+IC0J CQkgKiB0aGlzIHJlcXVlc3Qgd2l0aCB0aGUgbGFzdCwgdGhlbiB3ZSBhcmUgZG9uZS4KPiAtCQkJ ICovCj4gLQkJCWlmIChwb3J0ICE9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCkKPiAtCQkJCWJyZWFr Owo+IC0KPiAtCQkJLyogSWYgR1ZUIG92ZXJyaWRlcyB1cyB3ZSBvbmx5IGV2ZXIgc3VibWl0IHBv cnRbMF0sCj4gLQkJCSAqIGxlYXZpbmcgcG9ydFsxXSBlbXB0eS4gTm90ZSB0aGF0IHdlIGFsc28g aGF2ZQo+IC0JCQkgKiB0byBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcXVldWUgdGhlIHNhbWUK PiAtCQkJICogY29udGV4dCAoZXZlbiB0aG91Z2ggYSBkaWZmZXJlbnQgcmVxdWVzdCkgdG8KPiAt CQkJICogdGhlIHNlY29uZCBwb3J0Lgo+ICsJCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gcmJf ZW50cnkocmIsIHR5cGVvZigqcCksIG5vZGUpOwo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcnEsICpybjsKPiArCj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJxLCBybiwg JnAtPnJlcXVlc3RzLCBwcmlvdHJlZS5saW5rKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIENhbiB3ZSBj b21iaW5lIHRoaXMgcmVxdWVzdCB3aXRoIHRoZSBjdXJyZW50IHBvcnQ/Cj4gKwkJCSAqIEl0IGhh cyB0byBiZSB0aGUgc2FtZSBjb250ZXh0L3JpbmdidWZmZXIgYW5kIG5vdAo+ICsJCQkgKiBoYXZl IGFueSBleGNlcHRpb25zIChlLmcuIEdWVCBzYXlpbmcgbmV2ZXIgdG8KPiArCQkJICogY29tYmlu ZSBjb250ZXh0cykuCj4gKwkJCSAqCj4gKwkJCSAqIElmIHdlIGNhbiBjb21iaW5lIHRoZSByZXF1 ZXN0cywgd2UgY2FuIGV4ZWN1dGUgYm90aAo+ICsJCQkgKiBieSB1cGRhdGluZyB0aGUgUklOR19U QUlMIHRvIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlCj4gKwkJCSAqIHNlY29uZCByZXF1ZXN0LCBh bmQgc28gd2UgbmV2ZXIgbmVlZCB0byB0ZWxsIHRoZQo+ICsJCQkgKiBoYXJkd2FyZSBhYm91dCB0 aGUgZmlyc3QuCj4gIAkJCSAqLwo+IC0JCQlpZiAoY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24o bGFzdC0+Y3R4KSB8fAo+IC0JCQkgICAgY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24oY3Vyc29y LT5jdHgpKQo+IC0JCQkJYnJlYWs7Cj4gKwkJCWlmIChsYXN0ICYmICFjYW5fbWVyZ2VfY3R4KHJx LT5jdHgsIGxhc3QtPmN0eCkpIHsKPiArCQkJCS8qCj4gKwkJCQkgKiBJZiB3ZSBhcmUgb24gdGhl IHNlY29uZCBwb3J0IGFuZCBjYW5ub3QKPiArCQkJCSAqIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdp dGggdGhlIGxhc3QsIHRoZW4gd2UKPiArCQkJCSAqIGFyZSBkb25lLgo+ICsJCQkJICovCj4gKwkJ CQlpZiAocG9ydCAhPSBlbmdpbmUtPmV4ZWNsaXN0X3BvcnQpIHsKPiArCQkJCQlfX2xpc3RfZGVs X21hbnkoJnAtPnJlcXVlc3RzLAo+ICsJCQkJCQkJJnJxLT5wcmlvdHJlZS5saW5rKTsKPiArCQkJ CQlnb3RvIGRvbmU7Cj4gKwkJCQl9Cj4gKwo+ICsJCQkJLyoKPiArCQkJCSAqIElmIEdWVCBvdmVy cmlkZXMgdXMgd2Ugb25seSBldmVyIHN1Ym1pdAo+ICsJCQkJICogcG9ydFswXSwgbGVhdmluZyBw b3J0WzFdIGVtcHR5LiBOb3RlIHRoYXQgd2UKPiArCQkJCSAqIGFsc28gaGF2ZSB0byBiZSBjYXJl ZnVsIHRoYXQgd2UgZG9uJ3QgcXVldWUKPiArCQkJCSAqIHRoZSBzYW1lIGNvbnRleHQgKGV2ZW4g dGhvdWdoIGEgZGlmZmVyZW50Cj4gKwkJCQkgKiByZXF1ZXN0KSB0byB0aGUgc2Vjb25kIHBvcnQu Cj4gKwkJCQkgKi8KPiArCQkJCWlmIChjdHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihsYXN0LT5j dHgpIHx8Cj4gKwkJCQkgICAgY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Npb24ocnEtPmN0eCkpIHsK PiArCQkJCQlfX2xpc3RfZGVsX21hbnkoJnAtPnJlcXVlc3RzLAo+ICsJCQkJCQkJJnJxLT5wcmlv dHJlZS5saW5rKTsKPiArCQkJCQlnb3RvIGRvbmU7Cj4gKwkJCQl9Cj4gKwo+ICsJCQkJR0VNX0JV R19PTihsYXN0LT5jdHggPT0gcnEtPmN0eCk7Cj4gKwo+ICsJCQkJaWYgKHN1Ym1pdCkKPiArCQkJ CQlwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKPiArCQkJCXBvcnQrKzsKPiArCQkJfQo+Cj4gLQkJ CUdFTV9CVUdfT04obGFzdC0+Y3R4ID09IGN1cnNvci0+Y3R4KTsKPiArCQkJSU5JVF9MSVNUX0hF QUQoJnJxLT5wcmlvdHJlZS5saW5rKTsKPiArCQkJcnEtPnByaW90cmVlLnByaW9yaXR5ID0gSU5U X01BWDsKPgo+IC0JCQlpZiAoc3VibWl0KQo+IC0JCQkJcG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7 Cj4gLQkJCXBvcnQrKzsKPiArCQkJX19pOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gKwkJ CXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3RfaW4ocnEsCj4gKwkJCQkJCSAgcG9ydCAtIGVuZ2luZS0+ ZXhlY2xpc3RfcG9ydCk7Cj4gKwkJCWxhc3QgPSBycTsKPiArCQkJc3VibWl0ID0gdHJ1ZTsKPiAg CQl9Cj4KPiAgCQlyYiA9IHJiX25leHQocmIpOwo+IC0JCXJiX2VyYXNlKCZjdXJzb3ItPnByaW90 cmVlLm5vZGUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPiAtCQlSQl9DTEVBUl9OT0RFKCZj dXJzb3ItPnByaW90cmVlLm5vZGUpOwo+IC0JCWN1cnNvci0+cHJpb3RyZWUucHJpb3JpdHkgPSBJ TlRfTUFYOwo+IC0KPiAtCQlfX2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KGN1cnNvcik7Cj4gLQkJ dHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9pbihjdXJzb3IsIHBvcnQgLSBlbmdpbmUtPmV4ZWNsaXN0 X3BvcnQpOwo+IC0JCWxhc3QgPSBjdXJzb3I7Cj4gLQkJc3VibWl0ID0gdHJ1ZTsKPiArCQlyYl9l cmFzZSgmcC0+bm9kZSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+ICsJCUlOSVRfTElTVF9I RUFEKCZwLT5yZXF1ZXN0cyk7Cj4gKwkJaWYgKHAtPnByaW9yaXR5ICE9IEk5MTVfUFJJT1JJVFlf Tk9STUFMKQo+ICsJCQlrZnJlZShwKTsKPiAgCX0KPiAtCWlmIChzdWJtaXQpIHsKPiArZG9uZToK PiArCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSByYjsKPiArCWlmIChzdWJtaXQpCj4gIAkJcG9y dF9hc3NpZ24ocG9ydCwgbGFzdCk7Cj4gLQkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9IHJiOwo+ IC0JfQo+ICAJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPgo+ICAJ aWYgKHN1Ym1pdCkKPiBAQCAtNjEwLDI4ICs2MjksNTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHJj X2lycV9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKPiAgCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0KGRldl9wcml2LCBlbmdpbmUtPmZ3X2RvbWFpbnMpOwo+ICB9Cj4KPiAtc3RhdGljIGJv b2wgaW5zZXJ0X3JlcXVlc3Qoc3RydWN0IGk5MTVfcHJpb3RyZWUgKnB0LCBzdHJ1Y3QgcmJfcm9v dCAqcm9vdCkKPiArc3RhdGljIGJvb2wKPiAraW5zZXJ0X3JlcXVlc3Qoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+ICsJICAgICAgIHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCwKPiAr CSAgICAgICBpbnQgcHJpbykKPiAgewo+IC0Jc3RydWN0IHJiX25vZGUgKipwLCAqcmI7Cj4gKwlz dHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcDsKPiArCXN0cnVjdCByYl9ub2RlICoqcGFyZW50LCAqcmI7 Cj4gIAlib29sIGZpcnN0ID0gdHJ1ZTsKPgo+ICtmaW5kX3ByaW9saXN0Ogo+ICAJLyogbW9zdCBw b3NpdGl2ZSBwcmlvcml0eSBpcyBzY2hlZHVsZWQgZmlyc3QsIGVxdWFsIHByaW9yaXRpZXMgZmlm byAqLwo+ICAJcmIgPSBOVUxMOwo+IC0JcCA9ICZyb290LT5yYl9ub2RlOwo+IC0Jd2hpbGUgKCpw KSB7Cj4gLQkJc3RydWN0IGk5MTVfcHJpb3RyZWUgKnBvczsKPiAtCj4gLQkJcmIgPSAqcDsKPiAt CQlwb3MgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpwb3MpLCBub2RlKTsKPiAtCQlpZiAocHQtPnBy aW9yaXR5ID4gcG9zLT5wcmlvcml0eSkgewo+IC0JCQlwID0gJnJiLT5yYl9sZWZ0Owo+IC0JCX0g ZWxzZSB7Cj4gLQkJCXAgPSAmcmItPnJiX3JpZ2h0Owo+ICsJcGFyZW50ID0gJmVuZ2luZS0+ZXhl Y2xpc3RfcXVldWUucmJfbm9kZTsKPiArCXdoaWxlICgqcGFyZW50KSB7Cj4gKwkJcmIgPSAqcGFy ZW50Owo+ICsJCXAgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7Cj4gKwkJaWYgKHBy aW8gPiBwLT5wcmlvcml0eSkgewo+ICsJCQlwYXJlbnQgPSAmcmItPnJiX2xlZnQ7Cj4gKwkJfSBl bHNlIGlmIChwcmlvIDwgcC0+cHJpb3JpdHkpIHsKPiArCQkJcGFyZW50ID0gJnJiLT5yYl9yaWdo dDsKPiAgCQkJZmlyc3QgPSBmYWxzZTsKPiArCQl9IGVsc2Ugewo+ICsJCQlsaXN0X2FkZF90YWls KCZwdC0+bGluaywgJnAtPnJlcXVlc3RzKTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0KPiAr CX0KPiArCj4gKwlpZiAocHJpbyA9PSBJOTE1X1BSSU9SSVRZX05PUk1BTCkgewo+ICsJCXAgPSAm ZW5naW5lLT5kZWZhdWx0X3ByaW9saXN0Owo+ICsJfSBlbHNlIHsKPiArCQlwID0ga21hbGxvYyhz aXplb2YoKnApLCBHRlBfQVRPTUlDKTsKCkkgYW0gYmFjayB0byBiZWluZyBuZXJ2b3VzIGFib3V0 IHRoaXMuCgpJIGRvbid0IHNlZSB0aGF0IGV2ZW4gd2l0aCBhIGRlZGljYXRlZCBzbGFiIHdlIGNh biBjb250cm9sIHRoZSBudW1iZXIgb2YgCnNwYXJlIG9iamVjdHMga2VwdCBhcm91bmQgYW5kIGFs c28gY2Fubm90IHR1cm4gb2ZmIHRoZSBtZXJnaW5nLiBJZiBvbmx5IAp0aGVyZSB3YXMgc29tZXRo aW5nIGxpa2UgU0xBQl9OT19NRVJHRSBhbmQga21lbV9jYWNoZV9wcmVhbGxvY2F0ZShjYWNoZSwg Cm4pLiBXaXRoIHRoYXQgd2Ugd291bGQgYmUgYWJsZSB0byBrZWVwIHNvbWUgYW1vdW50IG9mIHJl YWR5IG9iamVjdHMgaW4gCnRoZSBjYWNoZS4KCkFzIGFuIGFsdGVybmF0aXZlIEkgd2FzIHRoaW5r aW5nIGFib3V0IGhvdyBoYXJkIHdvdWxkIGl0IGJlIHRvIGtlZXAgdGhlIApwcmlvcml0eSBsZXZl bHMgYXJvdW5kIGV2ZW4gd2hlbiBsaXN0cyBiZWNvbWUgZW1wdHk/IEFuZCBvbmx5IHBydW5lIGZy b20gCnRoZSBzaHJpbmtlciBwZXJoYXBzPyBPciBmcm9tIHRoZSBpZGxlIHdvcmtlciBpZiB3ZSBn ZXQgdG8gc29tZSBsYXJnZXIgCm51bWJlciBvZiBwcmlvcml0eSBsZXZlbHMuCgpSZWdhcmRzLAoK VHZydGtvCgo+ICsJCS8qIENvbnZlcnQgYW4gYWxsb2NhdGlvbiBmYWlsdXJlIHRvIGEgcHJpb3Jp dHkgYnVtcCAqLwo+ICsJCWlmICh1bmxpa2VseSghcCkpIHsKPiArCQkJcHJpbyA9IEk5MTVfUFJJ T1JJVFlfTk9STUFMOyAvKiByZWN1cnNlcyBqdXN0IG9uY2UgKi8KPiArCQkJZ290byBmaW5kX3By aW9saXN0Owo+ICAJCX0KPiAgCX0KPiAtCXJiX2xpbmtfbm9kZSgmcHQtPm5vZGUsIHJiLCBwKTsK PiAtCXJiX2luc2VydF9jb2xvcigmcHQtPm5vZGUsIHJvb3QpOwo+ICsKPiArCXAtPnByaW9yaXR5 ID0gcHJpbzsKPiArCXJiX2xpbmtfbm9kZSgmcC0+bm9kZSwgcmIsIHBhcmVudCk7Cj4gKwlyYl9p bnNlcnRfY29sb3IoJnAtPm5vZGUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPiArCj4gKwlJ TklUX0xJU1RfSEVBRCgmcC0+cmVxdWVzdHMpOwo+ICsJbGlzdF9hZGRfdGFpbCgmcHQtPmxpbmss ICZwLT5yZXF1ZXN0cyk7Cj4gKwo+ICsJaWYgKGZpcnN0KQo+ICsJCWVuZ2luZS0+ZXhlY2xpc3Rf Zmlyc3QgPSAmcC0+bm9kZTsKPgo+ICAJcmV0dXJuIGZpcnN0Owo+ICB9Cj4gQEAgLTY0NCwxMiAr Njg4LDE2IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkvKiBXaWxsIGJlIGNhbGxlZCBmcm9tIGly cS1jb250ZXh0IHdoZW4gdXNpbmcgZm9yZWlnbiBmZW5jZXMuICovCj4gIAlzcGluX2xvY2tfaXJx c2F2ZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+Cj4gLQlpZiAoaW5zZXJ0X3Jl cXVlc3QoJnJlcXVlc3QtPnByaW90cmVlLCAmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSkpIHsKPiAt CQllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gJnJlcXVlc3QtPnByaW90cmVlLm5vZGU7Cj4gKwlp ZiAoaW5zZXJ0X3JlcXVlc3QoZW5naW5lLAo+ICsJCQkgICAmcmVxdWVzdC0+cHJpb3RyZWUsCj4g KwkJCSAgIHJlcXVlc3QtPnByaW90cmVlLnByaW9yaXR5KSkgewo+ICAJCWlmIChleGVjbGlzdHNf ZWxzcF9yZWFkeShlbmdpbmUpKQo+ICAJCQl0YXNrbGV0X2hpX3NjaGVkdWxlKCZlbmdpbmUtPmly cV90YXNrbGV0KTsKPiAgCX0KPgo+ICsJR0VNX0JVR19PTighZW5naW5lLT5leGVjbGlzdF9maXJz dCk7Cj4gKwlHRU1fQlVHX09OKGxpc3RfZW1wdHkoJnJlcXVlc3QtPnByaW90cmVlLmxpbmspKTsK PiArCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBm bGFncyk7Cj4gIH0KPgo+IEBAIC03MzQsMTAgKzc4Miw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19zY2hlZHVsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIGludCBwcmlv KQo+ICAJCQljb250aW51ZTsKPgo+ICAJCXB0LT5wcmlvcml0eSA9IHByaW87Cj4gLQkJaWYgKCFS Ql9FTVBUWV9OT0RFKCZwdC0+bm9kZSkpIHsKPiAtCQkJcmJfZXJhc2UoJnB0LT5ub2RlLCAmZW5n aW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gLQkJCWlmIChpbnNlcnRfcmVxdWVzdChwdCwgJmVuZ2lu ZS0+ZXhlY2xpc3RfcXVldWUpKQo+IC0JCQkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9ICZwdC0+ bm9kZTsKPiArCQlpZiAoIWxpc3RfZW1wdHkoJnB0LT5saW5rKSkgewo+ICsJCQlfX2xpc3RfZGVs X2VudHJ5KCZwdC0+bGluayk7Cj4gKwkJCWluc2VydF9yZXF1ZXN0KGVuZ2luZSwgcHQsIHByaW8p Owo+ICAJCX0KPiAgCX0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK PiBpbmRleCBjMzgwZjNhYzhhMzkuLjBjYTZmNWMzZjlhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMTc3LDYgKzE3NywxMiBAQCBlbnVtIGludGVs X2VuZ2luZV9pZCB7Cj4gIAlWRUNTCj4gIH07Cj4KPiArc3RydWN0IGk5MTVfcHJpb2xpc3Qgewo+ ICsJc3RydWN0IHJiX25vZGUgbm9kZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7Cj4g KwlpbnQgcHJpb3JpdHk7Cj4gK307Cj4gKwo+ICAjZGVmaW5lIElOVEVMX0VOR0lORV9DU19NQVhf TkFNRSA4Cj4KPiAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gQEAgLTM2Nyw2ICszNzMsNyBA QCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPgo+ICAJLyogRXhlY2xpc3RzICovCj4gIAlzdHJ1 Y3QgdGFza2xldF9zdHJ1Y3QgaXJxX3Rhc2tsZXQ7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCBk ZWZhdWx0X3ByaW9saXN0Owo+ICAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgewo+ICAJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdF9jb3VudDsKPiAgI2RlZmluZSBFWEVDTElTVF9D T1VOVF9CSVRTIDIKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK