From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 16/40] drm/i915: Pull scheduling under standalone lock Date: Mon, 24 Sep 2018 12:19:39 +0100 Message-ID: <87b3f6f7-ccfa-9ef4-6f32-62db78621964@linux.intel.com> References: <20180919195544.1511-1-chris@chris-wilson.co.uk> <20180919195544.1511-16-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3CEA389D61 for ; Mon, 24 Sep 2018 11:19:51 +0000 (UTC) In-Reply-To: <20180919195544.1511-16-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 Ck9uIDE5LzA5LzIwMTggMjA6NTUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHksIHRo ZSBiYWNrZW5kIHNjaGVkdWxpbmcgY29kZSBhYnVzZXMgc3RydWN0X211dGV4IGludG8gb3JkZXIg dG8KPiBoYXZlIGEgZ2xvYmFsIGxvY2sgdG8gbWFuaXB1bGF0ZSBhIHRlbXBvcmFyeSBsaXN0ICh3 aXRob3V0IHdpZGVzcHJlYWQKPiBhbGxvY2F0aW9uKSBhbmQgdG8gcHJvdGVjdCBhZ2FpbnN0IGxp c3QgbW9kaWZpY2F0aW9ucy4gVGhpcyBpcyBhbgo+IGV4dHJhbmVvdXMgY291cGxpbmcgdG8gc3Ry dWN0X211dGV4IGFuZCBmdXJ0aGVyIGNhbiBub3QgZXh0ZW5kIGJleW9uZAo+IHRoZSBsb2NhbCBk ZXZpY2UuCj4gCj4gUHVsbCBhbGwgdGhlIGNvZGUgdGhhdCBuZWVkcyB0byBiZSB1bmRlciB0aGUg b25lIHRydWUgbG9jayBpbnRvCj4gaTkxNV9zY2hlZHVsZXIuYywgYW5kIG1ha2UgaXQgc28uCj4g Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEg Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgIHwgIDg1IC0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgIHwgICA4IC0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgICB8IDM3NyArKysrKysrKysr KysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgg ICB8ICAyNSArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwg ICAzICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAyNjgg Ky0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaCB8ICAgNSArLQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCA0MTEgaW5zZXJ0aW9ucygrKSwgMzYx IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc2NoZWR1bGVyLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDU3OTRmMTAy ZjliOC4uZWYxNDgwYzE0ZTRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNzUsNiAr NzUsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ICAgCSAgaTkxNV9nZW1mcy5v IFwKPiAgIAkgIGk5MTVfcXVlcnkubyBcCj4gICAJICBpOTE1X3JlcXVlc3QubyBcCj4gKwkgIGk5 MTVfc2NoZWR1bGVyLm8gXAo+ICAgCSAgaTkxNV90aW1lbGluZS5vIFwKPiAgIAkgIGk5MTVfdHJh Y2VfcG9pbnRzLm8gXAo+ICAgCSAgaTkxNV92bWEubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMKPiBpbmRleCA1NjE0MGNhMDU0ZTguLmQ3M2FkNDkwYTI2MSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gQEAgLTExMSw5MSArMTExLDYgQEAgaTkxNV9yZXF1 ZXN0X3JlbW92ZV9mcm9tX2NsaWVudChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAg CXNwaW5fdW5sb2NrKCZmaWxlX3ByaXYtPm1tLmxvY2spOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBz dHJ1Y3QgaTkxNV9kZXBlbmRlbmN5ICoKPiAtaTkxNV9kZXBlbmRlbmN5X2FsbG9jKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17Cj4gLQlyZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhp OTE1LT5kZXBlbmRlbmNpZXMsIEdGUF9LRVJORUwpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZAo+ IC1pOTE1X2RlcGVuZGVuY3lfZnJlZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAt CQkgICAgIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKmRlcCkKPiAtewo+IC0Ja21lbV9jYWNoZV9m cmVlKGk5MTUtPmRlcGVuZGVuY2llcywgZGVwKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAt X19pOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAq bm9kZSwKPiAtCQkJCSBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpzaWduYWwsCj4gLQkJCQkgc3Ry dWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwLAo+IC0JCQkJIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4g LXsKPiAtCUlOSVRfTElTVF9IRUFEKCZkZXAtPmRmc19saW5rKTsKPiAtCWxpc3RfYWRkKCZkZXAt PndhaXRfbGluaywgJnNpZ25hbC0+d2FpdGVyc19saXN0KTsKPiAtCWxpc3RfYWRkKCZkZXAtPnNp Z25hbF9saW5rLCAmbm9kZS0+c2lnbmFsZXJzX2xpc3QpOwo+IC0JZGVwLT5zaWduYWxlciA9IHNp Z25hbDsKPiAtCWRlcC0+ZmxhZ3MgPSBmbGFnczsKPiAtfQo+IC0KPiAtc3RhdGljIGludAo+IC1p OTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gLQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlLAo+IC0JCQkgICAg ICAgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqc2lnbmFsKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9k ZXBlbmRlbmN5ICpkZXA7Cj4gLQo+IC0JZGVwID0gaTkxNV9kZXBlbmRlbmN5X2FsbG9jKGk5MTUp Owo+IC0JaWYgKCFkZXApCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+IC0JX19pOTE1X3NjaGVk X25vZGVfYWRkX2RlcGVuZGVuY3kobm9kZSwgc2lnbmFsLCBkZXAsCj4gLQkJCQkJIEk5MTVfREVQ RU5ERU5DWV9BTExPQyk7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAt aTkxNV9zY2hlZF9ub2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJ ICAgICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9k ZXBlbmRlbmN5ICpkZXAsICp0bXA7Cj4gLQo+IC0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmbm9k ZS0+bGluaykpOwo+IC0KPiAtCS8qCj4gLQkgKiBFdmVyeW9uZSB3ZSBkZXBlbmRlZCB1cG9uICh0 aGUgZmVuY2VzIHdlIHdhaXQgdG8gYmUgc2lnbmFsZWQpCj4gLQkgKiBzaG91bGQgcmV0aXJlIGJl Zm9yZSB1cyBhbmQgcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSBvdXIgbGlzdC4KPiAtCSAqIEhvd2V2 ZXIsIHJldGlyZW1lbnQgaXMgcnVuIGluZGVwZW5kZW50bHkgb24gZWFjaCB0aW1lbGluZSBhbmQK PiAtCSAqIHNvIHdlIG1heSBiZSBjYWxsZWQgb3V0LW9mLW9yZGVyLgo+IC0JICovCj4gLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVwLCB0bXAsICZub2RlLT5zaWduYWxlcnNfbGlzdCwgc2ln bmFsX2xpbmspIHsKPiAtCQlHRU1fQlVHX09OKCFpOTE1X3NjaGVkX25vZGVfc2lnbmFsZWQoZGVw LT5zaWduYWxlcikpOwo+IC0JCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmRlcC0+ZGZzX2xpbmsp KTsKPiAtCj4gLQkJbGlzdF9kZWwoJmRlcC0+d2FpdF9saW5rKTsKPiAtCQlpZiAoZGVwLT5mbGFn cyAmIEk5MTVfREVQRU5ERU5DWV9BTExPQykKPiAtCQkJaTkxNV9kZXBlbmRlbmN5X2ZyZWUoaTkx NSwgZGVwKTsKPiAtCX0KPiAtCj4gLQkvKiBSZW1vdmUgb3Vyc2VsdmVzIGZyb20gZXZlcnlvbmUg d2hvIGRlcGVuZHMgdXBvbiB1cyAqLwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlcCwg dG1wLCAmbm9kZS0+d2FpdGVyc19saXN0LCB3YWl0X2xpbmspIHsKPiAtCQlHRU1fQlVHX09OKGRl cC0+c2lnbmFsZXIgIT0gbm9kZSk7Cj4gLQkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmZGVwLT5k ZnNfbGluaykpOwo+IC0KPiAtCQlsaXN0X2RlbCgmZGVwLT5zaWduYWxfbGluayk7Cj4gLQkJaWYg KGRlcC0+ZmxhZ3MgJiBJOTE1X0RFUEVOREVOQ1lfQUxMT0MpCj4gLQkJCWk5MTVfZGVwZW5kZW5j eV9mcmVlKGk5MTUsIGRlcCk7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkCj4gLWk5MTVf c2NoZWRfbm9kZV9pbml0KHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUpCj4gLXsKPiAtCUlO SVRfTElTVF9IRUFEKCZub2RlLT5zaWduYWxlcnNfbGlzdCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgm bm9kZS0+d2FpdGVyc19saXN0KTsKPiAtCUlOSVRfTElTVF9IRUFEKCZub2RlLT5saW5rKTsKPiAt CW5vZGUtPmF0dHIucHJpb3JpdHkgPSBJOTE1X1BSSU9SSVRZX0lOVkFMSUQ7Cj4gLX0KPiAtCj4g ICBzdGF0aWMgaW50IHJlc2V0X2FsbF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsIHUzMiBzZXFubykKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBpbmRleCA3ZmE5NGIwMjQ5 NjguLjVmNzM2MWUwZmNhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4g QEAgLTMzMiwxNCArMzMyLDYgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF9jb21w bGV0ZWQoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJcmV0dXJuIF9faTkxNV9y ZXF1ZXN0X2NvbXBsZXRlZChycSwgc2Vxbm8pOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbmxpbmUg Ym9vbCBpOTE1X3NjaGVkX25vZGVfc2lnbmFsZWQoY29uc3Qgc3RydWN0IGk5MTVfc2NoZWRfbm9k ZSAqbm9kZSkKPiAtewo+IC0JY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEgPQo+IC0JCWNv bnRhaW5lcl9vZihub2RlLCBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0LCBzY2hlZCk7Cj4gLQo+ IC0JcmV0dXJuIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpOwo+IC19Cj4gLQo+ICAgdm9pZCBp OTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICAK PiAgIC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjkxMGFjNzA4OTU5Ngo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gQEAgLTAs MCArMSwzNzcgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsg Kgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4g KyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4g KyNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiArI2luY2x1ZGUgImk5MTVfc2NoZWR1bGVyLmgi Cj4gKwo+ICtzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHNjaGVkdWxlX2xvY2spOwoKQW55IGdvb2Qg ZXhjdXNlcyB0byBub3QgcHV0IGl0IGludG8gZGV2aWNlIHByaXZhdGUgc3RyYWlnaHQgYXdheT8K Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gK25vZGVfdG9fcmVx dWVzdChjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQo+ICt7Cj4gKwlyZXR1cm4g Y29udGFpbmVyX29mKG5vZGUsIGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QsIHNjaGVkKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIG5vZGVfc2lnbmFsZWQoY29uc3Qgc3RydWN0IGk5 MTVfc2NoZWRfbm9kZSAqbm9kZSkKPiArewo+ICsJcmV0dXJuIGk5MTVfcmVxdWVzdF9jb21wbGV0 ZWQobm9kZV90b19yZXF1ZXN0KG5vZGUpKTsKPiArfQo+ICsKPiArdm9pZCBpOTE1X3NjaGVkX25v ZGVfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQo+ICt7Cj4gKwlJTklUX0xJU1Rf SEVBRCgmbm9kZS0+c2lnbmFsZXJzX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJm5vZGUtPndh aXRlcnNfbGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmbm9kZS0+bGluayk7Cj4gKwlub2RlLT5h dHRyLnByaW9yaXR5ID0gSTkxNV9QUklPUklUWV9JTlZBTElEOwo+ICt9Cj4gKwo+ICtzdGF0aWMg c3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqCj4gK2k5MTVfZGVwZW5kZW5jeV9hbGxvYyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJcmV0dXJuIGttZW1fY2FjaGVfYWxsb2Mo aTkxNS0+ZGVwZW5kZW5jaWVzLCBHRlBfS0VSTkVMKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQK PiAraTkxNV9kZXBlbmRlbmN5X2ZyZWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g KwkJICAgICBzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5ICpkZXApCj4gK3sKPiArCWttZW1fY2FjaGVf ZnJlZShpOTE1LT5kZXBlbmRlbmNpZXMsIGRlcCk7Cj4gK30KPiArCj4gK2Jvb2wgX19pOTE1X3Nj aGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiAr CQkJCSAgICAgIHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKnNpZ25hbCwKPiArCQkJCSAgICAgIHN0 cnVjdCBpOTE1X2RlcGVuZGVuY3kgKmRlcCwKPiArCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3MpCj4gK3sKPiArCWJvb2wgcmV0ID0gZmFsc2U7Cj4gKwo+ICsJc3Bpbl9sb2NrKCZzY2hlZHVs ZV9sb2NrKTsKPiArCj4gKwlpZiAoIW5vZGVfc2lnbmFsZWQoc2lnbmFsKSkgewo+ICsJCUlOSVRf TElTVF9IRUFEKCZkZXAtPmRmc19saW5rKTsKPiArCQlsaXN0X2FkZCgmZGVwLT53YWl0X2xpbmss ICZzaWduYWwtPndhaXRlcnNfbGlzdCk7Cj4gKwkJbGlzdF9hZGQoJmRlcC0+c2lnbmFsX2xpbmss ICZub2RlLT5zaWduYWxlcnNfbGlzdCk7Cj4gKwkJZGVwLT5zaWduYWxlciA9IHNpZ25hbDsKPiAr CQlkZXAtPmZsYWdzID0gZmxhZ3M7Cj4gKwo+ICsJCXJldCA9IHRydWU7Cj4gKwl9Cj4gKwo+ICsJ c3Bpbl91bmxvY2soJnNjaGVkdWxlX2xvY2spOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK2ludCBpOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gKwkJCQkgICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlLAo+ICsJ CQkJICAgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqc2lnbmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkx NV9kZXBlbmRlbmN5ICpkZXA7Cj4gKwo+ICsJZGVwID0gaTkxNV9kZXBlbmRlbmN5X2FsbG9jKGk5 MTUpOwo+ICsJaWYgKCFkZXApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJaWYgKCFfX2k5 MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShub2RlLCBzaWduYWwsIGRlcCwKPiArCQkJCQkg ICAgICBJOTE1X0RFUEVOREVOQ1lfQUxMT0MpKQo+ICsJCWk5MTVfZGVwZW5kZW5jeV9mcmVlKGk5 MTUsIGRlcCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9zY2hlZF9u b2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJCSAgc3RydWN0IGk5 MTVfc2NoZWRfbm9kZSAqbm9kZSkKPiArewo+ICsJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVw LCAqdG1wOwo+ICsKPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJm5vZGUtPmxpbmspKTsKPiAr Cj4gKwlzcGluX2xvY2soJnNjaGVkdWxlX2xvY2spOwo+ICsKPiArCS8qCj4gKwkgKiBFdmVyeW9u ZSB3ZSBkZXBlbmRlZCB1cG9uICh0aGUgZmVuY2VzIHdlIHdhaXQgdG8gYmUgc2lnbmFsZWQpCj4g KwkgKiBzaG91bGQgcmV0aXJlIGJlZm9yZSB1cyBhbmQgcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSBv dXIgbGlzdC4KPiArCSAqIEhvd2V2ZXIsIHJldGlyZW1lbnQgaXMgcnVuIGluZGVwZW5kZW50bHkg b24gZWFjaCB0aW1lbGluZSBhbmQKPiArCSAqIHNvIHdlIG1heSBiZSBjYWxsZWQgb3V0LW9mLW9y ZGVyLgo+ICsJICovCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVwLCB0bXAsICZub2Rl LT5zaWduYWxlcnNfbGlzdCwgc2lnbmFsX2xpbmspIHsKPiArCQlHRU1fQlVHX09OKCFub2RlX3Np Z25hbGVkKGRlcC0+c2lnbmFsZXIpKTsKPiArCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZkZXAt PmRmc19saW5rKSk7Cj4gKwo+ICsJCWxpc3RfZGVsKCZkZXAtPndhaXRfbGluayk7Cj4gKwkJaWYg KGRlcC0+ZmxhZ3MgJiBJOTE1X0RFUEVOREVOQ1lfQUxMT0MpCj4gKwkJCWk5MTVfZGVwZW5kZW5j eV9mcmVlKGk5MTUsIGRlcCk7Cj4gKwl9Cj4gKwo+ICsJLyogUmVtb3ZlIG91cnNlbHZlcyBmcm9t IGV2ZXJ5b25lIHdobyBkZXBlbmRzIHVwb24gdXMgKi8KPiArCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShkZXAsIHRtcCwgJm5vZGUtPndhaXRlcnNfbGlzdCwgd2FpdF9saW5rKSB7Cj4gKwkJR0VN X0JVR19PTihkZXAtPnNpZ25hbGVyICE9IG5vZGUpOwo+ICsJCUdFTV9CVUdfT04oIWxpc3RfZW1w dHkoJmRlcC0+ZGZzX2xpbmspKTsKPiArCj4gKwkJbGlzdF9kZWwoJmRlcC0+c2lnbmFsX2xpbmsp Owo+ICsJCWlmIChkZXAtPmZsYWdzICYgSTkxNV9ERVBFTkRFTkNZX0FMTE9DKQo+ICsJCQlpOTE1 X2RlcGVuZGVuY3lfZnJlZShpOTE1LCBkZXApOwo+ICsJfQo+ICsKPiArCXNwaW5fdW5sb2NrKCZz Y2hlZHVsZV9sb2NrKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlv bGlzdCAqdG9fcHJpb2xpc3Qoc3RydWN0IHJiX25vZGUgKnJiKQo+ICt7Cj4gKwlyZXR1cm4gcmJf ZW50cnkocmIsIHN0cnVjdCBpOTE1X3ByaW9saXN0LCBub2RlKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgYXNzZXJ0X3ByaW9saXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNv bnN0IGV4ZWNsaXN0cywKPiArCQkJICAgICBpbnQgcXVldWVfcHJpb3JpdHkpCj4gK3sKPiArCXN0 cnVjdCByYl9ub2RlICpyYjsKPiArCWludCBsYXN0X3ByaW8sIGk7Cj4gKwo+ICsJaWYgKCFJU19F TkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKQo+ICsJCXJldHVybjsKPiArCj4gKwlH RU1fQlVHX09OKHJiX2ZpcnN0X2NhY2hlZCgmZXhlY2xpc3RzLT5xdWV1ZSkgIT0KPiArCQkgICBy Yl9maXJzdCgmZXhlY2xpc3RzLT5xdWV1ZS5yYl9yb290KSk7Cj4gKwo+ICsJbGFzdF9wcmlvID0g KHF1ZXVlX3ByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVCkgKyAxOwo+ICsJZm9y IChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmZXhlY2xpc3RzLT5xdWV1ZSk7IHJiOyByYiA9IHJiX25l eHQocmIpKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlz dChyYik7Cj4gKwo+ICsJCUdFTV9CVUdfT04ocC0+cHJpb3JpdHkgPj0gbGFzdF9wcmlvKTsKPiAr CQlsYXN0X3ByaW8gPSBwLT5wcmlvcml0eTsKPiArCj4gKwkJR0VNX0JVR19PTighcC0+dXNlZCk7 Cj4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocC0+cmVxdWVzdHMpOyBpKyspIHsKPiAr CQkJaWYgKGxpc3RfZW1wdHkoJnAtPnJlcXVlc3RzW2ldKSkKPiArCQkJCWNvbnRpbnVlOwo+ICsK PiArCQkJR0VNX0JVR19PTighKHAtPnVzZWQgJiBCSVQoaSkpKTsKPiArCQl9Cj4gKwl9Cj4gK30K PiArCj4gK3N0cnVjdCBsaXN0X2hlYWQgKgo+ICtpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQo+ICt7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNs aXN0czsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwOwo+ICsJc3RydWN0IHJiX25vZGUgKipw YXJlbnQsICpyYjsKPiArCWJvb2wgZmlyc3QgPSB0cnVlOwo+ICsJaW50IGlkeCwgaTsKPiArCj4g Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICsJYXNzZXJ0 X3ByaW9saXN0cyhleGVjbGlzdHMsIElOVF9NQVgpOwo+ICsKPiArCS8qIGJ1Y2tldHMgc29ydGVk IGZyb20gaGlnaGVzdCBbaW4gc2xvdCAwXSB0byBsb3dlc3QgcHJpb3JpdHkgKi8KPiArCWlkeCA9 IEk5MTVfUFJJT1JJVFlfQ09VTlQgLSAocHJpbyAmIH5JOTE1X1BSSU9SSVRZX01BU0spIC0gMTsK PiArCXByaW8gPj49IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKPiArCWlmICh1bmxpa2VseShl eGVjbGlzdHMtPm5vX3ByaW9saXN0KSkKPiArCQlwcmlvID0gSTkxNV9QUklPUklUWV9OT1JNQUw7 Cj4gKwo+ICtmaW5kX3ByaW9saXN0Ogo+ICsJLyogbW9zdCBwb3NpdGl2ZSBwcmlvcml0eSBpcyBz Y2hlZHVsZWQgZmlyc3QsIGVxdWFsIHByaW9yaXRpZXMgZmlmbyAqLwo+ICsJcmIgPSBOVUxMOwo+ ICsJcGFyZW50ID0gJmV4ZWNsaXN0cy0+cXVldWUucmJfcm9vdC5yYl9ub2RlOwo+ICsJd2hpbGUg KCpwYXJlbnQpIHsKPiArCQlyYiA9ICpwYXJlbnQ7Cj4gKwkJcCA9IHRvX3ByaW9saXN0KHJiKTsK PiArCQlpZiAocHJpbyA+IHAtPnByaW9yaXR5KSB7Cj4gKwkJCXBhcmVudCA9ICZyYi0+cmJfbGVm dDsKPiArCQl9IGVsc2UgaWYgKHByaW8gPCBwLT5wcmlvcml0eSkgewo+ICsJCQlwYXJlbnQgPSAm cmItPnJiX3JpZ2h0Owo+ICsJCQlmaXJzdCA9IGZhbHNlOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWdv dG8gb3V0Owo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAocHJpbyA9PSBJOTE1X1BSSU9SSVRZX05P Uk1BTCkgewo+ICsJCXAgPSAmZXhlY2xpc3RzLT5kZWZhdWx0X3ByaW9saXN0Owo+ICsJfSBlbHNl IHsKPiArCQlwID0ga21lbV9jYWNoZV9hbGxvYyhlbmdpbmUtPmk5MTUtPnByaW9yaXRpZXMsIEdG UF9BVE9NSUMpOwo+ICsJCS8qIENvbnZlcnQgYW4gYWxsb2NhdGlvbiBmYWlsdXJlIHRvIGEgcHJp b3JpdHkgYnVtcCAqLwo+ICsJCWlmICh1bmxpa2VseSghcCkpIHsKPiArCQkJcHJpbyA9IEk5MTVf UFJJT1JJVFlfTk9STUFMOyAvKiByZWN1cnNlcyBqdXN0IG9uY2UgKi8KPiArCj4gKwkJCS8qIFRv IG1haW50YWluIG9yZGVyaW5nIHdpdGggYWxsIHJlbmRlcmluZywgYWZ0ZXIgYW4KPiArCQkJICog YWxsb2NhdGlvbiBmYWlsdXJlIHdlIGhhdmUgdG8gZGlzYWJsZSBhbGwgc2NoZWR1bGluZy4KPiAr CQkJICogUmVxdWVzdHMgd2lsbCB0aGVuIGJlIGV4ZWN1dGVkIGluIGZpZm8sIGFuZCBzY2hlZHVs ZQo+ICsJCQkgKiB3aWxsIGVuc3VyZSB0aGF0IGRlcGVuZGVuY2llcyBhcmUgZW1pdHRlZCBpbiBm aWZvLgo+ICsJCQkgKiBUaGVyZSB3aWxsIGJlIHN0aWxsIHNvbWUgcmVvcmRlcmluZyB3aXRoIGV4 aXN0aW5nCj4gKwkJCSAqIHJlcXVlc3RzLCBzbyBpZiB1c2Vyc3BhY2UgbGllZCBhYm91dCB0aGVp cgo+ICsJCQkgKiBkZXBlbmRlbmNpZXMgdGhhdCByZW9yZGVyaW5nIG1heSBiZSB2aXNpYmxlLgo+ ICsJCQkgKi8KPiArCQkJZXhlY2xpc3RzLT5ub19wcmlvbGlzdCA9IHRydWU7Cj4gKwkJCWdvdG8g ZmluZF9wcmlvbGlzdDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcC0+cHJpb3JpdHkgPSBwcmlvOwo+ ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocC0+cmVxdWVzdHMpOyBpKyspCj4gKwkJSU5J VF9MSVNUX0hFQUQoJnAtPnJlcXVlc3RzW2ldKTsKPiArCXJiX2xpbmtfbm9kZSgmcC0+bm9kZSwg cmIsIHBhcmVudCk7Cj4gKwlyYl9pbnNlcnRfY29sb3JfY2FjaGVkKCZwLT5ub2RlLCAmZXhlY2xp c3RzLT5xdWV1ZSwgZmlyc3QpOwo+ICsJcC0+dXNlZCA9IDA7Cj4gKwo+ICtvdXQ6Cj4gKwlwLT51 c2VkIHw9IEJJVChpZHgpOwo+ICsJcmV0dXJuICZwLT5yZXF1ZXN0c1tpZHhdOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gK3NjaGVkX2xvY2tfZW5naW5lKHN0 cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmxvY2tl ZCkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gbm9kZV90b19yZXF1 ZXN0KG5vZGUpLT5lbmdpbmU7Cj4gKwo+ICsJR0VNX0JVR19PTighbG9ja2VkKTsKPiArCj4gKwlp ZiAoZW5naW5lICE9IGxvY2tlZCkgewo+ICsJCXNwaW5fdW5sb2NrKCZsb2NrZWQtPnRpbWVsaW5l LmxvY2spOwo+ICsJCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiArCX0KPiAr Cj4gKwlyZXR1cm4gZW5naW5lOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfc2NoZWR1bGUoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIpCj4g K3sKPiArCXN0cnVjdCBsaXN0X2hlYWQgKnVuaW5pdGlhbGl6ZWRfdmFyKHBsKTsKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgKmxhc3Q7Cj4gKwlzdHJ1Y3QgaTkxNV9kZXBlbmRl bmN5ICpkZXAsICpwOwo+ICsJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSBzdGFjazsKPiArCWNvbnN0 IGludCBwcmlvID0gYXR0ci0+cHJpb3JpdHk7Cj4gKwlMSVNUX0hFQUQoZGZzKTsKPiArCj4gKwlH RU1fQlVHX09OKHByaW8gPT0gSTkxNV9QUklPUklUWV9JTlZBTElEKTsKPiArCj4gKwlpZiAoaTkx NV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChwcmlvIDw9 IFJFQURfT05DRShycS0+c2NoZWQuYXR0ci5wcmlvcml0eSkpCj4gKwkJcmV0dXJuOwo+ICsKPiAr CS8qIE5lZWRlZCBpbiBvcmRlciB0byB1c2UgdGhlIHRlbXBvcmFyeSBsaW5rIGluc2lkZSBpOTE1 X2RlcGVuZGVuY3kgKi8KPiArCXNwaW5fbG9jaygmc2NoZWR1bGVfbG9jayk7Cj4gKwo+ICsJc3Rh Y2suc2lnbmFsZXIgPSAmcnEtPnNjaGVkOwo+ICsJbGlzdF9hZGQoJnN0YWNrLmRmc19saW5rLCAm ZGZzKTsKPiArCj4gKwkvKgo+ICsJICogUmVjdXJzaXZlbHkgYnVtcCBhbGwgZGVwZW5kZW50IHBy aW9yaXRpZXMgdG8gbWF0Y2ggdGhlIG5ldyByZXF1ZXN0Lgo+ICsJICoKPiArCSAqIEEgbmFpdmUg YXBwcm9hY2ggd291bGQgYmUgdG8gdXNlIHJlY3Vyc2lvbjoKPiArCSAqIHN0YXRpYyB2b2lkIHVw ZGF0ZV9wcmlvcml0aWVzKHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsIHByaW8pIHsKPiAr CSAqCWxpc3RfZm9yX2VhY2hfZW50cnkoZGVwLCAmbm9kZS0+c2lnbmFsZXJzX2xpc3QsIHNpZ25h bF9saW5rKQo+ICsJICoJCXVwZGF0ZV9wcmlvcml0aWVzKGRlcC0+c2lnbmFsLCBwcmlvKQo+ICsJ ICoJcXVldWVfcmVxdWVzdChub2RlKTsKPiArCSAqIH0KPiArCSAqIGJ1dCB0aGF0IG1heSBoYXZl IHVubGltaXRlZCByZWN1cnNpb24gZGVwdGggYW5kIHNvIHJ1bnMgYSB2ZXJ5Cj4gKwkgKiByZWFs IHJpc2sgb2Ygb3ZlcnVubmluZyB0aGUga2VybmVsIHN0YWNrLiBJbnN0ZWFkLCB3ZSBidWlsZAo+ ICsJICogYSBmbGF0IGxpc3Qgb2YgYWxsIGRlcGVuZGVuY2llcyBzdGFydGluZyB3aXRoIHRoZSBj dXJyZW50IHJlcXVlc3QuCj4gKwkgKiBBcyB3ZSB3YWxrIHRoZSBsaXN0IG9mIGRlcGVuZGVuY2ll cywgd2UgYWRkIGFsbCBvZiBpdHMgZGVwZW5kZW5jaWVzCj4gKwkgKiB0byB0aGUgZW5kIG9mIHRo ZSBsaXN0ICh0aGlzIG1heSBpbmNsdWRlIGFuIGFscmVhZHkgdmlzaXRlZAo+ICsJICogcmVxdWVz dCkgYW5kIGNvbnRpbnVlIHRvIHdhbGsgb253YXJkcyBvbnRvIHRoZSBuZXcgZGVwZW5kZW5jaWVz LiBUaGUKPiArCSAqIGVuZCByZXN1bHQgaXMgYSB0b3BvbG9naWNhbCBsaXN0IG9mIHJlcXVlc3Rz IGluIHJldmVyc2Ugb3JkZXIsIHRoZQo+ICsJICogbGFzdCBlbGVtZW50IGluIHRoZSBsaXN0IGlz IHRoZSByZXF1ZXN0IHdlIG11c3QgZXhlY3V0ZSBmaXJzdC4KPiArCSAqLwo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeShkZXAsICZkZnMsIGRmc19saW5rKSB7Cj4gKwkJc3RydWN0IGk5MTVfc2NoZWRf bm9kZSAqbm9kZSA9IGRlcC0+c2lnbmFsZXI7Cj4gKwo+ICsJCS8qCj4gKwkJICogV2l0aGluIGFu IGVuZ2luZSwgdGhlcmUgY2FuIGJlIG5vIGN5Y2xlLCBidXQgd2UgbWF5Cj4gKwkJICogcmVmZXIg dG8gdGhlIHNhbWUgZGVwZW5kZW5jeSBjaGFpbiBtdWx0aXBsZSB0aW1lcwo+ICsJCSAqIChyZWR1 bmRhbnQgZGVwZW5kZW5jaWVzIGFyZSBub3QgZWxpbWluYXRlZCkgYW5kIGFjcm9zcwo+ICsJCSAq IGVuZ2luZXMuCj4gKwkJICovCj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwLCAmbm9kZS0+c2ln bmFsZXJzX2xpc3QsIHNpZ25hbF9saW5rKSB7Cj4gKwkJCUdFTV9CVUdfT04ocCA9PSBkZXApOyAv KiBubyBjeWNsZXMhICovCj4gKwo+ICsJCQlpZiAobm9kZV9zaWduYWxlZChwLT5zaWduYWxlcikp Cj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCUdFTV9CVUdfT04ocC0+c2lnbmFsZXItPmF0dHIu cHJpb3JpdHkgPCBub2RlLT5hdHRyLnByaW9yaXR5KTsKPiArCQkJaWYgKHByaW8gPiBSRUFEX09O Q0UocC0+c2lnbmFsZXItPmF0dHIucHJpb3JpdHkpKQo+ICsJCQkJbGlzdF9tb3ZlX3RhaWwoJnAt PmRmc19saW5rLCAmZGZzKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIElmIHdlIGRp ZG4ndCBuZWVkIHRvIGJ1bXAgYW55IGV4aXN0aW5nIHByaW9yaXRpZXMsIGFuZCB3ZSBoYXZlbid0 Cj4gKwkgKiB5ZXQgc3VibWl0dGVkIHRoaXMgcmVxdWVzdCAoaS5lLiB0aGVyZSBpcyBubyBwb3Rl bnRpYWwgcmFjZSB3aXRoCj4gKwkgKiBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3QoKSksIHdlIGNh biBzZXQgb3VyIG93biBwcmlvcml0eSBhbmQgc2tpcAo+ICsJICogYWNxdWlyaW5nIHRoZSBlbmdp bmUgbG9ja3MuCj4gKwkgKi8KPiArCWlmIChycS0+c2NoZWQuYXR0ci5wcmlvcml0eSA9PSBJOTE1 X1BSSU9SSVRZX0lOVkFMSUQpIHsKPiArCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZycS0+c2No ZWQubGluaykpOwo+ICsJCXJxLT5zY2hlZC5hdHRyID0gKmF0dHI7Cj4gKwo+ICsJCWlmIChzdGFj ay5kZnNfbGluay5uZXh0ID09IHN0YWNrLmRmc19saW5rLnByZXYpCj4gKwkJCWdvdG8gb3V0X3Vu bG9jazsKPiArCj4gKwkJX19saXN0X2RlbF9lbnRyeSgmc3RhY2suZGZzX2xpbmspOwo+ICsJfQo+ ICsKPiArCWxhc3QgPSBOVUxMOwo+ICsJZW5naW5lID0gcnEtPmVuZ2luZTsKPiArCXNwaW5fbG9j a19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gKwo+ICsJLyogRmlmbyBhbmQgZGVwdGgt Zmlyc3QgcmVwbGFjZW1lbnQgZW5zdXJlIG91ciBkZXBzIGV4ZWN1dGUgYmVmb3JlIHVzICovCj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVfcmV2ZXJzZShkZXAsIHAsICZkZnMsIGRmc19saW5r KSB7Cj4gKwkJc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSA9IGRlcC0+c2lnbmFsZXI7Cj4g Kwo+ICsJCUlOSVRfTElTVF9IRUFEKCZkZXAtPmRmc19saW5rKTsKPiArCj4gKwkJZW5naW5lID0g c2NoZWRfbG9ja19lbmdpbmUobm9kZSwgZW5naW5lKTsKPiArCj4gKwkJLyogUmVjaGVjayBhZnRl ciBhY3F1aXJpbmcgdGhlIGVuZ2luZS0+dGltZWxpbmUubG9jayAqLwo+ICsJCWlmIChwcmlvIDw9 IG5vZGUtPmF0dHIucHJpb3JpdHkgfHwgbm9kZV9zaWduYWxlZChub2RlKSkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCW5vZGUtPmF0dHIucHJpb3JpdHkgPSBwcmlvOwo+ICsJCWlmICghbGlzdF9l bXB0eSgmbm9kZS0+bGluaykpIHsKPiArCQkJaWYgKGxhc3QgIT0gZW5naW5lKSB7Cj4gKwkJCQlw bCA9IGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KGVuZ2luZSwgcHJpbyk7Cj4gKwkJCQlsYXN0 ID0gZW5naW5lOwo+ICsJCQl9Cj4gKwkJCWxpc3RfbW92ZV90YWlsKCZub2RlLT5saW5rLCBwbCk7 Cj4gKwkJfSBlbHNlIHsKPiArCQkJLyoKPiArCQkJICogSWYgdGhlIHJlcXVlc3QgaXMgbm90IGlu IHRoZSBwcmlvbGlzdCBxdWV1ZSBiZWNhdXNlCj4gKwkJCSAqIGl0IGlzIG5vdCB5ZXQgcnVubmFi bGUsIHRoZW4gaXQgZG9lc24ndCBjb250cmlidXRlCj4gKwkJCSAqIHRvIG91ciBwcmVlbXB0aW9u IGRlY2lzaW9ucy4gT24gdGhlIG90aGVyIGhhbmQsCj4gKwkJCSAqIGlmIHRoZSByZXF1ZXN0IGlz IG9uIHRoZSBIVywgaXQgdG9vIGlzIG5vdCBpbiB0aGUKPiArCQkJICogcXVldWU7IGJ1dCBpbiB0 aGF0IGNhc2Ugd2UgbWF5IHN0aWxsIG5lZWQgdG8gcmVvcmRlcgo+ICsJCQkgKiB0aGUgaW5mbGln aHQgcmVxdWVzdHMuCj4gKwkJCSAqLwo+ICsJCQlpZiAoIWk5MTVfc3dfZmVuY2VfZG9uZSgmbm9k ZV90b19yZXF1ZXN0KG5vZGUpLT5zdWJtaXQpKQo+ICsJCQkJY29udGludWU7Cj4gKwkJfQo+ICsK PiArCQlpZiAocHJpbyA8PSBlbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eSkKPiArCQkJ Y29udGludWU7Cj4gKwo+ICsJCS8qCj4gKwkJICogSWYgd2UgYXJlIGFscmVhZHkgdGhlIGN1cnJl bnRseSBleGVjdXRpbmcgY29udGV4dCwgZG9uJ3QKPiArCQkgKiBib3RoZXIgZXZhbHVhdGluZyBp ZiB3ZSBzaG91bGQgcHJlZW1wdCBvdXJzZWx2ZXMuCj4gKwkJICovCj4gKwkJaWYgKG5vZGVfdG9f cmVxdWVzdChub2RlKS0+Z2xvYmFsX3NlcW5vICYmCj4gKwkJICAgIGk5MTVfc2Vxbm9fcGFzc2Vk KHBvcnRfcmVxdWVzdChlbmdpbmUtPmV4ZWNsaXN0cy5wb3J0KS0+Z2xvYmFsX3NlcW5vLAo+ICsJ CQkJICAgICAgbm9kZV90b19yZXF1ZXN0KG5vZGUpLT5nbG9iYWxfc2Vxbm8pKQo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJLyogRGVmZXIgKHRhc2tsZXQpIHN1Ym1pc3Npb24gdW50aWwgYWZ0ZXIg YWxsIG9mIG91ciB1cGRhdGVzLiAqLwo+ICsJCWVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9y aXR5ID0gcHJpbzsKPiArCQl0YXNrbGV0X2hpX3NjaGVkdWxlKCZlbmdpbmUtPmV4ZWNsaXN0cy50 YXNrbGV0KTsKPiArCX0KPiArCj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUu bG9jayk7Cj4gKwo+ICtvdXRfdW5sb2NrOgo+ICsJc3Bpbl91bmxvY2soJnNjaGVkdWxlX2xvY2sp Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCj4gaW5kZXggOTNlNDNl MjYzZDhjLi44MDU4YzE3YWU5NmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zY2hlZHVsZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyLmgKPiBAQCAtOCw5ICs4LDE0IEBACj4gICAjZGVmaW5lIF9JOTE1X1NDSEVEVUxFUl9IXwo+ ICAgCj4gICAjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4KPiAgIAo+ICAgI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4gICAKPiArc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gK3N0cnVjdCBpOTE1X3JlcXVlc3Q7Cj4gK3N0cnVjdCBp bnRlbF9lbmdpbmVfY3M7Cj4gKwo+ICAgZW51bSB7Cj4gICAJSTkxNV9QUklPUklUWV9NSU4gPSBJ OTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkgLSAxLAo+ICAgCUk5MTVfUFJJT1JJVFlfTk9S TUFMID0gSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFksCj4gQEAgLTc3LDQgKzgyLDI0IEBA IHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgewo+ICAgI2RlZmluZSBJOTE1X0RFUEVOREVOQ1lfQUxM T0MgQklUKDApCj4gICB9Owo+ICAgCj4gK3ZvaWQgaTkxNV9zY2hlZF9ub2RlX2luaXQoc3RydWN0 IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7Cj4gKwo+ICtib29sIF9faTkxNV9zY2hlZF9ub2RlX2Fk ZF9kZXBlbmRlbmN5KHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsCj4gKwkJCQkgICAgICBz dHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpzaWduYWwsCj4gKwkJCQkgICAgICBzdHJ1Y3QgaTkxNV9k ZXBlbmRlbmN5ICpkZXAsCj4gKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKPiArCj4g K2ludCBpOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gKwkJCQkgICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlLAo+ICsJCQkJ ICAgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqc2lnbmFsKTsKPiArCj4gK3ZvaWQgaTkxNV9zY2hl ZF9ub2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJCSAgc3RydWN0 IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7Cj4gKwo+ICt2b2lkIGk5MTVfc2NoZWR1bGUoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKPiArCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9h dHRyICphdHRyKTsKPiArCj4gK3N0cnVjdCBsaXN0X2hlYWQgKgo+ICtpOTE1X3NjaGVkX2xvb2t1 cF9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKTsKPiAr Cj4gICAjZW5kaWYgLyogX0k5MTVfU0NIRURVTEVSX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IGluZGV4IGZiY2M1NmNhZmZiNi4uMzFhM2ZkZjhmMDUxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzE2OSwxMyArMTMxNjksMTIg QEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAo+ ICAgCXJldCA9IGludGVsX3BsYW5lX3Bpbl9mYih0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfc3Rh dGUpKTsKPiAgIAo+IC0JZmJfb2JqX2J1bXBfcmVuZGVyX3ByaW9yaXR5KG9iaik7Cj4gLQo+ICAg CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7 Cj4gICAKPiArCWZiX29ial9idW1wX3JlbmRlcl9wcmlvcml0eShvYmopOwo+ICAgCWludGVsX2Zi X29ial9mbHVzaChvYmosIE9SSUdJTl9ESVJUWUZCKTsKPiAgIAo+ICAgCWlmICghbmV3X3N0YXRl LT5mZW5jZSkgeyAvKiBpbXBsaWNpdCBmZW5jaW5nICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKPiBpbmRleCBlZTlhNjU2ZTU0OWMuLjc0YmU5YTQ5ZWY5ZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gQEAgLTI1OSwxMDIgKzI1OSw2IEBAIGludGVsX2xyX2NvbnRleHRfZGVz Y3JpcHRvcl91cGRhdGUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAljZS0+bHJj X2Rlc2MgPSBkZXNjOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGFzc2VydF9wcmlvbGlzdHMo c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMsCj4gLQkJCSAg ICAgaW50IHF1ZXVlX3ByaW9yaXR5KQo+IC17Cj4gLQlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gLQlp bnQgbGFzdF9wcmlvLCBpOwo+IC0KPiAtCWlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVf REVCVUdfR0VNKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JR0VNX0JVR19PTihyYl9maXJzdF9jYWNo ZWQoJmV4ZWNsaXN0cy0+cXVldWUpICE9Cj4gLQkJICAgcmJfZmlyc3QoJmV4ZWNsaXN0cy0+cXVl dWUucmJfcm9vdCkpOwo+IC0KPiAtCWxhc3RfcHJpbyA9IChxdWV1ZV9wcmlvcml0eSA+PiBJOTE1 X1VTRVJfUFJJT1JJVFlfU0hJRlQpICsgMTsKPiAtCWZvciAocmIgPSByYl9maXJzdF9jYWNoZWQo JmV4ZWNsaXN0cy0+cXVldWUpOyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewo+IC0JCXN0cnVjdCBp OTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOwo+IC0KPiAtCQlHRU1fQlVHX09OKHAt PnByaW9yaXR5ID49IGxhc3RfcHJpbyk7Cj4gLQkJbGFzdF9wcmlvID0gcC0+cHJpb3JpdHk7Cj4g LQo+IC0JCUdFTV9CVUdfT04oIXAtPnVzZWQpOwo+IC0JCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKHAtPnJlcXVlc3RzKTsgaSsrKSB7Cj4gLQkJCWlmIChsaXN0X2VtcHR5KCZwLT5yZXF1ZXN0 c1tpXSkpCj4gLQkJCQljb250aW51ZTsKPiAtCj4gLQkJCUdFTV9CVUdfT04oIShwLT51c2VkICYg QklUKGkpKSk7Cj4gLQkJfQo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgc3RydWN0IGxpc3RfaGVh ZCAqCj4gLWxvb2t1cF9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGlu dCBwcmlvKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4 ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPiAtCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpw Owo+IC0Jc3RydWN0IHJiX25vZGUgKipwYXJlbnQsICpyYjsKPiAtCWJvb2wgZmlyc3QgPSB0cnVl Owo+IC0JaW50IGlkeCwgaTsKPiAtCj4gLQlhc3NlcnRfcHJpb2xpc3RzKGV4ZWNsaXN0cywgSU5U X01BWCk7Cj4gLQo+IC0JLyogYnVja2V0cyBzb3J0ZWQgZnJvbSBoaWdoZXN0IFtpbiBzbG90IDBd IHRvIGxvd2VzdCBwcmlvcml0eSAqLwo+IC0JaWR4ID0gSTkxNV9QUklPUklUWV9DT1VOVCAtIChw cmlvICYgfkk5MTVfUFJJT1JJVFlfTUFTSykgLSAxOwo+IC0JcHJpbyA+Pj0gSTkxNV9VU0VSX1BS SU9SSVRZX1NISUZUOwo+IC0JaWYgKHVubGlrZWx5KGV4ZWNsaXN0cy0+bm9fcHJpb2xpc3QpKQo+ IC0JCXByaW8gPSBJOTE1X1BSSU9SSVRZX05PUk1BTDsKPiAtCj4gLWZpbmRfcHJpb2xpc3Q6Cj4g LQkvKiBtb3N0IHBvc2l0aXZlIHByaW9yaXR5IGlzIHNjaGVkdWxlZCBmaXJzdCwgZXF1YWwgcHJp b3JpdGllcyBmaWZvICovCj4gLQlyYiA9IE5VTEw7Cj4gLQlwYXJlbnQgPSAmZXhlY2xpc3RzLT5x dWV1ZS5yYl9yb290LnJiX25vZGU7Cj4gLQl3aGlsZSAoKnBhcmVudCkgewo+IC0JCXJiID0gKnBh cmVudDsKPiAtCQlwID0gdG9fcHJpb2xpc3QocmIpOwo+IC0JCWlmIChwcmlvID4gcC0+cHJpb3Jp dHkpIHsKPiAtCQkJcGFyZW50ID0gJnJiLT5yYl9sZWZ0Owo+IC0JCX0gZWxzZSBpZiAocHJpbyA8 IHAtPnByaW9yaXR5KSB7Cj4gLQkJCXBhcmVudCA9ICZyYi0+cmJfcmlnaHQ7Cj4gLQkJCWZpcnN0 ID0gZmFsc2U7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJZ290byBvdXQ7Cj4gLQkJfQo+IC0JfQo+IC0K PiAtCWlmIChwcmlvID09IEk5MTVfUFJJT1JJVFlfTk9STUFMKSB7Cj4gLQkJcCA9ICZleGVjbGlz dHMtPmRlZmF1bHRfcHJpb2xpc3Q7Cj4gLQl9IGVsc2Ugewo+IC0JCXAgPSBrbWVtX2NhY2hlX2Fs bG9jKGVuZ2luZS0+aTkxNS0+cHJpb3JpdGllcywgR0ZQX0FUT01JQyk7Cj4gLQkJLyogQ29udmVy dCBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgdG8gYSBwcmlvcml0eSBidW1wICovCj4gLQkJaWYgKHVu bGlrZWx5KCFwKSkgewo+IC0JCQlwcmlvID0gSTkxNV9QUklPUklUWV9OT1JNQUw7IC8qIHJlY3Vy c2VzIGp1c3Qgb25jZSAqLwo+IC0KPiAtCQkJLyogVG8gbWFpbnRhaW4gb3JkZXJpbmcgd2l0aCBh bGwgcmVuZGVyaW5nLCBhZnRlciBhbgo+IC0JCQkgKiBhbGxvY2F0aW9uIGZhaWx1cmUgd2UgaGF2 ZSB0byBkaXNhYmxlIGFsbCBzY2hlZHVsaW5nLgo+IC0JCQkgKiBSZXF1ZXN0cyB3aWxsIHRoZW4g YmUgZXhlY3V0ZWQgaW4gZmlmbywgYW5kIHNjaGVkdWxlCj4gLQkJCSAqIHdpbGwgZW5zdXJlIHRo YXQgZGVwZW5kZW5jaWVzIGFyZSBlbWl0dGVkIGluIGZpZm8uCj4gLQkJCSAqIFRoZXJlIHdpbGwg YmUgc3RpbGwgc29tZSByZW9yZGVyaW5nIHdpdGggZXhpc3RpbmcKPiAtCQkJICogcmVxdWVzdHMs IHNvIGlmIHVzZXJzcGFjZSBsaWVkIGFib3V0IHRoZWlyCj4gLQkJCSAqIGRlcGVuZGVuY2llcyB0 aGF0IHJlb3JkZXJpbmcgbWF5IGJlIHZpc2libGUuCj4gLQkJCSAqLwo+IC0JCQlleGVjbGlzdHMt Pm5vX3ByaW9saXN0ID0gdHJ1ZTsKPiAtCQkJZ290byBmaW5kX3ByaW9saXN0Owo+IC0JCX0KPiAt CX0KPiAtCj4gLQlwLT5wcmlvcml0eSA9IHByaW87Cj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShwLT5yZXF1ZXN0cyk7IGkrKykKPiAtCQlJTklUX0xJU1RfSEVBRCgmcC0+cmVxdWVzdHNb aV0pOwo+IC0JcmJfbGlua19ub2RlKCZwLT5ub2RlLCByYiwgcGFyZW50KTsKPiAtCXJiX2luc2Vy dF9jb2xvcl9jYWNoZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlLCBmaXJzdCk7Cj4gLQlw LT51c2VkID0gMDsKPiAtCj4gLW91dDoKPiAtCXAtPnVzZWQgfD0gQklUKGlkeCk7Cj4gLQlyZXR1 cm4gJnAtPnJlcXVlc3RzW2lkeF07Cj4gLX0KPiAtCj4gICBzdGF0aWMgdm9pZCB1bndpbmRfd2Ff dGFpbChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAgIAlycS0+dGFpbCA9IGludGVs X3Jpbmdfd3JhcChycS0+cmluZywgcnEtPndhX3RhaWwgLSBXQV9UQUlMX0JZVEVTKTsKPiBAQCAt MzgxLDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIF9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQlHRU1fQlVHX09OKHJxX3ByaW8o cnEpID09IEk5MTVfUFJJT1JJVFlfSU5WQUxJRCk7Cj4gICAJCWlmIChycV9wcmlvKHJxKSAhPSBw cmlvKSB7Cj4gICAJCQlwcmlvID0gcnFfcHJpbyhycSk7Cj4gLQkJCXBsID0gbG9va3VwX3ByaW9s aXN0KGVuZ2luZSwgcHJpbyk7Cj4gKwkJCXBsID0gaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xpc3Qo ZW5naW5lLCBwcmlvKTsKPiAgIAkJfQo+ICAgCQlHRU1fQlVHX09OKFJCX0VNUFRZX1JPT1QoJmVu Z2luZS0+ZXhlY2xpc3RzLnF1ZXVlLnJiX3Jvb3QpKTsKPiAgIAo+IEBAIC0zOTgsNyArMzAyLDcg QEAgc3RhdGljIHZvaWQgX191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICAJaWYgKCEocHJpbyAmIEk5MTVfUFJJT1JJVFlfTkVXQ0xJ RU5UKSkgewo+ICAgCQlwcmlvIHw9IEk5MTVfUFJJT1JJVFlfTkVXQ0xJRU5UOwo+ICAgCQlsaXN0 X21vdmVfdGFpbCgmYWN0aXZlLT5zY2hlZC5saW5rLAo+IC0JCQkgICAgICAgbG9va3VwX3ByaW9s aXN0KGVuZ2luZSwgcHJpbykpOwo+ICsJCQkgICAgICAgaTkxNV9zY2hlZF9sb29rdXBfcHJpb2xp c3QoZW5naW5lLCBwcmlvKSk7Cj4gICAJfQo+ICAgfQo+ICAgCj4gQEAgLTc5Myw3ICs2OTcsNiBA QCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAJICovCj4gICAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eSA9Cj4gICAJCXBv cnQgIT0gZXhlY2xpc3RzLT5wb3J0ID8gcnFfcHJpbyhsYXN0KSA6IElOVF9NSU47Cj4gLQlhc3Nl cnRfcHJpb2xpc3RzKGV4ZWNsaXN0cywgZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eSk7Cj4gICAK PiAgIAlpZiAoc3VibWl0KSB7Cj4gICAJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOwo+IEBAIC0x MTIwLDEyICsxMDIzLDcgQEAgc3RhdGljIHZvaWQgcXVldWVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkgIHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUs Cj4gICAJCQkgIGludCBwcmlvKQo+ICAgewo+IC0JbGlzdF9hZGRfdGFpbCgmbm9kZS0+bGluaywg bG9va3VwX3ByaW9saXN0KGVuZ2luZSwgcHJpbykpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBf X3VwZGF0ZV9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQo+ IC17Cj4gLQllbmdpbmUtPmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eSA9IHByaW87Cj4gKwlsaXN0 X2FkZF90YWlsKCZub2RlLT5saW5rLCBpOTE1X3NjaGVkX2xvb2t1cF9wcmlvbGlzdChlbmdpbmUs IHByaW8pKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgX19zdWJtaXRfcXVldWVfaW1tKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiBAQCAtMTE0NCw3ICsxMDQyLDcgQEAgc3Rh dGljIHZvaWQgX19zdWJtaXRfcXVldWVfaW1tKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHN0YXRpYyB2b2lkIHN1Ym1pdF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIGludCBwcmlvKQo+ICAgewo+ICAgCWlmIChwcmlvID4gZW5naW5lLT5leGVjbGlzdHMu cXVldWVfcHJpb3JpdHkpIHsKPiAtCQlfX3VwZGF0ZV9xdWV1ZShlbmdpbmUsIHByaW8pOwo+ICsJ CWVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5ID0gcHJpbzsKPiAgIAkJX19zdWJtaXRf cXVldWVfaW1tKGVuZ2luZSk7Cj4gICAJfQo+ICAgfQo+IEBAIC0xMTY3LDE2MiArMTA2NSw2IEBA IHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUu bG9jaywgZmxhZ3MpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpz Y2hlZF90b19yZXF1ZXN0KHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUpCj4gLXsKPiAtCXJl dHVybiBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGk5MTVfcmVxdWVzdCwgc2NoZWQpOwo+IC19 Cj4gLQo+IC1zdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gLXNjaGVkX2xvY2tfZW5n aW5lKHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmxvY2tlZCkKPiAtewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gc2NoZWRf dG9fcmVxdWVzdChub2RlKS0+ZW5naW5lOwo+IC0KPiAtCUdFTV9CVUdfT04oIWxvY2tlZCk7Cj4g LQo+IC0JaWYgKGVuZ2luZSAhPSBsb2NrZWQpIHsKPiAtCQlzcGluX3VubG9jaygmbG9ja2VkLT50 aW1lbGluZS5sb2NrKTsKPiAtCQlzcGluX2xvY2soJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4g LQl9Cj4gLQo+IC0JcmV0dXJuIGVuZ2luZTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgZXhlY2xp c3RzX3NjaGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCj4gLQkJCSAgICAgICBj b25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKQo+IC17Cj4gLQlzdHJ1Y3QgbGlzdF9o ZWFkICp1bmluaXRpYWxpemVkX3ZhcihwbCk7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsICpsYXN0Owo+IC0Jc3RydWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwLCAqcDsKPiAtCXN0 cnVjdCBpOTE1X2RlcGVuZGVuY3kgc3RhY2s7Cj4gLQljb25zdCBpbnQgcHJpbyA9IGF0dHItPnBy aW9yaXR5Owo+IC0JTElTVF9IRUFEKGRmcyk7Cj4gLQo+IC0JR0VNX0JVR19PTihwcmlvID09IEk5 MTVfUFJJT1JJVFlfSU5WQUxJRCk7Cj4gLQo+IC0JaWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQo cmVxdWVzdCkpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmIChwcmlvIDw9IFJFQURfT05DRShyZXF1 ZXN0LT5zY2hlZC5hdHRyLnByaW9yaXR5KSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JLyogTmVlZCBC S0wgaW4gb3JkZXIgdG8gdXNlIHRoZSB0ZW1wb3JhcnkgbGluayBpbnNpZGUgaTkxNV9kZXBlbmRl bmN5ICovCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZyZXF1ZXN0LT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCj4gLQlzdGFjay5zaWduYWxlciA9ICZyZXF1ZXN0LT5zY2hlZDsKPiAtCWxp c3RfYWRkKCZzdGFjay5kZnNfbGluaywgJmRmcyk7Cj4gLQo+IC0JLyoKPiAtCSAqIFJlY3Vyc2l2 ZWx5IGJ1bXAgYWxsIGRlcGVuZGVudCBwcmlvcml0aWVzIHRvIG1hdGNoIHRoZSBuZXcgcmVxdWVz dC4KPiAtCSAqCj4gLQkgKiBBIG5haXZlIGFwcHJvYWNoIHdvdWxkIGJlIHRvIHVzZSByZWN1cnNp b246Cj4gLQkgKiBzdGF0aWMgdm9pZCB1cGRhdGVfcHJpb3JpdGllcyhzdHJ1Y3QgaTkxNV9zY2hl ZF9ub2RlICpub2RlLCBwcmlvKSB7Cj4gLQkgKglsaXN0X2Zvcl9lYWNoX2VudHJ5KGRlcCwgJm5v ZGUtPnNpZ25hbGVyc19saXN0LCBzaWduYWxfbGluaykKPiAtCSAqCQl1cGRhdGVfcHJpb3JpdGll cyhkZXAtPnNpZ25hbCwgcHJpbykKPiAtCSAqCXF1ZXVlX3JlcXVlc3Qobm9kZSk7Cj4gLQkgKiB9 Cj4gLQkgKiBidXQgdGhhdCBtYXkgaGF2ZSB1bmxpbWl0ZWQgcmVjdXJzaW9uIGRlcHRoIGFuZCBz byBydW5zIGEgdmVyeQo+IC0JICogcmVhbCByaXNrIG9mIG92ZXJ1bm5pbmcgdGhlIGtlcm5lbCBz dGFjay4gSW5zdGVhZCwgd2UgYnVpbGQKPiAtCSAqIGEgZmxhdCBsaXN0IG9mIGFsbCBkZXBlbmRl bmNpZXMgc3RhcnRpbmcgd2l0aCB0aGUgY3VycmVudCByZXF1ZXN0Lgo+IC0JICogQXMgd2Ugd2Fs ayB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMsIHdlIGFkZCBhbGwgb2YgaXRzIGRlcGVuZGVuY2ll cwo+IC0JICogdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCAodGhpcyBtYXkgaW5jbHVkZSBhbiBhbHJl YWR5IHZpc2l0ZWQKPiAtCSAqIHJlcXVlc3QpIGFuZCBjb250aW51ZSB0byB3YWxrIG9ud2FyZHMg b250byB0aGUgbmV3IGRlcGVuZGVuY2llcy4gVGhlCj4gLQkgKiBlbmQgcmVzdWx0IGlzIGEgdG9w b2xvZ2ljYWwgbGlzdCBvZiByZXF1ZXN0cyBpbiByZXZlcnNlIG9yZGVyLCB0aGUKPiAtCSAqIGxh c3QgZWxlbWVudCBpbiB0aGUgbGlzdCBpcyB0aGUgcmVxdWVzdCB3ZSBtdXN0IGV4ZWN1dGUgZmly c3QuCj4gLQkgKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoZGVwLCAmZGZzLCBkZnNfbGluaykg ewo+IC0JCXN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUgPSBkZXAtPnNpZ25hbGVyOwo+IC0K PiAtCQkvKgo+IC0JCSAqIFdpdGhpbiBhbiBlbmdpbmUsIHRoZXJlIGNhbiBiZSBubyBjeWNsZSwg YnV0IHdlIG1heQo+IC0JCSAqIHJlZmVyIHRvIHRoZSBzYW1lIGRlcGVuZGVuY3kgY2hhaW4gbXVs dGlwbGUgdGltZXMKPiAtCQkgKiAocmVkdW5kYW50IGRlcGVuZGVuY2llcyBhcmUgbm90IGVsaW1p bmF0ZWQpIGFuZCBhY3Jvc3MKPiAtCQkgKiBlbmdpbmVzLgo+IC0JCSAqLwo+IC0JCWxpc3RfZm9y X2VhY2hfZW50cnkocCwgJm5vZGUtPnNpZ25hbGVyc19saXN0LCBzaWduYWxfbGluaykgewo+IC0J CQlHRU1fQlVHX09OKHAgPT0gZGVwKTsgLyogbm8gY3ljbGVzISAqLwo+IC0KPiAtCQkJaWYgKGk5 MTVfc2NoZWRfbm9kZV9zaWduYWxlZChwLT5zaWduYWxlcikpCj4gLQkJCQljb250aW51ZTsKPiAt Cj4gLQkJCUdFTV9CVUdfT04ocC0+c2lnbmFsZXItPmF0dHIucHJpb3JpdHkgPCBub2RlLT5hdHRy LnByaW9yaXR5KTsKPiAtCQkJaWYgKHByaW8gPiBSRUFEX09OQ0UocC0+c2lnbmFsZXItPmF0dHIu cHJpb3JpdHkpKQo+IC0JCQkJbGlzdF9tb3ZlX3RhaWwoJnAtPmRmc19saW5rLCAmZGZzKTsKPiAt CQl9Cj4gLQl9Cj4gLQo+IC0JLyoKPiAtCSAqIElmIHdlIGRpZG4ndCBuZWVkIHRvIGJ1bXAgYW55 IGV4aXN0aW5nIHByaW9yaXRpZXMsIGFuZCB3ZSBoYXZlbid0Cj4gLQkgKiB5ZXQgc3VibWl0dGVk IHRoaXMgcmVxdWVzdCAoaS5lLiB0aGVyZSBpcyBubyBwb3RlbnRpYWwgcmFjZSB3aXRoCj4gLQkg KiBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3QoKSksIHdlIGNhbiBzZXQgb3VyIG93biBwcmlvcml0 eSBhbmQgc2tpcAo+IC0JICogYWNxdWlyaW5nIHRoZSBlbmdpbmUgbG9ja3MuCj4gLQkgKi8KPiAt CWlmIChyZXF1ZXN0LT5zY2hlZC5hdHRyLnByaW9yaXR5ID09IEk5MTVfUFJJT1JJVFlfSU5WQUxJ RCkgewo+IC0JCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnJlcXVlc3QtPnNjaGVkLmxpbmspKTsK PiAtCQlyZXF1ZXN0LT5zY2hlZC5hdHRyID0gKmF0dHI7Cj4gLQkJaWYgKHN0YWNrLmRmc19saW5r Lm5leHQgPT0gc3RhY2suZGZzX2xpbmsucHJldikKPiAtCQkJcmV0dXJuOwo+IC0JCV9fbGlzdF9k ZWxfZW50cnkoJnN0YWNrLmRmc19saW5rKTsKPiAtCX0KPiAtCj4gLQlsYXN0ID0gTlVMTDsKPiAt CWVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKPiAtCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGlt ZWxpbmUubG9jayk7Cj4gLQo+IC0JLyogRmlmbyBhbmQgZGVwdGgtZmlyc3QgcmVwbGFjZW1lbnQg ZW5zdXJlIG91ciBkZXBzIGV4ZWN1dGUgYmVmb3JlIHVzICovCj4gLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmVfcmV2ZXJzZShkZXAsIHAsICZkZnMsIGRmc19saW5rKSB7Cj4gLQkJc3RydWN0IGk5 MTVfc2NoZWRfbm9kZSAqbm9kZSA9IGRlcC0+c2lnbmFsZXI7Cj4gLQo+IC0JCUlOSVRfTElTVF9I RUFEKCZkZXAtPmRmc19saW5rKTsKPiAtCj4gLQkJZW5naW5lID0gc2NoZWRfbG9ja19lbmdpbmUo bm9kZSwgZW5naW5lKTsKPiAtCj4gLQkJLyogUmVjaGVjayBhZnRlciBhY3F1aXJpbmcgdGhlIGVu Z2luZS0+dGltZWxpbmUubG9jayAqLwo+IC0JCWlmIChwcmlvIDw9IG5vZGUtPmF0dHIucHJpb3Jp dHkpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpZiAoaTkxNV9zY2hlZF9ub2RlX3NpZ25hbGVk KG5vZGUpKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJbm9kZS0+YXR0ci5wcmlvcml0eSA9IHBy aW87Cj4gLQkJaWYgKCFsaXN0X2VtcHR5KCZub2RlLT5saW5rKSkgewo+IC0JCQlpZiAobGFzdCAh PSBlbmdpbmUpIHsKPiAtCQkJCXBsID0gbG9va3VwX3ByaW9saXN0KGVuZ2luZSwgcHJpbyk7Cj4g LQkJCQlsYXN0ID0gZW5naW5lOwo+IC0JCQl9Cj4gLQkJCWxpc3RfbW92ZV90YWlsKCZub2RlLT5s aW5rLCBwbCk7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJLyoKPiAtCQkJICogSWYgdGhlIHJlcXVlc3Qg aXMgbm90IGluIHRoZSBwcmlvbGlzdCBxdWV1ZSBiZWNhdXNlCj4gLQkJCSAqIGl0IGlzIG5vdCB5 ZXQgcnVubmFibGUsIHRoZW4gaXQgZG9lc24ndCBjb250cmlidXRlCj4gLQkJCSAqIHRvIG91ciBw cmVlbXB0aW9uIGRlY2lzaW9ucy4gT24gdGhlIG90aGVyIGhhbmQsCj4gLQkJCSAqIGlmIHRoZSBy ZXF1ZXN0IGlzIG9uIHRoZSBIVywgaXQgdG9vIGlzIG5vdCBpbiB0aGUKPiAtCQkJICogcXVldWU7 IGJ1dCBpbiB0aGF0IGNhc2Ugd2UgbWF5IHN0aWxsIG5lZWQgdG8gcmVvcmRlcgo+IC0JCQkgKiB0 aGUgaW5mbGlnaHQgcmVxdWVzdHMuCj4gLQkJCSAqLwo+IC0JCQlpZiAoIWk5MTVfc3dfZmVuY2Vf ZG9uZSgmc2NoZWRfdG9fcmVxdWVzdChub2RlKS0+c3VibWl0KSkKPiAtCQkJCWNvbnRpbnVlOwo+ IC0JCX0KPiAtCj4gLQkJaWYgKHByaW8gPD0gZW5naW5lLT5leGVjbGlzdHMucXVldWVfcHJpb3Jp dHkpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkvKgo+IC0JCSAqIElmIHdlIGFyZSBhbHJlYWR5 IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvbnRleHQsIGRvbid0Cj4gLQkJICogYm90aGVyIGV2 YWx1YXRpbmcgaWYgd2Ugc2hvdWxkIHByZWVtcHQgb3Vyc2VsdmVzLgo+IC0JCSAqLwo+IC0JCWlm IChzY2hlZF90b19yZXF1ZXN0KG5vZGUpLT5nbG9iYWxfc2Vxbm8gJiYKPiAtCQkgICAgaTkxNV9z ZXFub19wYXNzZWQocG9ydF9yZXF1ZXN0KGVuZ2luZS0+ZXhlY2xpc3RzLnBvcnQpLT5nbG9iYWxf c2Vxbm8sCj4gLQkJCQkgICAgICBzY2hlZF90b19yZXF1ZXN0KG5vZGUpLT5nbG9iYWxfc2Vxbm8p KQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJLyogRGVmZXIgKHRhc2tsZXQpIHN1Ym1pc3Npb24g dW50aWwgYWZ0ZXIgYWxsIG9mIG91ciB1cGRhdGVzLiAqLwo+IC0JCV9fdXBkYXRlX3F1ZXVlKGVu Z2luZSwgcHJpbyk7Cj4gLQkJdGFza2xldF9oaV9zY2hlZHVsZSgmZW5naW5lLT5leGVjbGlzdHMu dGFza2xldCk7Cj4gLQl9Cj4gLQo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5l LmxvY2spOwo+IC19Cj4gLQo+ICAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfZGVzdHJv eShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICB7Cj4gICAJR0VNX0JVR19PTihjZS0+cGlu X2NvdW50KTsKPiBAQCAtMjM2MCw3ICsyMTAyLDcgQEAgdm9pZCBpbnRlbF9leGVjbGlzdHNfc2V0 X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7 Cj4gICAJZW5naW5lLT5zdWJtaXRfcmVxdWVzdCA9IGV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdDsK PiAgIAllbmdpbmUtPmNhbmNlbF9yZXF1ZXN0cyA9IGV4ZWNsaXN0c19jYW5jZWxfcmVxdWVzdHM7 Cj4gLQllbmdpbmUtPnNjaGVkdWxlID0gZXhlY2xpc3RzX3NjaGVkdWxlOwo+ICsJZW5naW5lLT5z Y2hlZHVsZSA9IGk5MTVfc2NoZWR1bGU7Cj4gICAJZW5naW5lLT5leGVjbGlzdHMudGFza2xldC5m dW5jID0gZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGFza2xldDsKPiAgIAo+ICAgCWVuZ2luZS0+cmVz ZXQucHJlcGFyZSA9IGV4ZWNsaXN0c19yZXNldF9wcmVwYXJlOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCAxNTM0ZGU1YmI4NTIuLmY2ZWM0OGE3NWE2OSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtNDk4LDEx ICs0OTgsMTAgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gICAJICovCj4gICAJdm9pZAkJ KCpzdWJtaXRfcmVxdWVzdCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwo+ICAgCj4gLQkvKiBD YWxsIHdoZW4gdGhlIHByaW9yaXR5IG9uIGEgcmVxdWVzdCBoYXMgY2hhbmdlZCBhbmQgaXQgYW5k IGl0cwo+ICsJLyoKPiArCSAqIENhbGwgd2hlbiB0aGUgcHJpb3JpdHkgb24gYSByZXF1ZXN0IGhh cyBjaGFuZ2VkIGFuZCBpdCBhbmQgaXRzCj4gICAJICogZGVwZW5kZW5jaWVzIG1heSBuZWVkIHJl c2NoZWR1bGluZy4gTm90ZSB0aGUgcmVxdWVzdCBpdHNlbGYgbWF5Cj4gICAJICogbm90IGJlIHJl YWR5IHRvIHJ1biEKPiAtCSAqCj4gLQkgKiBDYWxsZWQgdW5kZXIgdGhlIHN0cnVjdF9tdXRleC4K PiAgIAkgKi8KPiAgIAl2b2lkCQkoKnNjaGVkdWxlKShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1 ZXN0LAo+ICAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKTsKPiAK ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoK UmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK