From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/7] drm/i915: Split i915_gem_timeline into individual timelines Date: Fri, 27 Apr 2018 15:37:58 +0100 Message-ID: <11e9ea7c-2d81-80a1-e446-0d7338cdc5ae@linux.intel.com> References: <20180426174932.23127-1-chris@chris-wilson.co.uk> <20180426174932.23127-6-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE8926E92F for ; Fri, 27 Apr 2018 14:38:04 +0000 (UTC) In-Reply-To: <20180426174932.23127-6-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 Ck9uIDI2LzA0LzIwMTggMTg6NDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBXZSBuZWVkIHRvIG1v dmUgdG8gYSBtb3JlIGZsZXhpYmxlIHRpbWVsaW5lIHRoYXQgZG9lc24ndCBhc3N1bWUgb25lCj4g ZmVuY2UgY29udGV4dCBwZXIgZW5naW5lLCBhbmQgc28gYWxsb3cgZm9yIGEgc2luZ2xlIHRpbWVs aW5lIHRvIGJlIHVzZWQKPiBhY3Jvc3MgYSBjb21iaW5hdGlvbiBvZiBlbmdpbmVzLiBUaGlzIG1l YW5zIHRoYXQgcHJlYWxsb2NhdGluZyBhIGZlbmNlCj4gY29udGV4dCBwZXIgZW5naW5lIGlzIG5v dyBhIGhpbmRyYW5jZSwgYW5kIHNvIHdlIHdhbnQgdG8gaW50cm9kdWNlIHRoZQo+IHNpbmd1bGFy IHRpbWVsaW5lLiBGcm9tIHRoZSBjb2RlIHBlcnNwZWN0aXZlLCB0aGlzIGhhcyB0aGUgbm90YWJs ZQo+IGFkdmFudGFnZSBvZiBjbGVhcmluZyB1cCBhIGxvdCBvZiBtaXJreSBzZW1hbnRpY3MgYW5k IHNvbWUgY2x1bXN5Cj4gcG9pbnRlciBjaGFzaW5nLgo+IAo+IEJ5IHNwbGl0dGluZyB0aGUgdGlt ZWxpbmUgdXAgaW50byBhIHNpbmdsZSBlbnRpdHkgcmF0aGVyIHRoYW4gYW4gYXJyYXkKPiBvZiBw ZXItZW5naW5lIHRpbWVsaW5lcywgd2UgY2FuIHJlYWxpc2UgdGhlIGdvYWwgb2YgdGhlIHByZXZp b3VzIHBhdGNoCj4gb2YgdHJhY2tpbmcgdGhlIHRpbWVsaW5lIGFsb25nc2lkZSB0aGUgcmluZy4K PiAKPiB2MjogVHdlYWsgd2FpdF9mb3JfaWRsZSB0byBzdG9wIHRoZSBjb21waWxpbmcgdGhpbmtp bmcgdGhhdCByZXQgbWF5IGJlCj4gdW5pbml0aWFsaXNlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA0ICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAxMjkgKysrKystLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAgNDkgKystLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAgMiAt Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgICAgfCAgIDMg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmMgICAgICB8IDE5 OCAtLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMgICAgICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgICAgICAgICAgICAgIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuYyAgICAgICAgICAgfCAgNjggKysrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAgIDMgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdGltZWxpbmUuYyAgICAgICAgICB8IDEwNSArKysrKysrKysrCj4gICAuLi4ve2k5MTVf Z2VtX3RpbWVsaW5lLmggPT4gaTkxNV90aW1lbGluZS5ofSAgfCAgNjcgKysrLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgMjcgKystCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jICAgfCAgIDQgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICA0OCArKyst LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgIHwgIDI1 ICsrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgICAgIHwg IDExICstCj4gICAuLi4ve2k5MTVfZ2VtX3RpbWVsaW5lLmMgPT4gaTkxNV90aW1lbGluZS5jfSAg fCAgOTQgKysrLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19l bmdpbmUuYyAgfCAgMzIgKystCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dl bV9kZXZpY2UuYyAgfCAgMTAgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf dGltZWxpbmUuYyAgICB8ICA0NSArKy0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX3RpbWVsaW5lLmggICAgfCAgMjggKy0tCj4gICAyMyBmaWxlcyBjaGFuZ2VkLCAzOTggaW5z ZXJ0aW9ucygrKSwgNTcwIGRlbGV0aW9ucygtKQo+ICAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKPiAgIHJlbmFtZSBkcml2ZXJz L2dwdS9kcm0vaTkxNS97aTkxNV9nZW1fdGltZWxpbmUuaCA9PiBpOTE1X3RpbWVsaW5lLmh9ICg2 OCUpCj4gICByZW5hbWUgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL3tpOTE1X2dlbV90 aW1lbGluZS5jID0+IGk5MTVfdGltZWxpbmUuY30gKDcwJSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQo+IGluZGV4IDliZWU1MmE5NDlhOS4uMTIwZGIyMWZjZDUwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBAQCAtNjcsMTEgKzY3LDExIEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBc Cj4gICAJICBpOTE1X2dlbV9zaHJpbmtlci5vIFwKPiAgIAkgIGk5MTVfZ2VtX3N0b2xlbi5vIFwK PiAgIAkgIGk5MTVfZ2VtX3RpbGluZy5vIFwKPiAtCSAgaTkxNV9nZW1fdGltZWxpbmUubyBcCj4g ICAJICBpOTE1X2dlbV91c2VycHRyLm8gXAo+ICAgCSAgaTkxNV9nZW1mcy5vIFwKPiAgIAkgIGk5 MTVfcXVlcnkubyBcCj4gICAJICBpOTE1X3JlcXVlc3QubyBcCj4gKwkgIGk5MTVfdGltZWxpbmUu byBcCj4gICAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwKPiAgIAkgIGk5MTVfdm1hLm8gXAo+ICAg CSAgaW50ZWxfYnJlYWRjcnVtYnMubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXgg YjliZDgzMjhmNTAxLi5kYWIxNWI2YWJjM2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBAQCAtNzIsMTAgKzcyLDEwIEBACj4gICAjaW5jbHVkZSAiaTkxNV9nZW1fZmVuY2VfcmVnLmgi Cj4gICAjaW5jbHVkZSAiaTkxNV9nZW1fb2JqZWN0LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nZW1f Z3R0LmgiCj4gLSNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgo+ICAgI2luY2x1ZGUgImk5 MTVfZ3B1X2Vycm9yLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAjaW5jbHVk ZSAiaTkxNV9zY2hlZHVsZXIuaCIKPiArI2luY2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKPiAgICNp bmNsdWRlICJpOTE1X3ZtYS5oIgo+ICAgCj4gICAjaW5jbHVkZSAiaW50ZWxfZ3Z0LmgiCj4gQEAg LTIwNTgsOCArMjA1OCw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgIAkJdm9pZCAo KnJlc3VtZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7Cj4gICAJCXZvaWQgKCpjbGVhbnVw X2VuZ2luZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+IC0JCXN0cnVj dCBpOTE1X2dlbV90aW1lbGluZSBleGVjdXRpb25fdGltZWxpbmU7Cj4gLQkJc3RydWN0IGk5MTVf Z2VtX3RpbWVsaW5lIGxlZ2FjeV90aW1lbGluZTsKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCB0aW1l bGluZXM7Cj4gICAKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfcmluZ3M7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNDM4YTJmYzViYmEwLi40ODQzNTRmMjVmOTggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB1MzIg X19pOTE1X2dlbV9wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCXN5bmNo cm9uaXplX2lycShpOTE1LT5kcm0uaXJxKTsKPiAgIAo+ICAgCWludGVsX2VuZ2luZXNfcGFyayhp OTE1KTsKPiAtCWk5MTVfZ2VtX3RpbWVsaW5lc19wYXJrKGk5MTUpOwo+ICsJaTkxNV90aW1lbGlu ZXNfcGFyayhpOTE1KTsKPiAgIAo+ICAgCWk5MTVfcG11X2d0X3BhcmtlZChpOTE1KTsKPiAgIAo+ IEBAIC0yOTc3LDggKzI5NzcsOCBAQCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkgKiBleHRyYSBkZWxheSBmb3IgYSByZWNl bnQgaW50ZXJydXB0IGlzIHBvaW50bGVzcy4gSGVuY2UsIHdlIGRvCj4gICAJICogbm90IG5lZWQg YW4gZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcigpIGJlZm9yZSB0aGUgc2Vxbm8gcmVhZHMuCj4g ICAJICovCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxh Z3MpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+ cmVxdWVzdHMsIGxpbmspIHsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5l LmxvY2ssIGZsYWdzKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+ dGltZWxpbmUucmVxdWVzdHMsIGxpbmspIHsKPiAgIAkJaWYgKF9faTkxNV9yZXF1ZXN0X2NvbXBs ZXRlZChyZXF1ZXN0LCByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pKQo+ICAgCQkJY29udGludWU7Cj4g ICAKPiBAQCAtMjk4OSw3ICsyOTg5LDcgQEAgaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCWFjdGl2ZSA9IHJlcXVlc3Q7Cj4g ICAJCWJyZWFrOwo+ICAgCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGlt ZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+ dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgCj4gICAJcmV0dXJuIGFjdGl2ZTsKPiAgIH0KPiBA QCAtMzExMCwxNSArMzExMCwxNSBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfc2tpcF9jb250ZXh0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpodW5nX2N0eCA9IHJlcXVlc3QtPmN0eDsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGltZWxpbmUgPSByZXF1ZXN0LT50aW1lbGluZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZSA9IHJlcXVlc3QtPnRpbWVsaW5lOwo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4g ICAKPiAtCUdFTV9CVUdfT04odGltZWxpbmUgPT0gZW5naW5lLT50aW1lbGluZSk7Cj4gKwlHRU1f QlVHX09OKHRpbWVsaW5lID09ICZlbmdpbmUtPnRpbWVsaW5lKTsKPiAgIAo+IC0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiArCXNwaW5fbG9ja19p cnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIAlzcGluX2xvY2soJnRp bWVsaW5lLT5sb2NrKTsKPiAgIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShyZXF1 ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmspCj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X2NvbnRpbnVlKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5r KQo+ICAgCQlpZiAocmVxdWVzdC0+Y3R4ID09IGh1bmdfY3R4KQo+ICAgCQkJc2tpcF9yZXF1ZXN0 KHJlcXVlc3QpOwo+ICAgCj4gQEAgLTMxMjYsNyArMzEyNiw3IEBAIHN0YXRpYyB2b2lkIGVuZ2lu ZV9za2lwX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkJc2tpcF9y ZXF1ZXN0KHJlcXVlc3QpOwo+ICAgCj4gICAJc3Bpbl91bmxvY2soJnRpbWVsaW5lLT5sb2NrKTsK PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdz KTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxh Z3MpOwo+ICAgfQo+ICAgCj4gICAvKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGlmIGl0IHdhcyBndWls dHkgb2YgdGhlIGhhbmcgKi8KPiBAQCAtMzE4MywxMSArMzE4MywxMSBAQCBpOTE1X2dlbV9yZXNl dF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCWRtYV9mZW5j ZV9zZXRfZXJyb3IoJnJlcXVlc3QtPmZlbmNlLCAtRUFHQUlOKTsKPiAgIAo+ICAgCQkJLyogUmV3 aW5kIHRoZSBlbmdpbmUgdG8gcmVwbGF5IHRoZSBpbmNvbXBsZXRlIHJxICovCj4gLQkJCXNwaW5f bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJCQlzcGluX2xvY2tfaXJxKCZl bmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCQkJcmVxdWVzdCA9IGxpc3RfcHJldl9lbnRyeShy ZXF1ZXN0LCBsaW5rKTsKPiAtCQkJaWYgKCZyZXF1ZXN0LT5saW5rID09ICZlbmdpbmUtPnRpbWVs aW5lLT5yZXF1ZXN0cykKPiArCQkJaWYgKCZyZXF1ZXN0LT5saW5rID09ICZlbmdpbmUtPnRpbWVs aW5lLnJlcXVlc3RzKQo+ICAgCQkJCXJlcXVlc3QgPSBOVUxMOwo+IC0JCQlzcGluX3VubG9ja19p cnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJCQlzcGluX3VubG9ja19pcnEoJmVuZ2lu ZS0+dGltZWxpbmUubG9jayk7Cj4gICAJCX0KPiAgIAl9Cj4gICAKPiBAQCAtMzMwMCwxMCArMzMw MCwxMCBAQCBzdGF0aWMgdm9pZCBub3BfY29tcGxldGVfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkJICByZXF1ZXN0LT5mZW5jZS5jb250ZXh0LCByZXF1 ZXN0LT5mZW5jZS5zZXFubyk7Cj4gICAJZG1hX2ZlbmNlX3NldF9lcnJvcigmcmVxdWVzdC0+ZmVu Y2UsIC1FSU8pOwo+ICAgCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmcmVxdWVzdC0+ZW5naW5lLT50 aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnJlcXVlc3QtPmVu Z2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChy ZXF1ZXN0KTsKPiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8ocmVxdWVzdC0+ZW5n aW5lLCByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm cmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICB9 Cj4gICAKPiAgIHZvaWQgaTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiBAQCAtMzM3MiwxMCArMzM3MiwxMCBAQCB2b2lkIGk5MTVfZ2VtX3NldF93ZWRn ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJCSAqIChsb2NrbGVzcykgbG9v a3VwIGRvZXNuJ3QgdHJ5IGFuZCB3YWl0IHVwb24gdGhlIHJlcXVlc3QgYXMgd2UKPiAgIAkJICog cmVzZXQgaXQuCj4gICAJCSAqLwo+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVs aW5lLT5sb2NrLCBmbGFncyk7Cj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxp bmUubG9jaywgZmxhZ3MpOwo+ICAgCQlpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oZW5n aW5lLAo+ICAgCQkJCQkgICAgICAgaW50ZWxfZW5naW5lX2xhc3Rfc3VibWl0KGVuZ2luZSkpOwo+ IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdz KTsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZs YWdzKTsKPiAgIAo+ICAgCQlpOTE1X2dlbV9yZXNldF9maW5pc2hfZW5naW5lKGVuZ2luZSk7Cj4g ICAJfQo+IEBAIC0zMzg3LDggKzMzODcsNyBAQCB2b2lkIGk5MTVfZ2VtX3NldF93ZWRnZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAKPiAgIGJvb2wgaTkxNV9nZW1fdW5zZXRf d2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0Jc3RydWN0IGk5 MTVfZ2VtX3RpbWVsaW5lICp0bDsKPiAtCWludCBpOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUg KnRsOwo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gICAJaWYgKCF0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmk5MTUtPmdwdV9lcnJvci5mbGFn cykpCj4gQEAgLTM0MDcsMjkgKzM0MDYsMjcgQEAgYm9vbCBpOTE1X2dlbV91bnNldF93ZWRnZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJICogTm8gbW9yZSBjYW4gYmUgc3Vi bWl0dGVkIHVudGlsIHdlIHJlc2V0IHRoZSB3ZWRnZWQgYml0Lgo+ICAgCSAqLwo+ICAgCWxpc3Rf Zm9yX2VhY2hfZW50cnkodGwsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsKPiAtCQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0bC0+ZW5naW5lKTsgaSsrKSB7Cj4gLQkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOwo+ICsJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAgCj4gLQkJ CXJxID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRsLT5lbmdpbmVbaV0ubGFzdF9yZXF1ZXN0LAo+ IC0JCQkJCQkgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQkJaWYgKCFycSkKPiAtCQkJ CWNvbnRpbnVlOwo+ICsJCXJxID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRsLT5sYXN0X3JlcXVl c3QsCj4gKwkJCQkJICAmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwkJaWYgKCFycSkKPiAr CQkJY29udGludWU7Cj4gICAKPiAtCQkJLyoKPiAtCQkJICogV2UgY2FuJ3QgdXNlIG91ciBub3Jt YWwgd2FpdGVyIGFzIHdlIHdhbnQgdG8KPiAtCQkJICogYXZvaWQgcmVjdXJzaXZlbHkgdHJ5aW5n IHRvIGhhbmRsZSB0aGUgY3VycmVudAo+IC0JCQkgKiByZXNldC4gVGhlIGJhc2ljIGRtYV9mZW5j ZV9kZWZhdWx0X3dhaXQoKSBpbnN0YWxscwo+IC0JCQkgKiBhIGNhbGxiYWNrIGZvciBkbWFfZmVu Y2Vfc2lnbmFsKCksIHdoaWNoIGlzCj4gLQkJCSAqIHRyaWdnZXJlZCBieSBvdXIgbm9wIGhhbmRs ZXIgKGluZGlyZWN0bHksIHRoZQo+IC0JCQkgKiBjYWxsYmFjayBlbmFibGVzIHRoZSBzaWduYWxl ciB0aHJlYWQgd2hpY2ggaXMKPiAtCQkJICogd29rZW4gYnkgdGhlIG5vcF9zdWJtaXRfcmVxdWVz dCgpIGFkdmFuY2luZyB0aGUgc2Vxbm8KPiAtCQkJICogYW5kIHdoZW4gdGhlIHNlcW5vIHBhc3Nl cyB0aGUgZmVuY2UsIHRoZSBzaWduYWxlcgo+IC0JCQkgKiB0aGVuIHNpZ25hbHMgdGhlIGZlbmNl IHdha2luZyB1cyB1cCkuCj4gLQkJCSAqLwo+IC0JCQlpZiAoZG1hX2ZlbmNlX2RlZmF1bHRfd2Fp dCgmcnEtPmZlbmNlLCB0cnVlLAo+IC0JCQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAw KQo+IC0JCQkJcmV0dXJuIGZhbHNlOwo+IC0JCX0KPiArCQkvKgo+ICsJCSAqIFdlIGNhbid0IHVz ZSBvdXIgbm9ybWFsIHdhaXRlciBhcyB3ZSB3YW50IHRvCj4gKwkJICogYXZvaWQgcmVjdXJzaXZl bHkgdHJ5aW5nIHRvIGhhbmRsZSB0aGUgY3VycmVudAo+ICsJCSAqIHJlc2V0LiBUaGUgYmFzaWMg ZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCgpIGluc3RhbGxzCj4gKwkJICogYSBjYWxsYmFjayBmb3Ig ZG1hX2ZlbmNlX3NpZ25hbCgpLCB3aGljaCBpcwo+ICsJCSAqIHRyaWdnZXJlZCBieSBvdXIgbm9w IGhhbmRsZXIgKGluZGlyZWN0bHksIHRoZQo+ICsJCSAqIGNhbGxiYWNrIGVuYWJsZXMgdGhlIHNp Z25hbGVyIHRocmVhZCB3aGljaCBpcwo+ICsJCSAqIHdva2VuIGJ5IHRoZSBub3Bfc3VibWl0X3Jl cXVlc3QoKSBhZHZhbmNpbmcgdGhlIHNlcW5vCj4gKwkJICogYW5kIHdoZW4gdGhlIHNlcW5vIHBh c3NlcyB0aGUgZmVuY2UsIHRoZSBzaWduYWxlcgo+ICsJCSAqIHRoZW4gc2lnbmFscyB0aGUgZmVu Y2Ugd2FraW5nIHVzIHVwKS4KPiArCQkgKi8KPiArCQlpZiAoZG1hX2ZlbmNlX2RlZmF1bHRfd2Fp dCgmcnEtPmZlbmNlLCB0cnVlLAo+ICsJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKSA8IDAp Cj4gKwkJCXJldHVybiBmYWxzZTsKPiAgIAl9Cj4gICAJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkx NSk7Cj4gICAJR0VNX0JVR19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+IEBAIC0zNzM0 LDE3ICszNzMxLDkgQEAgaTkxNV9nZW1fd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gICAJcmV0dXJuIHJldDsKPiAg IH0KPiAgIAo+IC1zdGF0aWMgaW50IHdhaXRfZm9yX3RpbWVsaW5lKHN0cnVjdCBpOTE1X2dlbV90 aW1lbGluZSAqdGwsIHVuc2lnbmVkIGludCBmbGFncykKPiArc3RhdGljIGludCB3YWl0X2Zvcl90 aW1lbGluZShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsIHVuc2lnbmVkIGludCBmbGFncykKPiAg IHsKPiAtCWludCByZXQsIGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGwt PmVuZ2luZSk7IGkrKykgewo+IC0JCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV93YWl0KCZ0bC0+ZW5n aW5lW2ldLmxhc3RfcmVxdWVzdCwgZmxhZ3MpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiBy ZXQ7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fYWN0aXZlX3dh aXQoJnRsLT5sYXN0X3JlcXVlc3QsIGZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCB3 YWl0X2Zvcl9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IEBAIC0zNzYy LDMwICszNzUxLDM3IEBAIHN0YXRpYyBpbnQgd2FpdF9mb3JfZW5naW5lcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAo+ICAgaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKPiAgIHsKPiAt CWludCByZXQ7Cj4gLQo+ICAgCS8qIElmIHRoZSBkZXZpY2UgaXMgYXNsZWVwLCB3ZSBoYXZlIG5v IHJlcXVlc3RzIG91dHN0YW5kaW5nICovCj4gICAJaWYgKCFSRUFEX09OQ0UoaTkxNS0+Z3QuYXdh a2UpKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCWlmIChmbGFncyAmIEk5MTVfV0FJVF9MT0NL RUQpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsOwo+ICsJCXN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0bDsKPiArCQlpbnQgZXJyOwo+ICAgCj4gICAJCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJCWxpc3RfZm9yX2VhY2hfZW50 cnkodGwsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsKPiAtCQkJcmV0ID0gd2FpdF9mb3Jf dGltZWxpbmUodGwsIGZsYWdzKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJCXJldHVybiByZXQ7Cj4g KwkJCWVyciA9IHdhaXRfZm9yX3RpbWVsaW5lKHRsLCBmbGFncyk7Cj4gKwkJCWlmIChlcnIpCj4g KwkJCQlyZXR1cm4gZXJyOwo+ICAgCQl9Cj4gICAJCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUp Owo+ICAgCj4gLQkJcmV0ID0gd2FpdF9mb3JfZW5naW5lcyhpOTE1KTsKPiArCQlyZXR1cm4gd2Fp dF9mb3JfZW5naW5lcyhpOTE1KTsKPiAgIAl9IGVsc2Ugewo+IC0JCXJldCA9IHdhaXRfZm9yX3Rp bWVsaW5lKCZpOTE1LT5ndC5leGVjdXRpb25fdGltZWxpbmUsIGZsYWdzKTsKPiAtCX0KPiArCQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwkJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7Cj4gKwkJaW50IGVycjsKPiAgIAo+IC0JcmV0dXJuIHJldDsKPiArCQlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCQllcnIgPSB3YWl0X2Zvcl90aW1lbGluZSgmZW5n aW5lLT50aW1lbGluZSwgZmxhZ3MpOwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJcmV0dXJuIGVycjsK PiArCQl9Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9p ZCBfX2k5MTVfZ2VtX29iamVjdF9mbHVzaF9mb3JfZGlzcGxheShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+IEBAIC00OTU0LDcgKzQ5NTAsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRf a2VybmVsX2NvbnRleHRfaXNfY3VycmVudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIGlkKSB7Cj4gLQkJR0VNX0JVR19PTihfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVr KCZlbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QpKTsKPiArCQlHRU1fQlVHX09OKF9faTkx NV9nZW1fYWN0aXZlX3BlZWsoJmVuZ2luZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KSk7Cj4gICAJ CUdFTV9CVUdfT04oZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCAhPSBrZXJuZWxfY29udGV4 dCk7Cj4gICAJfQo+ICAgfQo+IEBAIC01NjAzLDEyICs1NTk5LDYgQEAgaW50IGk5MTVfZ2VtX2lu aXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCUlOSVRfTElT VF9IRUFEKCZkZXZfcHJpdi0+Z3QudGltZWxpbmVzKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2 X3ByaXYtPmd0LmFjdGl2ZV9yaW5ncyk7Cj4gICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5k cm0uc3RydWN0X211dGV4KTsKPiAtCWVyciA9IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXRfX2dsb2Jh bChkZXZfcHJpdik7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBlcnJfcHJpb3JpdGllczsKPiAtCj4gICAJaTkxNV9n ZW1faW5pdF9fbW0oZGV2X3ByaXYpOwo+ICAgCj4gICAJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9w cml2LT5ndC5yZXRpcmVfd29yaywKPiBAQCAtNTYyOCw4ICs1NjE4LDYgQEAgaW50IGk5MTVfZ2Vt X2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAJ cmV0dXJuIDA7Cj4gICAKPiAtZXJyX3ByaW9yaXRpZXM6Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3ko ZGV2X3ByaXYtPnByaW9yaXRpZXMpOwo+ICAgZXJyX2RlcGVuZGVuY2llczoKPiAgIAlrbWVtX2Nh Y2hlX2Rlc3Ryb3koZGV2X3ByaXYtPmRlcGVuZGVuY2llcyk7Cj4gICBlcnJfcmVxdWVzdHM6Cj4g QEAgLTU2NTAsMTIgKzU2MzgsNyBAQCB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZWFybHkoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCUdFTV9CVUdfT04oIWxsaXN0X2VtcHR5 KCZkZXZfcHJpdi0+bW0uZnJlZV9saXN0KSk7Cj4gICAJR0VNX0JVR19PTihhdG9taWNfcmVhZCgm ZGV2X3ByaXYtPm1tLmZyZWVfY291bnQpKTsKPiAgIAlXQVJOX09OKGRldl9wcml2LT5tbS5vYmpl Y3RfY291bnQpOwo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCWk5MTVfZ2VtX3RpbWVsaW5lX2ZpbmkoJmRldl9wcml2LT5ndC5sZWdhY3lfdGltZWxp bmUpOwo+IC0JaTkxNV9nZW1fdGltZWxpbmVfZmluaSgmZGV2X3ByaXYtPmd0LmV4ZWN1dGlvbl90 aW1lbGluZSk7Cj4gICAJV0FSTl9PTighbGlzdF9lbXB0eSgmZGV2X3ByaXYtPmd0LnRpbWVsaW5l cykpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAK PiAgIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnByaW9yaXRpZXMpOwo+ICAgCWttZW1f Y2FjaGVfZGVzdHJveShkZXZfcHJpdi0+ZGVwZW5kZW5jaWVzKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggMWY0OTg3ZGM2NjE2Li5jOWNkZjg4NjkzYmMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTEyMiw3 ICsxMjIsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCkKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjdHgtPmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfY2xv c2VkKGN0eCkpOwo+ICAgCj4gLQlpOTE1X2dlbV90aW1lbGluZV9mcmVlKGN0eC0+dGltZWxpbmUp Owo+ICAgCWk5MTVfcHBndHRfcHV0KGN0eC0+cHBndHQpOwo+ICAgCj4gICAJZm9yIChuID0gMDsg biA8IEFSUkFZX1NJWkUoY3R4LT5fX2VuZ2luZSk7IG4rKykgewo+IEBAIC0zNzcsMTggKzM3Niw2 IEBAIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAkJY3R4LT5kZXNjX3RlbXBsYXRlID0gZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGRl dl9wcml2LCBwcGd0dCk7Cj4gICAJfQo+ICAgCj4gLQlpZiAoSEFTX0VYRUNMSVNUUyhkZXZfcHJp dikpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lOwo+IC0KPiAtCQl0 aW1lbGluZSA9IGk5MTVfZ2VtX3RpbWVsaW5lX2NyZWF0ZShkZXZfcHJpdiwgY3R4LT5uYW1lKTsK PiAtCQlpZiAoSVNfRVJSKHRpbWVsaW5lKSkgewo+IC0JCQlfX2Rlc3Ryb3lfaHdfY29udGV4dChj dHgsIGZpbGVfcHJpdik7Cj4gLQkJCXJldHVybiBFUlJfQ0FTVCh0aW1lbGluZSk7Cj4gLQkJfQo+ IC0KPiAtCQljdHgtPnRpbWVsaW5lID0gdGltZWxpbmU7Cj4gLQl9Cj4gLQo+ICAgCXRyYWNlX2k5 MTVfY29udGV4dF9jcmVhdGUoY3R4KTsKPiAgIAo+ICAgCXJldHVybiBjdHg7Cj4gQEAgLTU5MCwy MSArNTc3LDMwIEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCj4gICAJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwo+ICAgfQo+ ICAgCj4gLXN0YXRpYyBib29sIGVuZ2luZV9oYXNfaWRsZV9rZXJuZWxfY29udGV4dChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoK PiArbGFzdF90aW1lbGluZV9yZXF1ZXN0KHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwK PiArCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1 Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lOwo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7Cj4gICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUsICZlbmdpbmUtPmk5MTUt Pmd0LnRpbWVsaW5lcywgbGluaykgewo+IC0JCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7Cj4g KwlpZiAodGltZWxpbmUgPT0gJmVuZ2luZS0+dGltZWxpbmUpCj4gKwkJcmV0dXJuIE5VTEw7CgpZ b3UgYXJlIHNraXBwaW5nIGVuZ2luZSB0aW1lbGluZXMgaGVyZT8gV291bGQgaXQgYmUgY2xlYXJl ciBpZiB0aGUgCmNhbGxlciBkaWQgdGhpcyBpbiB0aGUgbGlzdF9mb3JfZWFjaF9lbnRyeSBsb29w PwoKPiAgIAo+IC0JCWlmICh0aW1lbGluZSA9PSAmZW5naW5lLT5pOTE1LT5ndC5leGVjdXRpb25f dGltZWxpbmUpCj4gLQkJCWNvbnRpbnVlOwo+ICsJcnEgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZ0 aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+ICsJCQkJICZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICsJaWYgKHJxICYmIHJxLT5lbmdpbmUgPT0gZW5naW5lKQo+ICsJCXJldHVybiBy cTsKPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICAgCj4gLQkJdGwgPSAmdGltZWxpbmUtPmVu Z2luZVtlbmdpbmUtPmlkXTsKPiAtCQlpZiAoaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRsLT5sYXN0 X3JlcXVlc3QsCj4gLQkJCQkJICZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpKQo+ICtz dGF0aWMgYm9vbCBlbmdpbmVfaGFzX2lkbGVfa2VybmVsX2NvbnRleHQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7 Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmVuZ2luZS0+aTkxNS0+Z3Qu dGltZWxpbmVzLCBsaW5rKQo+ICsJCWlmIChsYXN0X3RpbWVsaW5lX3JlcXVlc3QodGltZWxpbmUs IGVuZ2luZSkpCj4gICAJCQlyZXR1cm4gZmFsc2U7Cj4gLQl9Cj4gICAKPiAgIAlyZXR1cm4gaW50 ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4dChlbmdpbmUpOwo+ICAgfQo+IEBAIC02MTIsNyAr NjA4LDcgQEAgc3RhdGljIGJvb2wgZW5naW5lX2hhc19pZGxlX2tlcm5lbF9jb250ZXh0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIGludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2Vy bmVsX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCXN0cnVjdCBpOTE1X2dlbV90aW1l bGluZSAqdGltZWxpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gICAJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZk ZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gQEAgLTYzMiwxMSArNjI4LDggQEAgaW50IGk5 MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gICAJCS8qIFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rp dml0eSAqLwo+ICAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRpbWVsaW5lLCAmZGV2X3ByaXYtPmd0 LnRpbWVsaW5lcywgbGluaykgewo+ICAgCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKPiAt CQkJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bDsKPiAgIAo+IC0JCQl0bCA9ICZ0aW1lbGluZS0+ ZW5naW5lW2VuZ2luZS0+aWRdOwo+IC0JCQlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmdGwt Pmxhc3RfcmVxdWVzdCwKPiAtCQkJCQkJICAgJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK PiArCQkJcHJldiA9IGxhc3RfdGltZWxpbmVfcmVxdWVzdCh0aW1lbGluZSwgZW5naW5lKTsKPiAg IAkJCWlmIChwcmV2KQo+ICAgCQkJCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKCZy cS0+c3VibWl0LAo+ICAgCQkJCQkJCQkgJnByZXYtPnN1Ym1pdCwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gaW5kZXggZWM1M2JhMDZmODM2Li5hY2UzYjEyOWMxODkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTU4LDgg KzU4LDYgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewo+ICAgCS8qKiBmaWxlX3ByaXY6IG93 bmluZyBmaWxlIGRlc2NyaXB0b3IgKi8KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl ICpmaWxlX3ByaXY7Cj4gICAKPiAtCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7 Cj4gLQo+ICAgCS8qKgo+ICAgCSAqIEBwcGd0dDogdW5pcXVlIGFkZHJlc3Mgc3BhY2UgKEdUVCkK PiAgIAkgKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggOTgxMDc5MjVk ZTQ4Li4xZGIwZGVkYjQwNTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ IEBAIC0zOCwxMCArMzgsOSBAQAo+ICAgI2luY2x1ZGUgPGxpbnV4L21tLmg+Cj4gICAjaW5jbHVk ZSA8bGludXgvcGFnZXZlYy5oPgo+ICAgCj4gLSNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5o Igo+IC0KPiAgICNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiAgICNpbmNsdWRlICJpOTE1X3Nl bGZ0ZXN0LmgiCj4gKyNpbmNsdWRlICJpOTE1X3RpbWVsaW5lLmgiCj4gICAKPiAgICNkZWZpbmUg STkxNV9HVFRfUEFHRV9TSVpFXzRLIEJJVCgxMikKPiAgICNkZWZpbmUgSTkxNV9HVFRfUEFHRV9T SVpFXzY0SyBCSVQoMTYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5j Cj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMjRmNDA2OGNjMTM3Li4wMDAwMDAw MDAwMDAKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5jCj4g KysrIC9kZXYvbnVsbAo+IEBAIC0xLDE5OCArMCwwIEBACj4gLS8qCj4gLSAqIENvcHlyaWdodCDC qSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gLSAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiAtICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+IC0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+IC0gKgo+IC0gKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZSBuZXh0Cj4gLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAtICogU29mdHdhcmUuCj4g LSAqCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0gKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKPiAtICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAtICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKPiAtICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+IC0gKiBJTiBUSEUgU09GVFdBUkUuCj4gLSAq Cj4gLSAqLwo+IC0KPiAtI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gLSNpbmNsdWRlICJpOTE1X3N5 bmNtYXAuaCIKPiAtCj4gLXN0YXRpYyB2b2lkIF9faW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3Qg aW50ZWxfdGltZWxpbmUgKnRsLAo+IC0JCQkJICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnBh cmVudCwKPiAtCQkJCSAgdTY0IGNvbnRleHQsCj4gLQkJCQkgIHN0cnVjdCBsb2NrX2NsYXNzX2tl eSAqbG9ja2NsYXNzLAo+IC0JCQkJICBjb25zdCBjaGFyICpsb2NrbmFtZSkKPiAtewo+IC0JdGwt PmZlbmNlX2NvbnRleHQgPSBjb250ZXh0Owo+IC0JdGwtPmNvbW1vbiA9IHBhcmVudDsKPiAtCXNw aW5fbG9ja19pbml0KCZ0bC0+bG9jayk7Cj4gLQlsb2NrZGVwX3NldF9jbGFzc19hbmRfbmFtZSgm dGwtPmxvY2ssIGxvY2tjbGFzcywgbG9ja25hbWUpOwo+IC0JaW5pdF9yZXF1ZXN0X2FjdGl2ZSgm dGwtPmxhc3RfcmVxdWVzdCwgTlVMTCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmdGwtPnJlcXVlc3Rz KTsKPiAtCWk5MTVfc3luY21hcF9pbml0KCZ0bC0+c3luYyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2 b2lkIF9faW50ZWxfdGltZWxpbmVfZmluaShzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQo+IC17 Cj4gLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0bC0+cmVxdWVzdHMpKTsKPiAtCj4gLQlpOTE1 X3N5bmNtYXBfZnJlZSgmdGwtPnN5bmMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IF9faTkxNV9n ZW1fdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJCSAg ICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lLAo+IC0JCQkJICAgIGNvbnN0IGNo YXIgKm5hbWUsCj4gLQkJCQkgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICpsb2NrY2xhc3MsCj4g LQkJCQkgICAgY29uc3QgY2hhciAqbG9ja25hbWUpCj4gLXsKPiAtCXVuc2lnbmVkIGludCBpOwo+ IC0JdTY0IGZlbmNlczsKPiAtCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAtCj4gLQkvKgo+IC0JICogSWRlYWxseSB3ZSB3YW50IGEgc2V0IG9mIGVu Z2luZXMgb24gYSBzaW5nbGUgbGVhZiBhcyB3ZSBleHBlY3QKPiAtCSAqIHRvIG1vc3RseSBiZSB0 cmFja2luZyBzeW5jaHJvbmlzYXRpb24gYmV0d2VlbiBlbmdpbmVzLiBJdCBpcyBub3QKPiAtCSAq IGEgaHVnZSBpc3N1ZSBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgYnV0IHdlIG1heSB3YW50IHRv IG1pdGlnYXRlCj4gLQkgKiBhbnkgcGFnZSBjcm9zc2luZyBwZW5hbHRpZXMgaWYgdGhleSBiZWNv bWUgYW4gaXNzdWUuCj4gLQkgKi8KPiAtCUJVSUxEX0JVR19PTihLU1lOQ01BUCA8IEk5MTVfTlVN X0VOR0lORVMpOwo+IC0KPiAtCXRpbWVsaW5lLT5pOTE1ID0gaTkxNTsKPiAtCXRpbWVsaW5lLT5u YW1lID0ga3N0cmR1cChuYW1lID86ICJba2VybmVsXSIsIEdGUF9LRVJORUwpOwo+IC0JaWYgKCF0 aW1lbGluZS0+bmFtZSkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCj4gLQlsaXN0X2FkZCgmdGlt ZWxpbmUtPmxpbmssICZpOTE1LT5ndC50aW1lbGluZXMpOwo+IC0KPiAtCS8qIENhbGxlZCBkdXJp bmcgZWFybHlfaW5pdCBiZWZvcmUgd2Uga25vdyBob3cgbWFueSBlbmdpbmVzIHRoZXJlIGFyZSAq Lwo+IC0JZmVuY2VzID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoQVJSQVlfU0laRSh0aW1lbGlu ZS0+ZW5naW5lKSk7Cj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0aW1lbGluZS0+ZW5n aW5lKTsgaSsrKQo+IC0JCV9faW50ZWxfdGltZWxpbmVfaW5pdCgmdGltZWxpbmUtPmVuZ2luZVtp XSwKPiAtCQkJCSAgICAgIHRpbWVsaW5lLCBmZW5jZXMrKywKPiAtCQkJCSAgICAgIGxvY2tjbGFz cywgbG9ja25hbWUpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1pbnQgaTkxNV9nZW1f dGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJICAgc3Ry dWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZSwKPiAtCQkJICAgY29uc3QgY2hhciAqbmFt ZSkKPiAtewo+IC0Jc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBjbGFzczsKPiAtCj4gLQly ZXR1cm4gX19pOTE1X2dlbV90aW1lbGluZV9pbml0KGk5MTUsIHRpbWVsaW5lLCBuYW1lLAo+IC0J CQkJCSZjbGFzcywgIiZ0aW1lbGluZS0+bG9jayIpOwo+IC19Cj4gLQo+IC1pbnQgaTkxNV9nZW1f dGltZWxpbmVfaW5pdF9fZ2xvYmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17 Cj4gLQlzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGNsYXNzMSwgY2xhc3MyOwo+IC0JaW50 IGVycjsKPiAtCj4gLQllcnIgPSBfX2k5MTVfZ2VtX3RpbWVsaW5lX2luaXQoaTkxNSwKPiAtCQkJ CSAgICAgICAmaTkxNS0+Z3QuZXhlY3V0aW9uX3RpbWVsaW5lLAo+IC0JCQkJICAgICAgICJbZXhl Y3V0aW9uXSIsICZjbGFzczEsCj4gLQkJCQkgICAgICAgImk5MTVfZXhlY3V0aW9uX3RpbWVsaW5l Iik7Cj4gLQlpZiAoZXJyKQo+IC0JCXJldHVybiBlcnI7Cj4gLQo+IC0JZXJyID0gX19pOTE1X2dl bV90aW1lbGluZV9pbml0KGk5MTUsCj4gLQkJCQkgICAgICAgJmk5MTUtPmd0LmxlZ2FjeV90aW1l bGluZSwKPiAtCQkJCSAgICAgICAiW2dsb2JhbF0iLCAmY2xhc3MyLAo+IC0JCQkJICAgICAgICJp OTE1X2dsb2JhbF90aW1lbGluZSIpOwo+IC0JaWYgKGVycikKPiAtCQlnb3RvIGVycl9leGVjX3Rp bWVsaW5lOwo+IC0KPiAtCXJldHVybiAwOwo+IC0KPiAtZXJyX2V4ZWNfdGltZWxpbmU6Cj4gLQlp OTE1X2dlbV90aW1lbGluZV9maW5pKCZpOTE1LT5ndC5leGVjdXRpb25fdGltZWxpbmUpOwo+IC0J cmV0dXJuIGVycjsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIGk5MTVfZ2VtX3RpbWVsaW5lc19wYXJr IC0gY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBpZGxlcwo+IC0gKiBAaTkxNTogdGhlIGRybV9pOTE1 X3ByaXZhdGUgZGV2aWNlCj4gLSAqCj4gLSAqIFdoZW4gdGhlIGRyaXZlciBpcyBjb21wbGV0ZWx5 IGlkbGUsIHdlIGtub3cgdGhhdCBhbGwgb2Ygb3VyIHN5bmMgcG9pbnRzCj4gLSAqIGhhdmUgYmVl biBzaWduYWxlZCBhbmQgb3VyIHRyYWNraW5nIGlzIHRoZW4gZW50aXJlbHkgcmVkdW5kYW50LiBB bnkgcmVxdWVzdAo+IC0gKiB0byB3YWl0IHVwb24gYW4gb2xkZXIgc3luYyBwb2ludCB3aWxsIGJl IGNvbXBsZXRlZCBpbnN0YW50bHkgYXMgd2Uga25vdwo+IC0gKiB0aGUgZmVuY2UgaXMgc2lnbmFs ZWQgYW5kIHRoZXJlZm9yZSB3ZSB3aWxsIG5vdCBldmVuIGxvb2sgdGhlbSB1cCBpbiB0aGUKPiAt ICogc3luYyBwb2ludCBtYXAuCj4gLSAqLwo+IC12b2lkIGk5MTVfZ2VtX3RpbWVsaW5lc19wYXJr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1f dGltZWxpbmUgKnRpbWVsaW5lOwo+IC0JaW50IGk7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh0 aW1lbGluZSwgJmk5MTUtPmd0LnRpbWVsaW5lcywgbGluaykgewo+IC0JCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKHRpbWVsaW5lLT5lbmdpbmUpOyBpKyspIHsKPiAtCQkJc3RydWN0IGludGVs X3RpbWVsaW5lICp0bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2ldOwo+IC0KPiAtCQkJLyoKPiAtCQkJ ICogQWxsIGtub3duIGZlbmNlcyBhcmUgY29tcGxldGVkIHNvIHdlIGNhbiBzY3JhcAo+IC0JCQkg KiB0aGUgY3VycmVudCBzeW5jIHBvaW50IHRyYWNraW5nIGFuZCBzdGFydCBhZnJlc2gsCj4gLQkJ CSAqIGFueSBhdHRlbXB0IHRvIHdhaXQgdXBvbiBhIHByZXZpb3VzIHN5bmMgcG9pbnQKPiAtCQkJ ICogd2lsbCBiZSBza2lwcGVkIGFzIHRoZSBmZW5jZSB3YXMgc2lnbmFsZWQuCj4gLQkJCSAqLwo+ IC0JCQlpOTE1X3N5bmNtYXBfZnJlZSgmdGwtPnN5bmMpOwo+IC0JCX0KPiAtCX0KPiAtfQo+IC0K PiAtdm9pZCBpOTE1X2dlbV90aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAq dGltZWxpbmUpCj4gLXsKPiAtCWludCBpOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnRp bWVsaW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRSh0aW1lbGluZS0+ZW5naW5lKTsgaSsrKQo+IC0JCV9faW50ZWxfdGltZWxpbmVf ZmluaSgmdGltZWxpbmUtPmVuZ2luZVtpXSk7Cj4gLQo+IC0JbGlzdF9kZWwoJnRpbWVsaW5lLT5s aW5rKTsKPiAtCWtmcmVlKHRpbWVsaW5lLT5uYW1lKTsKPiAtfQo+IC0KPiAtc3RydWN0IGk5MTVf Z2VtX3RpbWVsaW5lICoKPiAtaTkxNV9nZW1fdGltZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFyICpuYW1lKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9n ZW1fdGltZWxpbmUgKnRpbWVsaW5lOwo+IC0JaW50IGVycjsKPiAtCj4gLQl0aW1lbGluZSA9IGt6 YWxsb2Moc2l6ZW9mKCp0aW1lbGluZSksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCF0aW1lbGluZSkK PiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAtCj4gLQllcnIgPSBpOTE1X2dlbV90aW1l bGluZV9pbml0KGk5MTUsIHRpbWVsaW5lLCBuYW1lKTsKPiAtCWlmIChlcnIpIHsKPiAtCQlrZnJl ZSh0aW1lbGluZSk7Cj4gLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAtCX0KPiAtCj4gLQlyZXR1 cm4gdGltZWxpbmU7Cj4gLX0KPiAtCj4gLXZvaWQgaTkxNV9nZW1fdGltZWxpbmVfZnJlZShzdHJ1 Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lKQo+IC17Cj4gLQlpZiAoIXRpbWVsaW5lKQo+ IC0JCXJldHVybjsKPiAtCj4gLQlpOTE1X2dlbV90aW1lbGluZV9maW5pKHRpbWVsaW5lKTsKPiAt CWtmcmVlKHRpbWVsaW5lKTsKPiAtfQo+IC0KPiAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9J OTE1X1NFTEZURVNUKQo+IC0jaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYyIKPiAt I2luY2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X2dlbV90aW1lbGluZS5jIgo+IC0jZW5kaWYKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRleCBjMDEyNzk2NWI1NzguLjVmZDdj ZmQ3NzFhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0x Mjk5LDcgKzEyOTksNyBAQCBzdGF0aWMgdm9pZCBlbmdpbmVfcmVjb3JkX3JlcXVlc3RzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAo+ICAgCWNvdW50ID0gMDsKPiAgIAlyZXF1 ZXN0ID0gZmlyc3Q7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb20ocmVxdWVzdCwgJmVuZ2lu ZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9t KHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKQo+ICAgCQljb3VudCsr Owo+ICAgCWlmICghY291bnQpCj4gICAJCXJldHVybjsKPiBAQCAtMTMxMiw3ICsxMzEyLDcgQEAg c3RhdGljIHZvaWQgZW5naW5lX3JlY29yZF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCj4gICAKPiAgIAljb3VudCA9IDA7Cj4gICAJcmVxdWVzdCA9IGZpcnN0Owo+IC0J bGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1 ZXN0cywgbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdp bmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKSB7Cj4gICAJCWlmIChjb3VudCA+PSBlZS0+bnVt X3JlcXVlc3RzKSB7Cj4gICAJCQkvKgo+ICAgCQkJICogSWYgdGhlIHJpbmcgcmVxdWVzdCBsaXN0 IHdhcyBjaGFuZ2VkIGluCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBpbmRleCA0YjFkYTAx MTY4YWUuLmQ5MzQxNDE1ZGY0MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BlcmYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gQEAg LTE2OTUsNyArMTY5NSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9zd2l0Y2hfdG9fdXBkYXRlZF9rZXJu ZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByCj4gICAJCQkJCQkgY29u c3Qgc3RydWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcpCj4gICB7Cj4gICAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+IC0Jc3RydWN0 IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZTsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgIAlpbnQgcmV0Owo+ICAg Cj4gQEAgLTE3MTYsMTUgKzE3MTYsMTEgQEAgc3RhdGljIGludCBnZW44X3N3aXRjaF90b191cGRh dGVkX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHIKPiAgIAkv KiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkgKi8KPiAgIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHRpbWVsaW5lLCAmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcywgbGluaykg ewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwcmV2Owo+IC0JCXN0cnVjdCBpbnRlbF90aW1l bGluZSAqdGw7Cj4gICAKPiAtCQl0bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2VuZ2luZS0+aWRdOwo+ IC0JCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZ0bC0+bGFzdF9yZXF1ZXN0LAo+ICsJCXBy ZXYgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+ICAgCQkJ CQkgICAmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQlpZiAocHJldikKPiAtCQkJ aTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJtaXQsCj4gLQkJCQkJCQkg JnByZXYtPnN1Ym1pdCwKPiAtCQkJCQkJCSBHRlBfS0VSTkVMKTsKPiArCQkJaTkxNV9yZXF1ZXN0 X2F3YWl0X2RtYV9mZW5jZShycSwgJnByZXYtPmZlbmNlKTsKPiAgIAl9Cj4gICAKPiAgIAlpOTE1 X3JlcXVlc3RfYWRkKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4 IDdiYjYxM2MwMGNjMy4uNWFjZjg2OWYzY2EzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMKPiBAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9mZW5j ZV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiAgIAlpZiAodGVz dF9iaXQoRE1BX0ZFTkNFX0ZMQUdfU0lHTkFMRURfQklULCAmZmVuY2UtPmZsYWdzKSkKPiAgIAkJ cmV0dXJuICJzaWduYWxlZCI7Cj4gICAKPiAtCXJldHVybiB0b19yZXF1ZXN0KGZlbmNlKS0+dGlt ZWxpbmUtPmNvbW1vbi0+bmFtZTsKPiArCXJldHVybiB0b19yZXF1ZXN0KGZlbmNlKS0+dGltZWxp bmUtPm5hbWU7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBib29sIGk5MTVfZmVuY2Vfc2lnbmFsZWQo c3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gQEAgLTE5OSw2ICsxOTksNyBAQCBpOTE1X3NjaGVk X25vZGVfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQo+ICAgc3RhdGljIGludCBy ZXNldF9hbGxfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIg c2Vxbm8pCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk Owo+ICAgCWludCByZXQ7Cj4gICAKPiBAQCAtMjEzLDE2ICsyMTQsMTMgQEAgc3RhdGljIGludCBy ZXNldF9hbGxfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIg c2Vxbm8pCj4gICAKPiAgIAkvKiBJZiB0aGUgc2Vxbm8gd3JhcHMgYXJvdW5kLCB3ZSBuZWVkIHRv IGNsZWFyIHRoZSBicmVhZGNydW1iIHJidHJlZSAqLwo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGk5MTUsIGlkKSB7Cj4gLQkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZTsK PiAtCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gZW5naW5lLT50aW1lbGluZTsKPiAtCj4g ICAJCUdFTV9UUkFDRSgiJXMgc2Vxbm8gJWQgKGN1cnJlbnQgJWQpIC0+ICVkXG4iLAo+ICAgCQkJ ICBlbmdpbmUtPm5hbWUsCj4gLQkJCSAgdGwtPnNlcW5vLAo+ICsJCQkgIGVuZ2luZS0+dGltZWxp bmUuc2Vxbm8sCj4gICAJCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKPiAgIAkJ CSAgc2Vxbm8pOwo+ICAgCj4gLQkJaWYgKCFpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgdGwtPnNl cW5vKSkgewo+ICsJCWlmICghaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIGVuZ2luZS0+dGltZWxp bmUuc2Vxbm8pKSB7Cj4gICAJCQkvKiBGbHVzaCBhbnkgd2FpdGVycyBiZWZvcmUgd2UgcmV1c2Ug dGhlIHNlcW5vICovCj4gICAJCQlpbnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2lu ZSk7Cj4gICAJCQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZlbmdpbmUtPmJyZWFkY3J1bWJzLnNp Z25hbHMpKTsKPiBAQCAtMjMwLDE4ICsyMjgsMTggQEAgc3RhdGljIGludCByZXNldF9hbGxfZ2xv YmFsX3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgc2Vxbm8pCj4gICAK PiAgIAkJLyogQ2hlY2sgd2UgYXJlIGlkbGUgYmVmb3JlIHdlIGZpZGRsZSB3aXRoIGh3IHN0YXRl ISAqLwo+ICAgCQlHRU1fQlVHX09OKCFpbnRlbF9lbmdpbmVfaXNfaWRsZShlbmdpbmUpKTsKPiAt CQlHRU1fQlVHX09OKGk5MTVfZ2VtX2FjdGl2ZV9pc3NldCgmZW5naW5lLT50aW1lbGluZS0+bGFz dF9yZXF1ZXN0KSk7Cj4gKwkJR0VNX0JVR19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmVuZ2lu ZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KSk7Cj4gICAKPiAgIAkJLyogRmluYWxseSByZXNldCBo dyBzdGF0ZSAqLwo+ICAgCQlpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oZW5naW5lLCBz ZXFubyk7Cj4gLQkJdGwtPnNlcW5vID0gc2Vxbm87Cj4gLQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50 cnkodGltZWxpbmUsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspCj4gLQkJCW1lbXNldCh0aW1l bGluZS0+ZW5naW5lW2lkXS5nbG9iYWxfc3luYywgMCwKPiAtCQkJICAgICAgIHNpemVvZih0aW1l bGluZS0+ZW5naW5lW2lkXS5nbG9iYWxfc3luYykpOwo+ICsJCWVuZ2luZS0+dGltZWxpbmUuc2Vx bm8gPSBzZXFubzsKPiAgIAl9Cj4gICAKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUs ICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspCj4gKwkJbWVtc2V0KHRpbWVsaW5lLT5nbG9iYWxf c3luYywgMCwgc2l6ZW9mKHRpbWVsaW5lLT5nbG9iYWxfc3luYykpOwo+ICsKPiAgIAlpOTE1LT5n dC5yZXF1ZXN0X3NlcmlhbCA9IHNlcW5vOwo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ IEBAIC0zNTcsMTAgKzM1NSwxMCBAQCBzdGF0aWMgdm9pZCBfX3JldGlyZV9lbmdpbmVfcmVxdWVz dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAKPiAgIAlsb2NhbF9pcnFfZGlz YWJsZSgpOwo+ICAgCj4gLQlzcGluX2xvY2soJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+IC0J R0VNX0JVR19PTighbGlzdF9pc19maXJzdCgmcnEtPmxpbmssICZlbmdpbmUtPnRpbWVsaW5lLT5y ZXF1ZXN0cykpOwo+ICsJc3Bpbl9sb2NrKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICsJR0VN X0JVR19PTighbGlzdF9pc19maXJzdCgmcnEtPmxpbmssICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVl c3RzKSk7Cj4gICAJbGlzdF9kZWxfaW5pdCgmcnEtPmxpbmspOwo+IC0Jc3Bpbl91bmxvY2soJmVu Z2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJc3Bpbl91bmxvY2soJmVuZ2luZS0+dGltZWxpbmUu bG9jayk7Cj4gICAKPiAgIAlzcGluX2xvY2soJnJxLT5sb2NrKTsKPiAgIAlpZiAoIXRlc3RfYml0 KERNQV9GRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwgJnJxLT5mZW5jZS5mbGFncykpCj4gQEAgLTM5 Nyw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCBfX3JldGlyZV9lbmdpbmVfdXB0byhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCXJldHVybjsKPiAgIAo+ICAgCWRvIHsKPiAtCQl0 bXAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywKPiArCQl0 bXAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLAo+ICAgCQkJ CSAgICAgICB0eXBlb2YoKnRtcCksIGxpbmspOwo+ICAgCj4gICAJCUdFTV9CVUdfT04odG1wLT5l bmdpbmUgIT0gZW5naW5lKTsKPiBAQCAtNDkyLDE2ICs0OTAsMTYgQEAgdm9pZCBpOTE1X3JlcXVl c3RfcmV0aXJlX3VwdG8oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJfSB3aGlsZSAodG1w ICE9IHJxKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdTMyIHRpbWVsaW5lX2dldF9zZXFubyhzdHJ1 Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQo+ICtzdGF0aWMgdTMyIHRpbWVsaW5lX2dldF9zZXFubyhz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCj4gICB7Cj4gICAJcmV0dXJuICsrdGwtPnNlcW5vOwo+ ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBtb3ZlX3RvX3RpbWVsaW5lKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJlcXVlc3QsCj4gLQkJCSAgICAgc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGlu ZSkKPiArCQkJICAgICBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCj4gICB7Cj4gLQlH RU1fQlVHX09OKHJlcXVlc3QtPnRpbWVsaW5lID09IHJlcXVlc3QtPmVuZ2luZS0+dGltZWxpbmUp Owo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZS0+bG9j ayk7Cj4gKwlHRU1fQlVHX09OKHJlcXVlc3QtPnRpbWVsaW5lID09ICZyZXF1ZXN0LT5lbmdpbmUt PnRpbWVsaW5lKTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcXVlc3QtPmVuZ2luZS0+dGlt ZWxpbmUubG9jayk7Cj4gICAKPiAgIAlzcGluX2xvY2soJnJlcXVlc3QtPnRpbWVsaW5lLT5sb2Nr KTsKPiAgIAlsaXN0X21vdmVfdGFpbCgmcmVxdWVzdC0+bGluaywgJnRpbWVsaW5lLT5yZXF1ZXN0 cyk7Cj4gQEAgLTUxNiwxNSArNTE0LDE1IEBAIHZvaWQgX19pOTE1X3JlcXVlc3Rfc3VibWl0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJR0VNX1RSQUNFKCIlcyBmZW5jZSAlbGx4 OiVkIC0+IGdsb2JhbD0lZCwgY3VycmVudCAlZFxuIiwKPiAgIAkJICBlbmdpbmUtPm5hbWUsCj4g ICAJCSAgcmVxdWVzdC0+ZmVuY2UuY29udGV4dCwgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8sCj4gLQkJ ICBlbmdpbmUtPnRpbWVsaW5lLT5zZXFubyArIDEsCj4gKwkJICBlbmdpbmUtPnRpbWVsaW5lLnNl cW5vICsgMSwKPiAgIAkJICBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSkpOwo+ICAgCj4g ICAJR0VNX0JVR19PTighaXJxc19kaXNhYmxlZCgpKTsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5l LT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCUdFTV9CVUdfT04ocmVxdWVzdC0+Z2xvYmFsX3Nl cW5vKTsKPiAgIAo+IC0Jc2Vxbm8gPSB0aW1lbGluZV9nZXRfc2Vxbm8oZW5naW5lLT50aW1lbGlu ZSk7Cj4gKwlzZXFubyA9IHRpbWVsaW5lX2dldF9zZXFubygmZW5naW5lLT50aW1lbGluZSk7Cj4g ICAJR0VNX0JVR19PTighc2Vxbm8pOwo+ICAgCUdFTV9CVUdfT04oaTkxNV9zZXFub19wYXNzZWQo aW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpLCBzZXFubykpOwo+ICAgCj4gQEAgLTUzOSw3 ICs1MzcsNyBAQCB2b2lkIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICAgCQkJCXJlcXVlc3QtPnJpbmctPnZhZGRyICsgcmVxdWVzdC0+cG9zdGZp eCk7Cj4gICAKPiAgIAkvKiBUcmFuc2ZlciBmcm9tIHBlci1jb250ZXh0IG9udG8gdGhlIGdsb2Jh bCBwZXItZW5naW5lIHRpbWVsaW5lICovCj4gLQltb3ZlX3RvX3RpbWVsaW5lKHJlcXVlc3QsIGVu Z2luZS0+dGltZWxpbmUpOwo+ICsJbW92ZV90b190aW1lbGluZShyZXF1ZXN0LCAmZW5naW5lLT50 aW1lbGluZSk7Cj4gICAKPiAgIAl0cmFjZV9pOTE1X3JlcXVlc3RfZXhlY3V0ZShyZXF1ZXN0KTsK PiAgIAo+IEBAIC01NTIsMTEgKzU1MCwxMSBAQCB2b2lkIGk5MTVfcmVxdWVzdF9zdWJtaXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAg Cj4gICAJLyogV2lsbCBiZSBjYWxsZWQgZnJvbSBpcnEtY29udGV4dCB3aGVuIHVzaW5nIGZvcmVp Z24gZmVuY2VzLiAqLwo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxv Y2ssIGZsYWdzKTsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ss IGZsYWdzKTsKPiAgIAo+ICAgCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0KTsKPiAgIAo+ IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3Mp Owo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFn cyk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgX19pOTE1X3JlcXVlc3RfdW5zdWJtaXQoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiBAQCAtNTcwLDE3ICs1NjgsMTcgQEAgdm9pZCBfX2k5MTVf cmVxdWVzdF91bnN1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCQkgIGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSk7Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFpcnFz X2Rpc2FibGVkKCkpOwo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT50aW1lbGluZS0+ bG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ ICAgCj4gICAJLyoKPiAgIAkgKiBPbmx5IHVud2luZCBpbiByZXZlcnNlIG9yZGVyLCByZXF1aXJl ZCBzbyB0aGF0IHRoZSBwZXItY29udGV4dCBsaXN0Cj4gICAJICogaXMga2VwdCBpbiBzZXFuby9y aW5nIG9yZGVyLgo+ICAgCSAqLwo+ICAgCUdFTV9CVUdfT04oIXJlcXVlc3QtPmdsb2JhbF9zZXFu byk7Cj4gLQlHRU1fQlVHX09OKHJlcXVlc3QtPmdsb2JhbF9zZXFubyAhPSBlbmdpbmUtPnRpbWVs aW5lLT5zZXFubyk7Cj4gKwlHRU1fQlVHX09OKHJlcXVlc3QtPmdsb2JhbF9zZXFubyAhPSBlbmdp bmUtPnRpbWVsaW5lLnNlcW5vKTsKPiAgIAlHRU1fQlVHX09OKGk5MTVfc2Vxbm9fcGFzc2VkKGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKPiAgIAkJCQkgICAgIHJlcXVlc3QtPmdsb2Jh bF9zZXFubykpOwo+IC0JZW5naW5lLT50aW1lbGluZS0+c2Vxbm8tLTsKPiArCWVuZ2luZS0+dGlt ZWxpbmUuc2Vxbm8tLTsKPiAgIAo+ICAgCS8qIFdlIG1heSBiZSByZWN1cnNpbmcgZnJvbSB0aGUg c2lnbmFsIGNhbGxiYWNrIG9mIGFub3RoZXIgaTkxNSBmZW5jZSAqLwo+ICAgCXNwaW5fbG9ja19u ZXN0ZWQoJnJlcXVlc3QtPmxvY2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKPiBAQCAtNjA3LDEx ICs2MDUsMTEgQEAgdm9pZCBpOTE1X3JlcXVlc3RfdW5zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVz dCAqcmVxdWVzdCkKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCj4gICAJLyogV2lsbCBi ZSBjYWxsZWQgZnJvbSBpcnEtY29udGV4dCB3aGVuIHVzaW5nIGZvcmVpZ24gZmVuY2VzLiAqLwo+ IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiAr CXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIAo+ ICAgCV9faTkxNV9yZXF1ZXN0X3Vuc3VibWl0KHJlcXVlc3QpOwo+ICAgCj4gLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIH0KPiAg IAo+ICAgc3RhdGljIGludCBfX2k5MTVfc3dfZmVuY2VfY2FsbAo+IEBAIC03NjQsNyArNzYyLDcg QEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlycS0+Y3R4ID0gY3R4Owo+ICAgCXJxLT5y aW5nID0gcmluZzsKPiAgIAlycS0+dGltZWxpbmUgPSByaW5nLT50aW1lbGluZTsKPiAtCUdFTV9C VUdfT04ocnEtPnRpbWVsaW5lID09IGVuZ2luZS0+dGltZWxpbmUpOwo+ICsJR0VNX0JVR19PTihy cS0+dGltZWxpbmUgPT0gJmVuZ2luZS0+dGltZWxpbmUpOwo+ICAgCj4gICAJc3Bpbl9sb2NrX2lu aXQoJnJxLT5sb2NrKTsKPiAgIAlkbWFfZmVuY2VfaW5pdCgmcnEtPmZlbmNlLAo+IEBAIC05Mjks NyArOTI3LDcgQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gICAKPiAgIAkJLyogU3F1YXNoIHJl cGVhdGVkIHdhaXRzIHRvIHRoZSBzYW1lIHRpbWVsaW5lcyAqLwo+ICAgCQlpZiAoZmVuY2UtPmNv bnRleHQgIT0gcnEtPmk5MTUtPm1tLnVub3JkZXJlZF90aW1lbGluZSAmJgo+IC0JCSAgICBpbnRl bF90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHJxLT50aW1lbGluZSwgZmVuY2UpKQo+ICsJCSAgICBp OTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIocnEtPnRpbWVsaW5lLCBmZW5jZSkpCj4gICAJCQlj b250aW51ZTsKPiAgIAo+ICAgCQlpZiAoZG1hX2ZlbmNlX2lzX2k5MTUoZmVuY2UpKQo+IEBAIC05 NDMsNyArOTQxLDcgQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gICAKPiAgIAkJLyogUmVjb3Jk IHRoZSBsYXRlc3QgZmVuY2UgdXNlZCBhZ2FpbnN0IGVhY2ggdGltZWxpbmUgKi8KPiAgIAkJaWYg KGZlbmNlLT5jb250ZXh0ICE9IHJxLT5pOTE1LT5tbS51bm9yZGVyZWRfdGltZWxpbmUpCj4gLQkJ CWludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHJxLT50aW1lbGluZSwgZmVuY2UpOwo+ICsJCQlpOTE1 X3RpbWVsaW5lX3N5bmNfc2V0KHJxLT50aW1lbGluZSwgZmVuY2UpOwo+ICAgCX0gd2hpbGUgKC0t bmNoaWxkKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+IEBAIC0xMDIwLDcgKzEwMTgsNyBAQCB2b2lk IF9faTkxNV9yZXF1ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCBib29sIGZs dXNoX2NhY2hlcykKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy ZXF1ZXN0LT5lbmdpbmU7Cj4gICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5y aW5nOwo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSA9IHJlcXVlc3QtPnRpbWVs aW5lOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lID0gcmVxdWVzdC0+dGltZWxp bmU7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKPiAgIAl1MzIgKmNzOwo+ICAgCWlu dCBlcnI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBpbmRleCA4ZjMxY2E4Mjcy ZjguLmVkZGJkNDI0NWNiMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4g QEAgLTM3LDYgKzM3LDcgQEAKPiAgIHN0cnVjdCBkcm1fZmlsZTsKPiAgIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0Owo+ICAgc3RydWN0IGk5MTVfcmVxdWVzdDsKPiArc3RydWN0IGk5MTVfdGlt ZWxpbmU7Cj4gICAKPiAgIHN0cnVjdCBpbnRlbF93YWl0IHsKPiAgIAlzdHJ1Y3QgcmJfbm9kZSBu b2RlOwo+IEBAIC05NSw3ICs5Niw3IEBAIHN0cnVjdCBpOTE1X3JlcXVlc3Qgewo+ICAgCXN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOwo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+IC0Jc3RydWN0IGludGVsX3RpbWVs aW5lICp0aW1lbGluZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiAgIAlz dHJ1Y3QgaW50ZWxfc2lnbmFsX25vZGUgc2lnbmFsaW5nOwo+ICAgCj4gICAJLyoKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwMDAwMDAuLjQ2NjdjYzA4YzQxNgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMKPiBAQCAtMCwwICsxLDEwNSBAQAo+ICsvKgo+ ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKyAqCj4gKyAqIENvcHlyaWdodCDC qSAyMDE2LTIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaTkx NV9kcnYuaCIKPiArCj4gKyNpbmNsdWRlICJpOTE1X3RpbWVsaW5lLmgiCj4gKyNpbmNsdWRlICJp OTE1X3N5bmNtYXAuaCIKPiArCj4gK3ZvaWQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICsJCQlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUs Cj4gKwkJCWNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCS8qCj4gKwkgKiBJZGVhbGx5IHdlIHdhbnQg YSBzZXQgb2YgZW5naW5lcyBvbiBhIHNpbmdsZSBsZWFmIGFzIHdlIGV4cGVjdAo+ICsJICogdG8g bW9zdGx5IGJlIHRyYWNraW5nIHN5bmNocm9uaXNhdGlvbiBiZXR3ZWVuIGVuZ2luZXMuIEl0IGlz IG5vdAo+ICsJICogYSBodWdlIGlzc3VlIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBidXQgd2Ug bWF5IHdhbnQgdG8gbWl0aWdhdGUKPiArCSAqIGFueSBwYWdlIGNyb3NzaW5nIHBlbmFsdGllcyBp ZiB0aGV5IGJlY29tZSBhbiBpc3N1ZS4KPiArCSAqLwo+ICsJQlVJTERfQlVHX09OKEtTWU5DTUFQ IDwgSTkxNV9OVU1fRU5HSU5FUyk7Cj4gKwo+ICsJdGltZWxpbmUtPm5hbWUgPSBuYW1lOwo+ICsK PiArCWxpc3RfYWRkKCZ0aW1lbGluZS0+bGluaywgJmk5MTUtPmd0LnRpbWVsaW5lcyk7Cj4gKwo+ ICsJLyogQ2FsbGVkIGR1cmluZyBlYXJseV9pbml0IGJlZm9yZSB3ZSBrbm93IGhvdyBtYW55IGVu Z2luZXMgdGhlcmUgYXJlICovCj4gKwo+ICsJdGltZWxpbmUtPmZlbmNlX2NvbnRleHQgPSBkbWFf ZmVuY2VfY29udGV4dF9hbGxvYygxKTsKPiArCj4gKwlzcGluX2xvY2tfaW5pdCgmdGltZWxpbmUt PmxvY2spOwo+ICsKPiArCWluaXRfcmVxdWVzdF9hY3RpdmUoJnRpbWVsaW5lLT5sYXN0X3JlcXVl c3QsIE5VTEwpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5yZXF1ZXN0cyk7Cj4gKwo+ ICsJaTkxNV9zeW5jbWFwX2luaXQoJnRpbWVsaW5lLT5zeW5jKTsKPiArfQo+ICsKPiArLyoqCj4g KyAqIGk5MTVfdGltZWxpbmVzX3BhcmsgLSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGlkbGVzCj4g KyAqIEBpOTE1OiB0aGUgZHJtX2k5MTVfcHJpdmF0ZSBkZXZpY2UKPiArICoKPiArICogV2hlbiB0 aGUgZHJpdmVyIGlzIGNvbXBsZXRlbHkgaWRsZSwgd2Uga25vdyB0aGF0IGFsbCBvZiBvdXIgc3lu YyBwb2ludHMKPiArICogaGF2ZSBiZWVuIHNpZ25hbGVkIGFuZCBvdXIgdHJhY2tpbmcgaXMgdGhl biBlbnRpcmVseSByZWR1bmRhbnQuIEFueSByZXF1ZXN0Cj4gKyAqIHRvIHdhaXQgdXBvbiBhbiBv bGRlciBzeW5jIHBvaW50IHdpbGwgYmUgY29tcGxldGVkIGluc3RhbnRseSBhcyB3ZSBrbm93Cj4g KyAqIHRoZSBmZW5jZSBpcyBzaWduYWxlZCBhbmQgdGhlcmVmb3JlIHdlIHdpbGwgbm90IGV2ZW4g bG9vayB0aGVtIHVwIGluIHRoZQo+ICsgKiBzeW5jIHBvaW50IG1hcC4KPiArICovCj4gK3ZvaWQg aTkxNV90aW1lbGluZXNfcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50 cnkodGltZWxpbmUsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsKPiArCQkvKgo+ICsJCSAq IEFsbCBrbm93biBmZW5jZXMgYXJlIGNvbXBsZXRlZCBzbyB3ZSBjYW4gc2NyYXAKPiArCQkgKiB0 aGUgY3VycmVudCBzeW5jIHBvaW50IHRyYWNraW5nIGFuZCBzdGFydCBhZnJlc2gsCj4gKwkJICog YW55IGF0dGVtcHQgdG8gd2FpdCB1cG9uIGEgcHJldmlvdXMgc3luYyBwb2ludAo+ICsJCSAqIHdp bGwgYmUgc2tpcHBlZCBhcyB0aGUgZmVuY2Ugd2FzIHNpZ25hbGVkLgo+ICsJCSAqLwo+ICsJCWk5 MTVfc3luY21hcF9mcmVlKCZ0aW1lbGluZS0+c3luYyk7Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQg aTkxNV90aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiArewo+ ICsJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJlcXVlc3RzKSk7Cj4gKwo+ICsJ aTkxNV9zeW5jbWFwX2ZyZWUoJnRpbWVsaW5lLT5zeW5jKTsKPiArCj4gKwlsaXN0X2RlbCgmdGlt ZWxpbmUtPmxpbmspOwo+ICt9Cj4gKwo+ICtzdHJ1Y3QgaTkxNV90aW1lbGluZSAqCj4gK2k5MTVf dGltZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFy ICpuYW1lKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gKwo+ICsJ dGltZWxpbmUgPSBremFsbG9jKHNpemVvZigqdGltZWxpbmUpLCBHRlBfS0VSTkVMKTsKPiArCWlm ICghdGltZWxpbmUpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJaTkxNV90 aW1lbGluZV9pbml0KGk5MTUsIHRpbWVsaW5lLCBuYW1lKTsKPiArCWtyZWZfaW5pdCgmdGltZWxp bmUtPmtyZWYpOwo+ICsKPiArCXJldHVybiB0aW1lbGluZTsKPiArfQo+ICsKPiArdm9pZCBfX2k5 MTVfdGltZWxpbmVfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKPiArewo+ICsJc3RydWN0IGk5MTVf dGltZWxpbmUgKnRpbWVsaW5lID0KPiArCQljb250YWluZXJfb2Yoa3JlZiwgdHlwZW9mKCp0aW1l bGluZSksIGtyZWYpOwo+ICsKPiArCWk5MTVfdGltZWxpbmVfZmluaSh0aW1lbGluZSk7Cj4gKwlr ZnJlZSh0aW1lbGluZSk7Cj4gK30KPiArCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkx NV9TRUxGVEVTVCkKPiArI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMiCj4gKyNp bmNsdWRlICJzZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jIgo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaAo+IHNpbWlsYXJpdHkgaW5kZXggNjglCj4gcmVuYW1l IGZyb20gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuaAo+IHJlbmFtZSB0 byBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKPiBpbmRleCA3ODBlZDQ2NWM0 ZmMuLmRjMmE0NjMyZmFhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV90aW1lbGluZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGlu ZS5oCj4gQEAgLTIyLDE4ICsyMiwxNyBAQAo+ICAgICoKPiAgICAqLwo+ICAgCj4gLSNpZm5kZWYg STkxNV9HRU1fVElNRUxJTkVfSAo+IC0jZGVmaW5lIEk5MTVfR0VNX1RJTUVMSU5FX0gKPiArI2lm bmRlZiBJOTE1X1RJTUVMSU5FX0gKPiArI2RlZmluZSBJOTE1X1RJTUVMSU5FX0gKPiAgIAo+ICAg I2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KPiAgIAo+ ICAgI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc3luY21hcC5o Igo+ICAgI2luY2x1ZGUgImk5MTVfdXRpbHMuaCIKPiAgIAo+IC1zdHJ1Y3QgaTkxNV9nZW1fdGlt ZWxpbmU7Cj4gLQo+IC1zdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewo+ICtzdHJ1Y3QgaTkxNV90aW1l bGluZSB7Cj4gICAJdTY0IGZlbmNlX2NvbnRleHQ7Cj4gICAJdTMyIHNlcW5vOwo+ICAgCj4gQEAg LTcxLDUxICs3MCw1NyBAQCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewo+ICAgCSAqLwo+ICAgCXUz MiBnbG9iYWxfc3luY1tJOTE1X05VTV9FTkdJTkVTXTsKPiAgIAo+IC0Jc3RydWN0IGk5MTVfZ2Vt X3RpbWVsaW5lICpjb21tb247Cj4gLX07Cj4gLQo+IC1zdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUg ewo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKPiAtCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNTsKPiAgIAljb25zdCBjaGFyICpuYW1lOwo+ICAgCj4gLQlzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgZW5naW5lW0k5MTVfTlVNX0VOR0lORVNdOwo+ICsJc3RydWN0IGtyZWYga3JlZjsK PiAgIH07Cj4gICAKPiAtaW50IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gLQkJCSAgIHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwsCj4g LQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUpOwo+IC1pbnQgaTkxNV9nZW1fdGltZWxpbmVfaW5pdF9f Z2xvYmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAtdm9pZCBpOTE1X2dlbV90 aW1lbGluZXNfcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gLXZvaWQgaTkx NV9nZW1fdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRsKTsKPiArdm9p ZCBpOTE1X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJ CXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKPiArCQkJY29uc3QgY2hhciAqbmFtZSk7Cj4gK3Zv aWQgaTkxNV90aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCk7Cj4gICAKPiAt c3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICoKPiAtaTkxNV9nZW1fdGltZWxpbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFyICpuYW1lKTsKPiAtdm9pZCBp OTE1X2dlbV90aW1lbGluZV9mcmVlKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUp Owo+ICtzdHJ1Y3QgaTkxNV90aW1lbGluZSAqCj4gK2k5MTVfdGltZWxpbmVfY3JlYXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBjb25zdCBjaGFyICpuYW1lKTsKPiAgIAo+IC1zdGF0 aWMgaW5saW5lIGludCBfX2ludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHN0cnVjdCBpbnRlbF90aW1l bGluZSAqdGwsCj4gLQkJCQkJICAgIHU2NCBjb250ZXh0LCB1MzIgc2Vxbm8pCj4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IGk5MTVfdGltZWxpbmUgKgo+ICtpOTE1X3RpbWVsaW5lX2dldChzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGltZWxpbmUpCj4gK3sKPiArCWtyZWZfZ2V0KCZ0aW1lbGluZS0+a3Jl Zik7Cj4gKwlyZXR1cm4gdGltZWxpbmU7Cj4gK30KPiArCj4gK3ZvaWQgX19pOTE1X3RpbWVsaW5l X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpOwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV90aW1l bGluZV9wdXQoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQo+ICt7Cj4gKwlrcmVmX3B1 dCgmdGltZWxpbmUtPmtyZWYsIF9faTkxNV90aW1lbGluZV9mcmVlKTsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSBpbnQgX19pOTE1X3RpbWVsaW5lX3N5bmNfc2V0KHN0cnVjdCBpOTE1X3RpbWVs aW5lICp0bCwKPiArCQkJCQkgICB1NjQgY29udGV4dCwgdTMyIHNlcW5vKQo+ICAgewo+ICAgCXJl dHVybiBpOTE1X3N5bmNtYXBfc2V0KCZ0bC0+c3luYywgY29udGV4dCwgc2Vxbm8pOwo+ICAgfQo+ ICAgCj4gLXN0YXRpYyBpbmxpbmUgaW50IGludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGwsCj4gLQkJCQkJICBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSkKPiArc3RhdGljIGlubGluZSBpbnQgaTkxNV90aW1lbGluZV9zeW5jX3NldChzdHJ1Y3QgaTkx NV90aW1lbGluZSAqdGwsCj4gKwkJCQkJIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ ICAgewo+IC0JcmV0dXJuIF9faW50ZWxfdGltZWxpbmVfc3luY19zZXQodGwsIGZlbmNlLT5jb250 ZXh0LCBmZW5jZS0+c2Vxbm8pOwo+ICsJcmV0dXJuIF9faTkxNV90aW1lbGluZV9zeW5jX3NldCh0 bCwgZmVuY2UtPmNvbnRleHQsIGZlbmNlLT5zZXFubyk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlu bGluZSBib29sIF9faW50ZWxfdGltZWxpbmVfc3luY19pc19sYXRlcihzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmUgKnRsLAo+IC0JCQkJCQkgIHU2NCBjb250ZXh0LCB1MzIgc2Vxbm8pCj4gK3N0YXRpYyBp bmxpbmUgYm9vbCBfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcihzdHJ1Y3QgaTkxNV90aW1l bGluZSAqdGwsCj4gKwkJCQkJCSB1NjQgY29udGV4dCwgdTMyIHNlcW5vKQo+ICAgewo+ICAgCXJl dHVybiBpOTE1X3N5bmNtYXBfaXNfbGF0ZXIoJnRsLT5zeW5jLCBjb250ZXh0LCBzZXFubyk7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIGlubGluZSBib29sIGludGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0 ZXIoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKPiAtCQkJCQkJY29uc3Qgc3RydWN0IGRtYV9m ZW5jZSAqZmVuY2UpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3RpbWVsaW5lX3N5bmNfaXNf bGF0ZXIoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLAo+ICsJCQkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiAgIHsKPiAtCXJldHVybiBfX2ludGVsX3RpbWVsaW5lX3N5 bmNfaXNfbGF0ZXIodGwsIGZlbmNlLT5jb250ZXh0LCBmZW5jZS0+c2Vxbm8pOwo+ICsJcmV0dXJu IF9faTkxNV90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHRsLCBmZW5jZS0+Y29udGV4dCwgZmVuY2Ut PnNlcW5vKTsKPiAgIH0KPiAgIAo+ICt2b2lkIGk5MTVfdGltZWxpbmVzX3Bhcmsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiAgICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggOWQxMjdlNjUxMTNiLi4yNjgzMzkyMDM1OTggMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC00NTEsMTIgKzQ1 MSw2IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQo+ICAgCUdFTV9CVUdfT04oaW50ZWxfZW5naW5l X2dldF9zZXFubyhlbmdpbmUpICE9IHNlcW5vKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF90aW1lbGluZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gLXsKPiAtCWVuZ2luZS0+dGltZWxpbmUgPQo+IC0JCSZlbmdpbmUtPmk5MTUtPmd0LmV4ZWN1 dGlvbl90aW1lbGluZS5lbmdpbmVbZW5naW5lLT5pZF07Cj4gLX0KPiAtCj4gICBzdGF0aWMgdm9p ZCBpbnRlbF9lbmdpbmVfaW5pdF9iYXRjaF9wb29sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIHsKPiAgIAlpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoJmVuZ2luZS0+YmF0Y2hf cG9vbCwgZW5naW5lKTsKPiBAQCAtNTA4LDggKzUwMiw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2Vu Z2luZV9pbml0X2V4ZWNsaXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgICAq Lwo+ICAgdm9pZCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiArCWk5MTVfdGltZWxpbmVfaW5pdChlbmdpbmUtPmk5MTUsICZl bmdpbmUtPnRpbWVsaW5lLCBlbmdpbmUtPm5hbWUpOwo+ICsKPiAgIAlpbnRlbF9lbmdpbmVfaW5p dF9leGVjbGlzdChlbmdpbmUpOwo+IC0JaW50ZWxfZW5naW5lX2luaXRfdGltZWxpbmUoZW5naW5l KTsKPiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKPiAgIAlpbnRlbF9l bmdpbmVfaW5pdF9iYXRjaF9wb29sKGVuZ2luZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRfY21k X3BhcnNlcihlbmdpbmUpOwo+IEBAIC03NTEsNiArNzQ2LDggQEAgdm9pZCBpbnRlbF9lbmdpbmVf Y2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWlmIChl bmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCkKPiAgIAkJaW50ZWxfY29udGV4dF91bnBpbihl bmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCwgZW5naW5lKTsKPiAgIAlpbnRlbF9jb250ZXh0 X3VucGluKGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQsIGVuZ2luZSk7Cj4gKwo+ICsJaTkx NV90aW1lbGluZV9maW5pKCZlbmdpbmUtPnRpbWVsaW5lKTsKPiAgIH0KPiAgIAo+ICAgdTY0IGlu dGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+IEBAIC0xMDAzLDcgKzEwMDAsNyBAQCBib29sIGludGVsX2VuZ2luZV9oYXNfa2Vy bmVsX2NvbnRleHQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCSAq IHRoZSBsYXN0IHJlcXVlc3QgdGhhdCByZW1haW5zIGluIHRoZSB0aW1lbGluZS4gV2hlbiBpZGxl LCBpdCBpcwo+ICAgCSAqIHRoZSBsYXN0IGV4ZWN1dGVkIGNvbnRleHQgYXMgdHJhY2tlZCBieSBy ZXRpcmVtZW50Lgo+ICAgCSAqLwo+IC0JcnEgPSBfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZlbmdp bmUtPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QpOwo+ICsJcnEgPSBfX2k5MTVfZ2VtX2FjdGl2ZV9w ZWVrKCZlbmdpbmUtPnRpbWVsaW5lLmxhc3RfcmVxdWVzdCk7Cj4gICAJaWYgKHJxKQo+ICAgCQly ZXR1cm4gcnEtPmN0eCA9PSBrZXJuZWxfY29udGV4dDsKPiAgIAllbHNlCj4gQEAgLTEzMzQsMTQg KzEzMzEsMTQgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCj4gICAKPiAgIAlkcm1fcHJpbnRmKG0sICJcdFJlcXVlc3RzOlxuIik7Cj4gICAK PiAtCXJxID0gbGlzdF9maXJzdF9lbnRyeSgmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCj4g KwlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsCj4gICAJ CQkgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0LCBsaW5rKTsKPiAtCWlmICgmcnEtPmxpbmsgIT0g JmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzKQo+ICsJaWYgKCZycS0+bGluayAhPSAmZW5naW5l LT50aW1lbGluZS5yZXF1ZXN0cykKPiAgIAkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRmaXJz dCAgIik7Cj4gICAKPiAtCXJxID0gbGlzdF9sYXN0X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLT5y ZXF1ZXN0cywKPiArCXJxID0gbGlzdF9sYXN0X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLnJlcXVl c3RzLAo+ICAgCQkJICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0LCBsaW5rKTsKPiAtCWlmICgmcnEt PmxpbmsgIT0gJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzKQo+ICsJaWYgKCZycS0+bGluayAh PSAmZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cykKPiAgIAkJcHJpbnRfcmVxdWVzdChtLCBycSwg Ilx0XHRsYXN0ICAgIik7Cj4gICAKPiAgIAlycSA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVl c3QoZW5naW5lKTsKPiBAQCAtMTM3MywxMSArMTM3MCwxMSBAQCB2b2lkIGludGVsX2VuZ2luZV9k dW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJZHJtX3ByaW50ZihtLCAi XHREZXZpY2UgaXMgYXNsZWVwOyBza2lwcGluZyByZWdpc3RlciBkdW1wXG4iKTsKPiAgIAl9Cj4g ICAKPiAtCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJc3Bpbl9s b2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCWxhc3QgPSBOVUxMOwo+ ICAgCWNvdW50ID0gMDsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUtPnRpbWVs aW5lLT5yZXF1ZXN0cywgbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmVuZ2lu ZS0+dGltZWxpbmUucmVxdWVzdHMsIGxpbmspIHsKPiAgIAkJaWYgKGNvdW50KysgPCBNQVhfUkVR VUVTVFNfVE9fU0hPVyAtIDEpCj4gICAJCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdEUgIik7 Cj4gICAJCWVsc2UKPiBAQCAtMTQxNSw3ICsxNDEyLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVt cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCXByaW50X3JlcXVlc3QobSwg bGFzdCwgIlx0XHRRICIpOwo+ICAgCX0KPiAgIAo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUt PnRpbWVsaW5lLT5sb2NrKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5s b2NrKTsKPiAgIAo+ICAgCXNwaW5fbG9ja19pcnEoJmItPnJiX2xvY2spOwo+ICAgCWZvciAocmIg PSByYl9maXJzdCgmYi0+d2FpdGVycyk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggNmU2ZWQwZjQ2 YmQzLi44YWFmYmYyZTAxZDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19zdWJtaXNzaW9uLmMKPiBAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIGd1Y19kZXF1 ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlib29sIHN1Ym1pdCA9IGZh bHNlOwo+ICAgCXN0cnVjdCByYl9ub2RlICpyYjsKPiAgIAo+IC0Jc3Bpbl9sb2NrX2lycSgmZW5n aW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5l LmxvY2spOwo+ICAgCXJiID0gZXhlY2xpc3RzLT5maXJzdDsKPiAgIAlHRU1fQlVHX09OKHJiX2Zp cnN0KCZleGVjbGlzdHMtPnF1ZXVlKSAhPSByYik7Cj4gICAKPiBAQCAtNzQ4LDcgKzc0OCw3IEBA IHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIAlHRU1fQlVHX09OKGV4ZWNsaXN0cy0+Zmlyc3QgJiYgIXBvcnRfaXNzZXQoZXhlY2xpc3Rz LT5wb3J0KSk7Cj4gICAKPiAgIHVubG9jazoKPiAtCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50 aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9j ayk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQodW5z aWduZWQgbG9uZyBkYXRhKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZWY4ODhm M2MwZjQ0Li45YTliNGU3NzdkN2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBA IC0zMzAsMTAgKzMzMCwxMCBAQCBzdGF0aWMgdm9pZCBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVl c3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlzdHJ1Y3QgaTkxNV9wcmlv bGlzdCAqdW5pbml0aWFsaXplZF92YXIocCk7Cj4gICAJaW50IGxhc3RfcHJpbyA9IEk5MTVfUFJJ T1JJVFlfSU5WQUxJRDsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT50aW1l bGluZS0+bG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPnRpbWVsaW5lLmxv Y2spOwo+ICAgCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UocnEsIHJuLAo+ IC0JCQkJCSAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCj4gKwkJCQkJICZlbmdpbmUtPnRp bWVsaW5lLnJlcXVlc3RzLAo+ICAgCQkJCQkgbGluaykgewo+ICAgCQlpZiAoaTkxNV9yZXF1ZXN0 X2NvbXBsZXRlZChycSkpCj4gICAJCQlyZXR1cm47Cj4gQEAgLTM1Nyw5ICszNTcsOSBAQCBleGVj bGlzdHNfdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cykKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQo+ ICAgCQljb250YWluZXJfb2YoZXhlY2xpc3RzLCB0eXBlb2YoKmVuZ2luZSksIGV4ZWNsaXN0cyk7 Cj4gICAKPiAtCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJc3Bp bl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAlfX3Vud2luZF9pbmNvbXBs ZXRlX3JlcXVlc3RzKGVuZ2luZSk7Cj4gLQlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxp bmUtPmxvY2spOwo+ICsJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIHZvaWQKPiBAQCAtNTgzLDcgKzU4Myw3IEBAIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIAkgKiBhbmQgY29udGV4dCBzd2l0Y2hlcykgc3VibWlzc2lvbi4KPiAgIAkgKi8KPiAg IAo+IC0Jc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX2xv Y2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCXJiID0gZXhlY2xpc3RzLT5maXJz dDsKPiAgIAlHRU1fQlVHX09OKHJiX2ZpcnN0KCZleGVjbGlzdHMtPnF1ZXVlKSAhPSByYik7Cj4g ICAKPiBAQCAtNzQzLDcgKzc0Myw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlHRU1fQlVHX09OKGV4ZWNsaXN0cy0+ Zmlyc3QgJiYgIXBvcnRfaXNzZXQoZXhlY2xpc3RzLT5wb3J0KSk7Cj4gICAKPiAgIHVubG9jazoK PiAtCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3Vu bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gICAKPiAgIAlpZiAoc3VibWl0KSB7 Cj4gICAJCWV4ZWNsaXN0c191c2VyX2JlZ2luKGV4ZWNsaXN0cywgZXhlY2xpc3RzLT5wb3J0KTsK PiBAQCAtODkzLDEwICs4OTMsMTAgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1 ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJZXhlY2xpc3RzX2NhbmNl bF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7Cj4gICAJcmVzZXRfaXJxKGVuZ2luZSk7Cj4gICAK PiAtCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX2xvY2soJmVu Z2luZS0+dGltZWxpbmUubG9jayk7Cj4gICAKPiAgIAkvKiBNYXJrIGFsbCBleGVjdXRpbmcgcmVx dWVzdHMgYXMgc2tpcHBlZC4gKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUt PnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwg JmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsIGxpbmspIHsKPiAgIAkJR0VNX0JVR19PTighcnEt Pmdsb2JhbF9zZXFubyk7Cj4gICAJCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4g ICAJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FSU8pOwo+IEBAIC05MjgsNyAr OTI4LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJZXhlY2xpc3RzLT5maXJzdCA9IE5VTEw7Cj4gICAJ R0VNX0JVR19PTihwb3J0X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkpOwo+ICAgCj4gLQlzcGluX3Vu bG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3VubG9jaygmZW5naW5lLT50 aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKPiAgIH0K PiBAQCAtMTE2Niw3ICsxMTY2LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1 ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJdW5zaWduZWQgbG9uZyBmbGFn czsKPiAgIAo+ICAgCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2lu ZyBmb3JlaWduIGZlbmNlcy4gKi8KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVs aW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGlu ZS5sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAlxdWV1ZV9yZXF1ZXN0KGVuZ2luZSwgJnJlcXVlc3Qt PnNjaGVkLCBycV9wcmlvKHJlcXVlc3QpKTsKPiAgIAlzdWJtaXRfcXVldWUoZW5naW5lLCBycV9w cmlvKHJlcXVlc3QpKTsKPiBAQCAtMTE3NCw3ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xp c3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJR0VN X0JVR19PTighZW5naW5lLT5leGVjbGlzdHMuZmlyc3QpOwo+ICAgCUdFTV9CVUdfT04obGlzdF9l bXB0eSgmcmVxdWVzdC0+c2NoZWQubGluaykpOwo+ICAgCj4gLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgc3Rh dGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnNjaGVkX3RvX3JlcXVlc3Qoc3RydWN0IGk5MTVfc2No ZWRfbm9kZSAqbm9kZSkKPiBAQCAtMTE5MCw4ICsxMTkwLDggQEAgc2NoZWRfbG9ja19lbmdpbmUo c3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbG9j a2VkKQo+ICAgCUdFTV9CVUdfT04oIWxvY2tlZCk7Cj4gICAKPiAgIAlpZiAoZW5naW5lICE9IGxv Y2tlZCkgewo+IC0JCXNwaW5fdW5sb2NrKCZsb2NrZWQtPnRpbWVsaW5lLT5sb2NrKTsKPiAtCQlz cGluX2xvY2soJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJCXNwaW5fdW5sb2NrKCZsb2Nr ZWQtPnRpbWVsaW5lLmxvY2spOwo+ICsJCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5sb2Nr KTsKPiAgIAl9Cj4gICAKPiAgIAlyZXR1cm4gZW5naW5lOwo+IEBAIC0xMjc0LDcgKzEyNzQsNyBA QCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc2NoZWR1bGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVx dWVzdCwKPiAgIAl9Cj4gICAKPiAgIAllbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Cj4gLQlzcGlu X2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiArCXNwaW5fbG9ja19pcnEoJmVu Z2luZS0+dGltZWxpbmUubG9jayk7Cj4gICAKPiAgIAkvKiBGaWZvIGFuZCBkZXB0aC1maXJzdCBy ZXBsYWNlbWVudCBlbnN1cmUgb3VyIGRlcHMgZXhlY3V0ZSBiZWZvcmUgdXMgKi8KPiAgIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmVfcmV2ZXJzZShkZXAsIHAsICZkZnMsIGRmc19saW5rKSB7Cj4g QEAgLTEyOTgsNyArMTI5OCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zY2hlZHVsZShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCQkJX19zdWJtaXRfcXVldWUoZW5naW5lLCBw cmlvKTsKPiAgIAl9Cj4gICAKPiAtCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+ bG9jayk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gICB9 Cj4gICAKPiAgIHN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiBAQCAtMTgyNyw5ICsxODI3LDkgQEAgc3Rh dGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+ICAgCXJlc2V0X2lycShlbmdpbmUpOwo+ICAgCj4gICAJLyogUHVzaCBiYWNrIGFueSBpbmNv bXBsZXRlIHJlcXVlc3RzIGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwo+IC0Jc3Bpbl9s b2NrKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiArCXNwaW5fbG9jaygmZW5naW5lLT50aW1l bGluZS5sb2NrKTsKPiAgIAlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7Cj4g LQlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3VubG9jaygm ZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdz KTsKPiAgIAo+IEBAIC0yNTg4LDYgKzI1ODgsNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250 ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJc3Ry dWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJdWludDMyX3QgY29udGV4dF9zaXplOwo+ICAgCXN0cnVj dCBpbnRlbF9yaW5nICpyaW5nOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ ICAgCWludCByZXQ7Cj4gICAKPiAgIAlpZiAoY2UtPnN0YXRlKQo+IEBAIC0yNjAzLDggKzI2MDQs OCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAKPiAgIAljdHhfb2JqID0gaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZShjdHgtPmk5MTUsIGNvbnRleHRfc2l6ZSk7Cj4gICAJaWYgKElTX0VSUihjdHhfb2Jq KSkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIkFsbG9jIExSQyBiYWNraW5nIG9iaiBmYWlsZWQu XG4iKTsKPiAtCQlyZXR1cm4gUFRSX0VSUihjdHhfb2JqKTsKPiArCQlyZXQgPSBQVFJfRVJSKGN0 eF9vYmopOwo+ICsJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwo+ICAgCX0KPiAgIAo+ICAgCXZtYSA9 IGk5MTVfdm1hX2luc3RhbmNlKGN0eF9vYmosICZjdHgtPmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7 Cj4gQEAgLTI2MTMsNyArMjYxNCwxNCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2Rl ZmVycmVkX2FsbG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCWdvdG8gZXJy b3JfZGVyZWZfb2JqOwo+ICAgCX0KPiAgIAo+IC0JcmluZyA9IGludGVsX2VuZ2luZV9jcmVhdGVf cmluZyhlbmdpbmUsIGN0eC0+dGltZWxpbmUsIGN0eC0+cmluZ19zaXplKTsKPiArCXRpbWVsaW5l ID0gaTkxNV90aW1lbGluZV9jcmVhdGUoY3R4LT5pOTE1LCBjdHgtPm5hbWUpOwo+ICsJaWYgKElT X0VSUih0aW1lbGluZSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKHRpbWVsaW5lKTsKPiArCQlnb3Rv IGVycm9yX2RlcmVmX29iajsKPiArCX0KPiArCj4gKwlyaW5nID0gaW50ZWxfZW5naW5lX2NyZWF0 ZV9yaW5nKGVuZ2luZSwgdGltZWxpbmUsIGN0eC0+cmluZ19zaXplKTsKPiArCWk5MTVfdGltZWxp bmVfcHV0KHRpbWVsaW5lKTsKPiAgIAlpZiAoSVNfRVJSKHJpbmcpKSB7Cj4gICAJCXJldCA9IFBU Ul9FUlIocmluZyk7Cj4gICAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCBiNzNlNzAwYzMwNDguLjhmMTkzNDlhNjA1 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtNjk3 LDE3ICs2OTcsMTcgQEAgc3RhdGljIHZvaWQgY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICAg CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUt PnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50 aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAkvKiBNYXJrIGFsbCBzdWJtaXR0ZWQgcmVx dWVzdHMgYXMgc2tpcHBlZC4gKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVu Z2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKSB7Cj4gICAJCUdFTV9C VUdfT04oIXJlcXVlc3QtPmdsb2JhbF9zZXFubyk7Cj4gICAJCWlmICghaTkxNV9yZXF1ZXN0X2Nv bXBsZXRlZChyZXF1ZXN0KSkKPiAgIAkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJlcXVlc3QtPmZl bmNlLCAtRUlPKTsKPiAgIAl9Cj4gICAJLyogUmVtYWluaW5nIF91bnJlYWR5XyByZXF1ZXN0cyB3 aWxsIGJlIG5vcCdlZCB3aGVuIHN1Ym1pdHRlZCAqLwo+ICAgCj4gLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIH0KPiAgIAo+ICAg c3RhdGljIHZvaWQgaTl4eF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1 ZXN0KQo+IEBAIC0xMTE4LDcgKzExMTgsNyBAQCBpbnRlbF9yaW5nX2NyZWF0ZV92bWEoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgc2l6ZSkKPiAgIAo+ICAgc3RydWN0IGlu dGVsX3JpbmcgKgo+ICAgaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKPiAtCQkJIHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUs Cj4gKwkJCSBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsCj4gICAJCQkgaW50IHNpemUp Cj4gICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Cj4gQEAgLTExMjYsNyArMTEyNiw3 IEBAIGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gICAKPiAgIAlHRU1fQlVHX09OKCFpc19wb3dlcl9vZl8yKHNpemUpKTsKPiAgIAlHRU1f QlVHX09OKFJJTkdfQ1RMX1NJWkUoc2l6ZSkgJiB+UklOR19OUl9QQUdFUyk7Cj4gLQlHRU1fQlVH X09OKCZ0aW1lbGluZS0+ZW5naW5lW2VuZ2luZS0+aWRdID09IGVuZ2luZS0+dGltZWxpbmUpOwo+ ICsJR0VNX0JVR19PTih0aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gICAJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAg CXJpbmcgPSBremFsbG9jKHNpemVvZigqcmluZyksIEdGUF9LRVJORUwpOwo+IEBAIC0xMTM0LDcg KzExMzQsNyBAQCBpbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgIAo+ICAgCUlOSVRf TElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+IC0JcmluZy0+dGltZWxpbmUgPSAmdGlt ZWxpbmUtPmVuZ2luZVtlbmdpbmUtPmlkXTsKPiArCXJpbmctPnRpbWVsaW5lID0gaTkxNV90aW1l bGluZV9nZXQodGltZWxpbmUpOwo+ICAgCj4gICAJcmluZy0+c2l6ZSA9IHNpemU7Cj4gICAJLyog V29ya2Fyb3VuZCBhbiBlcnJhdHVtIG9uIHRoZSBpODMwIHdoaWNoIGNhdXNlcyBhIGhhbmcgaWYK PiBAQCAtMTE2NSw2ICsxMTY1LDcgQEAgaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nKQo+ICAgCWk5MTVfdm1hX2Nsb3NlKHJpbmctPnZtYSk7Cj4gICAJX19pOTE1X2dlbV9v YmplY3RfcmVsZWFzZV91bmxlc3NfYWN0aXZlKG9iaik7Cj4gICAKPiArCWk5MTVfdGltZWxpbmVf cHV0KHJpbmctPnRpbWVsaW5lKTsKPiAgIAlrZnJlZShyaW5nKTsKPiAgIH0KPiAgIAo+IEBAIC0x MzIzLDYgKzEzMjQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2NvbnRleHRfdW5waW4oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgc3RhdGljIGludCBpbnRlbF9pbml0X3Jp bmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1 Y3QgaW50ZWxfcmluZyAqcmluZzsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsK PiAgIAlpbnQgZXJyOwo+ICAgCj4gICAJaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihlbmdpbmUp Owo+IEBAIC0xMzMxLDkgKzEzMzMsMTQgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVm ZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAoZXJyKQo+ICAgCQln b3RvIGVycjsKPiAgIAo+IC0JcmluZyA9IGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhlbmdpbmUs Cj4gLQkJCQkJJmVuZ2luZS0+aTkxNS0+Z3QubGVnYWN5X3RpbWVsaW5lLAo+IC0JCQkJCTMyICog UEFHRV9TSVpFKTsKPiArCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoZW5naW5lLT5p OTE1LCBlbmdpbmUtPm5hbWUpOwo+ICsJaWYgKElTX0VSUih0aW1lbGluZSkpIHsKPiArCQllcnIg PSBQVFJfRVJSKHRpbWVsaW5lKTsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwlyaW5nID0g aW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwgdGltZWxpbmUsIDMyICogUEFHRV9TSVpF KTsKPiArCWk5MTVfdGltZWxpbmVfcHV0KHRpbWVsaW5lKTsKPiAgIAlpZiAoSVNfRVJSKHJpbmcp KSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocmluZyk7Cj4gICAJCWdvdG8gZXJyOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCBkYTUzYWEyOTczYTcuLjAxMDc1 MGU4ZWU0NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBA QCAtNiwxMiArNiwxMiBAQAo+ICAgI2luY2x1ZGUgPGxpbnV4L3NlcWxvY2suaD4KPiAgIAo+ICAg I2luY2x1ZGUgImk5MTVfZ2VtX2JhdGNoX3Bvb2wuaCIKPiAtI2luY2x1ZGUgImk5MTVfZ2VtX3Rp bWVsaW5lLmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X3JlZy5oIgo+ICAgI2luY2x1ZGUgImk5 MTVfcG11LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAjaW5jbHVkZSAiaTkx NV9zZWxmdGVzdC5oIgo+ICsjaW5jbHVkZSAiaTkxNV90aW1lbGluZS5oIgo+ICAgI2luY2x1ZGUg ImludGVsX2dwdV9jb21tYW5kcy5oIgo+ICAgCj4gICBzdHJ1Y3QgZHJtX3ByaW50ZXI7Cj4gQEAg LTEyOSw3ICsxMjksNyBAQCBzdHJ1Y3QgaW50ZWxfcmluZyB7Cj4gICAJc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gICAJdm9pZCAqdmFkZHI7Cj4gICAKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGltZWxpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gICAJc3RydWN0 IGxpc3RfaGVhZCByZXF1ZXN0X2xpc3Q7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlu azsKPiAgIAo+IEBAIC0zMzgsNyArMzM4LDggQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4g ICAJdTMyIG1taW9fYmFzZTsKPiAgIAo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpidWZmZXI7Cj4g LQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICsKPiArCXN0cnVjdCBpOTE1X3Rp bWVsaW5lIHRpbWVsaW5lOwo+ICAgCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRl ZmF1bHRfc3RhdGU7Cj4gICAKPiBAQCAtNzcwLDcgKzc3MSw3IEBAIGludGVsX3dyaXRlX3N0YXR1 c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHJlZywgdTMyIHZhbHVl KQo+ICAgCj4gICBzdHJ1Y3QgaW50ZWxfcmluZyAqCj4gICBpbnRlbF9lbmdpbmVfY3JlYXRlX3Jp bmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IC0JCQkgc3RydWN0IGk5MTVfZ2Vt X3RpbWVsaW5lICp0aW1lbGluZSwKPiArCQkJIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGlu ZSwKPiAgIAkJCSBpbnQgc2l6ZSk7Cj4gICBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVs X3JpbmcgKnJpbmcsCj4gICAJCSAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IEBA IC04ODksNyArODkwLDcgQEAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxfZW5naW5lX2xhc3Rfc3Vi bWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkgKiB3dGloIHNlcmlhbGlz aW5nIHRoaXMgaGludCB3aXRoIGFueXRoaW5nLCBzbyBkb2N1bWVudCBpdCBhcwo+ICAgCSAqIGEg aGludCBhbmQgbm90aGluZyBtb3JlLgo+ICAgCSAqLwo+IC0JcmV0dXJuIFJFQURfT05DRShlbmdp bmUtPnRpbWVsaW5lLT5zZXFubyk7Cj4gKwlyZXR1cm4gUkVBRF9PTkNFKGVuZ2luZS0+dGltZWxp bmUuc2Vxbm8pOwo+ICAgfQo+ICAgCj4gICB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKPiBzaW1pbGFyaXR5IGluZGV4IDcwJQo+ IHJlbmFtZSBmcm9tIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV90aW1l bGluZS5jCj4gcmVuYW1lIHRvIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Rp bWVsaW5lLmMKPiBpbmRleCAzMDAwZTZhN2Q4MmQuLjE5ZjFjNmE1YzhmYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fdGltZWxpbmUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKPiBAQCAt MSwyNSArMSw3IEBACj4gICAvKgo+IC0gKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3Jh dGlvbgo+IC0gKgo+IC0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiAtICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAtICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+IC0g KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gLSAqIFNvZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gLSAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiAtICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogTUlUCj4gICAgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBv cmF0aW9uCj4gICAgKi8KPiAgIAo+ICAgI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKPiBA QCAtMzUsMjEgKzE3LDIxIEBAIHN0cnVjdCBfX2lndF9zeW5jIHsKPiAgIAlib29sIHNldDsKPiAg IH07Cj4gICAKPiAtc3RhdGljIGludCBfX2lndF9zeW5jKHN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGwsCj4gK3N0YXRpYyBpbnQgX19pZ3Rfc3luYyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCj4g ICAJCSAgICAgIHU2NCBjdHgsCj4gICAJCSAgICAgIGNvbnN0IHN0cnVjdCBfX2lndF9zeW5jICpw LAo+ICAgCQkgICAgICBjb25zdCBjaGFyICpuYW1lKQo+ICAgewo+ICAgCWludCByZXQ7Cj4gICAK PiAtCWlmIChfX2ludGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIodGwsIGN0eCwgcC0+c2Vxbm8p ICE9IHAtPmV4cGVjdGVkKSB7Cj4gKwlpZiAoX19pOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIo dGwsIGN0eCwgcC0+c2Vxbm8pICE9IHAtPmV4cGVjdGVkKSB7Cj4gICAJCXByX2VycigiJXM6ICVz KGN0eD0lbGx1LCBzZXFubz0ldSkgZXhwZWN0ZWQgcGFzc2VkICVzIGJ1dCBmYWlsZWRcbiIsCj4g ICAJCSAgICAgICBuYW1lLCBwLT5uYW1lLCBjdHgsIHAtPnNlcW5vLCB5ZXNubyhwLT5leHBlY3Rl ZCkpOwo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAl9Cj4gICAKPiAgIAlpZiAocC0+c2V0KSB7 Cj4gLQkJcmV0ID0gX19pbnRlbF90aW1lbGluZV9zeW5jX3NldCh0bCwgY3R4LCBwLT5zZXFubyk7 Cj4gKwkJcmV0ID0gX19pOTE1X3RpbWVsaW5lX3N5bmNfc2V0KHRsLCBjdHgsIHAtPnNlcW5vKTsK PiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiByZXQ7Cj4gICAJfQo+IEBAIC03NywzNyArNTks MzEgQEAgc3RhdGljIGludCBpZ3Rfc3luYyh2b2lkICphcmcpCj4gICAJCXsgInVud3JhcCIsIFVJ TlRfTUFYLCB0cnVlLCBmYWxzZSB9LAo+ICAgCQl7fSwKPiAgIAl9LCAqcDsKPiAtCXN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGw7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSB0bDsKPiAgIAlpbnQg b3JkZXIsIG9mZnNldDsKPiAgIAlpbnQgcmV0ID0gLUVOT0RFVjsKPiAgIAo+IC0JdGwgPSBtb2Nr X3RpbWVsaW5lKDApOwo+IC0JaWYgKCF0bCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCj4gKwlt b2NrX3RpbWVsaW5lX2luaXQoJnRsLCAwKTsKPiAgIAlmb3IgKHAgPSBwYXNzOyBwLT5uYW1lOyBw KyspIHsKPiAgIAkJZm9yIChvcmRlciA9IDE7IG9yZGVyIDwgNjQ7IG9yZGVyKyspIHsKPiAgIAkJ CWZvciAob2Zmc2V0ID0gLTE7IG9mZnNldCA8PSAob3JkZXIgPiAxKTsgb2Zmc2V0KyspIHsKPiAg IAkJCQl1NjQgY3R4ID0gQklUX1VMTChvcmRlcikgKyBvZmZzZXQ7Cj4gICAKPiAtCQkJCXJldCA9 IF9faWd0X3N5bmModGwsIGN0eCwgcCwgIjEiKTsKPiArCQkJCXJldCA9IF9faWd0X3N5bmMoJnRs LCBjdHgsIHAsICIxIik7Cj4gICAJCQkJaWYgKHJldCkKPiAgIAkJCQkJZ290byBvdXQ7Cj4gICAJ CQl9Cj4gICAJCX0KPiAgIAl9Cj4gLQltb2NrX3RpbWVsaW5lX2Rlc3Ryb3kodGwpOwo+IC0KPiAt CXRsID0gbW9ja190aW1lbGluZSgwKTsKPiAtCWlmICghdGwpCj4gLQkJcmV0dXJuIC1FTk9NRU07 Cj4gKwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAgIAo+ICsJbW9ja190aW1lbGluZV9pbml0 KCZ0bCwgMCk7Cj4gICAJZm9yIChvcmRlciA9IDE7IG9yZGVyIDwgNjQ7IG9yZGVyKyspIHsKPiAg IAkJZm9yIChvZmZzZXQgPSAtMTsgb2Zmc2V0IDw9IChvcmRlciA+IDEpOyBvZmZzZXQrKykgewo+ ICAgCQkJdTY0IGN0eCA9IEJJVF9VTEwob3JkZXIpICsgb2Zmc2V0Owo+ICAgCj4gICAJCQlmb3Ig KHAgPSBwYXNzOyBwLT5uYW1lOyBwKyspIHsKPiAtCQkJCXJldCA9IF9faWd0X3N5bmModGwsIGN0 eCwgcCwgIjIiKTsKPiArCQkJCXJldCA9IF9faWd0X3N5bmMoJnRsLCBjdHgsIHAsICIyIik7Cj4g ICAJCQkJaWYgKHJldCkKPiAgIAkJCQkJZ290byBvdXQ7Cj4gICAJCQl9Cj4gQEAgLTExNSw3ICs5 MSw3IEBAIHN0YXRpYyBpbnQgaWd0X3N5bmModm9pZCAqYXJnKQo+ICAgCX0KPiAgIAo+ICAgb3V0 Ogo+IC0JbW9ja190aW1lbGluZV9kZXN0cm95KHRsKTsKPiArCW1vY2tfdGltZWxpbmVfZmluaSgm dGwpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBAQCAtMTI3LDE1ICsxMDMsMTMgQEAg c3RhdGljIHVuc2lnbmVkIGludCByYW5kb21fZW5naW5lKHN0cnVjdCBybmRfc3RhdGUgKnJuZCkK PiAgIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0IHJu ZF9zdGF0ZSBwcm5nOwo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bDsKPiArCXN0cnVjdCBp OTE1X3RpbWVsaW5lIHRsOwo+ICAgCXVuc2lnbmVkIGxvbmcgZW5kX3RpbWUsIGNvdW50Owo+ICAg CXU2NCBwcm5nMzJfMU07Cj4gICAJa3RpbWVfdCBrdDsKPiAgIAlpbnQgb3JkZXIsIGxhc3Rfb3Jk ZXI7Cj4gICAKPiAtCXRsID0gbW9ja190aW1lbGluZSgwKTsKPiAtCWlmICghdGwpCj4gLQkJcmV0 dXJuIC1FTk9NRU07Cj4gKwltb2NrX3RpbWVsaW5lX2luaXQoJnRsLCAwKTsKPiAgIAo+ICAgCS8q IExvb2t1cHMgZnJvbSBjYWNoZSBhcmUgdmVyeSBmYXN0IGFuZCBzbyB0aGUgcmFuZG9tIG51bWJl ciBnZW5lcmF0aW9uCj4gICAJICogYW5kIHRoZSBsb29wIGl0c2VsZiBiZWNvbWVzIGEgc2lnbmlm aWNhbnQgZmFjdG9yIGluIHRoZSBwZXItaXRlcmF0aW9uCj4gQEAgLTE2Nyw3ICsxNDEsNyBAQCBz dGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQo+ICAgCWRvIHsKPiAgIAkJdTY0IGlkID0g aTkxNV9wcmFuZG9tX3U2NF9zdGF0ZSgmcHJuZyk7Cj4gICAKPiAtCQlfX2ludGVsX3RpbWVsaW5l X3N5bmNfc2V0KHRsLCBpZCwgMCk7Cj4gKwkJX19pOTE1X3RpbWVsaW5lX3N5bmNfc2V0KCZ0bCwg aWQsIDApOwo+ICAgCQljb3VudCsrOwo+ICAgCX0gd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMs IGVuZF90aW1lKSk7Cj4gICAJa3QgPSBrdGltZV9zdWIoa3RpbWVfZ2V0KCksIGt0KTsKPiBAQCAt MTgyLDggKzE1Niw4IEBAIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4gICAJd2hp bGUgKGVuZF90aW1lLS0pIHsKPiAgIAkJdTY0IGlkID0gaTkxNV9wcmFuZG9tX3U2NF9zdGF0ZSgm cHJuZyk7Cj4gICAKPiAtCQlpZiAoIV9faW50ZWxfdGltZWxpbmVfc3luY19pc19sYXRlcih0bCwg aWQsIDApKSB7Cj4gLQkJCW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7Cj4gKwkJaWYgKCFfX2k5 MTVfdGltZWxpbmVfc3luY19pc19sYXRlcigmdGwsIGlkLCAwKSkgewo+ICsJCQltb2NrX3RpbWVs aW5lX2ZpbmkoJnRsKTsKPiAgIAkJCXByX2VycigiTG9va3VwIG9mICVsbHUgZmFpbGVkXG4iLCBp ZCk7Cj4gICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAkJfQo+IEBAIC0xOTMsMTkgKzE2NywxNyBA QCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQo+ICAgCXByX2luZm8oIiVzOiAlbHUg cmFuZG9tIGxvb2t1cHMsICVsbHVucy9sb29rdXBcbiIsCj4gICAJCV9fZnVuY19fLCBjb3VudCwg KGxvbmcgbG9uZylkaXY2NF91bChrdGltZV90b19ucyhrdCksIGNvdW50KSk7Cj4gICAKPiAtCW1v Y2tfdGltZWxpbmVfZGVzdHJveSh0bCk7Cj4gKwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAg IAljb25kX3Jlc2NoZWQoKTsKPiAgIAo+IC0JdGwgPSBtb2NrX3RpbWVsaW5lKDApOwo+IC0JaWYg KCF0bCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCW1vY2tfdGltZWxpbmVfaW5pdCgmdGwsIDAp Owo+ICAgCj4gICAJLyogQmVuY2htYXJrIHNldHRpbmcgdGhlIGZpcnN0IE4gKGluIG9yZGVyKSBj b250ZXh0cyAqLwo+ICAgCWNvdW50ID0gMDsKPiAgIAlrdCA9IGt0aW1lX2dldCgpOwo+ICAgCWVu ZF90aW1lID0gamlmZmllcyArIEhaLzEwOwo+ICAgCWRvIHsKPiAtCQlfX2ludGVsX3RpbWVsaW5l X3N5bmNfc2V0KHRsLCBjb3VudCsrLCAwKTsKPiArCQlfX2k5MTVfdGltZWxpbmVfc3luY19zZXQo JnRsLCBjb3VudCsrLCAwKTsKPiAgIAl9IHdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRf dGltZSkpOwo+ICAgCWt0ID0ga3RpbWVfc3ViKGt0aW1lX2dldCgpLCBrdCk7Cj4gICAJcHJfaW5m bygiJXM6ICVsdSBpbi1vcmRlciBpbnNlcnRpb25zLCAlbGx1bnMvaW5zZXJ0XG4iLAo+IEBAIC0y MTUsOSArMTg3LDkgQEAgc3RhdGljIGludCBiZW5jaF9zeW5jKHZvaWQgKmFyZykKPiAgIAllbmRf dGltZSA9IGNvdW50Owo+ICAgCWt0ID0ga3RpbWVfZ2V0KCk7Cj4gICAJd2hpbGUgKGVuZF90aW1l LS0pIHsKPiAtCQlpZiAoIV9faW50ZWxfdGltZWxpbmVfc3luY19pc19sYXRlcih0bCwgZW5kX3Rp bWUsIDApKSB7Cj4gKwkJaWYgKCFfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcigmdGwsIGVu ZF90aW1lLCAwKSkgewo+ICAgCQkJcHJfZXJyKCJMb29rdXAgb2YgJWx1IGZhaWxlZFxuIiwgZW5k X3RpbWUpOwo+IC0JCQltb2NrX3RpbWVsaW5lX2Rlc3Ryb3kodGwpOwo+ICsJCQltb2NrX3RpbWVs aW5lX2ZpbmkoJnRsKTsKPiAgIAkJCXJldHVybiAtRUlOVkFMOwo+ICAgCQl9Cj4gICAJfQo+IEBA IC0yMjUsMTIgKzE5NywxMCBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQo+ICAg CXByX2luZm8oIiVzOiAlbHUgaW4tb3JkZXIgbG9va3VwcywgJWxsdW5zL2xvb2t1cFxuIiwKPiAg IAkJX19mdW5jX18sIGNvdW50LCAobG9uZyBsb25nKWRpdjY0X3VsKGt0aW1lX3RvX25zKGt0KSwg Y291bnQpKTsKPiAgIAo+IC0JbW9ja190aW1lbGluZV9kZXN0cm95KHRsKTsKPiArCW1vY2tfdGlt ZWxpbmVfZmluaSgmdGwpOwo+ICAgCWNvbmRfcmVzY2hlZCgpOwo+ICAgCj4gLQl0bCA9IG1vY2tf dGltZWxpbmUoMCk7Cj4gLQlpZiAoIXRsKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJbW9ja190 aW1lbGluZV9pbml0KCZ0bCwgMCk7Cj4gICAKPiAgIAkvKiBCZW5jaG1hcmsgc2VhcmNoaW5nIGZv ciBhIHJhbmRvbSBjb250ZXh0IGlkIGFuZCBtYXliZSBjaGFuZ2luZyBpdCAqLwo+ICAgCXByYW5k b21fc2VlZF9zdGF0ZSgmcHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7Cj4gQEAgLTI0 MSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQo+ICAgCQl1MzIg aWQgPSByYW5kb21fZW5naW5lKCZwcm5nKTsKPiAgIAkJdTMyIHNlcW5vID0gcHJhbmRvbV91MzJf c3RhdGUoJnBybmcpOwo+ICAgCj4gLQkJaWYgKCFfX2ludGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0 ZXIodGwsIGlkLCBzZXFubykpCj4gLQkJCV9faW50ZWxfdGltZWxpbmVfc3luY19zZXQodGwsIGlk LCBzZXFubyk7Cj4gKwkJaWYgKCFfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcigmdGwsIGlk LCBzZXFubykpCj4gKwkJCV9faTkxNV90aW1lbGluZV9zeW5jX3NldCgmdGwsIGlkLCBzZXFubyk7 Cj4gICAKPiAgIAkJY291bnQrKzsKPiAgIAl9IHdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBl bmRfdGltZSkpOwo+IEBAIC0yNTAsNyArMjIwLDcgQEAgc3RhdGljIGludCBiZW5jaF9zeW5jKHZv aWQgKmFyZykKPiAgIAlrdCA9IGt0aW1lX3N1Yl9ucyhrdCwgKGNvdW50ICogcHJuZzMyXzFNICog MikgPj4gMjApOwo+ICAgCXByX2luZm8oIiVzOiAlbHUgcmVwZWF0ZWQgaW5zZXJ0L2xvb2t1cHMs ICVsbHVucy9vcFxuIiwKPiAgIAkJX19mdW5jX18sIGNvdW50LCAobG9uZyBsb25nKWRpdjY0X3Vs KGt0aW1lX3RvX25zKGt0KSwgY291bnQpKTsKPiAtCW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7 Cj4gKwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAgIAljb25kX3Jlc2NoZWQoKTsKPiAgIAo+ ICAgCS8qIEJlbmNobWFyayBzZWFyY2hpbmcgZm9yIGEga25vd24gY29udGV4dCBpZCBhbmQgY2hh bmdpbmcgdGhlIHNlcW5vICovCj4gQEAgLTI1OCw5ICsyMjgsNyBAQCBzdGF0aWMgaW50IGJlbmNo X3N5bmModm9pZCAqYXJnKQo+ICAgCSAgICAgKHsgaW50IHRtcCA9IGxhc3Rfb3JkZXI7IGxhc3Rf b3JkZXIgPSBvcmRlcjsgb3JkZXIgKz0gdG1wOyB9KSkgewo+ICAgCQl1bnNpZ25lZCBpbnQgbWFz ayA9IEJJVChvcmRlcikgLSAxOwo+ICAgCj4gLQkJdGwgPSBtb2NrX3RpbWVsaW5lKDApOwo+IC0J CWlmICghdGwpCj4gLQkJCXJldHVybiAtRU5PTUVNOwo+ICsJCW1vY2tfdGltZWxpbmVfaW5pdCgm dGwsIDApOwo+ICAgCj4gICAJCWNvdW50ID0gMDsKPiAgIAkJa3QgPSBrdGltZV9nZXQoKTsKPiBA QCAtMjcyLDggKzI0MCw4IEBAIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4gICAJ CQkgKi8KPiAgIAkJCXU2NCBpZCA9ICh1NjQpKGNvdW50ICYgbWFzaykgPDwgb3JkZXI7Cj4gICAK PiAtCQkJX19pbnRlbF90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHRsLCBpZCwgMCk7Cj4gLQkJCV9f aW50ZWxfdGltZWxpbmVfc3luY19zZXQodGwsIGlkLCAwKTsKPiArCQkJX19pOTE1X3RpbWVsaW5l X3N5bmNfaXNfbGF0ZXIoJnRsLCBpZCwgMCk7Cj4gKwkJCV9faTkxNV90aW1lbGluZV9zeW5jX3Nl dCgmdGwsIGlkLCAwKTsKPiAgIAo+ICAgCQkJY291bnQrKzsKPiAgIAkJfSB3aGlsZSAoIXRpbWVf YWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKTsKPiBAQCAtMjgxLDcgKzI0OSw3IEBAIHN0YXRpYyBp bnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4gICAJCXByX2luZm8oIiVzOiAlbHUgY3ljbGljLyVk IGluc2VydC9sb29rdXBzLCAlbGx1bnMvb3BcbiIsCj4gICAJCQlfX2Z1bmNfXywgY291bnQsIG9y ZGVyLAo+ICAgCQkJKGxvbmcgbG9uZylkaXY2NF91bChrdGltZV90b19ucyhrdCksIGNvdW50KSk7 Cj4gLQkJbW9ja190aW1lbGluZV9kZXN0cm95KHRsKTsKPiArCQltb2NrX3RpbWVsaW5lX2Zpbmko JnRsKTsKPiAgIAkJY29uZF9yZXNjaGVkKCk7Cj4gICAJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiBpbmRleCA2ODM1ZWRmMjc4ZmUuLmNm YTkyZDVkNWJmMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2VuZ2luZS5jCj4gQEAgLTI1LDYgKzI1LDExIEBACj4gICAjaW5jbHVkZSAibW9ja19lbmdpbmUu aCIKPiAgICNpbmNsdWRlICJtb2NrX3JlcXVlc3QuaCIKPiAgIAo+ICtzdHJ1Y3QgbW9ja19yaW5n IHsKPiArCXN0cnVjdCBpbnRlbF9yaW5nIGJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSB0 aW1lbGluZTsKPiArfTsKPiArCj4gICBzdGF0aWMgc3RydWN0IG1vY2tfcmVxdWVzdCAqZmlyc3Rf cmVxdWVzdChzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSkKPiAgIHsKPiAgIAlyZXR1cm4gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKCZlbmdpbmUtPmh3X3F1ZXVlLAo+IEBAIC0xMjUsNyArMTMw LDcgQEAgc3RhdGljIHZvaWQgbW9ja19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0KQo+ICAgc3RhdGljIHN0cnVjdCBpbnRlbF9yaW5nICptb2NrX3Jpbmcoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCWNvbnN0IHVuc2lnbmVkIGxvbmcg c3ogPSBQQUdFX1NJWkUgLyAyOwo+IC0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Cj4gKwlzdHJ1 Y3QgbW9ja19yaW5nICpyaW5nOwo+ICAgCj4gICAJQlVJTERfQlVHX09OKE1JTl9TUEFDRV9GT1Jf QUREX1JFUVVFU1QgPiBzeik7Cj4gICAKPiBAQCAtMTMzLDE4ICsxMzgsMjQgQEAgc3RhdGljIHN0 cnVjdCBpbnRlbF9yaW5nICptb2NrX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgCWlmICghcmluZykKPiAgIAkJcmV0dXJuIE5VTEw7Cj4gICAKPiAtCXJpbmctPnNpemUg PSBzejsKPiAtCXJpbmctPmVmZmVjdGl2ZV9zaXplID0gc3o7Cj4gLQlyaW5nLT52YWRkciA9ICh2 b2lkICopKHJpbmcgKyAxKTsKPiArCWk5MTVfdGltZWxpbmVfaW5pdChlbmdpbmUtPmk5MTUsICZy aW5nLT50aW1lbGluZSwgZW5naW5lLT5uYW1lKTsKPiArCj4gKwlyaW5nLT5iYXNlLnNpemUgPSBz ejsKPiArCXJpbmctPmJhc2UuZWZmZWN0aXZlX3NpemUgPSBzejsKPiArCXJpbmctPmJhc2UudmFk ZHIgPSAodm9pZCAqKShyaW5nICsgMSk7Cj4gKwlyaW5nLT5iYXNlLnRpbWVsaW5lID0gJnJpbmct PnRpbWVsaW5lOwo+ICAgCj4gLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsK PiAtCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnJp bmctPmJhc2UucmVxdWVzdF9saXN0KTsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKCZyaW5n LT5iYXNlKTsKPiAgIAo+IC0JcmV0dXJuIHJpbmc7Cj4gKwlyZXR1cm4gJnJpbmctPmJhc2U7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgbW9ja19yaW5nX2ZyZWUoc3RydWN0IGludGVsX3Jpbmcg KnJpbmcpCj4gK3N0YXRpYyB2b2lkIG1vY2tfcmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5nICpi YXNlKQo+ICAgewo+ICsJc3RydWN0IG1vY2tfcmluZyAqcmluZyA9IGNvbnRhaW5lcl9vZihiYXNl LCB0eXBlb2YoKnJpbmcpLCBiYXNlKTsKPiArCj4gKwlpOTE1X3RpbWVsaW5lX2ZpbmkoJnJpbmct PnRpbWVsaW5lKTsKPiAgIAlrZnJlZShyaW5nKTsKPiAgIH0KPiAgIAo+IEBAIC0xNzMsOCArMTg0 LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gICAJZW5naW5lLT5iYXNlLmVtaXRfYnJlYWRjcnVtYiA9IG1vY2tf ZW1pdF9icmVhZGNydW1iOwo+ICAgCWVuZ2luZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IG1vY2tf c3VibWl0X3JlcXVlc3Q7Cj4gICAKPiAtCWludGVsX2VuZ2luZV9pbml0X3RpbWVsaW5lKCZlbmdp bmUtPmJhc2UpOwo+IC0KPiArCWk5MTVfdGltZWxpbmVfaW5pdChpOTE1LCAmZW5naW5lLT5iYXNl LnRpbWVsaW5lLCBlbmdpbmUtPmJhc2UubmFtZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRfYnJl YWRjcnVtYnMoJmVuZ2luZS0+YmFzZSk7Cj4gICAJZW5naW5lLT5iYXNlLmJyZWFkY3J1bWJzLm1v Y2sgPSB0cnVlOyAvKiBwcmV2ZW50IHRvdWNoaW5nIEhXIGZvciBpcnFzICovCj4gICAKPiBAQCAt MTkxLDYgKzIwMSw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5naW5lKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICBlcnJfYnJlYWRjcnVtYnM6Cj4gICAJ aW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoJmVuZ2luZS0+YmFzZSk7Cj4gKwlpOTE1X3Rp bWVsaW5lX2ZpbmkoJmVuZ2luZS0+YmFzZS50aW1lbGluZSk7Cj4gICAJa2ZyZWUoZW5naW5lKTsK PiAgIAlyZXR1cm4gTlVMTDsKPiAgIH0KPiBAQCAtMjI5LDYgKzI0MCw3IEBAIHZvaWQgbW9ja19l bmdpbmVfZnJlZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJbW9ja19yaW5n X2ZyZWUoZW5naW5lLT5idWZmZXIpOwo+ICAgCj4gICAJaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRj cnVtYnMoZW5naW5lKTsKPiArCWk5MTVfdGltZWxpbmVfZmluaSgmZW5naW5lLT50aW1lbGluZSk7 Cj4gICAKPiAgIAlrZnJlZShlbmdpbmUpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCBmMTFjODNlOGZmMzIuLmE2 NjJjMDQ1MGU3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19nZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19nZW1fZGV2aWNlLmMKPiBAQCAtNzMsMTAgKzczLDggQEAgc3RhdGljIHZvaWQgbW9ja19k ZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCj4gICAJbXV0ZXhfbG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJbW9ja19maW5pX2dndHQoaTkxNSk7Cj4g LQlpOTE1X2dlbV90aW1lbGluZV9maW5pKCZpOTE1LT5ndC5sZWdhY3lfdGltZWxpbmUpOwo+IC0J aTkxNV9nZW1fdGltZWxpbmVfZmluaSgmaTkxNS0+Z3QuZXhlY3V0aW9uX3RpbWVsaW5lKTsKPiAt CVdBUk5fT04oIWxpc3RfZW1wdHkoJmk5MTUtPmd0LnRpbWVsaW5lcykpOwo+ICAgCW11dGV4X3Vu bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlXQVJOX09OKCFsaXN0X2VtcHR5KCZp OTE1LT5ndC50aW1lbGluZXMpKTsKPiAgIAo+ICAgCWRlc3Ryb3lfd29ya3F1ZXVlKGk5MTUtPndx KTsKPiAgIAo+IEBAIC0yMzAsMTIgKzIyOCw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpt b2NrX2dlbV9kZXZpY2Uodm9pZCkKPiAgIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Z3QuYWN0aXZl X3JpbmdzKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IC0JZXJyID0gaTkxNV9nZW1fdGltZWxpbmVfaW5pdF9fZ2xvYmFsKGk5MTUpOwo+IC0JaWYgKGVy cikgewo+IC0JCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQkJZ290 byBlcnJfcHJpb3JpdGllczsKPiAtCX0KPiAtCj4gICAJbW9ja19pbml0X2dndHQoaTkxNSk7Cj4g ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja190aW1lbGluZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYwo+IGluZGV4IDQ3YjFm NDdjNTgxMi4uZGNmM2IxNmY1YTA3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja190aW1lbGluZS5jCj4gQEAgLTEsNDUgKzEsMjggQEAKPiAgIC8qCj4gLSAq IENvcHlyaWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiAt ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+IC0gKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ IC0gKgo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAtICog U29mdHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAo+IC0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiAtICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAtICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKPiAtICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+IC0gKiBJTiBUSEUgU09G VFdBUkUuCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiAgICAqCj4gKyAqIENv cHlyaWdodCDCqSAyMDE3LTIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiAgICAqLwo+ICAgCj4gKyNp bmNsdWRlICIuLi9pOTE1X3RpbWVsaW5lLmgiCj4gKwo+ICAgI2luY2x1ZGUgIm1vY2tfdGltZWxp bmUuaCIKPiAgIAo+IC1zdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKm1vY2tfdGltZWxpbmUodTY0IGNv bnRleHQpCj4gK3ZvaWQgbW9ja190aW1lbGluZV9pbml0KHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZSwgdTY0IGNvbnRleHQpCj4gICB7Cj4gLQlzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nf a2V5IGNsYXNzOwo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bDsKPiArCXRpbWVsaW5lLT5m ZW5jZV9jb250ZXh0ID0gY29udGV4dDsKPiArCj4gKwlzcGluX2xvY2tfaW5pdCgmdGltZWxpbmUt PmxvY2spOwo+ICAgCj4gLQl0bCA9IGt6YWxsb2Moc2l6ZW9mKCp0bCksIEdGUF9LRVJORUwpOwo+ IC0JaWYgKCF0bCkKPiAtCQlyZXR1cm4gTlVMTDsKPiArCWluaXRfcmVxdWVzdF9hY3RpdmUoJnRp bWVsaW5lLT5sYXN0X3JlcXVlc3QsIE5VTEwpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5l LT5yZXF1ZXN0cyk7Cj4gICAKPiAtCV9faW50ZWxfdGltZWxpbmVfaW5pdCh0bCwgTlVMTCwgY29u dGV4dCwgJmNsYXNzLCAibW9jayIpOwo+ICsJaTkxNV9zeW5jbWFwX2luaXQoJnRpbWVsaW5lLT5z eW5jKTsKPiAgIAo+IC0JcmV0dXJuIHRsOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5s aW5rKTsKPiAgIH0KPiAgIAo+IC12b2lkIG1vY2tfdGltZWxpbmVfZGVzdHJveShzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsKQo+ICt2b2lkIG1vY2tfdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqdGltZWxpbmUpCj4gICB7Cj4gLQlfX2ludGVsX3RpbWVsaW5lX2ZpbmkodGwpOwo+ IC0Ja2ZyZWUodGwpOwo+ICsJaTkxNV90aW1lbGluZV9maW5pKHRpbWVsaW5lKTsKPiAgIH0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmgKPiBpbmRl eCBjMjdmZjQ2MzliOGIuLmI2ZGVhYTYxMTEwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja190aW1lbGluZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuaAo+IEBAIC0xLDMzICsxLDE1IEBACj4gICAv Kgo+IC0gKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+IC0gKgo+IC0gKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+IC0gKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCj4gLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiAtICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKPiAtICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+IC0gKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl Cj4gLSAqIFNvZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+IC0gKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS Cj4gLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiAtICogSU4g VEhFIFNPRlRXQVJFLgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gICAgKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBvcmF0aW9uCj4gICAgKi8KPiAg IAo+ICAgI2lmbmRlZiBfX01PQ0tfVElNRUxJTkVfXwo+ICAgI2RlZmluZSBfX01PQ0tfVElNRUxJ TkVfXwo+ICAgCj4gLSNpbmNsdWRlICIuLi9pOTE1X2dlbV90aW1lbGluZS5oIgo+ICtzdHJ1Y3Qg aTkxNV90aW1lbGluZTsKPiAgIAo+IC1zdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKm1vY2tfdGltZWxp bmUodTY0IGNvbnRleHQpOwo+IC12b2lkIG1vY2tfdGltZWxpbmVfZGVzdHJveShzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsKTsKPiArdm9pZCBtb2NrX3RpbWVsaW5lX2luaXQoc3RydWN0IGk5MTVf dGltZWxpbmUgKnRpbWVsaW5lLCB1NjQgY29udGV4dCk7Cj4gK3ZvaWQgbW9ja190aW1lbGluZV9m aW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSk7Cj4gICAKPiAgICNlbmRpZiAvKiAh X19NT0NLX1RJTUVMSU5FX18gKi8KPiAKCkEgbmljZSAodG8gcmV2aWV3KSBtaXggb2YgcmVuYW1l cywgdHJhbnNmb3JtYXRpb25zIGFuZCBhY3R1YWwgcmVkZXNpZ24uIAo6KSBJIGRpZCBub3Qgc3Bv dCBhbnkgbWlzdGFrZXMuCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGludGVsLmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK