From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 43/46] drm/i915: Allocate a status page for each timeline Date: Mon, 14 Jan 2019 16:56:13 -0800 Message-ID: <1e5f4aa4-cf67-6737-1b31-9849eed945eb@Intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-43-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id B35BE6E4C0 for ; Tue, 15 Jan 2019 00:56:14 +0000 (UTC) In-Reply-To: <20190107115509.12523-43-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 T24gMS83LzIwMTkgMDM6NTUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBbGxvY2F0ZSBhIHBhZ2Ug Zm9yIHVzZSBhcyBhIHN0YXR1cyBwYWdlIGJ5IGEgZ3JvdXAgb2YgdGltZWxpbmVzLCBhcyB3ZQo+ IG9ubHkgbmVlZCBhIGR3b3JkIG9mIHN0b3JhZ2UgZm9yIGVhY2ggKHJvdW5kZWQgdXAgdG8gdGhl IGNhY2hlbGluZSBmb3IKPiBzYWZldHkpIHdlIGNhbiBwYWNrIG11bHRpcGxlIHRpbWVsaW5lcyBp bnRvIHRoZSBzYW1lIHBhZ2UuIEVhY2ggdGltZWxpbmUKPiB3aWxsIHRoZW4gYmUgYWJsZSB0byB0 cmFjayBpdHMgb3duIEhXIHNlcW5vLgo+Cj4gdjI6IFJldXNlIHRoZSBjb21tb24gcGVyLWVuZ2lu ZSBIV1NQIGZvciB0aGUgc29saXRhcnkgcmluZ2J1ZmZlcgo+IHRpbWVsaW5lLCBzbyB0aGF0IHdl IGRvIG5vdCBoYXZlIHRvIGVtaXQgKHVzaW5nIHBlci1nZW4gc3BlY2lhbGlzZWQKPiB2ZnVuY3Mp IHRoZSBicmVhZGNydW1iIGludG8gdGhlIGRpc3RpbmN0IHRpbWVsaW5lIEhXU1AgYW5kIGluc3Rl YWQgY2FuCj4ga2VlcCBvbiB1c2luZyB0aGUgY29tbW9uIE1JX1NUT1JFX0RXT1JEX0lOREVYLiBI b3dldmVyLCB0byBtYWludGFpbiB0aGUKPiBzbGVpZ2h0LW9mLWhhbmQgZm9yIHRoZSBnbG9iYWwv cGVyLWNvbnRleHQgc2Vxbm8gc3dpdGNob3Zlciwgd2Ugd2lsbAo+IHN0b3JlIGJvdGggdGVtcG9y YXJpbHkgKGFuZCBzbyB1c2UgYSBjdXN0b20gb2Zmc2V0IGZvciB0aGUgc2hhcmVkIHRpbWVsaW5l Cj4gSFdTUCB1bnRpbCB0aGUgc3dpdGNoIG92ZXIpLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDQgKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jICAgICAgICAgIHwgMTU5ICsrKysrKystCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmggICAgICAgICAgfCAgMjEgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICAgICB8ICA2NCArLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICAyMiArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgIHwgIDEwICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAgICAgfCAgIDYg Ky0KPiAgIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oICB8ICAg MSArCj4gICAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCAgfCAg IDIgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYyAgICB8 IDM3MyArKysrKysrKysrKysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2VuZ2luZS5jICB8ICAxNyArLQo+ICAgMTEgZmlsZXMgY2hhbmdlZCwgNjI2IGluc2Vy dGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5k ZXggNGE4YzQ1OTQ5YzRkLi5hMDAwOWU3ZmUwNWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtMTk2MSw2ICsxOTYxLDEwIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAg IAkJc3RydWN0IG11dGV4IHRpbWVsaW5lX2xvY2s7Cj4gICAJCXN0cnVjdCBsaXN0X2hlYWQgdGlt ZWxpbmVzOwo+ICAgCj4gKwkJLyogUGFjayBtdWx0aXBsZSB0aW1lbGluZXMnIHNlcW5vcyBpbnRv IHRoZSBzYW1lIHBhZ2UgKi8KPiArCQlzdHJ1Y3QgaTkxNV92bWEgKnRpbWVsaW5lX2h3c3A7Cj4g KwkJdTY0IHRpbWVsaW5lX2ZyZWU7Cj4gKwo+ICAgCQlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9y aW5nczsKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCBjbG9zZWRfdm1hOwo+ICAgCQl1MzIgYWN0aXZl X3JlcXVlc3RzOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVs aW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKPiBpbmRleCAwNDM0 YjVlMGQzZTEuLjczYWQ5NTFjNzRkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RpbWVsaW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVs aW5lLmMKPiBAQCAtOSwxMCArOSw3NSBAQAo+ICAgI2luY2x1ZGUgImk5MTVfdGltZWxpbmUuaCIK PiAgICNpbmNsdWRlICJpOTE1X3N5bmNtYXAuaCIKPiAgIAo+IC12b2lkIGk5MTVfdGltZWxpbmVf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJc3RydWN0IGk5MTVfdGlt ZWxpbmUgKnRpbWVsaW5lLAo+IC0JCQljb25zdCBjaGFyICpuYW1lKQo+ICsjZGVmaW5lIE5CSVRT IEJJVFNfUEVSX1RZUEUodHlwZW9mKGk5MTUtPmd0LnRpbWVsaW5lX2ZyZWUpKQo+ICsKPiArc3Rh dGljIGludCBmaW5kX2ZpcnN0X2NhY2hlbGluZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiArewo+ICsJcmV0dXJuIGZpbmRfZmlyc3RfYml0KCh1bnNpZ25lZCBsb25nICopJmk5MTUt Pmd0LnRpbWVsaW5lX2ZyZWUsIE5CSVRTKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhbGxvY19o d3NwKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiArewo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0aW1lbGluZS0+aTkxNTsKPiArCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwo+ICsJaW50IG9mZnNldDsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5ndC50aW1lbGlu ZV9sb2NrKTsKPiArCj4gK3Jlc3RhcnQ6Cj4gKwlvZmZzZXQgPSBmaW5kX2ZpcnN0X2NhY2hlbGlu ZShpOTE1KTsKPiArCWlmIChvZmZzZXQgPT0gTkJJVFMgJiYgaTkxNS0+Z3QudGltZWxpbmVfaHdz cCkgewo+ICsJCWk5MTVfdm1hX3B1dChpOTE1LT5ndC50aW1lbGluZV9od3NwKTsKPiArCQlpOTE1 LT5ndC50aW1lbGluZV9od3NwID0gTlVMTDsKPiArCX0KPiArCj4gKwl2bWEgPSBpOTE1LT5ndC50 aW1lbGluZV9od3NwOwo+ICsJaWYgKCF2bWEpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqYm87Cj4gKwo+ICsJCS8qIERyb3AgdGhlIGxvY2sgYmVmb3JlIGFsbG9jYXRpb25zICov Cj4gKwkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5ndC50aW1lbGluZV9sb2NrKTsKPiArCj4gKwkJQlVJ TERfQlVHX09OKE5CSVRTICogQ0FDSEVMSU5FX0JZVEVTID4gUEFHRV9TSVpFKTsKPiArCQlibyA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgUEFHRV9TSVpFKTsKPiArCQlp ZiAoSVNfRVJSKGJvKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoYm8pOwo+ICsKPiArCQlpOTE1X2dl bV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKGJvLCBJOTE1X0NBQ0hFX0xMQyk7Cj4gKwo+ICsJCXZt YSA9IGk5MTVfdm1hX2luc3RhbmNlKGJvLCAmaTkxNS0+Z2d0dC52bSwgTlVMTCk7Cj4gKwkJaWYg KElTX0VSUih2bWEpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUih2bWEpOwo+ICsKPiArCQltdXRleF9s b2NrKCZpOTE1LT5ndC50aW1lbGluZV9sb2NrKTsKPiArCQlpZiAoaTkxNS0+Z3QudGltZWxpbmVf aHdzcCkgewo+ICsJCQlpOTE1X2dlbV9vYmplY3RfcHV0KGJvKTsKPiArCQkJZ290byByZXN0YXJ0 Owo+ICsJCX0KPiArCj4gKwkJaTkxNS0+Z3QudGltZWxpbmVfaHdzcCA9IHZtYTsKPiArCQlpOTE1 LT5ndC50aW1lbGluZV9mcmVlID0gfjB1bGw7Cj4gKwkJb2Zmc2V0ID0gMDsKPiArCX0KPiArCj4g KwlpOTE1LT5ndC50aW1lbGluZV9mcmVlICY9IH5CSVRfVUxMKG9mZnNldCk7Cj4gKwo+ICsJdGlt ZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldCh2bWEpOwo+ICsJdGltZWxpbmUtPmh3c3Bf b2Zmc2V0ID0gb2Zmc2V0ICogQ0FDSEVMSU5FX0JZVEVTOwo+ICsKPiArCW11dGV4X3VubG9jaygm aTkxNS0+Z3QudGltZWxpbmVfbG9jayk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KSWYgSSdtIHJl YWRpbmcgdGhpcyBjb3JyZWN0bHkgdGhlbiBndC50aW1lbGluZV9od3NwL2ZyZWUgaXMgdGhlIGEg Y2FjaGVkIApjb3B5IG9mIHRoZSBtb3N0IHJlY2VudGx5IGFsbG9jYXRlZCBidXQgbm90IHlldCBm aWxsZWQgYmFuayBvZiBzZXFubyAKbG9jYXRpb25zLiBXaGVuIGl0IGdldHMgZnVsbCwgdGhlIGk5 MTUtPmd0IHJlZmVyZW5jZSBnZXRzIGRyb3BwZWQgYW5kIGEgCm5ldyBwYWdlIGlzIGFsbG9jYXRl ZCBhbmQgdXNlZCB1cCBsaW5lIGJ5IGxpbmUuIE1lYW53aGlsZSwgZWFjaCB0aW1lbGluZSAKaGFz IGl0J3Mgb3duIHByaXZhdGUgcmVmZXJlbmNlIHRvIHRoZSBwYWdlIHNvIGRyb3BwaW5nIHRoZSBp OTE1LT5ndCAKcmVmZXJlbmNlIGlzIHNhZmUuIEFuZCBvbmNlIHRoZSBsYXN0IHRpbWVsaW5lIHVz aW5nIGEgZ2l2ZW4gcGFnZSBpcyAKZnJlZWQsIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGF0IHBh Z2Ugd2lsbCBiZSBkcm9wcGVkIGFuZCBzbyB0aGUgcGFnZSAKaXRzZWxmIHdpbGwgYWxzbyBiZSBm cmVlZC4gSWYgYSB0aW1lbGluZSBpcyBmcmVlZCBiZWZvcmUgdGhlIGN1cnJlbnRseSAKY2FjaGVk IHBhZ2UgaXMgZmlsbGVkLCB0aGVuIHRoYXQgdGltZWxpbmUncyBzbG90IHdpbGwgYmUgcmVsZWFz ZWQgYW5kIApyZS11c2VkIGJ5IHRoZSBuZXh0IHRpbWVsaW5lIHRvIGJlIGNyZWF0ZWQuCgpCdXQg d2hhdCBhYm91dCB0aGUgc2NlbmFyaW8gb2YgYSBsb25nIHJ1bm5pbmcgc3lzdGVtIHdpdGggYSBz bWFsbCBidXQgCmdyb3dpbmcgbnVtYmVyIG9mIHBlcnNpc3RlbnQgdGFza3MgaW50ZXJzcGVyc2Vk IHdpdGggbWFueSBzaG9ydCBsaXZlZCAKdGFza3M/IEluIHRoYXQgY2FzZSwgeW91IHdvdWxkIGVu ZCB1cCB3aXRoIG1hbnkgc3BhcnNlbHkgcG9wdWxhdGVkIHBhZ2VzIAp0aGF0IHdob3NlIGZyZWUg c2xvdHMgd2lsbCBub3QgZ2V0IHJlLXVzZWQuIFlvdSBjb3VsZCBoYXZlIGEgbGlua2VkIGxpc3Qg Cm9mIGNhY2hlZCBwYWdlcy4gV2hlbiBhIHBhZ2UgaXMgZmlsbGVkLCBtb3ZlIGl0IHRvIGEgJ2Z1 bGwnIGxpc3QuIFdoZW4gYSAKdGltZWxpbmUgaXMgZnJlZWQsIGlmIGl0J3MgcGFnZSB3YXMgb24g dGhlICdmdWxsJyBsaXN0LCBjbGVhciB0aGUgc2xvdCAKYW5kIG1vdmUgaXQgYmFjayB0byB0aGUg J2F2YWlsYWJsZScgbGlzdC4KCk9yIGlzIHRoZSBpZGVhIHRoYXQgYSB3b3JzdCBjYXNlIG9mIGEg c2luZ2xlIHBhZ2Ugdm1hIGFsbG9jYXRpb24gcGVyIAp0aW1lbGluZSBpcyB0aGUgbGVhc3Qgb2Yg b3VyIHdvcnJpZXMgaWYgdGhlcmUgaXMgYW4gZXZlciBncm93aW5nIG51bWJlciAKb2YgdGltZWxp bmVzL2NvbnRleHRzL3VzZXJzIGluIHRoZSBzeXN0ZW0/CgoKPiArCj4gK2ludCBpOTE1X3RpbWVs aW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJICAgICAgIHN0cnVj dCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKPiArCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwK PiArCQkgICAgICAgc3RydWN0IGk5MTVfdm1hICpnbG9iYWxfaHdzcCkKPiAgIHsKPiArCXZvaWQg KnZhZGRyOwo+ICsJaW50IGVycjsKPiArCj4gICAJLyoKPiAgIAkgKiBJZGVhbGx5IHdlIHdhbnQg YSBzZXQgb2YgZW5naW5lcyBvbiBhIHNpbmdsZSBsZWFmIGFzIHdlIGV4cGVjdAo+ICAgCSAqIHRv IG1vc3RseSBiZSB0cmFja2luZyBzeW5jaHJvbmlzYXRpb24gYmV0d2VlbiBlbmdpbmVzLiBJdCBp cyBub3QKPiBAQCAtMjMsMTAgKzg4LDI3IEBAIHZvaWQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICAJdGltZWxpbmUtPmk5MTUgPSBpOTE1 Owo+ICAgCXRpbWVsaW5lLT5uYW1lID0gbmFtZTsKPiArCXRpbWVsaW5lLT5waW5fY291bnQgPSAw Owo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5ndC50aW1lbGluZV9sb2NrKTsKPiAtCWxpc3Rf YWRkKCZ0aW1lbGluZS0+bGluaywgJmk5MTUtPmd0LnRpbWVsaW5lcyk7Cj4gLQltdXRleF91bmxv Y2soJmk5MTUtPmd0LnRpbWVsaW5lX2xvY2spOwo+ICsJaWYgKGdsb2JhbF9od3NwKSB7Cj4gKwkJ dGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldChnbG9iYWxfaHdzcCk7Cj4gKwkJdGlt ZWxpbmUtPmh3c3Bfb2Zmc2V0ID0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFI7Cj4gKwl9IGVsc2Ug ewo+ICsJCWVyciA9IGFsbG9jX2h3c3AodGltZWxpbmUpOwo+ICsJCWlmIChlcnIpCj4gKwkJCXJl dHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICsJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh0 aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIodmFk ZHIpKSB7IC8qIGxlYWsgdGhlIGNhY2hlbGluZSwgYnV0IHdpbGwgY2xlYW4gdXAgbGF0ZXIgKi8K Q2FuIHlvdSBleHBsYWluIHRoaXMgY29tbWVudCBtb3JlPyBXaGVyZS93aGVuIGlzIHRoZSBsYXRl cj8KCj4gKwkJaTkxNV92bWFfcHV0KHRpbWVsaW5lLT5od3NwX2dndHQpOwo+ICsJCXJldHVybiBQ VFJfRVJSKHZhZGRyKTsKPiArCX0KPiArCj4gKwl0aW1lbGluZS0+aHdzcF9zZXFubyA9Cj4gKwkJ bWVtc2V0KHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0LAo+ICsJCSAgICAgICAwLAo+ICsJ CSAgICAgICBzaXplb2YoKnRpbWVsaW5lLT5od3NwX3NlcW5vKSk7Cj4gICAKPiAgIAkvKiBDYWxs ZWQgZHVyaW5nIGVhcmx5X2luaXQgYmVmb3JlIHdlIGtub3cgaG93IG1hbnkgZW5naW5lcyB0aGVy ZSBhcmUgKi8KPiAgIAo+IEBAIC0zOCw2ICsxMjAsMTIgQEAgdm9pZCBpOTE1X3RpbWVsaW5lX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJSU5JVF9MSVNUX0hFQUQoJnRp bWVsaW5lLT5yZXF1ZXN0cyk7Cj4gICAKPiAgIAlpOTE1X3N5bmNtYXBfaW5pdCgmdGltZWxpbmUt PnN5bmMpOwo+ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmd0LnRpbWVsaW5lX2xvY2spOwo+ICsJ bGlzdF9hZGQoJnRpbWVsaW5lLT5saW5rLCAmaTkxNS0+Z3QudGltZWxpbmVzKTsKPiArCW11dGV4 X3VubG9jaygmaTkxNS0+Z3QudGltZWxpbmVfbG9jayk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9 Cj4gICAKPiAgIHZvaWQgaTkxNV90aW1lbGluZXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiBAQCAtNzgsMzAgKzE2Niw3NSBAQCB2b2lkIGk5MTVfdGltZWxpbmVzX3Bhcmso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAKPiAgIHZvaWQgaTkxNV90aW1lbGlu ZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiAgIHsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gdGltZWxpbmUtPmk5MTU7Cj4gKwo+ICsJR0VNX0JVR19P Tih0aW1lbGluZS0+cGluX2NvdW50KTsKPiAgIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0aW1l bGluZS0+cmVxdWVzdHMpKTsKPiAgIAo+ICAgCWk5MTVfc3luY21hcF9mcmVlKCZ0aW1lbGluZS0+ c3luYyk7Cj4gICAKPiAtCW11dGV4X2xvY2soJnRpbWVsaW5lLT5pOTE1LT5ndC50aW1lbGluZV9s b2NrKTsKPiArCW11dGV4X2xvY2soJmk5MTUtPmd0LnRpbWVsaW5lX2xvY2spOwo+ICAgCWxpc3Rf ZGVsKCZ0aW1lbGluZS0+bGluayk7Cj4gLQltdXRleF91bmxvY2soJnRpbWVsaW5lLT5pOTE1LT5n dC50aW1lbGluZV9sb2NrKTsKPiArCWlmICh0aW1lbGluZS0+aHdzcF9nZ3R0ID09IGk5MTUtPmd0 LnRpbWVsaW5lX2h3c3ApCj4gKwkJaTkxNS0+Z3QudGltZWxpbmVfZnJlZSB8PQo+ICsJCQlCSVRf VUxMKHRpbWVsaW5lLT5od3NwX29mZnNldCAvIENBQ0hFTElORV9CWVRFUyk7Cj4gKwltdXRleF91 bmxvY2soJmk5MTUtPmd0LnRpbWVsaW5lX2xvY2spOwo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9tYXAodGltZWxpbmUtPmh3c3BfZ2d0dC0+b2JqKTsKPiArCWk5MTVfdm1hX3B1dCh0aW1l bGluZS0+aHdzcF9nZ3R0KTsKPiAgIH0KPiAgIAo+ICAgc3RydWN0IGk5MTVfdGltZWxpbmUgKgo+ IC1pOTE1X3RpbWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29u c3QgY2hhciAqbmFtZSkKPiAraTkxNV90aW1lbGluZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gKwkJICAgICBjb25zdCBjaGFyICpuYW1lLAo+ICsJCSAgICAgc3RydWN0 IGk5MTVfdm1hICpnbG9iYWxfaHdzcCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAq dGltZWxpbmU7Cj4gKwlpbnQgZXJyOwo+ICAgCj4gICAJdGltZWxpbmUgPSBremFsbG9jKHNpemVv ZigqdGltZWxpbmUpLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoIXRpbWVsaW5lKQo+ICAgCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgIAo+IC0JaTkxNV90aW1lbGluZV9pbml0KGk5MTUsIHRp bWVsaW5lLCBuYW1lKTsKPiArCWVyciA9IGk5MTVfdGltZWxpbmVfaW5pdChpOTE1LCB0aW1lbGlu ZSwgbmFtZSwgZ2xvYmFsX2h3c3ApOwo+ICsJaWYgKGVycikgewo+ICsJCWtmcmVlKHRpbWVsaW5l KTsKPiArCQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsJfQo+ICsKPiAgIAlrcmVmX2luaXQoJnRp bWVsaW5lLT5rcmVmKTsKPiAgIAo+ICAgCXJldHVybiB0aW1lbGluZTsKPiAgIH0KPiAgIAo+ICtp bnQgaTkxNV90aW1lbGluZV9waW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQo+ICt7Cj4gKwlp bnQgZXJyOwo+ICsKPiArCWlmICh0bC0+cGluX2NvdW50KyspCj4gKwkJcmV0dXJuIDA7Cj4gKwlH RU1fQlVHX09OKCF0bC0+cGluX2NvdW50KTsKPiArCj4gKwllcnIgPSBpOTE1X3ZtYV9waW4odGwt Pmh3c3BfZ2d0dCwgMCwgMCwgUElOX0dMT0JBTCB8IFBJTl9ISUdIKTsKPiArCWlmIChlcnIpCj4g KwkJZ290byB1bnBpbjsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK3VucGluOgo+ICsJdGwtPnBp bl9jb3VudCA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfdGltZWxp bmVfdW5waW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQo+ICt7Cj4gKwlHRU1fQlVHX09OKCF0 bC0+cGluX2NvdW50KTsKPiArCWlmICgtLXRsLT5waW5fY291bnQpCj4gKwkJcmV0dXJuOwo+ICsK PiArCV9faTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7Cj4gK30KPiArCj4gICB2b2lkIF9f aTkxNV90aW1lbGluZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQo+ICAgewo+ICAgCXN0cnVjdCBp OTE1X3RpbWVsaW5lICp0aW1lbGluZSA9Cj4gQEAgLTExMyw4ICsyNDYsMTQgQEAgdm9pZCBfX2k5 MTVfdGltZWxpbmVfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKPiAgIAo+ICAgdm9pZCBpOTE1X3Rp bWVsaW5lc19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICsJc3Ry dWN0IGk5MTVfdm1hICp2bWE7Cj4gKwo+ICAgCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmk5MTUt Pmd0LnRpbWVsaW5lcykpOwo+ICAgCj4gKwl2bWEgPSBmZXRjaF9hbmRfemVybygmaTkxNS0+Z3Qu dGltZWxpbmVfaHdzcCk7Cj4gKwlpZiAodm1hKQo+ICsJCWk5MTVfdm1hX3B1dCh2bWEpOwo+ICsK PiAgIAltdXRleF9kZXN0cm95KCZpOTE1LT5ndC50aW1lbGluZV9sb2NrKTsKPiAgIH0KPiAgIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKPiBpbmRleCA4N2FkMmRkMzFjMjAuLjBj MzczOWQ1M2Q3OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVs aW5lLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKPiBAQCAt MzIsNiArMzIsOCBAQAo+ICAgI2luY2x1ZGUgImk5MTVfc3luY21hcC5oIgo+ICAgI2luY2x1ZGUg Imk5MTVfdXRpbHMuaCIKPiAgIAo+ICtzdHJ1Y3QgaTkxNV92bWE7Cj4gKwo+ICAgc3RydWN0IGk5 MTVfdGltZWxpbmUgewo+ICAgCXU2NCBmZW5jZV9jb250ZXh0Owo+ICAgCXUzMiBzZXFubzsKPiBA QCAtNDAsNiArNDIsMTEgQEAgc3RydWN0IGk5MTVfdGltZWxpbmUgewo+ICAgI2RlZmluZSBUSU1F TElORV9DTElFTlQgMCAvKiBkZWZhdWx0IHN1YmNsYXNzICovCj4gICAjZGVmaW5lIFRJTUVMSU5F X0VOR0lORSAxCj4gICAKPiArCXVuc2lnbmVkIGludCBwaW5fY291bnQ7Cj4gKwljb25zdCB1MzIg Kmh3c3Bfc2Vxbm87Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKmh3c3BfZ2d0dDsKPiArCXUzMiBod3Nw X29mZnNldDsKPiArCj4gICAJLyoqCj4gICAJICogTGlzdCBvZiBicmVhZGNydW1icyBhc3NvY2lh dGVkIHdpdGggR1BVIHJlcXVlc3RzIGN1cnJlbnRseQo+ICAgCSAqIG91dHN0YW5kaW5nLgo+IEBA IC03MSw5ICs3OCwxMCBAQCBzdHJ1Y3QgaTkxNV90aW1lbGluZSB7Cj4gICAJc3RydWN0IGtyZWYg a3JlZjsKPiAgIH07Cj4gICAKPiAtdm9pZCBpOTE1X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKPiAtCQkJ Y29uc3QgY2hhciAqbmFtZSk7Cj4gK2ludCBpOTE1X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJICAgICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwK PiArCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKPiArCQkgICAgICAgc3RydWN0IGk5MTVfdm1h ICpod3NwKTsKPiAgIHZvaWQgaTkxNV90aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0bCk7Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZAo+IEBAIC05Niw3ICsxMDQsOSBAQCBp OTE1X3RpbWVsaW5lX3NldF9zdWJjbGFzcyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUs Cj4gICB9Cj4gICAKPiAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICoKPiAtaTkxNV90aW1lbGluZV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGNvbnN0IGNoYXIgKm5hbWUpOwo+ ICtpOTE1X3RpbWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAr CQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsCj4gKwkJICAgICBzdHJ1Y3QgaTkxNV92bWEgKmdsb2Jh bF9od3NwKTsKPiAgIAo+ICAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqCj4g ICBpOTE1X3RpbWVsaW5lX2dldChzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCj4gQEAg LTEzNSw2ICsxNDUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90aW1lbGluZV9zeW5jX2lz X2xhdGVyKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKPiAgIAlyZXR1cm4gX19pOTE1X3RpbWVs aW5lX3N5bmNfaXNfbGF0ZXIodGwsIGZlbmNlLT5jb250ZXh0LCBmZW5jZS0+c2Vxbm8pOwo+ICAg fQo+ICAgCj4gK2ludCBpOTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwp Owo+ICt2b2lkIGk5MTVfdGltZWxpbmVfdW5waW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKTsK PiArCj4gICB2b2lkIGk5MTVfdGltZWxpbmVzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpOwo+ICAgdm9pZCBpOTE1X3RpbWVsaW5lc19wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKPiAgIHZvaWQgaTkxNV90aW1lbGluZXNfZmluaShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBp bmRleCBmZmVmN2Y0M2ZkYTMuLmYxNjhmMmZlZTk3OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTQ4NCwyNiArNDg0LDYgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZW5naW5lX2luaXRfZXhlY2xpc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCWV4ZWNsaXN0cy0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKPiAgIH0KPiAgIAo+IC0vKioK PiAtICogaW50ZWxfZW5naW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90 IHJlcXVpcmluZyBodyBhY2Nlc3MKPiAtICogQGVuZ2luZTogRW5naW5lIHRvIHNldHVwLgo+IC0g Kgo+IC0gKiBJbml0aWFsaXplcyBAZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVycyBzaGFyZWQgYmV0 d2VlbiBsZWdhY3kgYW5kIGV4ZWNsaXN0cwo+IC0gKiBzdWJtaXNzaW9uIG1vZGVzIHdoaWNoIGRv IG5vdCByZXF1aXJlIGhhcmR3YXJlIGFjY2Vzcy4KPiAtICoKPiAtICogVHlwaWNhbGx5IGRvbmUg ZWFybHkgaW4gdGhlIHN1Ym1pc3Npb24gbW9kZSBzcGVjaWZpYyBlbmdpbmUgc2V0dXAgc3RhZ2Uu Cj4gLSAqLwo+IC12b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlpOTE1X3RpbWVsaW5lX2luaXQoZW5naW5lLT5pOTE1 LCAmZW5naW5lLT50aW1lbGluZSwgZW5naW5lLT5uYW1lKTsKPiAtCWk5MTVfdGltZWxpbmVfc2V0 X3N1YmNsYXNzKCZlbmdpbmUtPnRpbWVsaW5lLCBUSU1FTElORV9FTkdJTkUpOwo+IC0KPiAtCWlu dGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KGVuZ2luZSk7Cj4gLQlpbnRlbF9lbmdpbmVfaW5pdF9o YW5nY2hlY2soZW5naW5lKTsKPiAtCWludGVsX2VuZ2luZV9pbml0X2JhdGNoX3Bvb2woZW5naW5l KTsKPiAtCWludGVsX2VuZ2luZV9pbml0X2NtZF9wYXJzZXIoZW5naW5lKTsKPiAtfQo+IC0KPiAg IHN0YXRpYyB2b2lkIGNsZWFudXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IEBAIC02MDEsNiArNTgx LDQ0IEBAIHN0YXRpYyBpbnQgaW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ICsvKioKPiArICogaW50ZWxf ZW5naW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90IHJlcXVpcmluZyBo dyBhY2Nlc3MKPiArICogQGVuZ2luZTogRW5naW5lIHRvIHNldHVwLgo+ICsgKgo+ICsgKiBJbml0 aWFsaXplcyBAZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVycyBzaGFyZWQgYmV0d2VlbiBsZWdhY3kg YW5kIGV4ZWNsaXN0cwo+ICsgKiBzdWJtaXNzaW9uIG1vZGVzIHdoaWNoIGRvIG5vdCByZXF1aXJl IGhhcmR3YXJlIGFjY2Vzcy4KPiArICoKPiArICogVHlwaWNhbGx5IGRvbmUgZWFybHkgaW4gdGhl IHN1Ym1pc3Npb24gbW9kZSBzcGVjaWZpYyBlbmdpbmUgc2V0dXAgc3RhZ2UuCj4gKyAqLwo+ICtp bnQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaW5pdF9zdGF0dXNfcGFnZShlbmdp bmUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWVyciA9IGk5MTVfdGlt ZWxpbmVfaW5pdChlbmdpbmUtPmk5MTUsCj4gKwkJCQkgJmVuZ2luZS0+dGltZWxpbmUsCj4gKwkJ CQkgZW5naW5lLT5uYW1lLAo+ICsJCQkJIGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKPiArCWlm IChlcnIpCj4gKwkJZ290byBlcnJfaHdzcDsKPiArCj4gKwlpOTE1X3RpbWVsaW5lX3NldF9zdWJj bGFzcygmZW5naW5lLT50aW1lbGluZSwgVElNRUxJTkVfRU5HSU5FKTsKPiArCj4gKwlpbnRlbF9l bmdpbmVfaW5pdF9leGVjbGlzdChlbmdpbmUpOwo+ICsJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2No ZWNrKGVuZ2luZSk7Cj4gKwlpbnRlbF9lbmdpbmVfaW5pdF9iYXRjaF9wb29sKGVuZ2luZSk7Cj4g KwlpbnRlbF9lbmdpbmVfaW5pdF9jbWRfcGFyc2VyKGVuZ2luZSk7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gKwo+ICtlcnJfaHdzcDoKPiArCWNsZWFudXBfc3RhdHVzX3BhZ2UoZW5naW5lKTsKPiArCXJl dHVybiBlcnI7Cj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBfX2ludGVsX2NvbnRleHRfdW5waW4o c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJCQkgIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIHsKPiBAQCAtNjUzLDE0ICs2NzEsOCBAQCBpbnQgaW50ZWxfZW5n aW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAo cmV0KQo+ICAgCQlnb3RvIGVycl91bnBpbl9wcmVlbXB0Owo+ICAgCj4gLQlyZXQgPSBpbml0X3N0 YXR1c19wYWdlKGVuZ2luZSk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZXJyX2JyZWFkY3J1bWJz Owo+IC0KPiAgIAlyZXR1cm4gMDsKPiAgIAo+IC1lcnJfYnJlYWRjcnVtYnM6Cj4gLQlpbnRlbF9l bmdpbmVfZmluaV9icmVhZGNydW1icyhlbmdpbmUpOwo+ICAgZXJyX3VucGluX3ByZWVtcHQ6Cj4g ICAJaWYgKGk5MTUtPnByZWVtcHRfY29udGV4dCkKPiAgIAkJX19pbnRlbF9jb250ZXh0X3VucGlu KGk5MTUtPnByZWVtcHRfY29udGV4dCwgZW5naW5lKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IGluZGV4IDFkZjJhMTg2ODYyMi4uNTkyN2VmMTI0YmY5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBAQCAtMjE4OCwxMCArMjE4OCwxNCBAQCBsb2dpY2FsX3JpbmdfZGVmYXVs dF9pcnFzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAllbmdpbmUtPmlycV9r ZWVwX21hc2sgPSBHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgc2hpZnQ7Cj4gICB9Cj4g ICAKPiAtc3RhdGljIHZvaWQKPiArc3RhdGljIGludAo+ICAgbG9naWNhbF9yaW5nX3NldHVwKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCWludGVsX2VuZ2luZV9zZXR1 cF9jb21tb24oZW5naW5lKTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaW50ZWxfZW5naW5l X3NldHVwX2NvbW1vbihlbmdpbmUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICAg Cj4gICAJLyogSW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rLiAqLwo+ICAgCWVuZ2luZS0+YnVmZmVy ID0gTlVMTDsKPiBAQCAtMjIwMSw2ICsyMjA1LDggQEAgbG9naWNhbF9yaW5nX3NldHVwKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgCWxvZ2ljYWxfcmluZ19kZWZhdWx0 X3ZmdW5jcyhlbmdpbmUpOwo+ICAgCWxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMoZW5naW5lKTsK PiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdf aW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gQEAgLTIyNDgsNyArMjI1NCw5 IEBAIGludCBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ aTkxNTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlsb2dpY2FsX3Jpbmdfc2V0dXAoZW5naW5lKTsK PiArCXJldCA9IGxvZ2ljYWxfcmluZ19zZXR1cChlbmdpbmUpOwo+ICsJaWYgKHJldCkKPiArCQly ZXR1cm4gcmV0Owo+ICAgCj4gICAJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpKQo+ICAgCQllbmdp bmUtPmlycV9rZWVwX21hc2sgfD0gR1RfUkVOREVSX0wzX1BBUklUWV9FUlJPUl9JTlRFUlJVUFQ7 Cj4gQEAgLTIyODIsNyArMjI5MCwxMSBAQCBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgaW50IGxvZ2ljYWxfeGNzX3Jp bmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlsb2dpY2Fs X3Jpbmdfc2V0dXAoZW5naW5lKTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gbG9naWNhbF9y aW5nX3NldHVwKGVuZ2luZSk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gICAKPiAg IAlyZXR1cm4gbG9naWNhbF9yaW5nX2luaXQoZW5naW5lKTsKPiAgIH0KPiBAQCAtMjYxNiw3ICsy NjI4LDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQlnb3RvIGVycm9yX2RlcmVmX29iajsKPiAg IAl9Cj4gICAKPiAtCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoY3R4LT5pOTE1LCBj dHgtPm5hbWUpOwo+ICsJdGltZWxpbmUgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShjdHgtPmk5MTUs IGN0eC0+bmFtZSwgTlVMTCk7CldoeSBkb2VzIHRoaXMgdXNlIHRoZSBnbG9iYWwgSFdTUCByYXRo ZXIgdGhhbiBhIHBlciBjb250ZXh0IG9uZT8KCj4gICAJaWYgKElTX0VSUih0aW1lbGluZSkpIHsK PiAgIAkJcmV0ID0gUFRSX0VSUih0aW1lbGluZSk7Cj4gICAJCWdvdG8gZXJyb3JfZGVyZWZfb2Jq Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA4NzAwZjEw MmY2NjkuLjI0YmQ2ZjViNGY1NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiBAQCAtMTU0MCw5ICsxNTQwLDEzIEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9y aW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3RydWN0IGlu dGVsX3JpbmcgKnJpbmc7Cj4gICAJaW50IGVycjsKPiAgIAo+IC0JaW50ZWxfZW5naW5lX3NldHVw X2NvbW1vbihlbmdpbmUpOwo+ICsJZXJyID0gaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihlbmdp bmUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICAgCj4gLQl0aW1lbGluZSA9IGk5 MTVfdGltZWxpbmVfY3JlYXRlKGVuZ2luZS0+aTkxNSwgZW5naW5lLT5uYW1lKTsKPiArCXRpbWVs aW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoZW5naW5lLT5pOTE1LAo+ICsJCQkJCWVuZ2luZS0+ bmFtZSwKPiArCQkJCQllbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7Cj4gICAJaWYgKElTX0VSUih0 aW1lbGluZSkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUih0aW1lbGluZSk7Cj4gICAJCWdvdG8gZXJy Owo+IEBAIC0xNTY2LDYgKzE1NzAsOCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZm ZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWlmIChlcnIpCj4gICAJCWdv dG8gZXJyX3VucGluOwo+ICAgCj4gKwlHRU1fQlVHX09OKHJpbmctPnRpbWVsaW5lLT5od3NwX2dn dHQgIT0gZW5naW5lLT5zdGF0dXNfcGFnZS52bWEpOwo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIAo+ ICAgZXJyX3VucGluOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBp bmRleCBjMjMyNTQ5YzE4OGUuLmU2ZWM5NmUwYWI1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtNzE2LDcgKzcxNiw5IEBAIGludGVsX3dyaXRlX3N0 YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHJlZywgdTMyIHZh bHVlKQo+ICAgI2RlZmluZSBJOTE1X0dFTV9IV1NfSU5ERVhfQUREUiAoSTkxNV9HRU1fSFdTX0lO REVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKQo+ICAgI2RlZmluZSBJOTE1X0dFTV9I V1NfUFJFRU1QVF9JTkRFWAkweDMyCj4gICAjZGVmaW5lIEk5MTVfR0VNX0hXU19QUkVFTVBUX0FE RFIgKEk5MTVfR0VNX0hXU19QUkVFTVBUX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NI SUZUKQo+IC0jZGVmaW5lIEk5MTVfR0VNX0hXU19TQ1JBVENIX0lOREVYCTB4NDAKPiArI2RlZmlu ZSBJOTE1X0dFTV9IV1NfU0VRTk8JCTB4NDAKPiArI2RlZmluZSBJOTE1X0dFTV9IV1NfU0VRTk9f QUREUiAoSTkxNV9HRU1fSFdTX1NFUU5PIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKQo+ ICsjZGVmaW5lIEk5MTVfR0VNX0hXU19TQ1JBVENIX0lOREVYCTB4ODAKPiAgICNkZWZpbmUgSTkx NV9HRU1fSFdTX1NDUkFUQ0hfQUREUiAoSTkxNV9HRU1fSFdTX1NDUkFUQ0hfSU5ERVggPDwgTUlf U1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpCj4gICAKPiAgICNkZWZpbmUgSTkxNV9IV1NfQ1NCX0JV RjBfSU5ERVgJCTB4MTAKPiBAQCAtODIyLDcgKzgyNCw3IEBAIGludGVsX3Jpbmdfc2V0X3RhaWwo c3RydWN0IGludGVsX3JpbmcgKnJpbmcsIHVuc2lnbmVkIGludCB0YWlsKQo+ICAgCj4gICB2b2lk IGludGVsX2VuZ2luZV93cml0ZV9nbG9iYWxfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCB1MzIgc2Vxbm8pOwo+ICAgCj4gLXZvaWQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1v bihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICtpbnQgaW50ZWxfZW5naW5lX3Nl dHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAgaW50IGludGVs X2VuZ2luZV9pbml0X2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAg dm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfbGl2ZV9zZWxmdGVzdHMuaAo+IGluZGV4IGExNTcxM2NhZTNiMy4uNzZiNGY4N2ZjODUz IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVf c2VsZnRlc3RzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9s aXZlX3NlbGZ0ZXN0cy5oCj4gQEAgLTEzLDYgKzEzLDcgQEAgc2VsZnRlc3Qoc2FuaXR5Y2hlY2ss IGk5MTVfbGl2ZV9zYW5pdHljaGVjaykgLyoga2VlcCBmaXJzdCAoaWd0IHNlbGZjaGVjaykgKi8K PiAgIHNlbGZ0ZXN0KHVuY29yZSwgaW50ZWxfdW5jb3JlX2xpdmVfc2VsZnRlc3RzKQo+ICAgc2Vs ZnRlc3Qod29ya2Fyb3VuZHMsIGludGVsX3dvcmthcm91bmRzX2xpdmVfc2VsZnRlc3RzKQo+ICAg c2VsZnRlc3QocmVxdWVzdHMsIGk5MTVfcmVxdWVzdF9saXZlX3NlbGZ0ZXN0cykKPiArc2VsZnRl c3QodGltZWxpbmVzLCBpOTE1X3RpbWVsaW5lX2xpdmVfc2VsZnRlc3RzKQo+ICAgc2VsZnRlc3Qo b2JqZWN0cywgaTkxNV9nZW1fb2JqZWN0X2xpdmVfc2VsZnRlc3RzKQo+ICAgc2VsZnRlc3QoZG1h YnVmLCBpOTE1X2dlbV9kbWFidWZfbGl2ZV9zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChjb2hlcmVu Y3ksIGk5MTVfZ2VtX2NvaGVyZW5jeV9saXZlX3NlbGZ0ZXN0cykKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKPiBpbmRleCAx YjcwMjA4ZWVlYTcuLjRhODNhMWM2YzQwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAo+IEBAIC0xNiw3ICsxNiw3 IEBAIHNlbGZ0ZXN0KHN5bmNtYXAsIGk5MTVfc3luY21hcF9tb2NrX3NlbGZ0ZXN0cykKPiAgIHNl bGZ0ZXN0KHVuY29yZSwgaW50ZWxfdW5jb3JlX21vY2tfc2VsZnRlc3RzKQo+ICAgc2VsZnRlc3Qo ZW5naW5lLCBpbnRlbF9lbmdpbmVfY3NfbW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChicmVh ZGNydW1icywgaW50ZWxfYnJlYWRjcnVtYnNfbW9ja19zZWxmdGVzdHMpCj4gLXNlbGZ0ZXN0KHRp bWVsaW5lcywgaTkxNV9nZW1fdGltZWxpbmVfbW9ja19zZWxmdGVzdHMpCj4gK3NlbGZ0ZXN0KHRp bWVsaW5lcywgaTkxNV90aW1lbGluZV9tb2NrX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KHJlcXVl c3RzLCBpOTE1X3JlcXVlc3RfbW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChvYmplY3RzLCBp OTE1X2dlbV9vYmplY3RfbW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChkbWFidWYsIGk5MTVf Z2VtX2RtYWJ1Zl9tb2NrX3NlbGZ0ZXN0cykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKPiBpbmRleCAxOWYxYzZhNWM4ZmIuLmQxMzc3OTgwODIw MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1l bGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxp bmUuYwo+IEBAIC0yNTYsNyArMjU2LDcgQEAgc3RhdGljIGludCBiZW5jaF9zeW5jKHZvaWQgKmFy ZykKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1pbnQgaTkxNV9nZW1fdGltZWxpbmVfbW9j a19zZWxmdGVzdHModm9pZCkKPiAraW50IGk5MTVfdGltZWxpbmVfbW9ja19zZWxmdGVzdHModm9p ZCkKPiAgIHsKPiAgIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0g ewo+ICAgCQlTVUJURVNUKGlndF9zeW5jKSwKPiBAQCAtMjY1LDMgKzI2NSwzNzQgQEAgaW50IGk5 MTVfZ2VtX3RpbWVsaW5lX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICAKPiAgIAlyZXR1cm4gaTkx NV9zdWJ0ZXN0cyh0ZXN0cywgTlVMTCk7Cj4gICB9Cj4gKwo+ICtzdGF0aWMgaW50IGxpdmVfaHdz cF9lbmdpbmUodm9pZCAqYXJnKQo+ICt7Cj4gKyNkZWZpbmUgTlVNX1RJTUVMSU5FUyA0MDk2Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBpOTE1X3Rp bWVsaW5lICoqdGltZWxpbmVzOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK PiArCXVuc2lnbmVkIGxvbmcgY291bnQsIG47Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwkvKgo+ ICsJICogQ3JlYXRlIGEgYnVuY2ggb2YgdGltZWxpbmVzIGFuZCBjaGVjayB3ZSBjYW4gd3JpdGUK PiArCSAqIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvZiB0aGVpciBicmVhZGNydW1iIHNsb3RzLgo+ ICsJICovCj4gKwo+ICsJdGltZWxpbmVzID0ga3ZtYWxsb2NfYXJyYXkoTlVNX1RJTUVMSU5FUyAq IEk5MTVfTlVNX0VOR0lORVMsCj4gKwkJCQkgICBzaXplb2YoKnRpbWVsaW5lcyksCj4gKwkJCQkg ICBHRlBfS0VSTkVMKTsKPiArCWlmICghdGltZWxpbmVzKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJd2FrZXJlZiA9 IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsKPiArCWNvdW50ID0gMDsKPiArCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2Fu X3N0b3JlX2R3b3JkKGVuZ2luZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlmb3IgKG4gPSAw OyBuIDwgTlVNX1RJTUVMSU5FUzsgbisrKSB7Cj4gKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 bDsKPiArCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwkJCXUzMiBhZGRyOwo+ICsJCQl1 MzIgKmNzOwo+ICsKPiArCQkJdGwgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShpOTE1LCAibGl2ZSIs IE5VTEwpOwo+ICsJCQlpZiAoSVNfRVJSKHRsKSkgewo+ICsJCQkJZXJyID0gUFRSX0VSUih0bCk7 Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJaWYgKCp0bC0+aHdzcF9zZXFubykg ewo+ICsJCQkJcHJfZXJyKCJUaW1lbGluZSAlbHUgY3JlYXRlZCB3aXRoIG5vbi16ZXJvIGJyZWFk Y3J1bWIsIGZvdW5kICV4XG4iLAo+ICsJCQkJICAgICAgIGNvdW50LCAqdGwtPmh3c3Bfc2Vxbm8p Owo+ICsJCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKPiAr CQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQllcnIgPSBpOTE1X3RpbWVsaW5lX3Bpbih0 bCk7Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKPiArCQkJ CWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdp bmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiArCQkJaWYgKElTX0VSUihycSkpIHsKPiArCQkJ CWk5MTVfdGltZWxpbmVfdW5waW4odGwpOwo+ICsJCQkJaTkxNV90aW1lbGluZV9wdXQodGwpOwo+ ICsJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiAr CQkJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsKPiArCQkJaWYgKElTX0VSUihjcykpIHsK PiArCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJCQkJaTkxNV90aW1lbGluZV91bnBpbih0 bCk7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKGNz KTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlhZGRyID0gaTkxNV9nZ3R0X29m ZnNldCh0bC0+aHdzcF9nZ3R0KSArIHRsLT5od3NwX29mZnNldDsKPiArCj4gKwkJCWlmIChJTlRF TF9HRU4oaTkxNSkgPj0gOCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VO NCB8IE1JX1VTRV9HR1RUOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysgPSAwOwo+ ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0g NCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RU Owo+ICsJCQkJKmNzKysgPSAwOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysgPSBj b3VudDsKPiArCQkJfSBlbHNlIHsKPiArCQkJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwg TUlfTUVNX1ZJUlRVQUw7Cj4gKwkJCQkqY3MrKyA9IGFkZHI7Cj4gKwkJCQkqY3MrKyA9IGNvdW50 Owo+ICsJCQkJKmNzKysgPSBNSV9OT09QOwo+ICsJCQl9Cj4gKwkJCWludGVsX3JpbmdfYWR2YW5j ZShycSwgY3MpOwo+ICsKPiArCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwkJCWk5MTVfdGlt ZWxpbmVfdW5waW4odGwpOwo+ICsKPiArCQkJdGltZWxpbmVzW2NvdW50KytdID0gdGw7Cj4gKwkJ fQo+ICsJfQo+ICsKPiArCWVyciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwgSTkxNV9X QUlUX0xPQ0tFRCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICsKPiArb3V0Ogo+ICsJZm9yIChu ID0gMDsgbiA8IGNvdW50OyBuKyspIHsKPiArCQlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwgPSB0 aW1lbGluZXNbbl07Cj4gKwo+ICsJCWlmICghZXJyICYmICp0bC0+aHdzcF9zZXFubyAhPSBuKSB7 Cj4gKwkJCXByX2VycigiSW52YWxpZCBzZXFubyBzdG9yZWQgaW4gdGltZWxpbmUgJWx1LCBmb3Vu ZCAweCV4XG4iLAo+ICsJCQkgICAgICAgbiwgKnRsLT5od3NwX3NlcW5vKTsKPiArCQkJZXJyID0g LUVJTlZBTDsKPiArCQl9Cj4gKwkJaTkxNV90aW1lbGluZV9wdXQodGwpOwo+ICsJfQo+ICsKPiAr CWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICsJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlrdmZyZWUodGltZWxpbmVzKTsKPiArCj4g KwlyZXR1cm4gZXJyOwo+ICsjdW5kZWYgTlVNX1RJTUVMSU5FUwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGxpdmVfaHdzcF9hbHRlcm5hdGUodm9pZCAqYXJnKQo+ICt7Cj4gKyNkZWZpbmUgTlVNX1RJ TUVMSU5FUyA0MDk2Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiAr CXN0cnVjdCBpOTE1X3RpbWVsaW5lICoqdGltZWxpbmVzOwo+ICsJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKPiArCXVuc2lnbmVkIGxvbmcgY291bnQsIG47Cj4gKwlpbnQgZXJyID0g MDsKPiArCj4gKwkvKgo+ICsJICogQ3JlYXRlIGEgYnVuY2ggb2YgdGltZWxpbmVzIGFuZCBjaGVj ayB3ZSBjYW4gd3JpdGUKPiArCSAqIGluZGVwZW5kZW50bHkgdG8gZWFjaCBvZiB0aGVpciBicmVh ZGNydW1iIHNsb3RzIHdpdGggYWRqYWNlbnQKPiArCSAqIGVuZ2luZXMuCj4gKwkgKi8KPiArCj4g Kwl0aW1lbGluZXMgPSBrdm1hbGxvY19hcnJheShOVU1fVElNRUxJTkVTICogSTkxNV9OVU1fRU5H SU5FUywKPiArCQkJCSAgIHNpemVvZigqdGltZWxpbmVzKSwKPiArCQkJCSAgIEdGUF9LRVJORUwp Owo+ICsJaWYgKCF0aW1lbGluZXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXQoaTkxNSk7Cj4gKwo+ICsJY291bnQgPSAwOwo+ICsJZm9yIChuID0gMDsgbiA8IE5V TV9USU1FTElORVM7IG4rKykgewo+ICsJCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlk KSB7Cj4gKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bDsKPiArCQkJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7Cj4gKwkJCXUzMiBhZGRyOwo+ICsJCQl1MzIgKmNzOwo+ICsKPiArCQkJaWYgKCFp bnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpCj4gKwkJCQljb250aW51ZTsKPiAr Cj4gKwkJCXRsID0gaTkxNV90aW1lbGluZV9jcmVhdGUoaTkxNSwgImxpdmUiLCBOVUxMKTsKPiAr CQkJaWYgKElTX0VSUih0bCkpIHsKPiArCQkJCWVyciA9IFBUUl9FUlIodGwpOwo+ICsJCQkJZ290 byBvdXQ7Cj4gKwkJCX0KPiArCj4gKwkJCWlmICgqdGwtPmh3c3Bfc2Vxbm8pIHsKPiArCQkJCXBy X2VycigiVGltZWxpbmUgJWx1IGNyZWF0ZWQgd2l0aCBub24temVybyBicmVhZGNydW1iLCBmb3Vu ZCAleFxuIiwKPiArCQkJCSAgICAgICBjb3VudCwgKnRsLT5od3NwX3NlcW5vKTsKPiArCQkJCWVy ciA9IC1FSU5WQUw7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQlnb3RvIG91 dDsKPiArCQkJfQo+ICsKPiArCQkJZXJyID0gaTkxNV90aW1lbGluZV9waW4odGwpOwo+ICsJCQlp ZiAoZXJyKSB7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQlnb3RvIG91dDsK PiArCQkJfQo+ICsKPiArCQkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5r ZXJuZWxfY29udGV4dCk7Cj4gKwkJCWlmIChJU19FUlIocnEpKSB7Cj4gKwkJCQlpOTE1X3RpbWVs aW5lX3VucGluKHRsKTsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKPiArCQkJCWVyciA9 IFBUUl9FUlIocnEpOwo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCX0KPiArCj4gKwkJCWNzID0gaW50 ZWxfcmluZ19iZWdpbihycSwgNCk7Cj4gKwkJCWlmIChJU19FUlIoY3MpKSB7Cj4gKwkJCQlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKPiArCQkJCWk5MTVfdGltZWxpbmVfdW5waW4odGwpOwo+ICsJCQkJ aTkxNV90aW1lbGluZV9wdXQodGwpOwo+ICsJCQkJZXJyID0gUFRSX0VSUihjcyk7Cj4gKwkJCQln b3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJYWRkciA9IGk5MTVfZ2d0dF9vZmZzZXQodGwtPmh3 c3BfZ2d0dCkgKyB0bC0+aHdzcF9vZmZzZXQ7Cj4gKwo+ICsJCQlpZiAoSU5URUxfR0VOKGk5MTUp ID49IDgpIHsKPiArCQkJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0Vf R0dUVDsKPiArCQkJCSpjcysrID0gYWRkcjsKPiArCQkJCSpjcysrID0gMDsKPiArCQkJCSpjcysr ID0gY291bnQ7Cj4gKwkJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDQpIHsKPiArCQkJ CSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKPiArCQkJCSpj cysrID0gMDsKPiArCQkJCSpjcysrID0gYWRkcjsKPiArCQkJCSpjcysrID0gY291bnQ7Cj4gKwkJ CX0gZWxzZSB7Cj4gKwkJCQkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTSB8IE1JX01FTV9WSVJU VUFMOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJCSpj cysrID0gTUlfTk9PUDsKPiArCQkJfQo+ICsJCQlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsK PiArCj4gKwkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJCQlpOTE1X3RpbWVsaW5lX3VucGlu KHRsKTsKPiArCj4gKwkJCXRpbWVsaW5lc1tjb3VudCsrXSA9IHRsOwo+ICsJCX0KPiArCX0KPiAr Cj4gKwllcnIgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQs IE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCj4gK291dDoKPiArCWZvciAobiA9IDA7IG4gPCBj b3VudDsgbisrKSB7Cj4gKwkJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0gdGltZWxpbmVzW25d Owo+ICsKPiArCQlpZiAoIWVyciAmJiAqdGwtPmh3c3Bfc2Vxbm8gIT0gbikgewo+ICsJCQlwcl9l cnIoIkludmFsaWQgc2Vxbm8gc3RvcmVkIGluIHRpbWVsaW5lICVsdSwgZm91bmQgMHgleFxuIiwK PiArCQkJICAgICAgIG4sICp0bC0+aHdzcF9zZXFubyk7Cj4gKwkJCWVyciA9IC1FSU5WQUw7Cj4g KwkJfQo+ICsJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKPiArCX0KPiArCj4gKwlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gKwo+ICsJa3ZmcmVlKHRpbWVsaW5lcyk7Cj4gKwo+ICsJcmV0dXJuIGVy cjsKPiArI3VuZGVmIE5VTV9USU1FTElORVMKPiArfQo+ICsKPiArc3RhdGljIGludCBsaXZlX2h3 c3BfcmVjeWNsZSh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gYXJnOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCXVuc2ln bmVkIGxvbmcgY291bnQ7Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwkvKgo+ICsJICogQ2hlY2sg c2Vxbm8gd3JpdGVzIGludG8gb25lIHRpbWVsaW5lIGF0IGEgdGltZS4gV2UgZXhwZWN0IHRvCj4g KwkgKiByZWN5Y2xlIHRoZSBicmVhZGNydW1iIHNsb3QgYmV0d2VlbiBpdGVyYXRpb25zIGFuZCBu ZWl0aGVyCj4gKwkgKiB3YW50IHRvIGNvbmZ1c2Ugb3Vyc2VsdmVzIG9yIHRoZSBHUFUuCj4gKwkg Ki8KPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCXdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCj4gKwljb3VudCA9IDA7Cj4gKwlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCUlHVF9USU1FT1VUKGVuZF90 aW1lKTsKPiArCj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkp Cj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlkbyB7Cj4gKwkJCXN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0bDsKPiArCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwkJCXUzMiBhZGRyOwo+ICsJ CQl1MzIgKmNzOwo+ICsKPiArCQkJdGwgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShpOTE1LCAibGl2 ZSIsIE5VTEwpOwo+ICsJCQlpZiAoSVNfRVJSKHRsKSkgewo+ICsJCQkJZXJyID0gUFRSX0VSUih0 bCk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJaWYgKCp0bC0+aHdzcF9zZXFu bykgewo+ICsJCQkJcHJfZXJyKCJUaW1lbGluZSAlbHUgY3JlYXRlZCB3aXRoIG5vbi16ZXJvIGJy ZWFkY3J1bWIsIGZvdW5kICV4XG4iLAo+ICsJCQkJICAgICAgIGNvdW50LCAqdGwtPmh3c3Bfc2Vx bm8pOwo+ICsJCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsK PiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQllcnIgPSBpOTE1X3RpbWVsaW5lX3Bp bih0bCk7Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKPiAr CQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhl bmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiArCQkJaWYgKElTX0VSUihycSkpIHsKPiAr CQkJCWk5MTVfdGltZWxpbmVfdW5waW4odGwpOwo+ICsJCQkJaTkxNV90aW1lbGluZV9wdXQodGwp Owo+ICsJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsK PiArCQkJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsKPiArCQkJaWYgKElTX0VSUihjcykp IHsKPiArCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJCQkJaTkxNV90aW1lbGluZV91bnBp bih0bCk7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQllcnIgPSBQVFJfRVJS KGNzKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlhZGRyID0gaTkxNV9nZ3R0 X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArIHRsLT5od3NwX29mZnNldDsKPiArCj4gKwkJCWlmIChJ TlRFTF9HRU4oaTkxNSkgPj0gOCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1f R0VONCB8IE1JX1VTRV9HR1RUOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysgPSAw Owo+ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkg Pj0gNCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9H R1RUOwo+ICsJCQkJKmNzKysgPSAwOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysg PSBjb3VudDsKPiArCQkJfSBlbHNlIHsKPiArCQkJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1N IHwgTUlfTUVNX1ZJUlRVQUw7Cj4gKwkJCQkqY3MrKyA9IGFkZHI7Cj4gKwkJCQkqY3MrKyA9IGNv dW50Owo+ICsJCQkJKmNzKysgPSBNSV9OT09QOwo+ICsJCQl9Cj4gKwkJCWludGVsX3JpbmdfYWR2 YW5jZShycSwgY3MpOwo+ICsKPiArCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwkJCWk5MTVf dGltZWxpbmVfdW5waW4odGwpOwo+ICsKPiArCQkJaTkxNV9yZXF1ZXN0X3dhaXQocnEsIEk5MTVf V0FJVF9MT0NLRUQsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCQkJaWYgKCp0bC0+aHdzcF9z ZXFubyAhPSBjb3VudCkgewo+ICsJCQkJcHJfZXJyKCJJbnZhbGlkIHNlcW5vIHN0b3JlZCBpbiB0 aW1lbGluZSAlbHUsIGZvdW5kIDB4JXhcbiIsCj4gKwkJCQkgICAgICAgY291bnQsICp0bC0+aHdz cF9zZXFubyk7Cj4gKwkJCQllcnIgPSAtRUlOVkFMOwo+ICsJCQl9Cj4gKwo+ICsJCQlpOTE1X3Rp bWVsaW5lX3B1dCh0bCk7Cj4gKwkJCWNvdW50Kys7Cj4gKwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJ Z290byBvdXQ7Cj4gKwkJfSB3aGlsZSAoIV9faWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpKTsK PiArCX0KPiArCj4gK291dDoKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYp Owo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlyZXR1 cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV90aW1lbGluZV9saXZlX3NlbGZ0ZXN0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKPiArCQlTVUJURVNUKGxpdmVfaHdzcF9yZWN5Y2xlKSwK PiArCQlTVUJURVNUKGxpdmVfaHdzcF9lbmdpbmUpLAo+ICsJCVNVQlRFU1QobGl2ZV9od3NwX2Fs dGVybmF0ZSksCj4gKwl9Owo+ICsKPiArCXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBpOTE1 KTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19lbmdpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5j Cj4gaW5kZXggOTY4YTdlMTM5YTY3Li5hY2QyN2M3ZTgwN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYwo+IEBAIC0zNCwxMiArMzQsMjAgQEAg c3RhdGljIHN0cnVjdCBpbnRlbF9yaW5nICptb2NrX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+ICAgCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3ogPSBQQUdFX1NJWkUg LyAyOwo+ICAgCXN0cnVjdCBtb2NrX3JpbmcgKnJpbmc7Cj4gKwlpbnQgZXJyOwo+ICAgCj4gICAJ cmluZyA9IGt6YWxsb2Moc2l6ZW9mKCpyaW5nKSArIHN6LCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAo IXJpbmcpCj4gICAJCXJldHVybiBOVUxMOwo+ICAgCj4gLQlpOTE1X3RpbWVsaW5lX2luaXQoZW5n aW5lLT5pOTE1LCAmcmluZy0+dGltZWxpbmUsIGVuZ2luZS0+bmFtZSk7Cj4gKwllcnIgPSBpOTE1 X3RpbWVsaW5lX2luaXQoZW5naW5lLT5pOTE1LAo+ICsJCQkJICZyaW5nLT50aW1lbGluZSwKPiAr CQkJCSBlbmdpbmUtPm5hbWUsCj4gKwkJCQkgTlVMTCk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJa2Zy ZWUocmluZyk7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gICAKPiAgIAlyaW5nLT5iYXNlLnNp emUgPSBzejsKPiAgIAlyaW5nLT5iYXNlLmVmZmVjdGl2ZV9zaXplID0gc3o7Cj4gQEAgLTIwOSw3 ICsyMTcsMTEgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJZW5naW5lLT5iYXNlLmVtaXRfYnJlYWRjcnVtYiA9 IG1vY2tfZW1pdF9icmVhZGNydW1iOwo+ICAgCWVuZ2luZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9 IG1vY2tfc3VibWl0X3JlcXVlc3Q7Cj4gICAKPiAtCWk5MTVfdGltZWxpbmVfaW5pdChpOTE1LCAm ZW5naW5lLT5iYXNlLnRpbWVsaW5lLCBlbmdpbmUtPmJhc2UubmFtZSk7Cj4gKwlpZiAoaTkxNV90 aW1lbGluZV9pbml0KGk5MTUsCj4gKwkJCSAgICAgICAmZW5naW5lLT5iYXNlLnRpbWVsaW5lLAo+ ICsJCQkgICAgICAgZW5naW5lLT5iYXNlLm5hbWUsCj4gKwkJCSAgICAgICBOVUxMKSkKPiArCQln b3RvIGVycl9mcmVlOwo+ICAgCWk5MTVfdGltZWxpbmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPmJh c2UudGltZWxpbmUsIFRJTUVMSU5FX0VOR0lORSk7Cj4gICAKPiAgIAlpbnRlbF9lbmdpbmVfaW5p dF9icmVhZGNydW1icygmZW5naW5lLT5iYXNlKTsKPiBAQCAtMjI3LDYgKzIzOSw3IEBAIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgZXJyX2JyZWFkY3J1bWJzOgo+ICAgCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1 bWJzKCZlbmdpbmUtPmJhc2UpOwo+ICAgCWk5MTVfdGltZWxpbmVfZmluaSgmZW5naW5lLT5iYXNl LnRpbWVsaW5lKTsKPiArZXJyX2ZyZWU6Cj4gICAJa2ZyZWUoZW5naW5lKTsKPiAgIAlyZXR1cm4g TlVMTDsKPiAgIH0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=