From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 5/6] drm/i915: Split i915_gem_timeline into individual timelines Date: Mon, 23 Apr 2018 13:33:04 +0100 Message-ID: References: <20180423101400.27418-1-chris@chris-wilson.co.uk> <20180423101400.27418-5-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 mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDD2D6E1A8 for ; Mon, 23 Apr 2018 12:33:08 +0000 (UTC) In-Reply-To: <20180423101400.27418-5-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 Ck9uIDIzLzA0LzIwMTggMTE6MTMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXZSBuZWVkIHRvIG1v dmUgdG8gYSBtb3JlIGZsZXhpYmxlIHRpbWVsaW5lIHRoYXQgZG9lc24ndCBhc3N1bWUgb25lCj4g ZmVuY2UgY29udGV4dCBwZXIgZW5naW5lLCBhbmQgc28gYWxsb3cgZm9yIGEgc2luZ2xlIHRpbWVs aW5lIHRvIGJlIHVzZWQKPiBhY3Jvc3MgYSBjb21iaW5hdGlvbiBvZiBlbmdpbmVzLiBUaGlzIG1l YW5zIHRoYXQgcHJlYWxsb2NhdGluZyBhIGZlbmNlCj4gY29udGV4dCBwZXIgZW5naW5lIGlzIG5v dyBhIGhpbmRyYW5jZSwgYW5kIHNvIHdlIHdhbnQgdG8gaW50cm9kdWNlIHRoZQo+IHNpbmd1bGFy IHRpbWVsaW5lLiBGcm9tIHRoZSBjb2RlIHBlcnNwZWN0aXZlLCB0aGlzIGhhcyB0aGUgbm90YWJs ZQo+IGFkdmFudGFnZSBvZiBjbGVhcmluZyB1cCBhIGxvdCBvZiBtaXJreSBzZW1hbnRpY3MgYW5k IHNvbWUgY2x1bXN5Cj4gcG9pbnRlciBjaGFzaW5nLgo+IAo+IEJ5IHNwbGl0dGluZyB0aGUgdGlt ZWxpbmUgdXAgaW50byBhIHNpbmdsZSBlbnRpdHkgcmF0aGVyIHRoYW4gYW4gYXJyYXkKPiBvZiBw ZXItZW5naW5lIHRpbWVsaW5lcywgd2UgY2FuIHJlYWxpc2UgdGhlIGdvYWwgb2YgdGhlIHByZXZp b3VzIHBhdGNoCj4gb2YgdHJhY2tpbmcgdGhlIHRpbWVsaW5lIGFsb25nc2lkZSB0aGUgcmluZy4K Cklzbid0IHNpbmdsZSBmZW5jZSBjb250ZXh0IGFuZCBhIHNpbmdsZSBzZXFubyBzcGFjZSBicmVh a2luZyB0aGUgQUJJPyAKU3VibWlzc2lvbnMgZnJvbSBhIGNvbnRleHQgYXJlIG5vdyBzZXJpYWxp emVkIGFjcm9zcyBhbGwgZW5naW5lcy4gSSBhbSAKdGhpbmtpbmcgYWJvdXQgYXdhaXQgYW5kIGRl cGVuZGVuY3kgY3JlYXRlZCBpbiBfX2k5MTVfYWRkX3JlcXVlc3QgdG8gCnRpbWVsaW5lLT5sYXN0 X3JlcXVlc3QuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAg ICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg ICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAg ICAgICAgICB8IDExNyArKysrKy0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jICAgICAgIHwgIDQ5ICsrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmggICAgICAgfCAgIDIgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggICAgICAgICAgIHwgICAzICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aW1lbGluZS5jICAgICAgfCAxOTggLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgfCAgIDQgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8ICAxMCArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDY1ICsr Ky0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwg ICAzICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMgICAgICAgICAg fCAxMDUgKysrKysrKysrKwo+ICAgLi4uL3tpOTE1X2dlbV90aW1lbGluZS5oID0+IGk5MTVfdGlt ZWxpbmUuaH0gIHwgIDY3ICsrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMgICAgICAgIHwgIDI3ICsrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYyAgIHwgICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyAgICAgICAgICAgICAgfCAgNDggKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYyAgICAgICB8ICAyMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgICAgIHwgIDExICstCj4gICAuLi4ve2k5MTVfZ2VtX3Rp bWVsaW5lLmMgPT4gaTkxNV90aW1lbGluZS5jfSAgfCAgOTQgKysrLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYyAgfCAgMzIgKystCj4gICAuLi4v Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyAgfCAgMTEgKy0KPiAgIC4u Li9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYyAgICB8ICA0NSArKy0tCj4g ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmggICAgfCAgMjggKy0t Cj4gICAyMyBmaWxlcyBjaGFuZ2VkLCAzODkgaW5zZXJ0aW9ucygrKSwgNTYzIGRlbGV0aW9ucygt KQo+ICAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Rp bWVsaW5lLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RpbWVsaW5lLmMKPiAgIHJlbmFtZSBkcml2ZXJzL2dwdS9kcm0vaTkxNS97aTkxNV9nZW1fdGlt ZWxpbmUuaCA9PiBpOTE1X3RpbWVsaW5lLmh9ICg2OCUpCj4gICByZW5hbWUgZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL3tpOTE1X2dlbV90aW1lbGluZS5jID0+IGk5MTVfdGltZWxpbmUu Y30gKDcwJSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDliZWU1MmE5NDlhOS4uMTIw ZGIyMWZjZDUwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNjcsMTEgKzY3LDExIEBA IGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCj4gICAJICBpOTE1X2dlbV9zaHJpbmtlci5v IFwKPiAgIAkgIGk5MTVfZ2VtX3N0b2xlbi5vIFwKPiAgIAkgIGk5MTVfZ2VtX3RpbGluZy5vIFwK PiAtCSAgaTkxNV9nZW1fdGltZWxpbmUubyBcCj4gICAJICBpOTE1X2dlbV91c2VycHRyLm8gXAo+ ICAgCSAgaTkxNV9nZW1mcy5vIFwKPiAgIAkgIGk5MTVfcXVlcnkubyBcCj4gICAJICBpOTE1X3Jl cXVlc3QubyBcCj4gKwkgIGk5MTVfdGltZWxpbmUubyBcCj4gICAJICBpOTE1X3RyYWNlX3BvaW50 cy5vIFwKPiAgIAkgIGk5MTVfdm1hLm8gXAo+ICAgCSAgaW50ZWxfYnJlYWRjcnVtYnMubyBcCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNjYxMjNjZjBlZGEzLi44OWNiNzRjMzBhMDAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNzIsMTAgKzcyLDEwIEBACj4gICAj aW5jbHVkZSAiaTkxNV9nZW1fZmVuY2VfcmVnLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nZW1fb2Jq ZWN0LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nZW1fZ3R0LmgiCj4gLSNpbmNsdWRlICJpOTE1X2dl bV90aW1lbGluZS5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ3B1X2Vycm9yLmgiCj4gICAjaW5jbHVk ZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9zY2hlZHVsZXIuaCIKPiArI2lu Y2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKPiAgICNpbmNsdWRlICJpOTE1X3ZtYS5oIgo+ICAgCj4g ICAjaW5jbHVkZSAiaW50ZWxfZ3Z0LmgiCj4gQEAgLTIwNTgsOCArMjA1OCw2IEBAIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlIHsKPiAgIAkJdm9pZCAoKnJlc3VtZSkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKik7Cj4gICAJCXZvaWQgKCpjbGVhbnVwX2VuZ2luZSkoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKTsKPiAgIAo+IC0JCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSBleGVjdXRp b25fdGltZWxpbmU7Cj4gLQkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lIGxlZ2FjeV90aW1lbGlu ZTsKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCB0aW1lbGluZXM7Cj4gICAJCXN0cnVjdCBsaXN0X2hl YWQgbGl2ZV9yaW5nczsKPiAgIAkJdTMyIGFjdGl2ZV9yZXF1ZXN0czsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBpbmRleCAxNjM1OTc1ZGJjMTYuLmYwNzU1NjY5M2NmZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHUzMiBfX2k5MTVf Z2VtX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJc3luY2hyb25pemVf aXJxKGk5MTUtPmRybS5pcnEpOwo+ICAgCj4gICAJaW50ZWxfZW5naW5lc19wYXJrKGk5MTUpOwo+ IC0JaTkxNV9nZW1fdGltZWxpbmVzX3BhcmsoaTkxNSk7Cj4gKwlpOTE1X3RpbWVsaW5lc19wYXJr KGk5MTUpOwo+ICAgCj4gICAJaTkxNV9wbXVfZ3RfcGFya2VkKGk5MTUpOwo+ICAgCj4gQEAgLTI5 NzcsOCArMjk3Nyw4IEBAIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCSAqIGV4dHJhIGRlbGF5IGZvciBhIHJlY2VudCBpbnRl cnJ1cHQgaXMgcG9pbnRsZXNzLiBIZW5jZSwgd2UgZG8KPiAgIAkgKiBub3QgbmVlZCBhbiBlbmdp bmUtPmlycV9zZXFub19iYXJyaWVyKCkgYmVmb3JlIHRoZSBzZXFubyByZWFkcy4KPiAgIAkgKi8K PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4g LQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0 cywgbGluaykgewo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywg ZmxhZ3MpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGlu ZS5yZXF1ZXN0cywgbGluaykgewo+ICAgCQlpZiAoX19pOTE1X3JlcXVlc3RfY29tcGxldGVkKHJl cXVlc3QsIHJlcXVlc3QtPmdsb2JhbF9zZXFubykpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IEBA IC0yOTg5LDcgKzI5ODksNyBAQCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJYWN0aXZlID0gcmVxdWVzdDsKPiAgIAkJYnJl YWs7Cj4gICAJfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+ bG9jaywgZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGlu ZS5sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAlyZXR1cm4gYWN0aXZlOwo+ICAgfQo+IEBAIC0zMTEw LDE1ICszMTEwLDE1IEBAIHN0YXRpYyB2b2lkIGVuZ2luZV9za2lwX2NvbnRleHQoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmh1 bmdfY3R4ID0gcmVxdWVzdC0+Y3R4Owo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGlu ZSA9IHJlcXVlc3QtPnRpbWVsaW5lOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5l ID0gcmVxdWVzdC0+dGltZWxpbmU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgIAo+IC0J R0VNX0JVR19PTih0aW1lbGluZSA9PSBlbmdpbmUtPnRpbWVsaW5lKTsKPiArCUdFTV9CVUdfT04o dGltZWxpbmUgPT0gJmVuZ2luZS0+dGltZWxpbmUpOwo+ICAgCj4gLQlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUo JmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgCXNwaW5fbG9jaygmdGltZWxpbmUt PmxvY2spOwo+ICAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJlcXVlc3QsICZl bmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlf Y29udGludWUocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsIGxpbmspCj4gICAJ CWlmIChyZXF1ZXN0LT5jdHggPT0gaHVuZ19jdHgpCj4gICAJCQlza2lwX3JlcXVlc3QocmVxdWVz dCk7Cj4gICAKPiBAQCAtMzEyNiw3ICszMTI2LDcgQEAgc3RhdGljIHZvaWQgZW5naW5lX3NraXBf Y29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCQlza2lwX3JlcXVlc3Qo cmVxdWVzdCk7Cj4gICAKPiAgIAlzcGluX3VubG9jaygmdGltZWxpbmUtPmxvY2spOwo+IC0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICsJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4g ICB9Cj4gICAKPiAgIC8qIFJldHVybnMgdGhlIHJlcXVlc3QgaWYgaXQgd2FzIGd1aWx0eSBvZiB0 aGUgaGFuZyAqLwo+IEBAIC0zMTgzLDExICszMTgzLDExIEBAIGk5MTVfZ2VtX3Jlc2V0X3JlcXVl c3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkJZG1hX2ZlbmNlX3NldF9l cnJvcigmcmVxdWVzdC0+ZmVuY2UsIC1FQUdBSU4pOwo+ICAgCj4gICAJCQkvKiBSZXdpbmQgdGhl IGVuZ2luZSB0byByZXBsYXkgdGhlIGluY29tcGxldGUgcnEgKi8KPiAtCQkJc3Bpbl9sb2NrX2ly cSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwkJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+ dGltZWxpbmUubG9jayk7Cj4gICAJCQlyZXF1ZXN0ID0gbGlzdF9wcmV2X2VudHJ5KHJlcXVlc3Qs IGxpbmspOwo+IC0JCQlpZiAoJnJlcXVlc3QtPmxpbmsgPT0gJmVuZ2luZS0+dGltZWxpbmUtPnJl cXVlc3RzKQo+ICsJCQlpZiAoJnJlcXVlc3QtPmxpbmsgPT0gJmVuZ2luZS0+dGltZWxpbmUucmVx dWVzdHMpCj4gICAJCQkJcmVxdWVzdCA9IE5VTEw7Cj4gLQkJCXNwaW5fdW5sb2NrX2lycSgmZW5n aW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwkJCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1l bGluZS5sb2NrKTsKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IEBAIC0zMzAwLDEwICszMzAwLDEwIEBA IHN0YXRpYyB2b2lkIG5vcF9jb21wbGV0ZV9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpyZXF1ZXN0KQo+ICAgCQkgIHJlcXVlc3QtPmZlbmNlLmNvbnRleHQsIHJlcXVlc3QtPmZl bmNlLnNlcW5vKTsKPiAgIAlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZyZXF1ZXN0LT5mZW5jZSwgLUVJ Tyk7Cj4gICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZyZXF1ZXN0LT5lbmdpbmUtPnRpbWVsaW5l LT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmcmVxdWVzdC0+ZW5naW5lLT50 aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICAJX19pOTE1X3JlcXVlc3Rfc3VibWl0KHJlcXVlc3Qp Owo+ICAgCWludGVsX2VuZ2luZV9pbml0X2dsb2JhbF9zZXFubyhyZXF1ZXN0LT5lbmdpbmUsIHJl cXVlc3QtPmdsb2JhbF9zZXFubyk7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyZXF1ZXN0 LT5lbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZyZXF1ZXN0LT5lbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIH0KPiAgIAo+ ICAgdm9pZCBpOTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+IEBAIC0zMzcyLDEwICszMzcyLDEwIEBAIHZvaWQgaTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkJICogKGxvY2tsZXNzKSBsb29rdXAgZG9l c24ndCB0cnkgYW5kIHdhaXQgdXBvbiB0aGUgcmVxdWVzdCBhcyB3ZQo+ICAgCQkgKiByZXNldCBp dC4KPiAgIAkJICovCj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxv Y2ssIGZsYWdzKTsKPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2Nr LCBmbGFncyk7Cj4gICAJCWludGVsX2VuZ2luZV9pbml0X2dsb2JhbF9zZXFubyhlbmdpbmUsCj4g ICAJCQkJCSAgICAgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSk7Cj4gLQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICsJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ ICAgCj4gICAJCWk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaF9lbmdpbmUoZW5naW5lKTsKPiAgIAl9Cj4g QEAgLTMzODcsOCArMzM4Nyw3IEBAIHZvaWQgaTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAo+ICAgYm9vbCBpOTE1X2dlbV91bnNldF93ZWRnZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1f dGltZWxpbmUgKnRsOwo+IC0JaW50IGk7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGw7Cj4g ICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAg IAlpZiAoIXRlc3RfYml0KEk5MTVfV0VER0VELCAmaTkxNS0+Z3B1X2Vycm9yLmZsYWdzKSkKPiBA QCAtMzQwNywyOSArMzQwNiwyNyBAQCBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKiBObyBtb3JlIGNhbiBiZSBzdWJtaXR0ZWQg dW50aWwgd2UgcmVzZXQgdGhlIHdlZGdlZCBiaXQuCj4gICAJICovCj4gICAJbGlzdF9mb3JfZWFj aF9lbnRyeSh0bCwgJmk5MTUtPmd0LnRpbWVsaW5lcywgbGluaykgewo+IC0JCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHRsLT5lbmdpbmUpOyBpKyspIHsKPiAtCQkJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7Cj4gKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAKPiAtCQkJcnEgPSBp OTE1X2dlbV9hY3RpdmVfcGVlaygmdGwtPmVuZ2luZVtpXS5sYXN0X3JlcXVlc3QsCj4gLQkJCQkJ CSAgJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCQlpZiAoIXJxKQo+IC0JCQkJY29udGlu dWU7Cj4gKwkJcnEgPSBpOTE1X2dlbV9hY3RpdmVfcGVlaygmdGwtPmxhc3RfcmVxdWVzdCwKPiAr CQkJCQkgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCQlpZiAoIXJxKQo+ICsJCQljb250 aW51ZTsKPiAgIAo+IC0JCQkvKgo+IC0JCQkgKiBXZSBjYW4ndCB1c2Ugb3VyIG5vcm1hbCB3YWl0 ZXIgYXMgd2Ugd2FudCB0bwo+IC0JCQkgKiBhdm9pZCByZWN1cnNpdmVseSB0cnlpbmcgdG8gaGFu ZGxlIHRoZSBjdXJyZW50Cj4gLQkJCSAqIHJlc2V0LiBUaGUgYmFzaWMgZG1hX2ZlbmNlX2RlZmF1 bHRfd2FpdCgpIGluc3RhbGxzCj4gLQkJCSAqIGEgY2FsbGJhY2sgZm9yIGRtYV9mZW5jZV9zaWdu YWwoKSwgd2hpY2ggaXMKPiAtCQkJICogdHJpZ2dlcmVkIGJ5IG91ciBub3AgaGFuZGxlciAoaW5k aXJlY3RseSwgdGhlCj4gLQkJCSAqIGNhbGxiYWNrIGVuYWJsZXMgdGhlIHNpZ25hbGVyIHRocmVh ZCB3aGljaCBpcwo+IC0JCQkgKiB3b2tlbiBieSB0aGUgbm9wX3N1Ym1pdF9yZXF1ZXN0KCkgYWR2 YW5jaW5nIHRoZSBzZXFubwo+IC0JCQkgKiBhbmQgd2hlbiB0aGUgc2Vxbm8gcGFzc2VzIHRoZSBm ZW5jZSwgdGhlIHNpZ25hbGVyCj4gLQkJCSAqIHRoZW4gc2lnbmFscyB0aGUgZmVuY2Ugd2FraW5n IHVzIHVwKS4KPiAtCQkJICovCj4gLQkJCWlmIChkbWFfZmVuY2VfZGVmYXVsdF93YWl0KCZycS0+ ZmVuY2UsIHRydWUsCj4gLQkJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKSA8IDApCj4gLQkJ CQlyZXR1cm4gZmFsc2U7Cj4gLQkJfQo+ICsJCS8qCj4gKwkJICogV2UgY2FuJ3QgdXNlIG91ciBu b3JtYWwgd2FpdGVyIGFzIHdlIHdhbnQgdG8KPiArCQkgKiBhdm9pZCByZWN1cnNpdmVseSB0cnlp bmcgdG8gaGFuZGxlIHRoZSBjdXJyZW50Cj4gKwkJICogcmVzZXQuIFRoZSBiYXNpYyBkbWFfZmVu Y2VfZGVmYXVsdF93YWl0KCkgaW5zdGFsbHMKPiArCQkgKiBhIGNhbGxiYWNrIGZvciBkbWFfZmVu Y2Vfc2lnbmFsKCksIHdoaWNoIGlzCj4gKwkJICogdHJpZ2dlcmVkIGJ5IG91ciBub3AgaGFuZGxl ciAoaW5kaXJlY3RseSwgdGhlCj4gKwkJICogY2FsbGJhY2sgZW5hYmxlcyB0aGUgc2lnbmFsZXIg dGhyZWFkIHdoaWNoIGlzCj4gKwkJICogd29rZW4gYnkgdGhlIG5vcF9zdWJtaXRfcmVxdWVzdCgp IGFkdmFuY2luZyB0aGUgc2Vxbm8KPiArCQkgKiBhbmQgd2hlbiB0aGUgc2Vxbm8gcGFzc2VzIHRo ZSBmZW5jZSwgdGhlIHNpZ25hbGVyCj4gKwkJICogdGhlbiBzaWduYWxzIHRoZSBmZW5jZSB3YWtp bmcgdXMgdXApLgo+ICsJCSAqLwo+ICsJCWlmIChkbWFfZmVuY2VfZGVmYXVsdF93YWl0KCZycS0+ ZmVuY2UsIHRydWUsCj4gKwkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpIDwgMCkKPiArCQkJ cmV0dXJuIGZhbHNlOwo+ICAgCX0KPiAgIAlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsKPiAg IAlHRU1fQlVHX09OKGk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cyk7Cj4gQEAgLTM3MzQsMTkgKzM3 MzEsNiBAQCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAg Cj4gLXN0YXRpYyBpbnQgd2FpdF9mb3JfdGltZWxpbmUoc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5l ICp0bCwgdW5zaWduZWQgaW50IGZsYWdzKQo+IC17Cj4gLQlpbnQgcmV0LCBpOwo+IC0KPiAtCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRsLT5lbmdpbmUpOyBpKyspIHsKPiAtCQlyZXQgPSBp OTE1X2dlbV9hY3RpdmVfd2FpdCgmdGwtPmVuZ2luZVtpXS5sYXN0X3JlcXVlc3QsIGZsYWdzKTsK PiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+ IC19Cj4gLQo+ICAgc3RhdGljIGludCB3YWl0X2Zvcl9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAgewo+ICAgCWlmICh3YWl0X2ZvcihpbnRlbF9lbmdpbmVzX2FyZV9p ZGxlKGk5MTUpLCBJOTE1X0lETEVfRU5HSU5FU19USU1FT1VUKSkgewo+IEBAIC0zNzY5LDEyICsz NzUzLDEyIEBAIGludCBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJ aWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkgewo+IC0JCXN0cnVjdCBpOTE1X2dlbV90aW1l bGluZSAqdGw7Cj4gKwkJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsOwo+ICAgCj4gICAJCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJCWxpc3Rf Zm9yX2VhY2hfZW50cnkodGwsICZpOTE1LT5ndC50aW1lbGluZXMsIGxpbmspIHsKPiAtCQkJcmV0 ID0gd2FpdF9mb3JfdGltZWxpbmUodGwsIGZsYWdzKTsKPiArCQkJcmV0ID0gaTkxNV9nZW1fYWN0 aXZlX3dhaXQoJnRsLT5sYXN0X3JlcXVlc3QsIGZsYWdzKTsKPiAgIAkJCWlmIChyZXQpCj4gICAJ CQkJcmV0dXJuIHJldDsKPiAgIAkJfQo+IEBAIC0zNzgyLDcgKzM3NjYsMTYgQEAgaW50IGk5MTVf Z2VtX3dhaXRfZm9yX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVk IGludCBmbGFncykKPiAgIAo+ICAgCQlyZXQgPSB3YWl0X2Zvcl9lbmdpbmVzKGk5MTUpOwo+ICAg CX0gZWxzZSB7Cj4gLQkJcmV0ID0gd2FpdF9mb3JfdGltZWxpbmUoJmk5MTUtPmd0LmV4ZWN1dGlv bl90aW1lbGluZSwgZmxhZ3MpOwo+ICsJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK PiArCQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiArCj4gKwkJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgaTkxNSwgaWQpIHsKPiArCQkJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0gJmVuZ2lu ZS0+dGltZWxpbmU7Cj4gKwo+ICsJCQlyZXQgPSBpOTE1X2dlbV9hY3RpdmVfd2FpdCgmdGwtPmxh c3RfcmVxdWVzdCwgZmxhZ3MpOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJcmV0dXJuIHJldDsKPiAr CQl9Cj4gICAJfQo+ICAgCj4gICAJcmV0dXJuIHJldDsKPiBAQCAtNDk1NCw3ICs0OTQ3LDcgQEAg c3RhdGljIHZvaWQgYXNzZXJ0X2tlcm5lbF9jb250ZXh0X2lzX2N1cnJlbnQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gICAKPiAg IAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+IC0JCUdFTV9CVUdfT04oX19p OTE1X2dlbV9hY3RpdmVfcGVlaygmZW5naW5lLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0KSk7Cj4g KwkJR0VNX0JVR19PTihfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZlbmdpbmUtPnRpbWVsaW5lLmxh c3RfcmVxdWVzdCkpOwo+ICAgCQlHRU1fQlVHX09OKGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRl eHQgIT0ga2VybmVsX2NvbnRleHQpOwo+ICAgCX0KPiAgIH0KPiBAQCAtNTYwMCwxMyArNTU5Myw4 IEBAIGludCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgIAlpZiAoIWRldl9wcml2LT5wcmlvcml0aWVzKQo+ICAgCQlnb3RvIGVycl9kZXBl bmRlbmNpZXM7Cj4gICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LmxpdmVfcmluZ3MpOwo+ICAgCUlO SVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Z3QudGltZWxpbmVzKTsKPiAtCWVyciA9IGk5MTVfZ2Vt X3RpbWVsaW5lX2luaXRfX2dsb2JhbChkZXZfcHJpdik7Cj4gLQltdXRleF91bmxvY2soJmRldl9w cml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBlcnJfcHJpb3Jp dGllczsKPiAgIAo+ICAgCWk5MTVfZ2VtX2luaXRfX21tKGRldl9wcml2KTsKPiAgIAo+IEBAIC01 NjI3LDggKzU2MTUsNiBAQCBpbnQgaTkxNV9nZW1faW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAlyZXR1cm4gMDsKPiAgIAo+IC1lcnJfcHJpb3Jp dGllczoKPiAtCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+cHJpb3JpdGllcyk7Cj4gICBl cnJfZGVwZW5kZW5jaWVzOgo+ICAgCWttZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+ZGVwZW5k ZW5jaWVzKTsKPiAgIGVycl9yZXF1ZXN0czoKPiBAQCAtNTY0OSwxMiArNTYzNSw3IEBAIHZvaWQg aTkxNV9nZW1fY2xlYW51cF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gICAJR0VNX0JVR19PTighbGxpc3RfZW1wdHkoJmRldl9wcml2LT5tbS5mcmVlX2xpc3QpKTsK PiAgIAlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZkZXZfcHJpdi0+bW0uZnJlZV9jb3VudCkpOwo+ ICAgCVdBUk5fT04oZGV2X3ByaXYtPm1tLm9iamVjdF9jb3VudCk7Cj4gLQo+IC0JbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaTkxNV9nZW1fdGltZWxpbmVfZmlu aSgmZGV2X3ByaXYtPmd0LmxlZ2FjeV90aW1lbGluZSk7Cj4gLQlpOTE1X2dlbV90aW1lbGluZV9m aW5pKCZkZXZfcHJpdi0+Z3QuZXhlY3V0aW9uX3RpbWVsaW5lKTsKPiAgIAlXQVJOX09OKCFsaXN0 X2VtcHR5KCZkZXZfcHJpdi0+Z3QudGltZWxpbmVzKSk7Cj4gLQltdXRleF91bmxvY2soJmRldl9w cml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICAgCWttZW1fY2FjaGVfZGVzdHJveShkZXZf cHJpdi0+cHJpb3JpdGllcyk7Cj4gICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBl bmRlbmNpZXMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRl eCA1OGIxODVhYmU2NTIuLjAyN2I3ZGRhZTFkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTIyLDcgKzEyMiw2IEBAIHN0YXRpYyB2b2lkIGk5MTVf Z2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJR0VNX0JV R19PTighaTkxNV9nZW1fY29udGV4dF9pc19jbG9zZWQoY3R4KSk7Cj4gICAKPiAtCWk5MTVfZ2Vt X3RpbWVsaW5lX2ZyZWUoY3R4LT50aW1lbGluZSk7Cj4gICAJaTkxNV9wcGd0dF9wdXQoY3R4LT5w cGd0dCk7Cj4gICAKPiAgIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7 Cj4gQEAgLTM3NywxOCArMzc2LDYgQEAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZh dWx0X2Rlc2NfdGVtcGxhdGUoZGV2X3ByaXYsIHBwZ3R0KTsKPiAgIAl9Cj4gICAKPiAtCWlmIChI QVNfRVhFQ0xJU1RTKGRldl9wcml2KSkgewo+IC0JCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAq dGltZWxpbmU7Cj4gLQo+IC0JCXRpbWVsaW5lID0gaTkxNV9nZW1fdGltZWxpbmVfY3JlYXRlKGRl dl9wcml2LCBjdHgtPm5hbWUpOwo+IC0JCWlmIChJU19FUlIodGltZWxpbmUpKSB7Cj4gLQkJCV9f ZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZV9wcml2KTsKPiAtCQkJcmV0dXJuIEVSUl9DQVNU KHRpbWVsaW5lKTsKPiAtCQl9Cj4gLQo+IC0JCWN0eC0+dGltZWxpbmUgPSB0aW1lbGluZTsKPiAt CX0KPiAtCj4gICAJdHJhY2VfaTkxNV9jb250ZXh0X2NyZWF0ZShjdHgpOwo+ICAgCj4gICAJcmV0 dXJuIGN0eDsKPiBAQCAtNTkwLDIxICs1NzcsMzAgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2Ns b3NlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIAlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5j b250ZXh0X2lkcik7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGJvb2wgZW5naW5lX2hhc19pZGxlX2tl cm5lbF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHN0 cnVjdCBpOTE1X3JlcXVlc3QgKgo+ICtsYXN0X3RpbWVsaW5lX3JlcXVlc3Qoc3RydWN0IGk5MTVf dGltZWxpbmUgKnRpbWVsaW5lLAo+ICsJCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7Cj4gKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1l bGluZSwgJmVuZ2luZS0+aTkxNS0+Z3QudGltZWxpbmVzLCBsaW5rKSB7Cj4gLQkJc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bDsKPiArCWlmICh0aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSkK PiArCQlyZXR1cm4gTlVMTDsKCklzIHRoZXJlIHN0aWxsIHVzZSB0byBrZWVwIGVuZ2luZSB0aW1l bGluZXMgb24gdGhlIGk5MTUtPmd0LnRpbWVsaW5lcyBsaXN0PwoKPiAgIAo+IC0JCWlmICh0aW1l bGluZSA9PSAmZW5naW5lLT5pOTE1LT5ndC5leGVjdXRpb25fdGltZWxpbmUpCj4gLQkJCWNvbnRp bnVlOwo+ICsJcnEgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0 LAo+ICsJCQkJICZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKHJxICYm IHJxLT5lbmdpbmUgPT0gZW5naW5lKQo+ICsJCXJldHVybiBycTsKPiArCj4gKwlyZXR1cm4gTlVM TDsKPiArfQo+ICAgCj4gLQkJdGwgPSAmdGltZWxpbmUtPmVuZ2luZVtlbmdpbmUtPmlkXTsKPiAt CQlpZiAoaTkxNV9nZW1fYWN0aXZlX3BlZWsoJnRsLT5sYXN0X3JlcXVlc3QsCj4gLQkJCQkJICZl bmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpKQo+ICtzdGF0aWMgYm9vbCBlbmdpbmVfaGFz X2lkbGVfa2VybmVsX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7 Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gKwo+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeSh0aW1lbGluZSwgJmVuZ2luZS0+aTkxNS0+Z3QudGltZWxpbmVzLCBsaW5rKQo+ICsJ CWlmIChsYXN0X3RpbWVsaW5lX3JlcXVlc3QodGltZWxpbmUsIGVuZ2luZSkpCj4gICAJCQlyZXR1 cm4gZmFsc2U7Cj4gLQl9Cj4gICAKPiAgIAlyZXR1cm4gaW50ZWxfZW5naW5lX2hhc19rZXJuZWxf Y29udGV4dChlbmdpbmUpOwo+ICAgfQo+IEBAIC02MTIsNyArNjA4LDcgQEAgc3RhdGljIGJvb2wg ZW5naW5lX2hhc19pZGxlX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIGludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiAtCXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7Cj4gKwlz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7Cj4gICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gQEAgLTYzMiwxMSArNjI4LDggQEAgaW50IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJu ZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCS8qIFF1 ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSAqLwo+ICAgCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHRpbWVsaW5lLCAmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcywgbGluaykgewo+ ICAgCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKPiAtCQkJc3RydWN0IGludGVsX3RpbWVs aW5lICp0bDsKPiAgIAo+IC0JCQl0bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2VuZ2luZS0+aWRdOwo+ IC0JCQlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmdGwtPmxhc3RfcmVxdWVzdCwKPiAtCQkJ CQkJICAgJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiArCQkJcHJldiA9IGxhc3RfdGlt ZWxpbmVfcmVxdWVzdCh0aW1lbGluZSwgZW5naW5lKTsKPiAgIAkJCWlmIChwcmV2KQo+ICAgCQkJ CWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKCZycS0+c3VibWl0LAo+ICAgCQkJCQkJ CQkgJnByZXYtPnN1Ym1pdCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5o Cj4gaW5kZXggMTQwZWRjYjQyNGRmLi5iMTJhOGE4YzVhZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTU4LDggKzU4LDYgQEAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgewo+ICAgCS8qKiBmaWxlX3ByaXY6IG93bmluZyBmaWxlIGRlc2NyaXB0b3Ig Ki8KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7Cj4gICAKPiAt CXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmU7Cj4gLQo+ICAgCS8qKgo+ICAgCSAq IEBwcGd0dDogdW5pcXVlIGFkZHJlc3Mgc3BhY2UgKEdUVCkKPiAgIAkgKgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggOTgxMDc5MjVkZTQ4Li4xZGIwZGVkYjQwNTkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC0zOCwxMCArMzgsOSBAQAo+ ICAgI2luY2x1ZGUgPGxpbnV4L21tLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcGFnZXZlYy5oPgo+ ICAgCj4gLSNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgo+IC0KPiAgICNpbmNsdWRlICJp OTE1X3JlcXVlc3QuaCIKPiAgICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gKyNpbmNsdWRl ICJpOTE1X3RpbWVsaW5lLmgiCj4gICAKPiAgICNkZWZpbmUgSTkxNV9HVFRfUEFHRV9TSVpFXzRL IEJJVCgxMikKPiAgICNkZWZpbmUgSTkxNV9HVFRfUEFHRV9TSVpFXzY0SyBCSVQoMTYpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5jCj4gZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMjRmNDA2OGNjMTM3Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5jCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0x LDE5OCArMCwwIEBACj4gLS8qCj4gLSAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0 aW9uCj4gLSAqCj4gLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4g LSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KPiAtICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gLSAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQo+IC0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+IC0gKgo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gLSAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKPiAtICogU29mdHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiAtICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKPiAtICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAtICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUwo+IC0gKiBJTiBUSEUgU09GVFdBUkUuCj4gLSAqCj4gLSAqLwo+IC0KPiAtI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCj4gLSNpbmNsdWRlICJpOTE1X3N5bmNtYXAuaCIKPiAtCj4gLXN0YXRp YyB2b2lkIF9faW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAo+ IC0JCQkJICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnBhcmVudCwKPiAtCQkJCSAgdTY0IGNv bnRleHQsCj4gLQkJCQkgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqbG9ja2NsYXNzLAo+IC0JCQkJ ICBjb25zdCBjaGFyICpsb2NrbmFtZSkKPiAtewo+IC0JdGwtPmZlbmNlX2NvbnRleHQgPSBjb250 ZXh0Owo+IC0JdGwtPmNvbW1vbiA9IHBhcmVudDsKPiAtCXNwaW5fbG9ja19pbml0KCZ0bC0+bG9j ayk7Cj4gLQlsb2NrZGVwX3NldF9jbGFzc19hbmRfbmFtZSgmdGwtPmxvY2ssIGxvY2tjbGFzcywg bG9ja25hbWUpOwo+IC0JaW5pdF9yZXF1ZXN0X2FjdGl2ZSgmdGwtPmxhc3RfcmVxdWVzdCwgTlVM TCk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmdGwtPnJlcXVlc3RzKTsKPiAtCWk5MTVfc3luY21hcF9p bml0KCZ0bC0+c3luYyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIF9faW50ZWxfdGltZWxpbmVf ZmluaShzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQo+IC17Cj4gLQlHRU1fQlVHX09OKCFsaXN0 X2VtcHR5KCZ0bC0+cmVxdWVzdHMpKTsKPiAtCj4gLQlpOTE1X3N5bmNtYXBfZnJlZSgmdGwtPnN5 bmMpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IF9faTkxNV9nZW1fdGltZWxpbmVfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fdGlt ZWxpbmUgKnRpbWVsaW5lLAo+IC0JCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCj4gLQkJCQkgICAg c3RydWN0IGxvY2tfY2xhc3Nfa2V5ICpsb2NrY2xhc3MsCj4gLQkJCQkgICAgY29uc3QgY2hhciAq bG9ja25hbWUpCj4gLXsKPiAtCXVuc2lnbmVkIGludCBpOwo+IC0JdTY0IGZlbmNlczsKPiAtCj4g LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQkv Kgo+IC0JICogSWRlYWxseSB3ZSB3YW50IGEgc2V0IG9mIGVuZ2luZXMgb24gYSBzaW5nbGUgbGVh ZiBhcyB3ZSBleHBlY3QKPiAtCSAqIHRvIG1vc3RseSBiZSB0cmFja2luZyBzeW5jaHJvbmlzYXRp b24gYmV0d2VlbiBlbmdpbmVzLiBJdCBpcyBub3QKPiAtCSAqIGEgaHVnZSBpc3N1ZSBpZiB0aGlz IGlzIG5vdCB0aGUgY2FzZSwgYnV0IHdlIG1heSB3YW50IHRvIG1pdGlnYXRlCj4gLQkgKiBhbnkg cGFnZSBjcm9zc2luZyBwZW5hbHRpZXMgaWYgdGhleSBiZWNvbWUgYW4gaXNzdWUuCj4gLQkgKi8K PiAtCUJVSUxEX0JVR19PTihLU1lOQ01BUCA8IEk5MTVfTlVNX0VOR0lORVMpOwo+IC0KPiAtCXRp bWVsaW5lLT5pOTE1ID0gaTkxNTsKPiAtCXRpbWVsaW5lLT5uYW1lID0ga3N0cmR1cChuYW1lID86 ICJba2VybmVsXSIsIEdGUF9LRVJORUwpOwo+IC0JaWYgKCF0aW1lbGluZS0+bmFtZSkKPiAtCQly ZXR1cm4gLUVOT01FTTsKPiAtCj4gLQlsaXN0X2FkZCgmdGltZWxpbmUtPmxpbmssICZpOTE1LT5n dC50aW1lbGluZXMpOwo+IC0KPiAtCS8qIENhbGxlZCBkdXJpbmcgZWFybHlfaW5pdCBiZWZvcmUg d2Uga25vdyBob3cgbWFueSBlbmdpbmVzIHRoZXJlIGFyZSAqLwo+IC0JZmVuY2VzID0gZG1hX2Zl bmNlX2NvbnRleHRfYWxsb2MoQVJSQVlfU0laRSh0aW1lbGluZS0+ZW5naW5lKSk7Cj4gLQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0aW1lbGluZS0+ZW5naW5lKTsgaSsrKQo+IC0JCV9faW50 ZWxfdGltZWxpbmVfaW5pdCgmdGltZWxpbmUtPmVuZ2luZVtpXSwKPiAtCQkJCSAgICAgIHRpbWVs aW5lLCBmZW5jZXMrKywKPiAtCQkJCSAgICAgIGxvY2tjbGFzcywgbG9ja25hbWUpOwo+IC0KPiAt CXJldHVybiAwOwo+IC19Cj4gLQo+IC1pbnQgaTkxNV9nZW1fdGltZWxpbmVfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJICAgc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5l ICp0aW1lbGluZSwKPiAtCQkJICAgY29uc3QgY2hhciAqbmFtZSkKPiAtewo+IC0Jc3RhdGljIHN0 cnVjdCBsb2NrX2NsYXNzX2tleSBjbGFzczsKPiAtCj4gLQlyZXR1cm4gX19pOTE1X2dlbV90aW1l bGluZV9pbml0KGk5MTUsIHRpbWVsaW5lLCBuYW1lLAo+IC0JCQkJCSZjbGFzcywgIiZ0aW1lbGlu ZS0+bG9jayIpOwo+IC19Cj4gLQo+IC1pbnQgaTkxNV9nZW1fdGltZWxpbmVfaW5pdF9fZ2xvYmFs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17Cj4gLQlzdGF0aWMgc3RydWN0IGxv Y2tfY2xhc3Nfa2V5IGNsYXNzMSwgY2xhc3MyOwo+IC0JaW50IGVycjsKPiAtCj4gLQllcnIgPSBf X2k5MTVfZ2VtX3RpbWVsaW5lX2luaXQoaTkxNSwKPiAtCQkJCSAgICAgICAmaTkxNS0+Z3QuZXhl Y3V0aW9uX3RpbWVsaW5lLAo+IC0JCQkJICAgICAgICJbZXhlY3V0aW9uXSIsICZjbGFzczEsCj4g LQkJCQkgICAgICAgImk5MTVfZXhlY3V0aW9uX3RpbWVsaW5lIik7Cj4gLQlpZiAoZXJyKQo+IC0J CXJldHVybiBlcnI7Cj4gLQo+IC0JZXJyID0gX19pOTE1X2dlbV90aW1lbGluZV9pbml0KGk5MTUs Cj4gLQkJCQkgICAgICAgJmk5MTUtPmd0LmxlZ2FjeV90aW1lbGluZSwKPiAtCQkJCSAgICAgICAi W2dsb2JhbF0iLCAmY2xhc3MyLAo+IC0JCQkJICAgICAgICJpOTE1X2dsb2JhbF90aW1lbGluZSIp Owo+IC0JaWYgKGVycikKPiAtCQlnb3RvIGVycl9leGVjX3RpbWVsaW5lOwo+IC0KPiAtCXJldHVy biAwOwo+IC0KPiAtZXJyX2V4ZWNfdGltZWxpbmU6Cj4gLQlpOTE1X2dlbV90aW1lbGluZV9maW5p KCZpOTE1LT5ndC5leGVjdXRpb25fdGltZWxpbmUpOwo+IC0JcmV0dXJuIGVycjsKPiAtfQo+IC0K PiAtLyoqCj4gLSAqIGk5MTVfZ2VtX3RpbWVsaW5lc19wYXJrIC0gY2FsbGVkIHdoZW4gdGhlIGRy aXZlciBpZGxlcwo+IC0gKiBAaTkxNTogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCj4gLSAq Cj4gLSAqIFdoZW4gdGhlIGRyaXZlciBpcyBjb21wbGV0ZWx5IGlkbGUsIHdlIGtub3cgdGhhdCBh bGwgb2Ygb3VyIHN5bmMgcG9pbnRzCj4gLSAqIGhhdmUgYmVlbiBzaWduYWxlZCBhbmQgb3VyIHRy YWNraW5nIGlzIHRoZW4gZW50aXJlbHkgcmVkdW5kYW50LiBBbnkgcmVxdWVzdAo+IC0gKiB0byB3 YWl0IHVwb24gYW4gb2xkZXIgc3luYyBwb2ludCB3aWxsIGJlIGNvbXBsZXRlZCBpbnN0YW50bHkg YXMgd2Uga25vdwo+IC0gKiB0aGUgZmVuY2UgaXMgc2lnbmFsZWQgYW5kIHRoZXJlZm9yZSB3ZSB3 aWxsIG5vdCBldmVuIGxvb2sgdGhlbSB1cCBpbiB0aGUKPiAtICogc3luYyBwb2ludCBtYXAuCj4g LSAqLwo+IC12b2lkIGk5MTVfZ2VtX3RpbWVsaW5lc19wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lOwo+ IC0JaW50IGk7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gLQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmk5MTUtPmd0LnRp bWVsaW5lcywgbGluaykgewo+IC0JCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRpbWVsaW5l LT5lbmdpbmUpOyBpKyspIHsKPiAtCQkJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9ICZ0aW1l bGluZS0+ZW5naW5lW2ldOwo+IC0KPiAtCQkJLyoKPiAtCQkJICogQWxsIGtub3duIGZlbmNlcyBh cmUgY29tcGxldGVkIHNvIHdlIGNhbiBzY3JhcAo+IC0JCQkgKiB0aGUgY3VycmVudCBzeW5jIHBv aW50IHRyYWNraW5nIGFuZCBzdGFydCBhZnJlc2gsCj4gLQkJCSAqIGFueSBhdHRlbXB0IHRvIHdh aXQgdXBvbiBhIHByZXZpb3VzIHN5bmMgcG9pbnQKPiAtCQkJICogd2lsbCBiZSBza2lwcGVkIGFz IHRoZSBmZW5jZSB3YXMgc2lnbmFsZWQuCj4gLQkJCSAqLwo+IC0JCQlpOTE1X3N5bmNtYXBfZnJl ZSgmdGwtPnN5bmMpOwo+IC0JCX0KPiAtCX0KPiAtfQo+IC0KPiAtdm9pZCBpOTE1X2dlbV90aW1l bGluZV9maW5pKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUpCj4gLXsKPiAtCWlu dCBpOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnRpbWVsaW5lLT5pOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0aW1lbGluZS0+ ZW5naW5lKTsgaSsrKQo+IC0JCV9faW50ZWxfdGltZWxpbmVfZmluaSgmdGltZWxpbmUtPmVuZ2lu ZVtpXSk7Cj4gLQo+IC0JbGlzdF9kZWwoJnRpbWVsaW5lLT5saW5rKTsKPiAtCWtmcmVlKHRpbWVs aW5lLT5uYW1lKTsKPiAtfQo+IC0KPiAtc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICoKPiAtaTkx NV9nZW1fdGltZWxpbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBjb25z dCBjaGFyICpuYW1lKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5l Owo+IC0JaW50IGVycjsKPiAtCj4gLQl0aW1lbGluZSA9IGt6YWxsb2Moc2l6ZW9mKCp0aW1lbGlu ZSksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCF0aW1lbGluZSkKPiAtCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKPiAtCj4gLQllcnIgPSBpOTE1X2dlbV90aW1lbGluZV9pbml0KGk5MTUsIHRpbWVs aW5lLCBuYW1lKTsKPiAtCWlmIChlcnIpIHsKPiAtCQlrZnJlZSh0aW1lbGluZSk7Cj4gLQkJcmV0 dXJuIEVSUl9QVFIoZXJyKTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gdGltZWxpbmU7Cj4gLX0KPiAt Cj4gLXZvaWQgaTkxNV9nZW1fdGltZWxpbmVfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUg KnRpbWVsaW5lKQo+IC17Cj4gLQlpZiAoIXRpbWVsaW5lKQo+IC0JCXJldHVybjsKPiAtCj4gLQlp OTE1X2dlbV90aW1lbGluZV9maW5pKHRpbWVsaW5lKTsKPiAtCWtmcmVlKHRpbWVsaW5lKTsKPiAt fQo+IC0KPiAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQo+IC0jaW5j bHVkZSAic2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYyIKPiAtI2luY2x1ZGUgInNlbGZ0ZXN0cy9p OTE1X2dlbV90aW1lbGluZS5jIgo+IC0jZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMKPiBpbmRleCA2NzFmZmEzNzYxNGUuLjcxYmI4MjMwY2I5NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0xMjk5LDcgKzEyOTksNyBAQCBzdGF0 aWMgdm9pZCBlbmdpbmVfcmVjb3JkX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAgIAo+ICAgCWNvdW50ID0gMDsKPiAgIAlyZXF1ZXN0ID0gZmlyc3Q7Cj4gLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X2Zyb20ocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3Rz LCBsaW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnRp bWVsaW5lLnJlcXVlc3RzLCBsaW5rKQo+ICAgCQljb3VudCsrOwo+ICAgCWlmICghY291bnQpCj4g ICAJCXJldHVybjsKPiBAQCAtMTMxMiw3ICsxMzEyLDcgQEAgc3RhdGljIHZvaWQgZW5naW5lX3Jl Y29yZF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAKPiAgIAlj b3VudCA9IDA7Cj4gICAJcmVxdWVzdCA9IGZpcnN0Owo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9m cm9tKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykgewo+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeV9mcm9tKHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3Rz LCBsaW5rKSB7Cj4gICAJCWlmIChjb3VudCA+PSBlZS0+bnVtX3JlcXVlc3RzKSB7Cj4gICAJCQkv Kgo+ICAgCQkJICogSWYgdGhlIHJpbmcgcmVxdWVzdCBsaXN0IHdhcyBjaGFuZ2VkIGluCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBpbmRleCBiZmM5MDZjZDRlNWUuLjVkY2Q3NmUyN2M2OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gQEAgLTE2OTUsNyArMTY5NSw3IEBAIHN0 YXRpYyBpbnQgZ2VuOF9zd2l0Y2hfdG9fdXBkYXRlZF9rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByCj4gICAJCQkJCQkgY29uc3Qgc3RydWN0IGk5MTVfb2FfY29u ZmlnICpvYV9jb25maWcpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+IC0Jc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0 aW1lbGluZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiAgIAlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gQEAgLTE3MTYsMTUgKzE3MTYs MTEgQEAgc3RhdGljIGludCBnZW44X3N3aXRjaF90b191cGRhdGVkX2tlcm5lbF9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHIKPiAgIAkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBh ZnRlciBhbGwgb3RoZXIgYWN0aXZpdHkgKi8KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRpbWVs aW5lLCAmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcywgbGluaykgewo+ICAgCQlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpwcmV2Owo+IC0JCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7Cj4gICAKPiAtCQl0 bCA9ICZ0aW1lbGluZS0+ZW5naW5lW2VuZ2luZS0+aWRdOwo+IC0JCXByZXYgPSBpOTE1X2dlbV9h Y3RpdmVfcmF3KCZ0bC0+bGFzdF9yZXF1ZXN0LAo+ICsJCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVf cmF3KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+ICAgCQkJCQkgICAmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCQlpZiAocHJldikKPiAtCQkJaTkxNV9zd19mZW5jZV9hd2FpdF9z d19mZW5jZV9nZnAoJnJxLT5zdWJtaXQsCj4gLQkJCQkJCQkgJnByZXYtPnN1Ym1pdCwKPiAtCQkJ CQkJCSBHRlBfS0VSTkVMKTsKPiArCQkJaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZShycSwg JnByZXYtPmZlbmNlKTsKPiAgIAl9Cj4gICAKPiAgIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDM1ODY5YWZkYjE5OS4uNGU2YzEw MjI1MTljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtNDksNyAr NDksNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9mZW5jZV9nZXRfdGltZWxpbmVfbmFtZShz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiAgIAlpZiAodGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdf U0lHTkFMRURfQklULCAmZmVuY2UtPmZsYWdzKSkKPiAgIAkJcmV0dXJuICJzaWduYWxlZCI7Cj4g ICAKPiAtCXJldHVybiB0b19yZXF1ZXN0KGZlbmNlKS0+dGltZWxpbmUtPmNvbW1vbi0+bmFtZTsK PiArCXJldHVybiB0b19yZXF1ZXN0KGZlbmNlKS0+dGltZWxpbmUtPm5hbWU7Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyBib29sIGk5MTVfZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2UpCj4gQEAgLTE5OSw2ICsxOTksNyBAQCBpOTE1X3NjaGVkX25vZGVfaW5pdChzdHJ1Y3QgaTkx NV9zY2hlZF9ub2RlICpub2RlKQo+ICAgc3RhdGljIGludCByZXNldF9hbGxfZ2xvYmFsX3NlcW5v KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgc2Vxbm8pCj4gICB7Cj4gICAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRp bWVsaW5lOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCWludCByZXQ7Cj4gICAK PiBAQCAtMjEzLDE2ICsyMTQsMTMgQEAgc3RhdGljIGludCByZXNldF9hbGxfZ2xvYmFsX3NlcW5v KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgc2Vxbm8pCj4gICAKPiAgIAkvKiBJ ZiB0aGUgc2Vxbm8gd3JhcHMgYXJvdW5kLCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBicmVhZGNydW1i IHJidHJlZSAqLwo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gLQkJ c3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZTsKPiAtCQlzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmUgKnRsID0gZW5naW5lLT50aW1lbGluZTsKPiAtCj4gICAJCUdFTV9UUkFDRSgiJXMgc2Vx bm8gJWQgKGN1cnJlbnQgJWQpIC0+ICVkXG4iLAo+ICAgCQkJICBlbmdpbmUtPm5hbWUsCj4gLQkJ CSAgdGwtPnNlcW5vLAo+ICsJCQkgIGVuZ2luZS0+dGltZWxpbmUuc2Vxbm8sCj4gICAJCQkgIGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKPiAgIAkJCSAgc2Vxbm8pOwo+ICAgCj4gLQkJ aWYgKCFpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgdGwtPnNlcW5vKSkgewo+ICsJCWlmICghaTkx NV9zZXFub19wYXNzZWQoc2Vxbm8sIGVuZ2luZS0+dGltZWxpbmUuc2Vxbm8pKSB7Cj4gICAJCQkv KiBGbHVzaCBhbnkgd2FpdGVycyBiZWZvcmUgd2UgcmV1c2UgdGhlIHNlcW5vICovCj4gICAJCQlp bnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gICAJCQlHRU1fQlVHX09O KCFsaXN0X2VtcHR5KCZlbmdpbmUtPmJyZWFkY3J1bWJzLnNpZ25hbHMpKTsKPiBAQCAtMjMwLDE3 ICsyMjgsMTYgQEAgc3RhdGljIGludCByZXNldF9hbGxfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LCB1MzIgc2Vxbm8pCj4gICAKPiAgIAkJLyogQ2hlY2sgd2UgYXJl IGlkbGUgYmVmb3JlIHdlIGZpZGRsZSB3aXRoIGh3IHN0YXRlISAqLwo+ICAgCQlHRU1fQlVHX09O KCFpbnRlbF9lbmdpbmVfaXNfaWRsZShlbmdpbmUpKTsKPiAtCQlHRU1fQlVHX09OKGk5MTVfZ2Vt X2FjdGl2ZV9pc3NldCgmZW5naW5lLT50aW1lbGluZS0+bGFzdF9yZXF1ZXN0KSk7Cj4gKwkJR0VN X0JVR19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmVuZ2luZS0+dGltZWxpbmUubGFzdF9yZXF1 ZXN0KSk7Cj4gICAKPiAgIAkJLyogRmluYWxseSByZXNldCBodyBzdGF0ZSAqLwo+ICAgCQlpbnRl bF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oZW5naW5lLCBzZXFubyk7Cj4gLQkJdGwtPnNlcW5v ID0gc2Vxbm87Cj4gLQo+IC0JCWxpc3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUsICZpOTE1LT5n dC50aW1lbGluZXMsIGxpbmspCj4gLQkJCW1lbXNldCh0aW1lbGluZS0+ZW5naW5lW2lkXS5nbG9i YWxfc3luYywgMCwKPiAtCQkJICAgICAgIHNpemVvZih0aW1lbGluZS0+ZW5naW5lW2lkXS5nbG9i YWxfc3luYykpOwo+ICsJCWVuZ2luZS0+dGltZWxpbmUuc2Vxbm8gPSBzZXFubzsKPiAgIAl9Cj4g ICAKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodGltZWxpbmUsICZpOTE1LT5ndC50aW1lbGluZXMs IGxpbmspCj4gKwkJbWVtc2V0KHRpbWVsaW5lLT5nbG9iYWxfc3luYywgMCwgc2l6ZW9mKHRpbWVs aW5lLT5nbG9iYWxfc3luYykpOwo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IEBAIC0y NjMsNyArMjYwLDcgQEAgc3RhdGljIGludCByZXNlcnZlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICAJaW50IHJldDsKPiAgIAo+ICAgCS8qIFJlc2VydmF0aW9uIGlz IGZpbmUgdW50aWwgd2UgbmVlZCB0byB3cmFwIGFyb3VuZCAqLwo+IC0JaWYgKHVubGlrZWx5KGFk ZF9vdmVyZmxvd3MoZW5naW5lLT50aW1lbGluZS0+c2Vxbm8sCj4gKwlpZiAodW5saWtlbHkoYWRk X292ZXJmbG93cyhlbmdpbmUtPnRpbWVsaW5lLnNlcW5vLAo+ICAgCQkJCSAgIGk5MTUtPmd0LmFj dGl2ZV9yZXF1ZXN0cyArIDEpKSkgewo+ICAgCQlyZXQgPSByZXNldF9hbGxfZ2xvYmFsX3NlcW5v KGk5MTUsIDApOwo+ICAgCQlpZiAocmV0KQo+IEBAIC0zNTYsOSArMzUzLDkgQEAgc3RhdGljIHZv aWQgaTkxNV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAg Cj4gICAJdHJhY2VfaTkxNV9yZXF1ZXN0X3JldGlyZShyZXF1ZXN0KTsKPiAgIAo+IC0Jc3Bpbl9s b2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZlbmdp bmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCWxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpbmspOwo+ IC0Jc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiArCXNwaW5fdW5s b2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCXVucmVzZXJ2ZV9lbmdp bmUocmVxdWVzdC0+ZW5naW5lKTsKPiAgIAlhZHZhbmNlX3JpbmcocmVxdWVzdCk7Cj4gQEAgLTQ0 NSwxNiArNDQyLDE2IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQo+ICAgCX0gd2hpbGUgKHRtcCAhPSBycSk7Cj4gICB9Cj4gICAKPiAtc3Rh dGljIHUzMiB0aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKPiAr c3RhdGljIHUzMiB0aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQo+ ICAgewo+ICAgCXJldHVybiArK3RsLT5zZXFubzsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQg bW92ZV90b190aW1lbGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LAo+IC0JCQkgICAg IHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUpCj4gKwkJCSAgICAgc3RydWN0IGk5MTVf dGltZWxpbmUgKnRpbWVsaW5lKQo+ICAgewo+IC0JR0VNX0JVR19PTihyZXF1ZXN0LT50aW1lbGlu ZSA9PSByZXF1ZXN0LT5lbmdpbmUtPnRpbWVsaW5lKTsKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JnJlcXVlc3QtPmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJR0VNX0JVR19PTihyZXF1ZXN0 LT50aW1lbGluZSA9PSAmcmVxdWVzdC0+ZW5naW5lLT50aW1lbGluZSk7Cj4gKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZyZXF1ZXN0LT5lbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCj4gICAJc3Bp bl9sb2NrKCZyZXF1ZXN0LT50aW1lbGluZS0+bG9jayk7Cj4gICAJbGlzdF9tb3ZlX3RhaWwoJnJl cXVlc3QtPmxpbmssICZ0aW1lbGluZS0+cmVxdWVzdHMpOwo+IEBAIC00NjksMTUgKzQ2NiwxNSBA QCB2b2lkIF9faTkxNV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 KQo+ICAgCUdFTV9UUkFDRSgiJXMgZmVuY2UgJWxseDolZCAtPiBnbG9iYWw9JWQsIGN1cnJlbnQg JWRcbiIsCj4gICAJCSAgZW5naW5lLT5uYW1lLAo+ICAgCQkgIHJlcXVlc3QtPmZlbmNlLmNvbnRl eHQsIHJlcXVlc3QtPmZlbmNlLnNlcW5vLAo+IC0JCSAgZW5naW5lLT50aW1lbGluZS0+c2Vxbm8g KyAxLAo+ICsJCSAgZW5naW5lLT50aW1lbGluZS5zZXFubyArIDEsCj4gICAJCSAgaW50ZWxfZW5n aW5lX2dldF9zZXFubyhlbmdpbmUpKTsKPiAgIAo+ICAgCUdFTV9CVUdfT04oIWlycXNfZGlzYWJs ZWQoKSk7Cj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsK PiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gICAKPiAg IAlHRU1fQlVHX09OKHJlcXVlc3QtPmdsb2JhbF9zZXFubyk7Cj4gICAKPiAtCXNlcW5vID0gdGlt ZWxpbmVfZ2V0X3NlcW5vKGVuZ2luZS0+dGltZWxpbmUpOwo+ICsJc2Vxbm8gPSB0aW1lbGluZV9n ZXRfc2Vxbm8oJmVuZ2luZS0+dGltZWxpbmUpOwo+ICAgCUdFTV9CVUdfT04oIXNlcW5vKTsKPiAg IAlHRU1fQlVHX09OKGk5MTVfc2Vxbm9fcGFzc2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5n aW5lKSwgc2Vxbm8pKTsKPiAgIAo+IEBAIC00OTIsNyArNDg5LDcgQEAgdm9pZCBfX2k5MTVfcmVx dWVzdF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkJCQlyZXF1ZXN0 LT5yaW5nLT52YWRkciArIHJlcXVlc3QtPnBvc3RmaXgpOwo+ICAgCj4gICAJLyogVHJhbnNmZXIg ZnJvbSBwZXItY29udGV4dCBvbnRvIHRoZSBnbG9iYWwgcGVyLWVuZ2luZSB0aW1lbGluZSAqLwo+ IC0JbW92ZV90b190aW1lbGluZShyZXF1ZXN0LCBlbmdpbmUtPnRpbWVsaW5lKTsKPiArCW1vdmVf dG9fdGltZWxpbmUocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUpOwo+ICAgCj4gICAJdHJhY2Vf aTkxNV9yZXF1ZXN0X2V4ZWN1dGUocmVxdWVzdCk7Cj4gICAKPiBAQCAtNTA1LDExICs1MDIsMTEg QEAgdm9pZCBpOTE1X3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Qp Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgIAo+ICAgCS8qIFdpbGwgYmUgY2FsbGVkIGZy b20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIGZlbmNlcy4gKi8KPiAtCXNwaW5fbG9j a19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX2xvY2tf aXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAlfX2k5MTVf cmVxdWVzdF9zdWJtaXQocmVxdWVzdCk7Cj4gICAKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgfQo+ICAgCj4gICB2b2lkIF9f aTkxNV9yZXF1ZXN0X3Vuc3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gQEAg LTUyMywxNyArNTIwLDE3IEBAIHZvaWQgX19pOTE1X3JlcXVlc3RfdW5zdWJtaXQoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkJICBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2lu ZSkpOwo+ICAgCj4gICAJR0VNX0JVR19PTighaXJxc19kaXNhYmxlZCgpKTsKPiAtCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJbG9ja2RlcF9hc3NlcnRf aGVsZCgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCS8qCj4gICAJICogT25seSB1 bndpbmQgaW4gcmV2ZXJzZSBvcmRlciwgcmVxdWlyZWQgc28gdGhhdCB0aGUgcGVyLWNvbnRleHQg bGlzdAo+ICAgCSAqIGlzIGtlcHQgaW4gc2Vxbm8vcmluZyBvcmRlci4KPiAgIAkgKi8KPiAgIAlH RU1fQlVHX09OKCFyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOwo+IC0JR0VNX0JVR19PTihyZXF1ZXN0 LT5nbG9iYWxfc2Vxbm8gIT0gZW5naW5lLT50aW1lbGluZS0+c2Vxbm8pOwo+ICsJR0VNX0JVR19P TihyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8gIT0gZW5naW5lLT50aW1lbGluZS5zZXFubyk7Cj4gICAJ R0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2lu ZSksCj4gICAJCQkJICAgICByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pKTsKPiAtCWVuZ2luZS0+dGlt ZWxpbmUtPnNlcW5vLS07Cj4gKwllbmdpbmUtPnRpbWVsaW5lLnNlcW5vLS07Cj4gICAKPiAgIAkv KiBXZSBtYXkgYmUgcmVjdXJzaW5nIGZyb20gdGhlIHNpZ25hbCBjYWxsYmFjayBvZiBhbm90aGVy IGk5MTUgZmVuY2UgKi8KPiAgIAlzcGluX2xvY2tfbmVzdGVkKCZyZXF1ZXN0LT5sb2NrLCBTSU5H TEVfREVQVEhfTkVTVElORyk7Cj4gQEAgLTU2MCwxMSArNTU3LDExIEBAIHZvaWQgaTkxNV9yZXF1 ZXN0X3Vuc3VibWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJdW5zaWduZWQg bG9uZyBmbGFnczsKPiAgIAo+ICAgCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQg d2hlbiB1c2luZyBmb3JlaWduIGZlbmNlcy4gKi8KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdp bmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5l LT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICAKPiAgIAlfX2k5MTVfcmVxdWVzdF91bnN1Ym1p dChyZXF1ZXN0KTsKPiAgIAo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1l bGluZS0+bG9jaywgZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50 aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgX19pOTE1X3N3 X2ZlbmNlX2NhbGwKPiBAQCAtNjM5LDcgKzYzNiw3IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gICAJaWYgKElTX0VSUihyaW5nKSkKPiAgIAkJcmV0dXJuIEVSUl9DQVNUKHJpbmcpOwo+ICAg CUdFTV9CVUdfT04oIXJpbmcpOwo+IC0JR0VNX0JVR19PTihyaW5nLT50aW1lbGluZSA9PSBlbmdp bmUtPnRpbWVsaW5lKTsKPiArCUdFTV9CVUdfT04ocmluZy0+dGltZWxpbmUgPT0gJmVuZ2luZS0+ dGltZWxpbmUpOwo+ICAgCj4gICAJcmV0ID0gcmVzZXJ2ZV9lbmdpbmUoZW5naW5lKTsKPiAgIAlp ZiAocmV0KQo+IEBAIC04NzksNyArODc2LDcgQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5j ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gICAK PiAgIAkJLyogU3F1YXNoIHJlcGVhdGVkIHdhaXRzIHRvIHRoZSBzYW1lIHRpbWVsaW5lcyAqLwo+ ICAgCQlpZiAoZmVuY2UtPmNvbnRleHQgIT0gcnEtPmk5MTUtPm1tLnVub3JkZXJlZF90aW1lbGlu ZSAmJgo+IC0JCSAgICBpbnRlbF90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHJxLT50aW1lbGluZSwg ZmVuY2UpKQo+ICsJCSAgICBpOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIocnEtPnRpbWVsaW5l LCBmZW5jZSkpCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlpZiAoZG1hX2ZlbmNlX2lzX2k5 MTUoZmVuY2UpKQo+IEBAIC04OTMsNyArODkwLDcgQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9m ZW5jZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4g ICAKPiAgIAkJLyogUmVjb3JkIHRoZSBsYXRlc3QgZmVuY2UgdXNlZCBhZ2FpbnN0IGVhY2ggdGlt ZWxpbmUgKi8KPiAgIAkJaWYgKGZlbmNlLT5jb250ZXh0ICE9IHJxLT5pOTE1LT5tbS51bm9yZGVy ZWRfdGltZWxpbmUpCj4gLQkJCWludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHJxLT50aW1lbGluZSwg ZmVuY2UpOwo+ICsJCQlpOTE1X3RpbWVsaW5lX3N5bmNfc2V0KHJxLT50aW1lbGluZSwgZmVuY2Up Owo+ICAgCX0gd2hpbGUgKC0tbmNoaWxkKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+IEBAIC05NzAs NyArOTY3LDcgQEAgdm9pZCBfX2k5MTVfcmVxdWVzdF9hZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAq cmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nID0gcmVxdWVzdC0+cmluZzsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUg PSByZXF1ZXN0LT50aW1lbGluZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSA9 IHJlcXVlc3QtPnRpbWVsaW5lOwo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXY7Cj4gICAJ dTMyICpjczsKPiAgIAlpbnQgZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4g aW5kZXggOGYzMWNhODI3MmY4Li5lZGRiZDQyNDVjYjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuaAo+IEBAIC0zNyw2ICszNyw3IEBACj4gICBzdHJ1Y3QgZHJtX2ZpbGU7Cj4g ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdDsKPiAgIHN0cnVjdCBpOTE1X3JlcXVlc3Q7Cj4g K3N0cnVjdCBpOTE1X3RpbWVsaW5lOwo+ICAgCj4gICBzdHJ1Y3QgaW50ZWxfd2FpdCB7Cj4gICAJ c3RydWN0IHJiX25vZGUgbm9kZTsKPiBAQCAtOTUsNyArOTYsNyBAQCBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0IHsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiAtCXN0 cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAq dGltZWxpbmU7Cj4gICAJc3RydWN0IGludGVsX3NpZ25hbF9ub2RlIHNpZ25hbGluZzsKPiAgIAo+ ICAgCS8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi40NjY3Y2MwOGM0MTYKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCj4gQEAgLTAsMCAr MSwxMDUgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxNi0yMDE4IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV90aW1lbGluZS5o Igo+ICsjaW5jbHVkZSAiaTkxNV9zeW5jbWFwLmgiCj4gKwo+ICt2b2lkIGk5MTVfdGltZWxpbmVf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkJc3RydWN0IGk5MTVfdGlt ZWxpbmUgKnRpbWVsaW5lLAo+ICsJCQljb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwkvKgo+ICsJICog SWRlYWxseSB3ZSB3YW50IGEgc2V0IG9mIGVuZ2luZXMgb24gYSBzaW5nbGUgbGVhZiBhcyB3ZSBl eHBlY3QKPiArCSAqIHRvIG1vc3RseSBiZSB0cmFja2luZyBzeW5jaHJvbmlzYXRpb24gYmV0d2Vl biBlbmdpbmVzLiBJdCBpcyBub3QKPiArCSAqIGEgaHVnZSBpc3N1ZSBpZiB0aGlzIGlzIG5vdCB0 aGUgY2FzZSwgYnV0IHdlIG1heSB3YW50IHRvIG1pdGlnYXRlCj4gKwkgKiBhbnkgcGFnZSBjcm9z c2luZyBwZW5hbHRpZXMgaWYgdGhleSBiZWNvbWUgYW4gaXNzdWUuCj4gKwkgKi8KPiArCUJVSUxE X0JVR19PTihLU1lOQ01BUCA8IEk5MTVfTlVNX0VOR0lORVMpOwo+ICsKPiArCXRpbWVsaW5lLT5u YW1lID0gbmFtZTsKPiArCj4gKwlsaXN0X2FkZCgmdGltZWxpbmUtPmxpbmssICZpOTE1LT5ndC50 aW1lbGluZXMpOwo+ICsKPiArCS8qIENhbGxlZCBkdXJpbmcgZWFybHlfaW5pdCBiZWZvcmUgd2Ug a25vdyBob3cgbWFueSBlbmdpbmVzIHRoZXJlIGFyZSAqLwo+ICsKPiArCXRpbWVsaW5lLT5mZW5j ZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Cj4gKwo+ICsJc3Bpbl9sb2Nr X2luaXQoJnRpbWVsaW5lLT5sb2NrKTsKPiArCj4gKwlpbml0X3JlcXVlc3RfYWN0aXZlKCZ0aW1l bGluZS0+bGFzdF9yZXF1ZXN0LCBOVUxMKTsKPiArCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZS0+ cmVxdWVzdHMpOwo+ICsKPiArCWk5MTVfc3luY21hcF9pbml0KCZ0aW1lbGluZS0+c3luYyk7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBpOTE1X3RpbWVsaW5lc19wYXJrIC0gY2FsbGVkIHdoZW4gdGhl IGRyaXZlciBpZGxlcwo+ICsgKiBAaTkxNTogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCj4g KyAqCj4gKyAqIFdoZW4gdGhlIGRyaXZlciBpcyBjb21wbGV0ZWx5IGlkbGUsIHdlIGtub3cgdGhh dCBhbGwgb2Ygb3VyIHN5bmMgcG9pbnRzCj4gKyAqIGhhdmUgYmVlbiBzaWduYWxlZCBhbmQgb3Vy IHRyYWNraW5nIGlzIHRoZW4gZW50aXJlbHkgcmVkdW5kYW50LiBBbnkgcmVxdWVzdAo+ICsgKiB0 byB3YWl0IHVwb24gYW4gb2xkZXIgc3luYyBwb2ludCB3aWxsIGJlIGNvbXBsZXRlZCBpbnN0YW50 bHkgYXMgd2Uga25vdwo+ICsgKiB0aGUgZmVuY2UgaXMgc2lnbmFsZWQgYW5kIHRoZXJlZm9yZSB3 ZSB3aWxsIG5vdCBldmVuIGxvb2sgdGhlbSB1cCBpbiB0aGUKPiArICogc3luYyBwb2ludCBtYXAu Cj4gKyAqLwo+ICt2b2lkIGk5MTVfdGltZWxpbmVzX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiArCj4g Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwls aXN0X2Zvcl9lYWNoX2VudHJ5KHRpbWVsaW5lLCAmaTkxNS0+Z3QudGltZWxpbmVzLCBsaW5rKSB7 Cj4gKwkJLyoKPiArCQkgKiBBbGwga25vd24gZmVuY2VzIGFyZSBjb21wbGV0ZWQgc28gd2UgY2Fu IHNjcmFwCj4gKwkJICogdGhlIGN1cnJlbnQgc3luYyBwb2ludCB0cmFja2luZyBhbmQgc3RhcnQg YWZyZXNoLAo+ICsJCSAqIGFueSBhdHRlbXB0IHRvIHdhaXQgdXBvbiBhIHByZXZpb3VzIHN5bmMg cG9pbnQKPiArCQkgKiB3aWxsIGJlIHNraXBwZWQgYXMgdGhlIGZlbmNlIHdhcyBzaWduYWxlZC4K PiArCQkgKi8KPiArCQlpOTE1X3N5bmNtYXBfZnJlZSgmdGltZWxpbmUtPnN5bmMpOwo+ICsJfQo+ ICt9Cj4gKwo+ICt2b2lkIGk5MTVfdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV90aW1lbGluZSAq dGltZWxpbmUpCj4gK3sKPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1 ZXN0cykpOwo+ICsKPiArCWk5MTVfc3luY21hcF9mcmVlKCZ0aW1lbGluZS0+c3luYyk7Cj4gKwo+ ICsJbGlzdF9kZWwoJnRpbWVsaW5lLT5saW5rKTsKPiArfQo+ICsKPiArc3RydWN0IGk5MTVfdGlt ZWxpbmUgKgo+ICtpOTE1X3RpbWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgY29uc3QgY2hhciAqbmFtZSkKPiArewo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRp bWVsaW5lOwo+ICsKPiArCXRpbWVsaW5lID0ga3phbGxvYyhzaXplb2YoKnRpbWVsaW5lKSwgR0ZQ X0tFUk5FTCk7Cj4gKwlpZiAoIXRpbWVsaW5lKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0p Owo+ICsKPiArCWk5MTVfdGltZWxpbmVfaW5pdChpOTE1LCB0aW1lbGluZSwgbmFtZSk7Cj4gKwlr cmVmX2luaXQoJnRpbWVsaW5lLT5rcmVmKTsKPiArCj4gKwlyZXR1cm4gdGltZWxpbmU7Cj4gK30K PiArCj4gK3ZvaWQgX19pOTE1X3RpbWVsaW5lX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4gK3sK PiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSA9Cj4gKwkJY29udGFpbmVyX29mKGty ZWYsIHR5cGVvZigqdGltZWxpbmUpLCBrcmVmKTsKPiArCj4gKwlpOTE1X3RpbWVsaW5lX2Zpbmko dGltZWxpbmUpOwo+ICsJa2ZyZWUodGltZWxpbmUpOwo+ICt9Cj4gKwo+ICsjaWYgSVNfRU5BQkxF RChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCj4gKyNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja190 aW1lbGluZS5jIgo+ICsjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYyIKPiArI2Vu ZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5l LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKPiBzaW1pbGFyaXR5IGlu ZGV4IDY4JQo+IHJlbmFtZSBmcm9tIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVs aW5lLmgKPiByZW5hbWUgdG8gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCj4g aW5kZXggNzgwZWQ0NjVjNGZjLi5kYzJhNDYzMmZhYTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdGltZWxpbmUuaAo+IEBAIC0yMiwxOCArMjIsMTcgQEAKPiAgICAqCj4gICAgKi8K PiAgIAo+IC0jaWZuZGVmIEk5MTVfR0VNX1RJTUVMSU5FX0gKPiAtI2RlZmluZSBJOTE1X0dFTV9U SU1FTElORV9ICj4gKyNpZm5kZWYgSTkxNV9USU1FTElORV9ICj4gKyNkZWZpbmUgSTkxNV9USU1F TElORV9ICj4gICAKPiAgICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9rcmVmLmg+Cj4gICAKPiAgICNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiAgICNpbmNsdWRl ICJpOTE1X3N5bmNtYXAuaCIKPiAgICNpbmNsdWRlICJpOTE1X3V0aWxzLmgiCj4gICAKPiAtc3Ry dWN0IGk5MTVfZ2VtX3RpbWVsaW5lOwo+IC0KPiAtc3RydWN0IGludGVsX3RpbWVsaW5lIHsKPiAr c3RydWN0IGk5MTVfdGltZWxpbmUgewo+ICAgCXU2NCBmZW5jZV9jb250ZXh0Owo+ICAgCXUzMiBz ZXFubzsKPiAgIAo+IEBAIC03MSw1MSArNzAsNTcgQEAgc3RydWN0IGludGVsX3RpbWVsaW5lIHsK PiAgIAkgKi8KPiAgIAl1MzIgZ2xvYmFsX3N5bmNbSTkxNV9OVU1fRU5HSU5FU107Cj4gICAKPiAt CXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqY29tbW9uOwo+IC19Owo+IC0KPiAtc3RydWN0IGk5 MTVfZ2VtX3RpbWVsaW5lIHsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gLQo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gICAJY29uc3QgY2hhciAqbmFtZTsKPiAgIAo+ IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lIGVuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsKPiArCXN0 cnVjdCBrcmVmIGtyZWY7Cj4gICB9Owo+ICAgCj4gLWludCBpOTE1X2dlbV90aW1lbGluZV9pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IC0JCQkgICBzdHJ1Y3QgaTkxNV9nZW1f dGltZWxpbmUgKnRsLAo+IC0JCQkgICBjb25zdCBjaGFyICpuYW1lKTsKPiAtaW50IGk5MTVfZ2Vt X3RpbWVsaW5lX2luaXRfX2dsb2JhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4g LXZvaWQgaTkxNV9nZW1fdGltZWxpbmVzX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpOwo+IC12b2lkIGk5MTVfZ2VtX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfZ2VtX3RpbWVs aW5lICp0bCk7Cj4gK3ZvaWQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+ICsJCQlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCj4gKwkJCWNvbnN0IGNo YXIgKm5hbWUpOwo+ICt2b2lkIGk5MTVfdGltZWxpbmVfZmluaShzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGwpOwo+ICAgCj4gLXN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqCj4gLWk5MTVfZ2VtX3Rp bWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAq bmFtZSk7Cj4gLXZvaWQgaTkxNV9nZW1fdGltZWxpbmVfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fdGlt ZWxpbmUgKnRpbWVsaW5lKTsKPiArc3RydWN0IGk5MTVfdGltZWxpbmUgKgo+ICtpOTE1X3RpbWVs aW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAqbmFt ZSk7Cj4gICAKPiAtc3RhdGljIGlubGluZSBpbnQgX19pbnRlbF90aW1lbGluZV9zeW5jX3NldChz dHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAo+IC0JCQkJCSAgICB1NjQgY29udGV4dCwgdTMyIHNl cW5vKQo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3RpbWVsaW5lICoKPiAraTkxNV90aW1l bGluZV9nZXQoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQo+ICt7Cj4gKwlrcmVmX2dl dCgmdGltZWxpbmUtPmtyZWYpOwo+ICsJcmV0dXJuIHRpbWVsaW5lOwo+ICt9Cj4gKwo+ICt2b2lk IF9faTkxNV90aW1lbGluZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKTsKPiArc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfdGltZWxpbmVfcHV0KHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkK PiArewo+ICsJa3JlZl9wdXQoJnRpbWVsaW5lLT5rcmVmLCBfX2k5MTVfdGltZWxpbmVfZnJlZSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IF9faTkxNV90aW1lbGluZV9zeW5jX3NldChz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCj4gKwkJCQkJICAgdTY0IGNvbnRleHQsIHUzMiBzZXFu bykKPiAgIHsKPiAgIAlyZXR1cm4gaTkxNV9zeW5jbWFwX3NldCgmdGwtPnN5bmMsIGNvbnRleHQs IHNlcW5vKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW5saW5lIGludCBpbnRlbF90aW1lbGluZV9z eW5jX3NldChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAo+IC0JCQkJCSAgY29uc3Qgc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3N0YXRpYyBpbmxpbmUgaW50IGk5MTVfdGltZWxpbmVfc3lu Y19zZXQoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLAo+ICsJCQkJCSBjb25zdCBzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZSkKPiAgIHsKPiAtCXJldHVybiBfX2ludGVsX3RpbWVsaW5lX3N5bmNfc2V0 KHRsLCBmZW5jZS0+Y29udGV4dCwgZmVuY2UtPnNlcW5vKTsKPiArCXJldHVybiBfX2k5MTVfdGlt ZWxpbmVfc3luY19zZXQodGwsIGZlbmNlLT5jb250ZXh0LCBmZW5jZS0+c2Vxbm8pOwo+ICAgfQo+ ICAgCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBfX2ludGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIo c3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKPiAtCQkJCQkJICB1NjQgY29udGV4dCwgdTMyIHNl cW5vKQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgX19pOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIo c3RydWN0IGk5MTVfdGltZWxpbmUgKnRsLAo+ICsJCQkJCQkgdTY0IGNvbnRleHQsIHUzMiBzZXFu bykKPiAgIHsKPiAgIAlyZXR1cm4gaTkxNV9zeW5jbWFwX2lzX2xhdGVyKCZ0bC0+c3luYywgY29u dGV4dCwgc2Vxbm8pOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF90aW1l bGluZV9zeW5jX2lzX2xhdGVyKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCj4gLQkJCQkJCWNv bnN0IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90 aW1lbGluZV9zeW5jX2lzX2xhdGVyKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKPiArCQkJCQkg ICAgICAgY29uc3Qgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gICB7Cj4gLQlyZXR1cm4gX19p bnRlbF90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHRsLCBmZW5jZS0+Y29udGV4dCwgZmVuY2UtPnNl cW5vKTsKPiArCXJldHVybiBfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcih0bCwgZmVuY2Ut PmNvbnRleHQsIGZlbmNlLT5zZXFubyk7Cj4gICB9Cj4gICAKPiArdm9pZCBpOTE1X3RpbWVsaW5l c19wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArCj4gICAjZW5kaWYKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IGQ0NGE4ZWI4MzM3OS4u ZGNmZGQ0NDM5OTM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMK PiBAQCAtNDUxLDEyICs0NTEsNiBAQCB2b2lkIGludGVsX2VuZ2luZV9pbml0X2dsb2JhbF9zZXFu byhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBzZXFubykKPiAgIAlHRU1fQlVH X09OKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSAhPSBzZXFubyk7Cj4gICB9Cj4gICAK PiAtc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfdGltZWxpbmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQllbmdpbmUtPnRpbWVsaW5lID0KPiAtCQkmZW5naW5l LT5pOTE1LT5ndC5leGVjdXRpb25fdGltZWxpbmUuZW5naW5lW2VuZ2luZS0+aWRdOwo+IC19Cj4g LQo+ICAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfYmF0Y2hfcG9vbChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0 KCZlbmdpbmUtPmJhdGNoX3Bvb2wsIGVuZ2luZSk7Cj4gQEAgLTUwOCw4ICs1MDIsOSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gICAgKi8KPiAgIHZvaWQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gKwlpOTE1X3RpbWVsaW5lX2luaXQo ZW5naW5lLT5pOTE1LCAmZW5naW5lLT50aW1lbGluZSwgZW5naW5lLT5uYW1lKTsKPiArCj4gICAJ aW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3QoZW5naW5lKTsKPiAtCWludGVsX2VuZ2luZV9pbml0 X3RpbWVsaW5lKGVuZ2luZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2lu ZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRfYmF0Y2hfcG9vbChlbmdpbmUpOwo+ICAgCWludGVs X2VuZ2luZV9pbml0X2NtZF9wYXJzZXIoZW5naW5lKTsKPiBAQCAtNzU3LDYgKzc1Miw4IEBAIHZv aWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAlpZiAoZW5naW5lLT5pOTE1LT5wcmVlbXB0X2NvbnRleHQpCj4gICAJCWVuZ2lu ZS0+Y29udGV4dF91bnBpbihlbmdpbmUsIGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250ZXh0KTsK PiAgIAllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUtPmk5MTUtPmtlcm5lbF9j b250ZXh0KTsKPiArCj4gKwlpOTE1X3RpbWVsaW5lX2ZpbmkoJmVuZ2luZS0+dGltZWxpbmUpOwo+ ICAgfQo+ICAgCj4gICB1NjQgaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChjb25zdCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gQEAgLTEwMDksNyArMTAwNiw3IEBAIGJvb2wg aW50ZWxfZW5naW5lX2hhc19rZXJuZWxfY29udGV4dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICAJICogdGhlIGxhc3QgcmVxdWVzdCB0aGF0IHJlbWFpbnMgaW4gdGhl IHRpbWVsaW5lLiBXaGVuIGlkbGUsIGl0IGlzCj4gICAJICogdGhlIGxhc3QgZXhlY3V0ZWQgY29u dGV4dCBhcyB0cmFja2VkIGJ5IHJldGlyZW1lbnQuCj4gICAJICovCj4gLQlycSA9IF9faTkxNV9n ZW1fYWN0aXZlX3BlZWsoJmVuZ2luZS0+dGltZWxpbmUtPmxhc3RfcmVxdWVzdCk7Cj4gKwlycSA9 IF9faTkxNV9nZW1fYWN0aXZlX3BlZWsoJmVuZ2luZS0+dGltZWxpbmUubGFzdF9yZXF1ZXN0KTsK PiAgIAlpZiAocnEpCj4gICAJCXJldHVybiBycS0+Y3R4ID09IGtlcm5lbF9jb250ZXh0Owo+ICAg CWVsc2UKPiBAQCAtMTMzMiwxNCArMTMyOSwxNCBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAo+ICAgCWRybV9wcmludGYobSwgIlx0 UmVxdWVzdHM6XG4iKTsKPiAgIAo+IC0JcnEgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPnRp bWVsaW5lLT5yZXF1ZXN0cywKPiArCXJxID0gbGlzdF9maXJzdF9lbnRyeSgmZW5naW5lLT50aW1l bGluZS5yZXF1ZXN0cywKPiAgIAkJCSAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QsIGxpbmspOwo+ IC0JaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMpCj4gKwlpZiAo JnJxLT5saW5rICE9ICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzKQo+ICAgCQlwcmludF9yZXF1 ZXN0KG0sIHJxLCAiXHRcdGZpcnN0ICAiKTsKPiAgIAo+IC0JcnEgPSBsaXN0X2xhc3RfZW50cnko JmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAo+ICsJcnEgPSBsaXN0X2xhc3RfZW50cnkoJmVu Z2luZS0+dGltZWxpbmUucmVxdWVzdHMsCj4gICAJCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3Qs IGxpbmspOwo+IC0JaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMp Cj4gKwlpZiAoJnJxLT5saW5rICE9ICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzKQo+ICAgCQlw cmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdGxhc3QgICAiKTsKPiAgIAo+ICAgCXJxID0gaTkxNV9n ZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwo+IEBAIC0xMzcxLDggKzEzNjgsOCBAQCB2 b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAg IAkJZHJtX3ByaW50ZihtLCAiXHREZXZpY2UgaXMgYXNsZWVwOyBza2lwcGluZyByZWdpc3RlciBk dW1wXG4iKTsKPiAgIAl9Cj4gICAKPiAtCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUt PmxvY2spOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmVuZ2luZS0+dGltZWxpbmUtPnJl cXVlc3RzLCBsaW5rKQo+ICsJc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsK PiArCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBs aW5rKQo+ICAgCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdEUgIik7Cj4gICAJZHJtX3ByaW50 ZihtLCAiXHRcdFF1ZXVlIHByaW9yaXR5OiAlZFxuIiwgZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0 eSk7Cj4gICAJZm9yIChyYiA9IGV4ZWNsaXN0cy0+Zmlyc3Q7IHJiOyByYiA9IHJiX25leHQocmIp KSB7Cj4gQEAgLTEzODIsNyArMTM3OSw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAm cC0+cmVxdWVzdHMsIHNjaGVkLmxpbmspCj4gICAJCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRc dFEgIik7Cj4gICAJfQo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr KTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAg CXNwaW5fbG9ja19pcnEoJmItPnJiX2xvY2spOwo+ICAgCWZvciAocmIgPSByYl9maXJzdCgmYi0+ d2FpdGVycyk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggMDJkYTA1ODc1YWE3Li5jYjRmY2RlMWZm ZGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Np b24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMK PiBAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlib29sIHN1Ym1pdCA9IGZhbHNlOwo+ICAgCXN0cnVj dCByYl9ub2RlICpyYjsKPiAgIAo+IC0Jc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+ bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCXJi ID0gZXhlY2xpc3RzLT5maXJzdDsKPiAgIAlHRU1fQlVHX09OKHJiX2ZpcnN0KCZleGVjbGlzdHMt PnF1ZXVlKSAhPSByYik7Cj4gICAKPiBAQCAtNzQ4LDcgKzc0OCw3IEBAIHN0YXRpYyB2b2lkIGd1 Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlHRU1fQlVHX09O KGV4ZWNsaXN0cy0+Zmlyc3QgJiYgIXBvcnRfaXNzZXQoZXhlY2xpc3RzLT5wb3J0KSk7Cj4gICAK PiAgIHVubG9jazoKPiAtCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7 Cj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRh KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZmQzNTM5MDM0NjY1Li5mYTgwMmQ3 OTE4MDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0zMzAsMTAgKzMzMCwx MCBAQCBzdGF0aWMgdm9pZCBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdW5pbml0aWFs aXplZF92YXIocCk7Cj4gICAJaW50IGxhc3RfcHJpbyA9IEk5MTVfUFJJT1JJVFlfSU5WQUxJRDsK PiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4g Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgCj4gICAJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2UocnEsIHJuLAo+IC0JCQkJCSAmZW5naW5l LT50aW1lbGluZS0+cmVxdWVzdHMsCj4gKwkJCQkJICZlbmdpbmUtPnRpbWVsaW5lLnJlcXVlc3Rz LAo+ICAgCQkJCQkgbGluaykgewo+ICAgCQlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkp Cj4gICAJCQlyZXR1cm47Cj4gQEAgLTM1Nyw5ICszNTcsOSBAQCBleGVjbGlzdHNfdW53aW5kX2lu Y29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0 cykKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQo+ICAgCQljb250YWluZXJf b2YoZXhlY2xpc3RzLCB0eXBlb2YoKmVuZ2luZSksIGV4ZWNsaXN0cyk7Cj4gICAKPiAtCXNwaW5f bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJc3Bpbl9sb2NrX2lycSgmZW5n aW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVu Z2luZSk7Cj4gLQlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJ c3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ICAgfQo+ICAgCj4gICBz dGF0aWMgaW5saW5lIHZvaWQKPiBAQCAtNTgzLDcgKzU4Myw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkgKiBhbmQg Y29udGV4dCBzd2l0Y2hlcykgc3VibWlzc2lvbi4KPiAgIAkgKi8KPiAgIAo+IC0Jc3Bpbl9sb2Nr X2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX2xvY2tfaXJxKCZlbmdpbmUt PnRpbWVsaW5lLmxvY2spOwo+ICAgCXJiID0gZXhlY2xpc3RzLT5maXJzdDsKPiAgIAlHRU1fQlVH X09OKHJiX2ZpcnN0KCZleGVjbGlzdHMtPnF1ZXVlKSAhPSByYik7Cj4gICAKPiBAQCAtNzQzLDcg Kzc0Myw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAlHRU1fQlVHX09OKGV4ZWNsaXN0cy0+Zmlyc3QgJiYgIXBvcnRf aXNzZXQoZXhlY2xpc3RzLT5wb3J0KSk7Cj4gICAKPiAgIHVubG9jazoKPiAtCXNwaW5fdW5sb2Nr X2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2lu ZS0+dGltZWxpbmUubG9jayk7Cj4gICAKPiAgIAlpZiAoc3VibWl0KSB7Cj4gICAJCWV4ZWNsaXN0 c191c2VyX2JlZ2luKGV4ZWNsaXN0cywgZXhlY2xpc3RzLT5wb3J0KTsKPiBAQCAtODY4LDEwICs4 NjgsMTAgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3Rz KGV4ZWNsaXN0cyk7Cj4gICAJcmVzZXRfaXJxKGVuZ2luZSk7Cj4gICAKPiAtCXNwaW5fbG9jaygm ZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX2xvY2soJmVuZ2luZS0+dGltZWxpbmUu bG9jayk7Cj4gICAKPiAgIAkvKiBNYXJrIGFsbCBleGVjdXRpbmcgcmVxdWVzdHMgYXMgc2tpcHBl ZC4gKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1 ZXN0cywgbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmVuZ2luZS0+dGltZWxp bmUucmVxdWVzdHMsIGxpbmspIHsKPiAgIAkJR0VNX0JVR19PTighcnEtPmdsb2JhbF9zZXFubyk7 Cj4gICAJCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4gICAJCQlkbWFfZmVuY2Vf c2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FSU8pOwo+IEBAIC05MDMsNyArOTAzLDcgQEAgc3RhdGlj IHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAJZXhlY2xpc3RzLT5maXJzdCA9IE5VTEw7Cj4gICAJR0VNX0JVR19PTihwb3J0 X2lzc2V0KGV4ZWNsaXN0cy0+cG9ydCkpOwo+ICAgCj4gLQlzcGluX3VubG9jaygmZW5naW5lLT50 aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsK PiAgIAo+ICAgCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKPiAgIH0KPiBAQCAtMTE0MSw3ICsx MTQxLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgIAo+ICAgCS8q IFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIGZlbmNl cy4gKi8KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFn cyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7 Cj4gICAKPiAgIAlxdWV1ZV9yZXF1ZXN0KGVuZ2luZSwgJnJlcXVlc3QtPnNjaGVkLCBycV9wcmlv KHJlcXVlc3QpKTsKPiAgIAlzdWJtaXRfcXVldWUoZW5naW5lLCBycV9wcmlvKHJlcXVlc3QpKTsK PiBAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1 ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJR0VNX0JVR19PTighZW5naW5l LT5leGVjbGlzdHMuZmlyc3QpOwo+ICAgCUdFTV9CVUdfT04obGlzdF9lbXB0eSgmcmVxdWVzdC0+ c2NoZWQubGluaykpOwo+ICAgCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRp bWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUt PnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnNjaGVkX3RvX3JlcXVlc3Qoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkK PiBAQCAtMTE2NSw4ICsxMTY1LDggQEAgc2NoZWRfbG9ja19lbmdpbmUoc3RydWN0IGk5MTVfc2No ZWRfbm9kZSAqbm9kZSwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbG9ja2VkKQo+ICAgCUdFTV9C VUdfT04oIWxvY2tlZCk7Cj4gICAKPiAgIAlpZiAoZW5naW5lICE9IGxvY2tlZCkgewo+IC0JCXNw aW5fdW5sb2NrKCZsb2NrZWQtPnRpbWVsaW5lLT5sb2NrKTsKPiAtCQlzcGluX2xvY2soJmVuZ2lu ZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJCXNwaW5fdW5sb2NrKCZsb2NrZWQtPnRpbWVsaW5lLmxv Y2spOwo+ICsJCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAgIAl9Cj4gICAK PiAgIAlyZXR1cm4gZW5naW5lOwo+IEBAIC0xMjQ5LDcgKzEyNDksNyBAQCBzdGF0aWMgdm9pZCBl eGVjbGlzdHNfc2NoZWR1bGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwKPiAgIAl9Cj4g ICAKPiAgIAllbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Cj4gLQlzcGluX2xvY2tfaXJxKCZlbmdp bmUtPnRpbWVsaW5lLT5sb2NrKTsKPiArCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUu bG9jayk7Cj4gICAKPiAgIAkvKiBGaWZvIGFuZCBkZXB0aC1maXJzdCByZXBsYWNlbWVudCBlbnN1 cmUgb3VyIGRlcHMgZXhlY3V0ZSBiZWZvcmUgdXMgKi8KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmVfcmV2ZXJzZShkZXAsIHAsICZkZnMsIGRmc19saW5rKSB7Cj4gQEAgLTEyNzMsNyArMTI3 Myw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19zY2hlZHVsZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0LAo+ICAgCQkJX19zdWJtaXRfcXVldWUoZW5naW5lLCBwcmlvKTsKPiAgIAl9Cj4g ICAKPiAtCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGlu X3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUubG9jayk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKPiBAQCAtMTgwMiw5ICsxODAyLDkgQEAgc3RhdGljIHZvaWQgcmVzZXRf Y29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCXJlc2V0X2ly cShlbmdpbmUpOwo+ICAgCj4gICAJLyogUHVzaCBiYWNrIGFueSBpbmNvbXBsZXRlIHJlcXVlc3Rz IGZvciByZXBsYXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwo+IC0Jc3Bpbl9sb2NrKCZlbmdpbmUtPnRp bWVsaW5lLT5sb2NrKTsKPiArCXNwaW5fbG9jaygmZW5naW5lLT50aW1lbGluZS5sb2NrKTsKPiAg IAlfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7Cj4gLQlzcGluX3VubG9jaygm ZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gKwlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGlu ZS5sb2NrKTsKPiAgIAo+ICAgCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKPiAgIAo+IEBAIC0y NTU5LDYgKzI1NTksNyBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2Fs bG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJc3RydWN0IGk5MTVfdm1hICp2 bWE7Cj4gICAJdWludDMyX3QgY29udGV4dF9zaXplOwo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpy aW5nOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICAgCWludCByZXQ7Cj4g ICAKPiAgIAlpZiAoY2UtPnN0YXRlKQo+IEBAIC0yNTc0LDggKzI1NzUsOCBAQCBzdGF0aWMgaW50 IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCj4gICAKPiAgIAljdHhfb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShjdHgtPmk5 MTUsIGNvbnRleHRfc2l6ZSk7Cj4gICAJaWYgKElTX0VSUihjdHhfb2JqKSkgewo+IC0JCURSTV9E RUJVR19EUklWRVIoIkFsbG9jIExSQyBiYWNraW5nIG9iaiBmYWlsZWQuXG4iKTsKPiAtCQlyZXR1 cm4gUFRSX0VSUihjdHhfb2JqKTsKPiArCQlyZXQgPSBQVFJfRVJSKGN0eF9vYmopOwo+ICsJCWdv dG8gZXJyb3JfZGVyZWZfb2JqOwo+ICAgCX0KPiAgIAo+ICAgCXZtYSA9IGk5MTVfdm1hX2luc3Rh bmNlKGN0eF9vYmosICZjdHgtPmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7Cj4gQEAgLTI1ODQsNyAr MjU4NSwxNCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwo+ ICAgCX0KPiAgIAo+IC0JcmluZyA9IGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhlbmdpbmUsIGN0 eC0+dGltZWxpbmUsIGN0eC0+cmluZ19zaXplKTsKPiArCXRpbWVsaW5lID0gaTkxNV90aW1lbGlu ZV9jcmVhdGUoY3R4LT5pOTE1LCBjdHgtPm5hbWUpOwo+ICsJaWYgKElTX0VSUih0aW1lbGluZSkp IHsKPiArCQlyZXQgPSBQVFJfRVJSKHRpbWVsaW5lKTsKPiArCQlnb3RvIGVycm9yX2RlcmVmX29i ajsKPiArCX0KPiArCj4gKwlyaW5nID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwg dGltZWxpbmUsIGN0eC0+cmluZ19zaXplKTsKPiArCWk5MTVfdGltZWxpbmVfcHV0KHRpbWVsaW5l KTsKPiAgIAlpZiAoSVNfRVJSKHJpbmcpKSB7Cj4gICAJCXJldCA9IFBUUl9FUlIocmluZyk7Cj4g ICAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiBpbmRleCA0NTU5ZmUxYzU3NGUuLmU4NWFiZmFmZWFmMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtNjk2LDE3ICs2OTYsMTcgQEAg c3RhdGljIHZvaWQgY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICAgCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr LCBmbGFncyk7Cj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBm bGFncyk7Cj4gICAKPiAgIAkvKiBNYXJrIGFsbCBzdWJtaXR0ZWQgcmVxdWVzdHMgYXMgc2tpcHBl ZC4gKi8KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUt PnJlcXVlc3RzLCBsaW5rKSB7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdp bmUtPnRpbWVsaW5lLnJlcXVlc3RzLCBsaW5rKSB7Cj4gICAJCUdFTV9CVUdfT04oIXJlcXVlc3Qt Pmdsb2JhbF9zZXFubyk7Cj4gICAJCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0 KSkKPiAgIAkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJlcXVlc3QtPmZlbmNlLCAtRUlPKTsKPiAg IAl9Cj4gICAJLyogUmVtYWluaW5nIF91bnJlYWR5XyByZXF1ZXN0cyB3aWxsIGJlIG5vcCdlZCB3 aGVuIHN1Ym1pdHRlZCAqLwo+ICAgCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUt PnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdp bmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgaTl4 eF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IEBAIC0xMTE4 LDcgKzExMTgsNyBAQCBpbnRlbF9yaW5nX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBpbnQgc2l6ZSkKPiAgIAo+ICAgc3RydWN0IGludGVsX3JpbmcgKgo+ICAg aW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAtCQkJIHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUsCj4gKwkJCSBzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGltZWxpbmUsCj4gICAJCQkgaW50IHNpemUpCj4gICB7Cj4gICAJc3Ry dWN0IGludGVsX3JpbmcgKnJpbmc7Cj4gQEAgLTExMzMsNyArMTEzMyw3IEBAIGludGVsX2VuZ2lu ZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCXJldHVy biBFUlJfUFRSKC1FTk9NRU0pOwo+ICAgCj4gICAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPnJlcXVl c3RfbGlzdCk7Cj4gLQlyaW5nLT50aW1lbGluZSA9ICZ0aW1lbGluZS0+ZW5naW5lW2VuZ2luZS0+ aWRdOwo+ICsJcmluZy0+dGltZWxpbmUgPSBpOTE1X3RpbWVsaW5lX2dldCh0aW1lbGluZSk7Cj4g ICAKPiAgIAlyaW5nLT5zaXplID0gc2l6ZTsKPiAgIAkvKiBXb3JrYXJvdW5kIGFuIGVycmF0dW0g b24gdGhlIGk4MzAgd2hpY2ggY2F1c2VzIGEgaGFuZyBpZgo+IEBAIC0xMTY0LDYgKzExNjQsNyBA QCBpbnRlbF9yaW5nX2ZyZWUoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCj4gICAJaTkxNV92bWFf Y2xvc2UocmluZy0+dm1hKTsKPiAgIAlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19h Y3RpdmUob2JqKTsKPiAgIAo+ICsJaTkxNV90aW1lbGluZV9wdXQocmluZy0+dGltZWxpbmUpOwo+ ICAgCWtmcmVlKHJpbmcpOwo+ICAgfQo+ICAgCj4gQEAgLTEzMjIsNiArMTMyMyw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3JpbmdfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gICBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+ ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICAgCWludCBlcnI7Cj4gICAKPiAg IAlpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKGVuZ2luZSk7Cj4gQEAgLTEzMzAsOSArMTMzMiwx NCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gZXJyOwo+ICAgCj4gLQlyaW5n ID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwKPiAtCQkJCQkmZW5naW5lLT5pOTE1 LT5ndC5sZWdhY3lfdGltZWxpbmUsCj4gLQkJCQkJMzIgKiBQQUdFX1NJWkUpOwo+ICsJdGltZWxp bmUgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShlbmdpbmUtPmk5MTUsIGVuZ2luZS0+bmFtZSk7Cj4g KwlpZiAoSVNfRVJSKHRpbWVsaW5lKSkgewo+ICsJCWVyciA9IFBUUl9FUlIodGltZWxpbmUpOwo+ ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsKPiArCXJpbmcgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3Jp bmcoZW5naW5lLCB0aW1lbGluZSwgMzIgKiBQQUdFX1NJWkUpOwo+ICsJaTkxNV90aW1lbGluZV9w dXQodGltZWxpbmUpOwo+ICAgCWlmIChJU19FUlIocmluZykpIHsKPiAgIAkJZXJyID0gUFRSX0VS UihyaW5nKTsKPiAgIAkJZ290byBlcnI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAo+IGluZGV4IDNmNjM0OTk3MzRmNy4uNTM5ZWVmYjMxY2I2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC01LDEyICs1LDEyIEBACj4gICAj aW5jbHVkZSA8bGludXgvaGFzaHRhYmxlLmg+Cj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2dlbV9i YXRjaF9wb29sLmgiCj4gLSNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgo+ICAgCj4gICAj aW5jbHVkZSAiaTkxNV9yZWcuaCIKPiAgICNpbmNsdWRlICJpOTE1X3BtdS5oIgo+ICAgI2luY2x1 ZGUgImk5MTVfcmVxdWVzdC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiArI2lu Y2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9ncHVfY29tbWFuZHMu aCIKPiAgIAo+ICAgc3RydWN0IGRybV9wcmludGVyOwo+IEBAIC0xMjgsNyArMTI4LDcgQEAgc3Ry dWN0IGludGVsX3Jpbmcgewo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCXZvaWQgKnZh ZGRyOwo+ICAgCj4gLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICsJc3RydWN0 IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdF9s aXN0Owo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgbGl2ZTsKPiAgIAo+IEBAIC0zMzcsNyArMzM3LDgg QEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gICAJdTMyIG1taW9fYmFzZTsKPiAgIAo+ICAg CXN0cnVjdCBpbnRlbF9yaW5nICpidWZmZXI7Cj4gLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRp bWVsaW5lOwo+ICsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lIHRpbWVsaW5lOwo+ICAgCj4gICAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRlZmF1bHRfc3RhdGU7Cj4gICAKPiBAQCAtNzY5 LDcgKzc3MCw3IEBAIGludGVsX3dyaXRlX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwgaW50IHJlZywgdTMyIHZhbHVlKQo+ICAgCj4gICBzdHJ1Y3QgaW50ZWxfcmlu ZyAqCj4gICBpbnRlbF9lbmdpbmVfY3JlYXRlX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAo+IC0JCQkgc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZSwKPiArCQkJ IHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKPiAgIAkJCSBpbnQgc2l6ZSk7Cj4gICBp bnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVsX3JpbmcgKnJpbmcsCj4gICAJCSAgIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IEBAIC04ODgsNyArODg5LDcgQEAgc3RhdGljIGlu bGluZSB1MzIgaW50ZWxfZW5naW5lX2xhc3Rfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAkgKiB3dGloIHNlcmlhbGlzaW5nIHRoaXMgaGludCB3aXRoIGFueXRoaW5n LCBzbyBkb2N1bWVudCBpdCBhcwo+ICAgCSAqIGEgaGludCBhbmQgbm90aGluZyBtb3JlLgo+ICAg CSAqLwo+IC0JcmV0dXJuIFJFQURfT05DRShlbmdpbmUtPnRpbWVsaW5lLT5zZXFubyk7Cj4gKwly ZXR1cm4gUkVBRF9PTkNFKGVuZ2luZS0+dGltZWxpbmUuc2Vxbm8pOwo+ICAgfQo+ICAgCj4gICB2 b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVs aW5lLmMKPiBzaW1pbGFyaXR5IGluZGV4IDcwJQo+IHJlbmFtZSBmcm9tIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV90aW1lbGluZS5jCj4gcmVuYW1lIHRvIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKPiBpbmRleCAzMDAwZTZhN2Q4 MmQuLjE5ZjFjNmE1YzhmYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW1fdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKPiBAQCAtMSwyNSArMSw3IEBACj4gICAvKgo+IC0gKiBD b3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+IC0gKgo+IC0gKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiAtICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAt ICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+IC0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gLSAqIFNv ZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gLSAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCj4gLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiAtICogSU4gVEhFIFNPRlRX QVJFLgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gICAgKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBvcmF0aW9uCj4gICAgKi8KPiAgIAo+ICAgI2lu Y2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKPiBAQCAtMzUsMjEgKzE3LDIxIEBAIHN0cnVjdCBf X2lndF9zeW5jIHsKPiAgIAlib29sIHNldDsKPiAgIH07Cj4gICAKPiAtc3RhdGljIGludCBfX2ln dF9zeW5jKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCj4gK3N0YXRpYyBpbnQgX19pZ3Rfc3lu YyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCj4gICAJCSAgICAgIHU2NCBjdHgsCj4gICAJCSAg ICAgIGNvbnN0IHN0cnVjdCBfX2lndF9zeW5jICpwLAo+ICAgCQkgICAgICBjb25zdCBjaGFyICpu YW1lKQo+ICAgewo+ICAgCWludCByZXQ7Cj4gICAKPiAtCWlmIChfX2ludGVsX3RpbWVsaW5lX3N5 bmNfaXNfbGF0ZXIodGwsIGN0eCwgcC0+c2Vxbm8pICE9IHAtPmV4cGVjdGVkKSB7Cj4gKwlpZiAo X19pOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIodGwsIGN0eCwgcC0+c2Vxbm8pICE9IHAtPmV4 cGVjdGVkKSB7Cj4gICAJCXByX2VycigiJXM6ICVzKGN0eD0lbGx1LCBzZXFubz0ldSkgZXhwZWN0 ZWQgcGFzc2VkICVzIGJ1dCBmYWlsZWRcbiIsCj4gICAJCSAgICAgICBuYW1lLCBwLT5uYW1lLCBj dHgsIHAtPnNlcW5vLCB5ZXNubyhwLT5leHBlY3RlZCkpOwo+ICAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgIAl9Cj4gICAKPiAgIAlpZiAocC0+c2V0KSB7Cj4gLQkJcmV0ID0gX19pbnRlbF90aW1lbGlu ZV9zeW5jX3NldCh0bCwgY3R4LCBwLT5zZXFubyk7Cj4gKwkJcmV0ID0gX19pOTE1X3RpbWVsaW5l X3N5bmNfc2V0KHRsLCBjdHgsIHAtPnNlcW5vKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVy biByZXQ7Cj4gICAJfQo+IEBAIC03NywzNyArNTksMzEgQEAgc3RhdGljIGludCBpZ3Rfc3luYyh2 b2lkICphcmcpCj4gICAJCXsgInVud3JhcCIsIFVJTlRfTUFYLCB0cnVlLCBmYWxzZSB9LAo+ICAg CQl7fSwKPiAgIAl9LCAqcDsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7Cj4gKwlzdHJ1 Y3QgaTkxNV90aW1lbGluZSB0bDsKPiAgIAlpbnQgb3JkZXIsIG9mZnNldDsKPiAgIAlpbnQgcmV0 ID0gLUVOT0RFVjsKPiAgIAo+IC0JdGwgPSBtb2NrX3RpbWVsaW5lKDApOwo+IC0JaWYgKCF0bCkK PiAtCQlyZXR1cm4gLUVOT01FTTsKPiAtCj4gKwltb2NrX3RpbWVsaW5lX2luaXQoJnRsLCAwKTsK PiAgIAlmb3IgKHAgPSBwYXNzOyBwLT5uYW1lOyBwKyspIHsKPiAgIAkJZm9yIChvcmRlciA9IDE7 IG9yZGVyIDwgNjQ7IG9yZGVyKyspIHsKPiAgIAkJCWZvciAob2Zmc2V0ID0gLTE7IG9mZnNldCA8 PSAob3JkZXIgPiAxKTsgb2Zmc2V0KyspIHsKPiAgIAkJCQl1NjQgY3R4ID0gQklUX1VMTChvcmRl cikgKyBvZmZzZXQ7Cj4gICAKPiAtCQkJCXJldCA9IF9faWd0X3N5bmModGwsIGN0eCwgcCwgIjEi KTsKPiArCQkJCXJldCA9IF9faWd0X3N5bmMoJnRsLCBjdHgsIHAsICIxIik7Cj4gICAJCQkJaWYg KHJldCkKPiAgIAkJCQkJZ290byBvdXQ7Cj4gICAJCQl9Cj4gICAJCX0KPiAgIAl9Cj4gLQltb2Nr X3RpbWVsaW5lX2Rlc3Ryb3kodGwpOwo+IC0KPiAtCXRsID0gbW9ja190aW1lbGluZSgwKTsKPiAt CWlmICghdGwpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRs KTsKPiAgIAo+ICsJbW9ja190aW1lbGluZV9pbml0KCZ0bCwgMCk7Cj4gICAJZm9yIChvcmRlciA9 IDE7IG9yZGVyIDwgNjQ7IG9yZGVyKyspIHsKPiAgIAkJZm9yIChvZmZzZXQgPSAtMTsgb2Zmc2V0 IDw9IChvcmRlciA+IDEpOyBvZmZzZXQrKykgewo+ICAgCQkJdTY0IGN0eCA9IEJJVF9VTEwob3Jk ZXIpICsgb2Zmc2V0Owo+ICAgCj4gICAJCQlmb3IgKHAgPSBwYXNzOyBwLT5uYW1lOyBwKyspIHsK PiAtCQkJCXJldCA9IF9faWd0X3N5bmModGwsIGN0eCwgcCwgIjIiKTsKPiArCQkJCXJldCA9IF9f aWd0X3N5bmMoJnRsLCBjdHgsIHAsICIyIik7Cj4gICAJCQkJaWYgKHJldCkKPiAgIAkJCQkJZ290 byBvdXQ7Cj4gICAJCQl9Cj4gQEAgLTExNSw3ICs5MSw3IEBAIHN0YXRpYyBpbnQgaWd0X3N5bmMo dm9pZCAqYXJnKQo+ICAgCX0KPiAgIAo+ICAgb3V0Ogo+IC0JbW9ja190aW1lbGluZV9kZXN0cm95 KHRsKTsKPiArCW1vY2tfdGltZWxpbmVfZmluaSgmdGwpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9 Cj4gICAKPiBAQCAtMTI3LDE1ICsxMDMsMTMgQEAgc3RhdGljIHVuc2lnbmVkIGludCByYW5kb21f ZW5naW5lKHN0cnVjdCBybmRfc3RhdGUgKnJuZCkKPiAgIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2 b2lkICphcmcpCj4gICB7Cj4gICAJc3RydWN0IHJuZF9zdGF0ZSBwcm5nOwo+IC0Jc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bDsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lIHRsOwo+ICAgCXVuc2ln bmVkIGxvbmcgZW5kX3RpbWUsIGNvdW50Owo+ICAgCXU2NCBwcm5nMzJfMU07Cj4gICAJa3RpbWVf dCBrdDsKPiAgIAlpbnQgb3JkZXIsIGxhc3Rfb3JkZXI7Cj4gICAKPiAtCXRsID0gbW9ja190aW1l bGluZSgwKTsKPiAtCWlmICghdGwpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwltb2NrX3RpbWVs aW5lX2luaXQoJnRsLCAwKTsKPiAgIAo+ICAgCS8qIExvb2t1cHMgZnJvbSBjYWNoZSBhcmUgdmVy eSBmYXN0IGFuZCBzbyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uCj4gICAJICogYW5kIHRo ZSBsb29wIGl0c2VsZiBiZWNvbWVzIGEgc2lnbmlmaWNhbnQgZmFjdG9yIGluIHRoZSBwZXItaXRl cmF0aW9uCj4gQEAgLTE2Nyw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAq YXJnKQo+ICAgCWRvIHsKPiAgIAkJdTY0IGlkID0gaTkxNV9wcmFuZG9tX3U2NF9zdGF0ZSgmcHJu Zyk7Cj4gICAKPiAtCQlfX2ludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHRsLCBpZCwgMCk7Cj4gKwkJ X19pOTE1X3RpbWVsaW5lX3N5bmNfc2V0KCZ0bCwgaWQsIDApOwo+ICAgCQljb3VudCsrOwo+ICAg CX0gd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF90aW1lKSk7Cj4gICAJa3QgPSBrdGlt ZV9zdWIoa3RpbWVfZ2V0KCksIGt0KTsKPiBAQCAtMTgyLDggKzE1Niw4IEBAIHN0YXRpYyBpbnQg YmVuY2hfc3luYyh2b2lkICphcmcpCj4gICAJd2hpbGUgKGVuZF90aW1lLS0pIHsKPiAgIAkJdTY0 IGlkID0gaTkxNV9wcmFuZG9tX3U2NF9zdGF0ZSgmcHJuZyk7Cj4gICAKPiAtCQlpZiAoIV9faW50 ZWxfdGltZWxpbmVfc3luY19pc19sYXRlcih0bCwgaWQsIDApKSB7Cj4gLQkJCW1vY2tfdGltZWxp bmVfZGVzdHJveSh0bCk7Cj4gKwkJaWYgKCFfX2k5MTVfdGltZWxpbmVfc3luY19pc19sYXRlcigm dGwsIGlkLCAwKSkgewo+ICsJCQltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAgIAkJCXByX2Vy cigiTG9va3VwIG9mICVsbHUgZmFpbGVkXG4iLCBpZCk7Cj4gICAJCQlyZXR1cm4gLUVJTlZBTDsK PiAgIAkJfQo+IEBAIC0xOTMsMTkgKzE2NywxNyBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9p ZCAqYXJnKQo+ICAgCXByX2luZm8oIiVzOiAlbHUgcmFuZG9tIGxvb2t1cHMsICVsbHVucy9sb29r dXBcbiIsCj4gICAJCV9fZnVuY19fLCBjb3VudCwgKGxvbmcgbG9uZylkaXY2NF91bChrdGltZV90 b19ucyhrdCksIGNvdW50KSk7Cj4gICAKPiAtCW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7Cj4g Kwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAgIAljb25kX3Jlc2NoZWQoKTsKPiAgIAo+IC0J dGwgPSBtb2NrX3RpbWVsaW5lKDApOwo+IC0JaWYgKCF0bCkKPiAtCQlyZXR1cm4gLUVOT01FTTsK PiArCW1vY2tfdGltZWxpbmVfaW5pdCgmdGwsIDApOwo+ICAgCj4gICAJLyogQmVuY2htYXJrIHNl dHRpbmcgdGhlIGZpcnN0IE4gKGluIG9yZGVyKSBjb250ZXh0cyAqLwo+ICAgCWNvdW50ID0gMDsK PiAgIAlrdCA9IGt0aW1lX2dldCgpOwo+ICAgCWVuZF90aW1lID0gamlmZmllcyArIEhaLzEwOwo+ ICAgCWRvIHsKPiAtCQlfX2ludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHRsLCBjb3VudCsrLCAwKTsK PiArCQlfX2k5MTVfdGltZWxpbmVfc3luY19zZXQoJnRsLCBjb3VudCsrLCAwKTsKPiAgIAl9IHdo aWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkpOwo+ICAgCWt0ID0ga3RpbWVfc3Vi KGt0aW1lX2dldCgpLCBrdCk7Cj4gICAJcHJfaW5mbygiJXM6ICVsdSBpbi1vcmRlciBpbnNlcnRp b25zLCAlbGx1bnMvaW5zZXJ0XG4iLAo+IEBAIC0yMTUsOSArMTg3LDkgQEAgc3RhdGljIGludCBi ZW5jaF9zeW5jKHZvaWQgKmFyZykKPiAgIAllbmRfdGltZSA9IGNvdW50Owo+ICAgCWt0ID0ga3Rp bWVfZ2V0KCk7Cj4gICAJd2hpbGUgKGVuZF90aW1lLS0pIHsKPiAtCQlpZiAoIV9faW50ZWxfdGlt ZWxpbmVfc3luY19pc19sYXRlcih0bCwgZW5kX3RpbWUsIDApKSB7Cj4gKwkJaWYgKCFfX2k5MTVf dGltZWxpbmVfc3luY19pc19sYXRlcigmdGwsIGVuZF90aW1lLCAwKSkgewo+ICAgCQkJcHJfZXJy KCJMb29rdXAgb2YgJWx1IGZhaWxlZFxuIiwgZW5kX3RpbWUpOwo+IC0JCQltb2NrX3RpbWVsaW5l X2Rlc3Ryb3kodGwpOwo+ICsJCQltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAgIAkJCXJldHVy biAtRUlOVkFMOwo+ICAgCQl9Cj4gICAJfQo+IEBAIC0yMjUsMTIgKzE5NywxMCBAQCBzdGF0aWMg aW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQo+ICAgCXByX2luZm8oIiVzOiAlbHUgaW4tb3JkZXIg bG9va3VwcywgJWxsdW5zL2xvb2t1cFxuIiwKPiAgIAkJX19mdW5jX18sIGNvdW50LCAobG9uZyBs b25nKWRpdjY0X3VsKGt0aW1lX3RvX25zKGt0KSwgY291bnQpKTsKPiAgIAo+IC0JbW9ja190aW1l bGluZV9kZXN0cm95KHRsKTsKPiArCW1vY2tfdGltZWxpbmVfZmluaSgmdGwpOwo+ICAgCWNvbmRf cmVzY2hlZCgpOwo+ICAgCj4gLQl0bCA9IG1vY2tfdGltZWxpbmUoMCk7Cj4gLQlpZiAoIXRsKQo+ IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJbW9ja190aW1lbGluZV9pbml0KCZ0bCwgMCk7Cj4gICAK PiAgIAkvKiBCZW5jaG1hcmsgc2VhcmNoaW5nIGZvciBhIHJhbmRvbSBjb250ZXh0IGlkIGFuZCBt YXliZSBjaGFuZ2luZyBpdCAqLwo+ICAgCXByYW5kb21fc2VlZF9zdGF0ZSgmcHJuZywgaTkxNV9z ZWxmdGVzdC5yYW5kb21fc2VlZCk7Cj4gQEAgLTI0MSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IGJl bmNoX3N5bmModm9pZCAqYXJnKQo+ICAgCQl1MzIgaWQgPSByYW5kb21fZW5naW5lKCZwcm5nKTsK PiAgIAkJdTMyIHNlcW5vID0gcHJhbmRvbV91MzJfc3RhdGUoJnBybmcpOwo+ICAgCj4gLQkJaWYg KCFfX2ludGVsX3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIodGwsIGlkLCBzZXFubykpCj4gLQkJCV9f aW50ZWxfdGltZWxpbmVfc3luY19zZXQodGwsIGlkLCBzZXFubyk7Cj4gKwkJaWYgKCFfX2k5MTVf dGltZWxpbmVfc3luY19pc19sYXRlcigmdGwsIGlkLCBzZXFubykpCj4gKwkJCV9faTkxNV90aW1l bGluZV9zeW5jX3NldCgmdGwsIGlkLCBzZXFubyk7Cj4gICAKPiAgIAkJY291bnQrKzsKPiAgIAl9 IHdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkpOwo+IEBAIC0yNTAsNyArMjIw LDcgQEAgc3RhdGljIGludCBiZW5jaF9zeW5jKHZvaWQgKmFyZykKPiAgIAlrdCA9IGt0aW1lX3N1 Yl9ucyhrdCwgKGNvdW50ICogcHJuZzMyXzFNICogMikgPj4gMjApOwo+ICAgCXByX2luZm8oIiVz OiAlbHUgcmVwZWF0ZWQgaW5zZXJ0L2xvb2t1cHMsICVsbHVucy9vcFxuIiwKPiAgIAkJX19mdW5j X18sIGNvdW50LCAobG9uZyBsb25nKWRpdjY0X3VsKGt0aW1lX3RvX25zKGt0KSwgY291bnQpKTsK PiAtCW1vY2tfdGltZWxpbmVfZGVzdHJveSh0bCk7Cj4gKwltb2NrX3RpbWVsaW5lX2ZpbmkoJnRs KTsKPiAgIAljb25kX3Jlc2NoZWQoKTsKPiAgIAo+ICAgCS8qIEJlbmNobWFyayBzZWFyY2hpbmcg Zm9yIGEga25vd24gY29udGV4dCBpZCBhbmQgY2hhbmdpbmcgdGhlIHNlcW5vICovCj4gQEAgLTI1 OCw5ICsyMjgsNyBAQCBzdGF0aWMgaW50IGJlbmNoX3N5bmModm9pZCAqYXJnKQo+ICAgCSAgICAg KHsgaW50IHRtcCA9IGxhc3Rfb3JkZXI7IGxhc3Rfb3JkZXIgPSBvcmRlcjsgb3JkZXIgKz0gdG1w OyB9KSkgewo+ICAgCQl1bnNpZ25lZCBpbnQgbWFzayA9IEJJVChvcmRlcikgLSAxOwo+ICAgCj4g LQkJdGwgPSBtb2NrX3RpbWVsaW5lKDApOwo+IC0JCWlmICghdGwpCj4gLQkJCXJldHVybiAtRU5P TUVNOwo+ICsJCW1vY2tfdGltZWxpbmVfaW5pdCgmdGwsIDApOwo+ICAgCj4gICAJCWNvdW50ID0g MDsKPiAgIAkJa3QgPSBrdGltZV9nZXQoKTsKPiBAQCAtMjcyLDggKzI0MCw4IEBAIHN0YXRpYyBp bnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4gICAJCQkgKi8KPiAgIAkJCXU2NCBpZCA9ICh1NjQp KGNvdW50ICYgbWFzaykgPDwgb3JkZXI7Cj4gICAKPiAtCQkJX19pbnRlbF90aW1lbGluZV9zeW5j X2lzX2xhdGVyKHRsLCBpZCwgMCk7Cj4gLQkJCV9faW50ZWxfdGltZWxpbmVfc3luY19zZXQodGws IGlkLCAwKTsKPiArCQkJX19pOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIoJnRsLCBpZCwgMCk7 Cj4gKwkJCV9faTkxNV90aW1lbGluZV9zeW5jX3NldCgmdGwsIGlkLCAwKTsKPiAgIAo+ICAgCQkJ Y291bnQrKzsKPiAgIAkJfSB3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKTsK PiBAQCAtMjgxLDcgKzI0OSw3IEBAIHN0YXRpYyBpbnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4g ICAJCXByX2luZm8oIiVzOiAlbHUgY3ljbGljLyVkIGluc2VydC9sb29rdXBzLCAlbGx1bnMvb3Bc biIsCj4gICAJCQlfX2Z1bmNfXywgY291bnQsIG9yZGVyLAo+ICAgCQkJKGxvbmcgbG9uZylkaXY2 NF91bChrdGltZV90b19ucyhrdCksIGNvdW50KSk7Cj4gLQkJbW9ja190aW1lbGluZV9kZXN0cm95 KHRsKTsKPiArCQltb2NrX3RpbWVsaW5lX2ZpbmkoJnRsKTsKPiAgIAkJY29uZF9yZXNjaGVkKCk7 Cj4gICAJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5n aW5lLmMKPiBpbmRleCA2YTEwY2I3MzRjMzUuLjMxY2MyMTBkNTFlOSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gQEAgLTI1LDYgKzI1LDEx IEBACj4gICAjaW5jbHVkZSAibW9ja19lbmdpbmUuaCIKPiAgICNpbmNsdWRlICJtb2NrX3JlcXVl c3QuaCIKPiAgIAo+ICtzdHJ1Y3QgbW9ja19yaW5nIHsKPiArCXN0cnVjdCBpbnRlbF9yaW5nIGJh c2U7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSB0aW1lbGluZTsKPiArfTsKPiArCj4gICBzdGF0 aWMgc3RydWN0IG1vY2tfcmVxdWVzdCAqZmlyc3RfcmVxdWVzdChzdHJ1Y3QgbW9ja19lbmdpbmUg KmVuZ2luZSkKPiAgIHsKPiAgIAlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZlbmdp bmUtPmh3X3F1ZXVlLAo+IEBAIC0xMjUsNyArMTMwLDcgQEAgc3RhdGljIHZvaWQgbW9ja19zdWJt aXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgc3RhdGljIHN0cnVj dCBpbnRlbF9yaW5nICptb2NrX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgewo+ICAgCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3ogPSBQQUdFX1NJWkUgLyAyOwo+IC0Jc3Ry dWN0IGludGVsX3JpbmcgKnJpbmc7Cj4gKwlzdHJ1Y3QgbW9ja19yaW5nICpyaW5nOwo+ICAgCj4g ICAJQlVJTERfQlVHX09OKE1JTl9TUEFDRV9GT1JfQUREX1JFUVVFU1QgPiBzeik7Cj4gICAKPiBA QCAtMTMzLDE4ICsxMzgsMjQgQEAgc3RhdGljIHN0cnVjdCBpbnRlbF9yaW5nICptb2NrX3Jpbmco c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWlmICghcmluZykKPiAgIAkJcmV0 dXJuIE5VTEw7Cj4gICAKPiAtCXJpbmctPnNpemUgPSBzejsKPiAtCXJpbmctPmVmZmVjdGl2ZV9z aXplID0gc3o7Cj4gLQlyaW5nLT52YWRkciA9ICh2b2lkICopKHJpbmcgKyAxKTsKPiArCWk5MTVf dGltZWxpbmVfaW5pdChlbmdpbmUtPmk5MTUsICZyaW5nLT50aW1lbGluZSwgZW5naW5lLT5uYW1l KTsKPiArCj4gKwlyaW5nLT5iYXNlLnNpemUgPSBzejsKPiArCXJpbmctPmJhc2UuZWZmZWN0aXZl X3NpemUgPSBzejsKPiArCXJpbmctPmJhc2UudmFkZHIgPSAodm9pZCAqKShyaW5nICsgMSk7Cj4g KwlyaW5nLT5iYXNlLnRpbWVsaW5lID0gJnJpbmctPnRpbWVsaW5lOwo+ICAgCj4gLQlJTklUX0xJ U1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKPiAtCWludGVsX3JpbmdfdXBkYXRlX3NwYWNl KHJpbmcpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmJhc2UucmVxdWVzdF9saXN0KTsKPiAr CWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKCZyaW5nLT5iYXNlKTsKPiAgIAo+IC0JcmV0dXJuIHJp bmc7Cj4gKwlyZXR1cm4gJnJpbmctPmJhc2U7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgbW9j a19yaW5nX2ZyZWUoc3RydWN0IGludGVsX3JpbmcgKnJpbmcpCj4gK3N0YXRpYyB2b2lkIG1vY2tf cmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5nICpiYXNlKQo+ICAgewo+ICsJc3RydWN0IG1vY2tf cmluZyAqcmluZyA9IGNvbnRhaW5lcl9vZihiYXNlLCB0eXBlb2YoKnJpbmcpLCBiYXNlKTsKPiAr Cj4gKwlpOTE1X3RpbWVsaW5lX2ZpbmkoJnJpbmctPnRpbWVsaW5lKTsKPiAgIAlrZnJlZShyaW5n KTsKPiAgIH0KPiAgIAo+IEBAIC0xNzMsOCArMTg0LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJZW5naW5l LT5iYXNlLmVtaXRfYnJlYWRjcnVtYiA9IG1vY2tfZW1pdF9icmVhZGNydW1iOwo+ICAgCWVuZ2lu ZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IG1vY2tfc3VibWl0X3JlcXVlc3Q7Cj4gICAKPiAtCWlu dGVsX2VuZ2luZV9pbml0X3RpbWVsaW5lKCZlbmdpbmUtPmJhc2UpOwo+IC0KPiArCWk5MTVfdGlt ZWxpbmVfaW5pdChpOTE1LCAmZW5naW5lLT5iYXNlLnRpbWVsaW5lLCBlbmdpbmUtPmJhc2UubmFt ZSk7Cj4gICAJaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMoJmVuZ2luZS0+YmFzZSk7Cj4g ICAJZW5naW5lLT5iYXNlLmJyZWFkY3J1bWJzLm1vY2sgPSB0cnVlOyAvKiBwcmV2ZW50IHRvdWNo aW5nIEhXIGZvciBpcnFzICovCj4gICAKPiBAQCAtMTkxLDYgKzIwMSw3IEBAIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKm1vY2tfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ ICAgCj4gICBlcnJfYnJlYWRjcnVtYnM6Cj4gICAJaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVt YnMoJmVuZ2luZS0+YmFzZSk7Cj4gKwlpOTE1X3RpbWVsaW5lX2ZpbmkoJmVuZ2luZS0+YmFzZS50 aW1lbGluZSk7Cj4gICAJa2ZyZWUoZW5naW5lKTsKPiAgIAlyZXR1cm4gTlVMTDsKPiAgIH0KPiBA QCAtMjI5LDYgKzI0MCw3IEBAIHZvaWQgbW9ja19lbmdpbmVfZnJlZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICAJbW9ja19yaW5nX2ZyZWUoZW5naW5lLT5idWZmZXIpOwo+ICAg Cj4gICAJaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVtYnMoZW5naW5lKTsKPiArCWk5MTVfdGlt ZWxpbmVfZmluaSgmZW5naW5lLT50aW1lbGluZSk7Cj4gICAKPiAgIAlrZnJlZShlbmdpbmUpOwo+ ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19n ZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMKPiBpbmRleCBlZDFiZjNiMmU0N2YuLmFiNmNkMGUxNmQ5YiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBAQCAtNzMs MTAgKzczLDggQEAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgCj4gICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gICAJbW9ja19maW5pX2dndHQoaTkxNSk7Cj4gLQlpOTE1X2dlbV90aW1lbGluZV9maW5pKCZp OTE1LT5ndC5sZWdhY3lfdGltZWxpbmUpOwo+IC0JaTkxNV9nZW1fdGltZWxpbmVfZmluaSgmaTkx NS0+Z3QuZXhlY3V0aW9uX3RpbWVsaW5lKTsKPiAtCVdBUk5fT04oIWxpc3RfZW1wdHkoJmk5MTUt Pmd0LnRpbWVsaW5lcykpOwo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gKwlXQVJOX09OKCFsaXN0X2VtcHR5KCZpOTE1LT5ndC50aW1lbGluZXMpKTsKPiAgIAo+ ICAgCWRlc3Ryb3lfd29ya3F1ZXVlKGk5MTUtPndxKTsKPiAgIAo+IEBAIC0yMjYsMTUgKzIyNCwx MCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNlKHZvaWQpCj4gICAJ aWYgKCFpOTE1LT5wcmlvcml0aWVzKQo+ICAgCQlnb3RvIGVycl9kZXBlbmRlbmNpZXM7Cj4gICAK PiAtCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCUlOSVRfTElTVF9I RUFEKCZpOTE1LT5ndC5saXZlX3JpbmdzKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Z3Qu dGltZWxpbmVzKTsKPiAtCWVyciA9IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXRfX2dsb2JhbChpOTE1 KTsKPiAtCWlmIChlcnIpIHsKPiAtCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+IC0JCWdvdG8gZXJyX3ByaW9yaXRpZXM7Cj4gLQl9Cj4gICAKPiArCW11dGV4X2xvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCW1vY2tfaW5pdF9nZ3R0KGk5MTUpOwo+ICAg CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMKPiBpbmRleCA0N2IxZjQ3 YzU4MTIuLmRjZjNiMTZmNWEwNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja190aW1lbGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfdGltZWxpbmUuYwo+IEBAIC0xLDQ1ICsxLDI4IEBACj4gICAvKgo+IC0gKiBD b3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+IC0gKgo+IC0gKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQo+IC0gKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAo+IC0gKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiAtICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiAt ICoKPiAtICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+IC0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gLSAqIFNv ZnR3YXJlLgo+IC0gKgo+IC0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+IC0gKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gLSAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gLSAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCj4gLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiAtICogSU4gVEhFIFNPRlRX QVJFLgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gICAgKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBvcmF0aW9uCj4gICAgKi8KPiAgIAo+ICsjaW5j bHVkZSAiLi4vaTkxNV90aW1lbGluZS5oIgo+ICsKPiAgICNpbmNsdWRlICJtb2NrX3RpbWVsaW5l LmgiCj4gICAKPiAtc3RydWN0IGludGVsX3RpbWVsaW5lICptb2NrX3RpbWVsaW5lKHU2NCBjb250 ZXh0KQo+ICt2b2lkIG1vY2tfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGlt ZWxpbmUsIHU2NCBjb250ZXh0KQo+ICAgewo+IC0Jc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tl eSBjbGFzczsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7Cj4gKwl0aW1lbGluZS0+ZmVu Y2VfY29udGV4dCA9IGNvbnRleHQ7Cj4gKwo+ICsJc3Bpbl9sb2NrX2luaXQoJnRpbWVsaW5lLT5s b2NrKTsKPiAgIAo+IC0JdGwgPSBremFsbG9jKHNpemVvZigqdGwpLCBHRlBfS0VSTkVMKTsKPiAt CWlmICghdGwpCj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwlpbml0X3JlcXVlc3RfYWN0aXZlKCZ0aW1l bGluZS0+bGFzdF9yZXF1ZXN0LCBOVUxMKTsKPiArCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZS0+ cmVxdWVzdHMpOwo+ICAgCj4gLQlfX2ludGVsX3RpbWVsaW5lX2luaXQodGwsIE5VTEwsIGNvbnRl eHQsICZjbGFzcywgIm1vY2siKTsKPiArCWk5MTVfc3luY21hcF9pbml0KCZ0aW1lbGluZS0+c3lu Yyk7Cj4gICAKPiAtCXJldHVybiB0bDsKPiArCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZS0+bGlu ayk7Cj4gICB9Cj4gICAKPiAtdm9pZCBtb2NrX3RpbWVsaW5lX2Rlc3Ryb3koc3RydWN0IGludGVs X3RpbWVsaW5lICp0bCkKPiArdm9pZCBtb2NrX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGk5MTVfdGlt ZWxpbmUgKnRpbWVsaW5lKQo+ICAgewo+IC0JX19pbnRlbF90aW1lbGluZV9maW5pKHRsKTsKPiAt CWtmcmVlKHRsKTsKPiArCWk5MTVfdGltZWxpbmVfZmluaSh0aW1lbGluZSk7Cj4gICB9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja190aW1lbGluZS5oCj4gaW5kZXgg YzI3ZmY0NjM5YjhiLi5iNmRlYWE2MTExMGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmgKPiBAQCAtMSwzMyArMSwxNSBAQAo+ICAgLyoK PiAtICogQ29weXJpZ2h0IMKpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KPiAtICoKPiAtICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKPiAtICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiAtICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiAtICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gLSAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gLSAqCj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAtICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ IC0gKiBTb2Z0d2FyZS4KPiAtICoKPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAtICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+IC0gKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ IC0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORwo+IC0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gLSAqIElOIFRI RSBTT0ZUV0FSRS4KPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICAgICoKPiAr ICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgICovCj4gICAK PiAgICNpZm5kZWYgX19NT0NLX1RJTUVMSU5FX18KPiAgICNkZWZpbmUgX19NT0NLX1RJTUVMSU5F X18KPiAgIAo+IC0jaW5jbHVkZSAiLi4vaTkxNV9nZW1fdGltZWxpbmUuaCIKPiArc3RydWN0IGk5 MTVfdGltZWxpbmU7Cj4gICAKPiAtc3RydWN0IGludGVsX3RpbWVsaW5lICptb2NrX3RpbWVsaW5l KHU2NCBjb250ZXh0KTsKPiAtdm9pZCBtb2NrX3RpbWVsaW5lX2Rlc3Ryb3koc3RydWN0IGludGVs X3RpbWVsaW5lICp0bCk7Cj4gK3ZvaWQgbW9ja190aW1lbGluZV9pbml0KHN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0aW1lbGluZSwgdTY0IGNvbnRleHQpOwo+ICt2b2lkIG1vY2tfdGltZWxpbmVfZmlu aShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpOwo+ICAgCj4gICAjZW5kaWYgLyogIV9f TU9DS19USU1FTElORV9fICovCj4gCgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=