From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1ZRjNR-0006GR-92 for user-mode-linux-devel@lists.sourceforge.net; Tue, 18 Aug 2015 16:04:41 +0000 Received: from www17.your-server.de ([213.133.104.17]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1ZRjNN-0007nl-Qt for user-mode-linux-devel@lists.sourceforge.net; Tue, 18 Aug 2015 16:04:41 +0000 Date: Tue, 18 Aug 2015 18:04:24 +0200 Message-ID: <4cf7d197-2f4c-4a6f-ae27-44612cc6d8e5@email.android.com> In-Reply-To: <55CEF513.90604@nod.at> From: Thomas Meyer MIME-Version: 1.0 List-Id: The user-mode Linux development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: user-mode-linux-devel-bounces@lists.sourceforge.net Subject: Re: [uml-devel] [PATCH] um: Switch clocksource to hrtimers To: Richard Weinberger Cc: user-mode-linux-devel@lists.sourceforge.net QW0gMTUuMDguMjAxNSAxMDoxNSB2b3JtLiBzY2hyaWViIFJpY2hhcmQgV2VpbmJlcmdlciA8cmlj aGFyZEBub2QuYXQ+Ogo+Cj4gQW0gMDkuMDguMjAxNSB1bSAxOTo1MyBzY2hyaWViIFRob21hcyBN ZXllcjogCj4gPiBTd2l0Y2ggdGhlIFVNTCBjbG9ja3NvdXJjZSBmcm9tIGludGVydmFsIHRpbWVy cyB0byBwb3NpeCBpbnRlcnZhbCB0aW1lcnMgYW5kIAo+ID4gbW92ZSB0byBhIG1vbm90b25pYyB0 aW1lci4gCj4gPiAKPiA+IFRoaXMgZml4ZXMgc3VzcGVuZCZyZXN1bWUgcmVsYXRlZCB0aW1lciBp c3N1ZXMgYW5kIGltcHJvdmVzIG5ldHdvcmsgcGVyZm9ybWFuY2UgCj4gPiBhcyBUQ1Agc3RhdGUg bWFjaGluZXMgYXJlIG5vdyBmZWQgd2l0aCB0aGUgY29ycmVjdCB0aW1lOyBhbHNvIGNvcnJlY3Qg UW9TIGFuZCAKPiA+IHRyYWZmaWMgc2hhcGluZy4gCj4KPiBUaGUgcGF0Y2ggaXMgcmF0aGVyIGJp Zy4gUGxlYXNlIGRlc2NyaWJlIGluIHlvdXIgY29tbWl0IG1lc3NhZ2UgaG93IGV4YWN0bHkgCj4g aXQgd29ya3MgYW5kIHdoeS4gCj4gSXQgY2hhbmdlcyBtYW55IGludGVybmFscy4gCgpXaWxsIGRv IHNvIQoKPgo+ID4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIE1leWVyIDx0aG9tYXNAbTN5M3IuZGU+ IAo+Cj4gUGxlYXNlIGhvbm9yIGFsc28gdGhlIG9yaWdpbmFsIGF1dGhvciBvZiB0aGUgcGF0Y2gu IAoKU3VyZSEgR2l2ZSBjcmVkaXQgd2hlcmUgY3JlZGl0IGlzIGR1ZSEKCj4KPiA+IC0tLSAKPiA+ wqAgYXJjaC91bS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqAgMiArLSAKPiA+wqAgYXJjaC91bS9pbmNsdWRlL3NoYXJlZC9vcy5owqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxNSArLSAKPiA+wqAgYXJjaC91bS9pbmNsdWRlL3No YXJlZC9za2FzL3N0dWItZGF0YS5oIHzCoMKgIDUgKy0gCj4gPsKgIGFyY2gvdW0vaW5jbHVkZS9z aGFyZWQvdGltZXItaW50ZXJuYWwuaCB8wqAgMTMgKysgCj4gPsKgIGFyY2gvdW0va2VybmVsL3By b2Nlc3MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA2ICstIAo+ID7CoCBh cmNoL3VtL2tlcm5lbC9za2FzL2Nsb25lLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAg NSAtIAo+ID7CoCBhcmNoL3VtL2tlcm5lbC9za2FzL21tdS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoCAyICsgCj4gPsKgIGFyY2gvdW0va2VybmVsL3RpbWUuY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgODAgKysrKysrKy0tLS0gCj4gPsKgIGFyY2gv dW0vb3MtTGludXgvaW50ZXJuYWwuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxIC0g Cj4gPsKgIGFyY2gvdW0vb3MtTGludXgvbWFpbi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqAgNiArLSAKPiA+wqAgYXJjaC91bS9vcy1MaW51eC9wcm9jZXNzLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICsgCj4gPsKgIGFyY2gvdW0vb3MtTGludXgvc2ln bmFsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzNSArKystLSAKPiA+wqAgYXJj aC91bS9vcy1MaW51eC9za2FzL3Byb2Nlc3MuY8KgwqDCoMKgwqDCoMKgwqAgfMKgIDQ0ICsrLS0t LSAKPiA+wqAgYXJjaC91bS9vcy1MaW51eC90aW1lLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDI0OCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLSAKPiA+wqAgMTQg ZmlsZXMgY2hhbmdlZCwgMjM0IGluc2VydGlvbnMoKyksIDIzMyBkZWxldGlvbnMoLSkgCj4gPsKg IGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3VtL2luY2x1ZGUvc2hhcmVkL3RpbWVyLWludGVybmFs LmggCj4gPsKgIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL3VtL29zLUxpbnV4L2ludGVybmFsLmgg Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3VtL01ha2VmaWxlIGIvYXJjaC91bS9NYWtlZmls ZSAKPiA+IGluZGV4IDA5OGFiMzMuLmViNzliNGIgMTAwNjQ0IAo+ID4gLS0tIGEvYXJjaC91bS9N YWtlZmlsZSAKPiA+ICsrKyBiL2FyY2gvdW0vTWFrZWZpbGUgCj4gPiBAQCAtMTMxLDcgKzEzMSw3 IEBAIGV4cG9ydCBMRFNfRUxGX0ZPUk1BVCA6PSAkKEVMRl9GT1JNQVQpIAo+ID7CoCAjIFRoZSB3 cmFwcGVycyB3aWxsIHNlbGVjdCB3aGV0aGVyIHVzaW5nICJtYWxsb2MiIG9yIHRoZSBrZXJuZWwg YWxsb2NhdG9yLiAKPiA+wqAgTElOS19XUkFQUyA9IC1XbCwtLXdyYXAsbWFsbG9jIC1XbCwtLXdy YXAsZnJlZSAtV2wsLS13cmFwLGNhbGxvYyAKPiA+wqAgCj4gPiAtTERfRkxBR1NfQ01ETElORSA9 ICQoZm9yZWFjaCBvcHQsJChMREZMQUdTKSwtV2wsJChvcHQpKSAKPiA+ICtMRF9GTEFHU19DTURM SU5FID0gJChmb3JlYWNoIG9wdCwkKExERkxBR1MpLC1XbCwkKG9wdCkpIC1scnQgCj4gPsKgIAo+ ID7CoCAjIFVzZWQgYnkgbGluay12bWxpbnV4LnNoIHdoaWNoIGhhcyBzcGVjaWFsIHN1cHBvcnQg Zm9yIHVtIGxpbmsgCj4gPsKgIGV4cG9ydCBDRkxBR1Nfdm1saW51eCA6PSAkKExJTksteSkgJChM SU5LX1dSQVBTKSAkKExEX0ZMQUdTX0NNRExJTkUpIAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvdW0v aW5jbHVkZS9zaGFyZWQvb3MuaCBiL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvb3MuaCAKPiA+IGlu ZGV4IGFkM2ZhM2EuLjc1MTljOTggMTAwNjQ0IAo+ID4gLS0tIGEvYXJjaC91bS9pbmNsdWRlL3No YXJlZC9vcy5oIAo+ID4gKysrIGIvYXJjaC91bS9pbmNsdWRlL3NoYXJlZC9vcy5oIAo+ID4gQEAg LTE4Myw2ICsxODMsNyBAQCBleHRlcm4gaW50IGNyZWF0ZV9tZW1fZmlsZSh1bnNpZ25lZCBsb25n IGxvbmcgbGVuKTsgCj4gPsKgIC8qIHByb2Nlc3MuYyAqLyAKPiA+wqAgZXh0ZXJuIHVuc2lnbmVk IGxvbmcgb3NfcHJvY2Vzc19wYyhpbnQgcGlkKTsgCj4gPsKgIGV4dGVybiBpbnQgb3NfcHJvY2Vz c19wYXJlbnQoaW50IHBpZCk7IAo+ID4gK2V4dGVybiB2b2lkIG9zX2FsYXJtX3Byb2Nlc3MoaW50 IHBpZCk7IAo+ID7CoCBleHRlcm4gdm9pZCBvc19zdG9wX3Byb2Nlc3MoaW50IHBpZCk7IAo+ID7C oCBleHRlcm4gdm9pZCBvc19raWxsX3Byb2Nlc3MoaW50IHBpZCwgaW50IHJlYXBfY2hpbGQpOyAK PiA+wqAgZXh0ZXJuIHZvaWQgb3Nfa2lsbF9wdHJhY2VkX3Byb2Nlc3MoaW50IHBpZCwgaW50IHJl YXBfY2hpbGQpOyAKPiA+IEBAIC0yMTcsNyArMjE4LDcgQEAgZXh0ZXJuIGludCBzZXRfdW1pZChj aGFyICpuYW1lKTsgCj4gPsKgIGV4dGVybiBjaGFyICpnZXRfdW1pZCh2b2lkKTsgCj4gPsKgIAo+ ID7CoCAvKiBzaWduYWwuYyAqLyAKPiA+IC1leHRlcm4gdm9pZCB0aW1lcl9pbml0KHZvaWQpOyAK PiA+ICtleHRlcm4gdm9pZCB0aW1lcl9zZXRfc2lnbmFsX2hhbmRsZXIodm9pZCk7IAo+ID7CoCBl eHRlcm4gdm9pZCBzZXRfc2lnc3RhY2sodm9pZCAqc2lnX3N0YWNrLCBpbnQgc2l6ZSk7IAo+ID7C oCBleHRlcm4gdm9pZCByZW1vdmVfc2lnc3RhY2sodm9pZCk7IAo+ID7CoCBleHRlcm4gdm9pZCBz ZXRfaGFuZGxlcihpbnQgc2lnKTsgCj4gPiBAQCAtMjM4LDEyICsyMzksMTYgQEAgZXh0ZXJuIHZv aWQgdW1fZWFybHlfcHJpbnRrKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBuKTsgCj4gPsKg IGV4dGVybiB2b2lkIG9zX2ZpeF9oZWxwZXJfc2lnbmFscyh2b2lkKTsgCj4gPsKgIAo+ID7CoCAv KiB0aW1lLmMgKi8gCj4gPiAtZXh0ZXJuIHZvaWQgaWRsZV9zbGVlcCh1bnNpZ25lZCBsb25nIGxv bmcgbnNlY3MpOyAKPiA+IC1leHRlcm4gaW50IHNldF9pbnRlcnZhbCh2b2lkKTsgCj4gPiAtZXh0 ZXJuIGludCB0aW1lcl9vbmVfc2hvdChpbnQgdGlja3MpOyAKPiA+IC1leHRlcm4gbG9uZyBsb25n IGRpc2FibGVfdGltZXIodm9pZCk7IAo+ID4gK2V4dGVybiB2b2lkIG9zX2lkbGVfc2xlZXAodW5z aWduZWQgbG9uZyBsb25nIG5zZWNzKTsgCj4gPiArZXh0ZXJuIGludCBvc190aW1lcl9jcmVhdGUo dm9pZCogdGltZXIpOyAKPiA+ICtleHRlcm4gaW50IG9zX3RpbWVyX3NldF9pbnRlcnZhbCh2b2lk KiB0aW1lciwgdm9pZCogaXRzKTsgCj4gPiArZXh0ZXJuIGludCBvc190aW1lcl9vbmVfc2hvdChp bnQgdGlja3MpOyAKPiA+ICtleHRlcm4gbG9uZyBsb25nIG9zX3RpbWVyX2Rpc2FibGUodm9pZCk7 IAo+ID4gK2V4dGVybiBsb25nIG9zX3RpbWVyX3JlbWFpbih2b2lkKiB0aW1lcik7IAo+ID7CoCBl eHRlcm4gdm9pZCB1bWxfaWRsZV90aW1lcih2b2lkKTsgCj4gPiArZXh0ZXJuIGxvbmcgbG9uZyBv c19wZXJzaXN0ZW50X2Nsb2NrX2VtdWxhdGlvbih2b2lkKTsgCj4gPsKgIGV4dGVybiBsb25nIGxv bmcgb3NfbnNlY3Modm9pZCk7IAo+ID4gK2V4dGVybiBsb25nIGxvbmcgb3Nfdm5zZWNzKHZvaWQp OyAKPiA+wqAgCj4gPsKgIC8qIHNrYXMvbWVtLmMgKi8gCj4gPsKgIGV4dGVybiBsb25nIHJ1bl9z eXNjYWxsX3N0dWIoc3RydWN0IG1tX2lkICogbW1faWRwLCAKPiA+IGRpZmYgLS1naXQgYS9hcmNo L3VtL2luY2x1ZGUvc2hhcmVkL3NrYXMvc3R1Yi1kYXRhLmggYi9hcmNoL3VtL2luY2x1ZGUvc2hh cmVkL3NrYXMvc3R1Yi1kYXRhLmggCj4gPiBpbmRleCBmNmVkOTJjLi5lMDlkOGZkIDEwMDY0NCAK PiA+IC0tLSBhL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvc2thcy9zdHViLWRhdGEuaCAKPiA+ICsr KyBiL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvc2thcy9zdHViLWRhdGEuaCAKPiA+IEBAIC02LDEy ICs2LDExIEBAIAo+ID7CoCAjaWZuZGVmIF9fU1RVQl9EQVRBX0ggCj4gPsKgICNkZWZpbmUgX19T VFVCX0RBVEFfSCAKPiA+wqAgCj4gPiAtI2luY2x1ZGUgPHN5cy90aW1lLmg+IAo+ID4gKyNpbmNs dWRlIDx0aW1lLmg+IAo+ID7CoCAKPiA+wqAgc3RydWN0IHN0dWJfZGF0YSB7IAo+ID4gLSBsb25n IG9mZnNldDsgCj4gPiArIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OyAKPiA+wqAgaW50IGZkOyAKPiA+ IC0gc3RydWN0IGl0aW1lcnZhbCB0aW1lcjsgCj4gPsKgIGxvbmcgZXJyOyAKPiA+wqAgfTsgCj4g PsKgIAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvdGltZXItaW50ZXJu YWwuaCBiL2FyY2gvdW0vaW5jbHVkZS9zaGFyZWQvdGltZXItaW50ZXJuYWwuaCAKPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0IAo+ID4gaW5kZXggMDAwMDAwMC4uMDNlNmYyMSAKPiA+IC0tLSAvZGV2 L251bGwgCj4gPiArKysgYi9hcmNoL3VtL2luY2x1ZGUvc2hhcmVkL3RpbWVyLWludGVybmFsLmgg Cj4gPiBAQCAtMCwwICsxLDEzIEBAIAo+ID4gKy8qIAo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAx MiAtIDIwMTQgQ2lzY28gU3lzdGVtcyAKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMDAgLSAyMDA3 IEplZmYgRGlrZSAoamRpa2VAe2FkZHRvaXQsbGludXguaW50ZWx9LmNvbSkgCj4gPiArICogTGlj ZW5zZWQgdW5kZXIgdGhlIEdQTCAKPiA+ICsgKi8gCj4gPiArIAo+ID4gKyNpZm5kZWYgX19USU1F Ul9JTlRFUk5BTF9IX18gCj4gPiArI2RlZmluZSBfX1RJTUVSX0lOVEVSTkFMX0hfXyAKPiA+ICsg Cj4gPiArI2RlZmluZSBUSU1FUl9NVUxUSVBMSUVSIDI1NiAKPiA+ICsjZGVmaW5lIFRJTUVSX01J Tl9ERUxUQcKgIDUwMCAKPiA+ICsgCj4gPiArI2VuZGlmIAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gv dW0va2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvdW0va2VybmVsL3Byb2Nlc3MuYyAKPiA+IGluZGV4 IDY4YjkxMTkuLjJjZTM4YzEgMTAwNjQ0IAo+ID4gLS0tIGEvYXJjaC91bS9rZXJuZWwvcHJvY2Vz cy5jIAo+ID4gKysrIGIvYXJjaC91bS9rZXJuZWwvcHJvY2Vzcy5jIAo+ID4gQEAgLTI3LDYgKzI3 LDcgQEAgCj4gPsKgICNpbmNsdWRlIDxrZXJuX3V0aWwuaD4gCj4gPsKgICNpbmNsdWRlIDxvcy5o PiAKPiA+wqAgI2luY2x1ZGUgPHNrYXMuaD4gCj4gPiArI2luY2x1ZGUgPHRpbWVyLWludGVybmFs Lmg+IAo+ID7CoCAKPiA+wqAgLyogCj4gPsKgwqAgKiBUaGlzIGlzIGEgcGVyLWNwdSBhcnJheS7C oCBBIHByb2Nlc3NvciBvbmx5IG1vZGlmaWVzIGl0cyBlbnRyeSBhbmQgaXQgb25seSAKPiA+IEBA IC0yMDEsMTEgKzIwMiw4IEBAIHZvaWQgaW5pdGlhbF90aHJlYWRfY2Iodm9pZCAoKnByb2MpKHZv aWQgKiksIHZvaWQgKmFyZykgCj4gPsKgIAo+ID7CoCB2b2lkIGFyY2hfY3B1X2lkbGUodm9pZCkg Cj4gPsKgIHsgCj4gPiAtIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2VjczsgCj4gPiAtIAo+ID7CoCBj cHVfdGFza3NbY3VycmVudF90aHJlYWRfaW5mbygpLT5jcHVdLnBpZCA9IG9zX2dldHBpZCgpOyAK PiA+IC0gbnNlY3MgPSBkaXNhYmxlX3RpbWVyKCk7IAo+ID4gLSBpZGxlX3NsZWVwKG5zZWNzKTsg Cj4gPiArIG9zX2lkbGVfc2xlZXAoVU1fTlNFQ19QRVJfU0VDKTsgCj4gPsKgIGxvY2FsX2lycV9l bmFibGUoKTsgCj4gPsKgIH0gCj4gPsKgIAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvdW0va2VybmVs L3NrYXMvY2xvbmUuYyBiL2FyY2gvdW0va2VybmVsL3NrYXMvY2xvbmUuYyAKPiA+IGluZGV4IDI4 OTc3MWQuLjQ5ODE0OGIgMTAwNjQ0IAo+ID4gLS0tIGEvYXJjaC91bS9rZXJuZWwvc2thcy9jbG9u ZS5jIAo+ID4gKysrIGIvYXJjaC91bS9rZXJuZWwvc2thcy9jbG9uZS5jIAo+ID4gQEAgLTM1LDEx ICszNSw2IEBAIHN0dWJfY2xvbmVfaGFuZGxlcih2b2lkKSAKPiA+wqAgaWYgKGVycikgCj4gPsKg IGdvdG8gb3V0OyAKPiA+wqAgCj4gPiAtIGVyciA9IHN0dWJfc3lzY2FsbDMoX19OUl9zZXRpdGlt ZXIsIElUSU1FUl9WSVJUVUFMLCAKPiA+IC0gwqDCoMKgIChsb25nKSAmZGF0YS0+dGltZXIsIDAp OyAKPiA+IC0gaWYgKGVycikgCj4gPiAtIGdvdG8gb3V0OyAKPiA+IC0gCj4KPiBCeSByZW1vdmlu ZyB0aGlzIGNhbGwgZnJvbSBvdXIgY2xvbmUgc3R1YiwgeW91IGNoYW5nZSB0aGUgd2F5IGhvdyBT S0FTMCAKPiB3b3Jrcy4gUGxlYXNlIGV4cGxhaW4gd2h5IHRoaXMgaXMgbmVlZGVkLiAKClllcywg YmVmb3JlIHRoaXMgcGF0Y2ggZWFjaCB1c2Vyc3BhY2UgcHJvY2VzcyBoYXMgaXRzIG93biBpdGlt ZXIsIGFmdGVyIHRoaXMgcGF0Y2ggb25seSB0aGUgdW1sIHByb2Nlc3MgdGhhdCBydW5zIHRoZSBr ZXJuZWwgd2lsbCBnZXQgYSB0aW1lciB0aWNrLiBUaGUga2VybmVsIHdpbGwgdGhlbiBzaWduYWwg dGhlIGN1cnJlbnRseSBhY3RpdmUgdXNlcnNwYWNlIHRhc2sgYWJvdXQgdGhlIHRpbWUgZXZlbnQu Cgo+Cj4gPsKgIHJlbWFwX3N0YWNrKGRhdGEtPmZkLCBkYXRhLT5vZmZzZXQpOyAKPiA+wqAgZ290 byBkb25lOyAKPiA+wqAgCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvc2thcy9tbXUu YyBiL2FyY2gvdW0va2VybmVsL3NrYXMvbW11LmMgCj4gPiBpbmRleCBmZGExZGViLi40MmUyOTg4 IDEwMDY0NCAKPiA+IC0tLSBhL2FyY2gvdW0va2VybmVsL3NrYXMvbW11LmMgCj4gPiArKysgYi9h cmNoL3VtL2tlcm5lbC9za2FzL21tdS5jIAo+ID4gQEAgLTYxLDEwICs2MSwxMiBAQCBpbnQgaW5p dF9uZXdfY29udGV4dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tKSAKPiA+wqAgaWYgKGN1cnJlbnQtPm1tICE9IE5VTEwgJiYgY3VycmVudC0+bW0gIT0gJmlu aXRfbW0pIAo+ID7CoCBmcm9tX21tID0gJmN1cnJlbnQtPm1tLT5jb250ZXh0OyAKPiA+wqAgCj4g PiArIGJsb2NrX3NpZ25hbHMoKTsgCj4gPsKgIGlmIChmcm9tX21tKSAKPiA+wqAgdG9fbW0tPmlk LnUucGlkID0gY29weV9jb250ZXh0X3NrYXMwKHN0YWNrLCAKPiA+wqAgwqDCoMKgwqAgZnJvbV9t bS0+aWQudS5waWQpOyAKPiA+wqAgZWxzZSB0b19tbS0+aWQudS5waWQgPSBzdGFydF91c2Vyc3Bh Y2Uoc3RhY2spOyAKPiA+ICsgdW5ibG9ja19zaWduYWxzKCk7IAo+Cj4gV2h5IGRvIHdlIGhhdmUg dG8gYmxvY2sgc2lnbmFscyBoZXJlPyAKClRoZXJlIGlzIGEgc21hbGwgdGltZSB3aW5kb3csIHdo ZW4gYSB1c2Vyc3BhY2UgcHJvY2VzcyBmb3JrcyBpdHNlbGYgYW5kIGJlY2F1c2Ugb2YgdGhhdCBp cyBydW5uaW5nIGluIHRoZSBzdHViIGNvZGUuLi4gV2hlbiB0aGlzIHByb2Nlc3MgdGhlbiByZWNl aXZlcyBhIHRpbWVyIHNpZ25hbCBpdCBnZXRzIGNvbmZ1c2VkIGFuZCBlbmRzIHVwIGluIGEgbG9v cC4gU28gYSBxdWljayBmaXggd2FzIHRvIGRpc2FibGUgdGhlIHRpbWVyIGludGVycnVwdHMgd2hl biBwb3NzaWJseSBlbnRlcmluZyB0aGlzIHN0dWIgY29kZSBpbiB0aGUgdXNlcnNwYWNlIHByb2Nl c3MuCj4KPiA+wqAgaWYgKHRvX21tLT5pZC51LnBpZCA8IDApIHsgCj4gPsKgIHJldCA9IHRvX21t LT5pZC51LnBpZDsgCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvdGltZS5jIGIvYXJj aC91bS9rZXJuZWwvdGltZS5jIAo+ID4gaW5kZXggMTE3NTY4ZC4uMjlmMTEyNSAxMDA2NDQgCj4g PiAtLS0gYS9hcmNoL3VtL2tlcm5lbC90aW1lLmMgCj4gPiArKysgYi9hcmNoL3VtL2tlcm5lbC90 aW1lLmMgCj4gPiBAQCAtMSw0ICsxLDUgQEAgCj4gPsKgIC8qIAo+ID4gKyAqIENvcHlyaWdodCAo QykgMjAxMi0yMDE0IENpc2NvIFN5c3RlbXMgCj4gPsKgwqAgKiBDb3B5cmlnaHQgKEMpIDIwMDAg LSAyMDA3IEplZmYgRGlrZSAoamRpa2VAe2FkZHRvaXQsbGludXguaW50ZWx9LmNvbSkgCj4gPsKg wqAgKiBMaWNlbnNlZCB1bmRlciB0aGUgR1BMIAo+ID7CoMKgICovIAo+ID4gQEAgLTcsMTEgKzgs MTUgQEAgCj4gPsKgICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+IAo+ID7CoCAjaW5jbHVkZSA8bGlu dXgvaW50ZXJydXB0Lmg+IAo+ID7CoCAjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPiAKPiA+ICsj aW5jbHVkZSA8bGludXgvbW0uaD4gCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+IAo+ID4g KyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPiAKPiA+wqAgI2luY2x1ZGUgPGxpbnV4L3RocmVh ZHMuaD4gCj4gPsKgICNpbmNsdWRlIDxhc20vaXJxLmg+IAo+ID7CoCAjaW5jbHVkZSA8YXNtL3Bh cmFtLmg+IAo+ID7CoCAjaW5jbHVkZSA8a2Vybl91dGlsLmg+IAo+ID7CoCAjaW5jbHVkZSA8b3Mu aD4gCj4gPiArI2luY2x1ZGUgPHRpbWVyLWludGVybmFsLmg+IAo+ID7CoCAKPiA+wqAgdm9pZCB0 aW1lcl9oYW5kbGVyKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICp1bnVzZWRfc2ksIHN0cnVjdCB1 bWxfcHRfcmVncyAqcmVncykgCj4gPsKgIHsgCj4gPiBAQCAtMjIsMTggKzI3LDIwIEBAIHZvaWQg dGltZXJfaGFuZGxlcihpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqdW51c2VkX3NpLCBzdHJ1Y3Qg dW1sX3B0X3JlZ3MgKnJlZ3MpIAo+ID7CoCBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7IAo+ID7C oCB9IAo+ID7CoCAKPiA+IC1zdGF0aWMgdm9pZCBpdGltZXJfc2V0X21vZGUoZW51bSBjbG9ja19l dmVudF9tb2RlIG1vZGUsIAo+ID4gK3N0YXRpYyB2b2lkIHRpbWVyX3NldF9tb2RlKGVudW0gY2xv Y2tfZXZlbnRfbW9kZSBtb2RlLCAKPiA+wqAgwqDCoMKgIHN0cnVjdCBjbG9ja19ldmVudF9kZXZp Y2UgKmV2dCkgCj4gPsKgIHsgCj4gPsKgIHN3aXRjaCAobW9kZSkgeyAKPiA+wqAgY2FzZSBDTE9D S19FVlRfTU9ERV9QRVJJT0RJQzogCj4gPiAtIHNldF9pbnRlcnZhbCgpOyAKPiA+ICsgb3NfdGlt ZXJfc2V0X2ludGVydmFsKE5VTEwsIE5VTEwpOyAKPiA+wqAgYnJlYWs7IAo+ID7CoCAKPiA+ICsg Y2FzZSBDTE9DS19FVlRfTU9ERV9PTkVTSE9UOiAKPiA+ICsgb3NfdGltZXJfb25lX3Nob3QoMSk7 IAo+ID4gKyAKPiA+wqAgY2FzZSBDTE9DS19FVlRfTU9ERV9TSFVURE9XTjogCj4gPsKgIGNhc2Ug Q0xPQ0tfRVZUX01PREVfVU5VU0VEOiAKPiA+IC0gY2FzZSBDTE9DS19FVlRfTU9ERV9PTkVTSE9U OiAKPiA+IC0gZGlzYWJsZV90aW1lcigpOyAKPiA+ICsgb3NfdGltZXJfZGlzYWJsZSgpOyAKPiA+ wqAgYnJlYWs7IAo+ID7CoCAKPiA+wqAgY2FzZSBDTE9DS19FVlRfTU9ERV9SRVNVTUU6IAo+ID4g QEAgLTQxLDY4ICs0OCw3OSBAQCBzdGF0aWMgdm9pZCBpdGltZXJfc2V0X21vZGUoZW51bSBjbG9j a19ldmVudF9tb2RlIG1vZGUsIAo+ID7CoCB9IAo+ID7CoCB9IAo+ID7CoCAKPiA+IC1zdGF0aWMg aW50IGl0aW1lcl9uZXh0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZGVsdGEsIAo+ID4gK3N0YXRpYyBp bnQgdGltZXJfbmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGRlbHRhLCAKPiA+wqAgwqDCoMKgwqAg c3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KSAKPiA+wqAgeyAKPiA+IC0gcmV0dXJuIHRp bWVyX29uZV9zaG90KGRlbHRhICsgMSk7IAo+ID4gKyByZXR1cm4gb3NfdGltZXJfb25lX3Nob3Qo ZGVsdGEpOyAKPgo+IFdoeSBkaWQgeW91IHJlcGxhY2UgImRlbHRhICsgMSIgYnkgImRlbHRhIj8g CgpJIHRoaW5rIHRoaXMgY29tZXMgZnJvbSBBbnRvbidzIG9yaWdpbmFsIHBhdGNoIGFuZCBBRkFJ VSB3YXMgYSBoYWNrIHRvIGd1YXJhbnRlZSBwcm9ncmVzcyB3aXRoIHRoZSBpdGltZXIgYmFzZWQg c29sdXRpb24uClRoaXMgaGFjayBpcyBubyBsb25nZXIgbmVlZGVkIGFzIHRoZSBuZXcgUE9TSVgg aW50ZXJ2YWwgdGltZXIgYXJlIG1vbm90b25pYyBhbmQgZG8gYWx3YXlzIHByb2dyZXNzIGNvcnJl Y3RseSEKCj4KPgo+ID7CoCB9IAo+ID7CoCAKPiA+IC1zdGF0aWMgc3RydWN0IGNsb2NrX2V2ZW50 X2RldmljZSBpdGltZXJfY2xvY2tldmVudCA9IHsgCj4gPiAtIC5uYW1lID0gIml0aW1lciIsIAo+ ID4gK3N0YXRpYyBzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlIHRpbWVyX2Nsb2NrZXZlbnQgPSB7 IAo+ID4gKyAubmFtZSA9ICJwb3NpeC10aW1lciIsIAo+ID7CoCAucmF0aW5nID0gMjUwLCAKPiA+ wqAgLmNwdW1hc2sgPSBjcHVfYWxsX21hc2ssIAo+ID7CoCAuZmVhdHVyZXMgPSBDTE9DS19FVlRf RkVBVF9QRVJJT0RJQyB8IENMT0NLX0VWVF9GRUFUX09ORVNIT1QsIAo+ID4gLSAuc2V0X21vZGUg PSBpdGltZXJfc2V0X21vZGUsIAo+ID4gLSAuc2V0X25leHRfZXZlbnQgPSBpdGltZXJfbmV4dF9l dmVudCwgCj4gPiAtIC5zaGlmdCA9IDMyLCAKPiA+ICsgLnNldF9tb2RlID0gdGltZXJfc2V0X21v ZGUsIAo+ID4gKyAuc2V0X25leHRfZXZlbnQgPSB0aW1lcl9uZXh0X2V2ZW50LCAKPiA+ICsgLnNo aWZ0ID0gMCwgCj4gPiArIC5tYXhfZGVsdGFfbnMgPSAweGZmZmZmZmZmLCAKPiA+ICsgLm1pbl9k ZWx0YV9ucyA9IFRJTUVSX01JTl9ERUxUQSwgLy9taWNyb3NlY29uZCByZXNvbHV0aW9uIHNob3Vs ZCBiZSBlbm91Z2ggZm9yIGFueW9uZSwgc2FtZSBhcyA2NDBLIFJBTSAKPiA+wqAgLmlycSA9IDAs IAo+ID4gKyAubXVsdCA9IDEsIAo+ID7CoCB9OyAKPiA+wqAgCj4gPiAtc3RhdGljIGlycXJldHVy bl90IHVtX3RpbWVyKGludCBpcnEsIHZvaWQgKmRldikgCj4gPiArc3RhdGljIGlycXJldHVybl90 IHVtX3RpbWVyX2lycShpbnQgaXJxLCB2b2lkICpkZXYpIAo+ID7CoCB7IAo+ID4gLSAoKml0aW1l cl9jbG9ja2V2ZW50LmV2ZW50X2hhbmRsZXIpKCZpdGltZXJfY2xvY2tldmVudCk7IAo+ID4gKyBp ZiAoZ2V0X2N1cnJlbnQoKS0+bW0gIT0gTlVMTCkgCj4gPiArIHsgCj4gPiArIG9zX2FsYXJtX3By b2Nlc3MoZ2V0X2N1cnJlbnQoKS0+bW0tPmNvbnRleHQuaWQudS5waWQpOyAKPiA+ICsgfSAKPiA+ ICsgCj4gPiArICgqdGltZXJfY2xvY2tldmVudC5ldmVudF9oYW5kbGVyKSgmdGltZXJfY2xvY2tl dmVudCk7IAo+ID7CoCAKPiA+wqAgcmV0dXJuIElSUV9IQU5ETEVEOyAKPiA+wqAgfSAKPiA+wqAg Cj4gPiAtc3RhdGljIGN5Y2xlX3QgaXRpbWVyX3JlYWQoc3RydWN0IGNsb2Nrc291cmNlICpjcykg Cj4gPiArc3RhdGljIGN5Y2xlX3QgdGltZXJfcmVhZChzdHJ1Y3QgY2xvY2tzb3VyY2UgKmNzKSAK PiA+wqAgeyAKPiA+IC0gcmV0dXJuIG9zX25zZWNzKCkgLyAxMDAwOyAKPiA+ICsgcmV0dXJuIG9z X25zZWNzKCkgLyBUSU1FUl9NVUxUSVBMSUVSOyAKPiA+wqAgfSAKPiA+wqAgCj4gPiAtc3RhdGlj IHN0cnVjdCBjbG9ja3NvdXJjZSBpdGltZXJfY2xvY2tzb3VyY2UgPSB7IAo+ID4gLSAubmFtZSA9 ICJpdGltZXIiLCAKPiA+ICtzdGF0aWMgc3RydWN0IGNsb2Nrc291cmNlIHRpbWVyX2Nsb2Nrc291 cmNlID0geyAKPiA+ICsgLm5hbWUgPSAidGltZXIiLCAKPiA+wqAgLnJhdGluZyA9IDMwMCwgCj4g PiAtIC5yZWFkID0gaXRpbWVyX3JlYWQsIAo+ID4gKyAucmVhZCA9IHRpbWVyX3JlYWQsIAo+ID7C oCAubWFzayA9IENMT0NLU09VUkNFX01BU0soNjQpLCAKPiA+wqAgLmZsYWdzID0gQ0xPQ0tfU09V UkNFX0lTX0NPTlRJTlVPVVMsIAo+ID7CoCB9OyAKPiA+wqAgCj4gPiAtc3RhdGljIHZvaWQgX19p bml0IHNldHVwX2l0aW1lcih2b2lkKSAKPiA+ICtzdGF0aWMgdm9pZCBfX2luaXQgdGltZXJfc2V0 dXAodm9pZCkgCj4gPsKgIHsgCj4gPsKgIGludCBlcnI7IAo+ID7CoCAKPiA+IC0gZXJyID0gcmVx dWVzdF9pcnEoVElNRVJfSVJRLCB1bV90aW1lciwgMCwgInRpbWVyIiwgTlVMTCk7IAo+ID4gLSBp ZiAoZXJyICE9IDApIAo+ID4gKyBlcnIgPSByZXF1ZXN0X2lycShUSU1FUl9JUlEsIHVtX3RpbWVy X2lycSwgSVJRRl9USU1FUiwgImhyIHRpbWVyIiwgTlVMTCk7IAo+ID4gKyBpZiAoZXJyICE9IDAp IHsgCj4gPsKgIHByaW50ayhLRVJOX0VSUiAicmVnaXN0ZXJfdGltZXIgOiByZXF1ZXN0X2lycSBm YWlsZWQgLSAiIAo+ID7CoCDCoMKgwqDCoMKgwqAgImVycm5vID0gJWRcbiIsIC1lcnIpOyAKPiA+ ICsgcmV0dXJuOyAKPiA+ICvCoMKgwqAgfSAKPiA+ICsgCj4gPiArwqDCoMKgIGVyciA9IG9zX3Rp bWVyX2NyZWF0ZShOVUxMKTsgCj4gPiArwqDCoMKgIGlmIChlcnIgIT0gMCkgeyAKPiA+ICvCoMKg wqDCoMKgwqDCoCBwcmludGsoS0VSTl9FUlIgImNyZWF0aW9uIG9mIHRpbWVyIGZhaWxlZCAtIGVy cm5vID0gJWRcbiIsIC1lcnIpOyAKPiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47IAo+ID4gK8Kg wqDCoCB9IAo+ID7CoCAKPiA+IC0gaXRpbWVyX2Nsb2NrZXZlbnQubXVsdCA9IGRpdl9zYyhIWiwg TlNFQ19QRVJfU0VDLCAzMik7IAo+ID4gLSBpdGltZXJfY2xvY2tldmVudC5tYXhfZGVsdGFfbnMg PSAKPiA+IC0gY2xvY2tldmVudF9kZWx0YTJucyg2MCAqIEhaLCAmaXRpbWVyX2Nsb2NrZXZlbnQp OyAKPiA+IC0gaXRpbWVyX2Nsb2NrZXZlbnQubWluX2RlbHRhX25zID0gCj4gPiAtIGNsb2NrZXZl bnRfZGVsdGEybnMoMSwgJml0aW1lcl9jbG9ja2V2ZW50KTsgCj4gPiAtIGVyciA9IGNsb2Nrc291 cmNlX3JlZ2lzdGVyX2h6KCZpdGltZXJfY2xvY2tzb3VyY2UsIFVTRUNfUEVSX1NFQyk7IAo+ID4g KyBlcnIgPSBjbG9ja3NvdXJjZV9yZWdpc3Rlcl9oeigmdGltZXJfY2xvY2tzb3VyY2UsIE5TRUNf UEVSX1NFQy9USU1FUl9NVUxUSVBMSUVSKTsgCj4gPsKgIGlmIChlcnIpIHsgCj4gPsKgIHByaW50 ayhLRVJOX0VSUiAiY2xvY2tzb3VyY2VfcmVnaXN0ZXJfaHogcmV0dXJuZWQgJWRcbiIsIGVycik7 IAo+ID7CoCByZXR1cm47IAo+ID7CoCB9IAo+ID4gLSBjbG9ja2V2ZW50c19yZWdpc3Rlcl9kZXZp Y2UoJml0aW1lcl9jbG9ja2V2ZW50KTsgCj4gPiArIGNsb2NrZXZlbnRzX3JlZ2lzdGVyX2Rldmlj ZSgmdGltZXJfY2xvY2tldmVudCk7IAo+ID7CoCB9IAo+ID7CoCAKPiA+wqAgdm9pZCByZWFkX3Bl cnNpc3RlbnRfY2xvY2soc3RydWN0IHRpbWVzcGVjICp0cykgCj4gPsKgIHsgCj4gPiAtIGxvbmcg bG9uZyBuc2VjcyA9IG9zX25zZWNzKCk7IAo+ID4gKyBsb25nIGxvbmcgbnNlY3MgPSBvc19wZXJz aXN0ZW50X2Nsb2NrX2VtdWxhdGlvbigpOyAKPiA+wqAgCj4gPsKgIHNldF9ub3JtYWxpemVkX3Rp bWVzcGVjKHRzLCBuc2VjcyAvIE5TRUNfUEVSX1NFQywgCj4gPsKgIG5zZWNzICUgTlNFQ19QRVJf U0VDKTsgCj4gPiBAQCAtMTEwLDYgKzEyOCw2IEBAIHZvaWQgcmVhZF9wZXJzaXN0ZW50X2Nsb2Nr KHN0cnVjdCB0aW1lc3BlYyAqdHMpIAo+ID7CoCAKPiA+wqAgdm9pZCBfX2luaXQgdGltZV9pbml0 KHZvaWQpIAo+ID7CoCB7IAo+ID4gLSB0aW1lcl9pbml0KCk7IAo+ID4gLSBsYXRlX3RpbWVfaW5p dCA9IHNldHVwX2l0aW1lcjsgCj4gPiArIHRpbWVyX3NldF9zaWduYWxfaGFuZGxlcigpOyAKPiA+ ICsgbGF0ZV90aW1lX2luaXQgPSB0aW1lcl9zZXR1cDsgCj4gPsKgIH0gCj4gPiBkaWZmIC0tZ2l0 IGEvYXJjaC91bS9vcy1MaW51eC9pbnRlcm5hbC5oIGIvYXJjaC91bS9vcy1MaW51eC9pbnRlcm5h bC5oIAo+ID4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0IAo+ID4gaW5kZXggMGRjMmM5Zi4uMDAw MDAwMCAKPiA+IC0tLSBhL2FyY2gvdW0vb3MtTGludXgvaW50ZXJuYWwuaCAKPiA+ICsrKyAvZGV2 L251bGwgCj4gPiBAQCAtMSArMCwwIEBAIAo+ID4gLXZvaWQgYWxhcm1faGFuZGxlcihpbnQgc2ln LCBzdHJ1Y3Qgc2lnaW5mbyAqdW51c2VkX3NpLCBtY29udGV4dF90ICptYyk7IAo+ID4gZGlmZiAt LWdpdCBhL2FyY2gvdW0vb3MtTGludXgvbWFpbi5jIGIvYXJjaC91bS9vcy1MaW51eC9tYWluLmMg Cj4gPiBpbmRleCBkZjkxOTFhLi42ZTM2ZjBmIDEwMDY0NCAKPiA+IC0tLSBhL2FyY2gvdW0vb3Mt TGludXgvbWFpbi5jIAo+ID4gKysrIGIvYXJjaC91bS9vcy1MaW51eC9tYWluLmMgCj4gPiBAQCAt MTYzLDEzICsxNjMsMTMgQEAgaW50IF9faW5pdCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndiwg Y2hhciAqKmVudnApIAo+ID7CoCAKPiA+wqAgLyogCj4gPsKgICogVGhpcyBzaWduYWwgc3R1ZmYg dXNlZCB0byBiZSBpbiB0aGUgcmVib290IGNhc2UuwqAgSG93ZXZlciwgCj4gPiAtICogc29tZXRp bWVzIGEgU0lHVlRBTFJNIGNhbiBjb21lIGluIHdoZW4gd2UncmUgaGFsdGluZyAocmVwcm9kdWNh Ymx5IAo+ID4gKyAqIHNvbWV0aW1lcyBhIHRpbWVyIHNpZ25hbCBjYW4gY29tZSBpbiB3aGVuIHdl J3JlIGhhbHRpbmcgKHJlcHJvZHVjYWJseSAKPiA+wqAgKiB3aGVuIHdyaXRpbmcgb3V0IGdjb3Yg aW5mb3JtYXRpb24sIHByZXN1bWFibHkgYmVjYXVzZSB0aGF0IHRha2VzIAo+ID7CoCAqIHNvbWUg dGltZSkgYW5kIGNhdXNlIGEgc2VnZmF1bHQuIAo+ID7CoCAqLyAKPiA+wqAgCj4gPiAtIC8qIHN0 b3AgdGltZXJzIGFuZCBzZXQgU0lHVlRBTFJNIHRvIGJlIGlnbm9yZWQgKi8gCj4gPiAtIGRpc2Fi bGVfdGltZXIoKTsgCj4gPiArIC8qIHN0b3AgdGltZXJzIGFuZCBzZXQgdGltZXIgc2lnbmFsIHRv IGJlIGlnbm9yZWQgKi8gCj4gPiArIG9zX3RpbWVyX2Rpc2FibGUoKTsgCj4gPsKgIAo+ID7CoCAv KiBkaXNhYmxlIFNJR0lPIGZvciB0aGUgZmRzIGFuZCBzZXQgU0lHSU8gdG8gYmUgaWdub3JlZCAq LyAKPiA+wqAgZXJyID0gZGVhY3RpdmF0ZV9hbGxfZmRzKCk7IAo+ID4gZGlmZiAtLWdpdCBhL2Fy Y2gvdW0vb3MtTGludXgvcHJvY2Vzcy5jIGIvYXJjaC91bS9vcy1MaW51eC9wcm9jZXNzLmMgCj4g PiBpbmRleCA4NDA4YWJhLi5mM2JkOTgzIDEwMDY0NCAKPiA+IC0tLSBhL2FyY2gvdW0vb3MtTGlu dXgvcHJvY2Vzcy5jIAo+ID4gKysrIGIvYXJjaC91bS9vcy1MaW51eC9wcm9jZXNzLmMgCj4gPiBA QCAtODksNiArODksMTEgQEAgaW50IG9zX3Byb2Nlc3NfcGFyZW50KGludCBwaWQpIAo+ID7CoCBy ZXR1cm4gcGFyZW50OyAKPiA+wqAgfSAKPiA+wqAgCj4gPiArdm9pZCBvc19hbGFybV9wcm9jZXNz KGludCBwaWQpIAo+ID4gK3sgCj4gPiArIGtpbGwocGlkLCBTSUdBTFJNKTsgCj4gPiArfSAKPiA+ ICsgCj4gPsKgIHZvaWQgb3Nfc3RvcF9wcm9jZXNzKGludCBwaWQpIAo+ID7CoCB7IAo+ID7CoCBr aWxsKHBpZCwgU0lHU1RPUCk7IAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvdW0vb3MtTGludXgvc2ln bmFsLmMgYi9hcmNoL3VtL29zLUxpbnV4L3NpZ25hbC5jIAo+ID4gaW5kZXggMDM2ZDBkYi4uZTA0 YTRjZCAxMDA2NDQgCj4gPiAtLS0gYS9hcmNoL3VtL29zLUxpbnV4L3NpZ25hbC5jIAo+ID4gKysr IGIvYXJjaC91bS9vcy1MaW51eC9zaWduYWwuYyAKPiA+IEBAIC0xMyw3ICsxMyw2IEBAIAo+ID7C oCAjaW5jbHVkZSA8a2Vybl91dGlsLmg+IAo+ID7CoCAjaW5jbHVkZSA8b3MuaD4gCj4gPsKgICNp bmNsdWRlIDxzeXNkZXAvbWNvbnRleHQuaD4gCj4gPiAtI2luY2x1ZGUgImludGVybmFsLmgiIAo+ ID7CoCAKPiA+wqAgdm9pZCAoKnNpZ19pbmZvW05TSUddKShpbnQsIHN0cnVjdCBzaWdpbmZvICos IHN0cnVjdCB1bWxfcHRfcmVncyAqKSA9IHsgCj4gPsKgIFtTSUdUUkFQXSA9IHJlbGF5X3NpZ25h bCwgCj4gPiBAQCAtMjMsNyArMjIsOCBAQCB2b2lkICgqc2lnX2luZm9bTlNJR10pKGludCwgc3Ry dWN0IHNpZ2luZm8gKiwgc3RydWN0IHVtbF9wdF9yZWdzICopID0geyAKPiA+wqAgW1NJR0JVU10g PSBidXNfaGFuZGxlciwgCj4gPsKgIFtTSUdTRUdWXSA9IHNlZ3ZfaGFuZGxlciwgCj4gPsKgIFtT SUdJT10gPSBzaWdpb19oYW5kbGVyLCAKPiA+IC0gW1NJR1ZUQUxSTV0gPSB0aW1lcl9oYW5kbGVy IH07IAo+ID4gKyBbU0lHQUxSTV0gPSB0aW1lcl9oYW5kbGVyIAo+ID4gK307IAo+ID7CoCAKPiA+ wqAgc3RhdGljIHZvaWQgc2lnX2hhbmRsZXJfY29tbW9uKGludCBzaWcsIHN0cnVjdCBzaWdpbmZv ICpzaSwgbWNvbnRleHRfdCAqbWMpIAo+ID7CoCB7IAo+ID4gQEAgLTM4LDcgKzM4LDcgQEAgc3Rh dGljIHZvaWQgc2lnX2hhbmRsZXJfY29tbW9uKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICpzaSwg bWNvbnRleHRfdCAqbWMpIAo+ID7CoCB9IAo+ID7CoCAKPiA+wqAgLyogZW5hYmxlIHNpZ25hbHMg aWYgc2lnIGlzbid0IElSUSBzaWduYWwgKi8gCj4gPiAtIGlmICgoc2lnICE9IFNJR0lPKSAmJiAo c2lnICE9IFNJR1dJTkNIKSAmJiAoc2lnICE9IFNJR1ZUQUxSTSkpIAo+ID4gKyBpZiAoKHNpZyAh PSBTSUdJTykgJiYgKHNpZyAhPSBTSUdXSU5DSCkgJiYgKHNpZyAhPSBTSUdBTFJNKSkgCj4gPsKg IHVuYmxvY2tfc2lnbmFscygpOyAKPiA+wqAgCj4gPsKgICgqc2lnX2luZm9bc2lnXSkoc2lnLCBz aSwgJnIpOyAKPiA+IEBAIC01NSw4ICs1NSw4IEBAIHN0YXRpYyB2b2lkIHNpZ19oYW5kbGVyX2Nv bW1vbihpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqc2ksIG1jb250ZXh0X3QgKm1jKSAKPiA+wqAg I2RlZmluZSBTSUdJT19CSVQgMCAKPiA+wqAgI2RlZmluZSBTSUdJT19NQVNLICgxIDw8IFNJR0lP X0JJVCkgCj4gPsKgIAo+ID4gLSNkZWZpbmUgU0lHVlRBTFJNX0JJVCAxIAo+ID4gLSNkZWZpbmUg U0lHVlRBTFJNX01BU0sgKDEgPDwgU0lHVlRBTFJNX0JJVCkgCj4gPiArI2RlZmluZSBTSUdBTFJN X0JJVCAxIAo+ID4gKyNkZWZpbmUgU0lHQUxSTV9NQVNLICgxIDw8IFNJR0FMUk1fQklUKSAKPiA+ wqAgCj4gPsKgIHN0YXRpYyBpbnQgc2lnbmFsc19lbmFibGVkOyAKPiA+wqAgc3RhdGljIHVuc2ln bmVkIGludCBzaWduYWxzX3BlbmRpbmc7IAo+ID4gQEAgLTc4LDM2ICs3OCwzNCBAQCB2b2lkIHNp Z19oYW5kbGVyKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICpzaSwgbWNvbnRleHRfdCAqbWMpIAo+ ID7CoCBzZXRfc2lnbmFscyhlbmFibGVkKTsgCj4gPsKgIH0gCj4gPsKgIAo+ID4gLXN0YXRpYyB2 b2lkIHJlYWxfYWxhcm1faGFuZGxlcihtY29udGV4dF90ICptYykgCj4gPiArc3RhdGljIHZvaWQg dGltZXJfcmVhbF9hbGFybV9oYW5kbGVyKG1jb250ZXh0X3QgKm1jKSAKPiA+wqAgeyAKPiA+wqAg c3RydWN0IHVtbF9wdF9yZWdzIHJlZ3M7IAo+ID7CoCAKPiA+wqAgaWYgKG1jICE9IE5VTEwpIAo+ ID7CoCBnZXRfcmVnc19mcm9tX21jKCZyZWdzLCBtYyk7IAo+ID4gLSByZWdzLmlzX3VzZXIgPSAw OyAKPiA+IC0gdW5ibG9ja19zaWduYWxzKCk7IAo+ID4gLSB0aW1lcl9oYW5kbGVyKFNJR1ZUQUxS TSwgTlVMTCwgJnJlZ3MpOyAKPiA+ICsgdGltZXJfaGFuZGxlcihTSUdBTFJNLCBOVUxMLCAmcmVn cyk7IAo+ID7CoCB9IAo+ID7CoCAKPiA+IC12b2lkIGFsYXJtX2hhbmRsZXIoaW50IHNpZywgc3Ry dWN0IHNpZ2luZm8gKnVudXNlZF9zaSwgbWNvbnRleHRfdCAqbWMpIAo+ID4gK3ZvaWQgdGltZXJf YWxhcm1faGFuZGxlcihpbnQgc2lnLCBzdHJ1Y3Qgc2lnaW5mbyAqdW51c2VkX3NpLCBtY29udGV4 dF90ICptYykgCj4gPsKgIHsgCj4gPsKgIGludCBlbmFibGVkOyAKPiA+wqAgCj4gPsKgIGVuYWJs ZWQgPSBzaWduYWxzX2VuYWJsZWQ7IAo+ID7CoCBpZiAoIXNpZ25hbHNfZW5hYmxlZCkgeyAKPiA+ IC0gc2lnbmFsc19wZW5kaW5nIHw9IFNJR1ZUQUxSTV9NQVNLOyAKPiA+ICsgc2lnbmFsc19wZW5k aW5nIHw9IFNJR0FMUk1fTUFTSzsgCj4gPsKgIHJldHVybjsgCj4gPsKgIH0gCj4gPsKgIAo+ID7C oCBibG9ja19zaWduYWxzKCk7IAo+ID7CoCAKPiA+IC0gcmVhbF9hbGFybV9oYW5kbGVyKG1jKTsg Cj4gPiArIHRpbWVyX3JlYWxfYWxhcm1faGFuZGxlcihtYyk7IAo+ID7CoCBzZXRfc2lnbmFscyhl bmFibGVkKTsgCj4gPsKgIH0gCj4gPsKgIAo+ID4gLXZvaWQgdGltZXJfaW5pdCh2b2lkKSAKPiA+ ICt2b2lkIHRpbWVyX3NldF9zaWduYWxfaGFuZGxlcih2b2lkKSAKPiA+wqAgeyAKPiA+IC0gc2V0 X2hhbmRsZXIoU0lHVlRBTFJNKTsgCj4gPiArIHNldF9oYW5kbGVyKFNJR0FMUk0pOyAKPiA+wqAg fSAKPiA+wqAgCj4gPsKgIHZvaWQgc2V0X3NpZ3N0YWNrKHZvaWQgKnNpZ19zdGFjaywgaW50IHNp emUpIAo+ID4gQEAgLTEzMSwxMCArMTI5LDkgQEAgc3RhdGljIHZvaWQgKCpoYW5kbGVyc1tfTlNJ R10pKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICpzaSwgbWNvbnRleHRfdCAqbWMpID0geyAKPiA+ wqAgCj4gPsKgIFtTSUdJT10gPSBzaWdfaGFuZGxlciwgCj4gPsKgIFtTSUdXSU5DSF0gPSBzaWdf aGFuZGxlciwgCj4gPiAtIFtTSUdWVEFMUk1dID0gYWxhcm1faGFuZGxlciAKPiA+ICsgW1NJR0FM Uk1dID0gdGltZXJfYWxhcm1faGFuZGxlciAKPiA+wqAgfTsgCj4gPsKgIAo+ID4gLSAKPiA+wqAg c3RhdGljIHZvaWQgaGFyZF9oYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqc2ksIHZvaWQgKnAp IAo+ID7CoCB7IAo+ID7CoCBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcDsgCj4gPiBAQCAtMTg4LDkg KzE4NSw5IEBAIHZvaWQgc2V0X2hhbmRsZXIoaW50IHNpZykgCj4gPsKgIAo+ID7CoCAvKiBibG9j ayBpcnEgb25lcyAqLyAKPiA+wqAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsgCj4gPiAt IHNpZ2FkZHNldCgmYWN0aW9uLnNhX21hc2ssIFNJR1ZUQUxSTSk7IAo+ID7CoCBzaWdhZGRzZXQo JmFjdGlvbi5zYV9tYXNrLCBTSUdJTyk7IAo+ID7CoCBzaWdhZGRzZXQoJmFjdGlvbi5zYV9tYXNr LCBTSUdXSU5DSCk7IAo+ID4gKyBzaWdhZGRzZXQoJmFjdGlvbi5zYV9tYXNrLCBTSUdBTFJNKTsg Cj4gPsKgIAo+ID7CoCBpZiAoc2lnID09IFNJR1NFR1YpIAo+ID7CoCBmbGFncyB8PSBTQV9OT0RF RkVSOyAKPiA+IEBAIC0yODMsOCArMjgwLDggQEAgdm9pZCB1bmJsb2NrX3NpZ25hbHModm9pZCkg Cj4gPsKgIGlmIChzYXZlX3BlbmRpbmcgJiBTSUdJT19NQVNLKSAKPiA+wqAgc2lnX2hhbmRsZXJf Y29tbW9uKFNJR0lPLCBOVUxMLCBOVUxMKTsgCj4gPsKgIAo+ID4gLSBpZiAoc2F2ZV9wZW5kaW5n ICYgU0lHVlRBTFJNX01BU0spIAo+ID4gLSByZWFsX2FsYXJtX2hhbmRsZXIoTlVMTCk7IAo+ID4g KyBpZiAoc2F2ZV9wZW5kaW5nICYgU0lHQUxSTV9NQVNLKSAKPiA+ICsgdGltZXJfcmVhbF9hbGFy bV9oYW5kbGVyKE5VTEwpOyAKPiA+wqAgfSAKPiA+wqAgfSAKPiA+wqAgCj4gPiBkaWZmIC0tZ2l0 IGEvYXJjaC91bS9vcy1MaW51eC9za2FzL3Byb2Nlc3MuYyBiL2FyY2gvdW0vb3MtTGludXgvc2th cy9wcm9jZXNzLmMgCj4gPiBpbmRleCAzZGRkZWRiLi41YWU0NzUyIDEwMDY0NCAKPiA+IC0tLSBh L2FyY2gvdW0vb3MtTGludXgvc2thcy9wcm9jZXNzLmMgCj4gPiArKysgYi9hcmNoL3VtL29zLUxp bnV4L3NrYXMvcHJvY2Vzcy5jIAo+ID4gQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGludCBwdHJh Y2VfZHVtcF9yZWdzKGludCBwaWQpIAo+ID7CoMKgICogU2lnbmFscyB0aGF0IGFyZSBPSyB0byBy ZWNlaXZlIGluIHRoZSBzdHViIC0gd2UnbGwganVzdCBjb250aW51ZSBpdC4gCj4gPsKgwqAgKiBT SUdXSU5DSCB3aWxsIGhhcHBlbiB3aGVuIFVNTCBpcyBpbnNpZGUgYSBkZXRhY2hlZCBzY3JlZW4u IAo+ID7CoMKgICovIAo+ID4gLSNkZWZpbmUgU1RVQl9TSUdfTUFTSyAoKDEgPDwgU0lHVlRBTFJN KSB8ICgxIDw8IFNJR1dJTkNIKSkgCj4gPiArI2RlZmluZSBTVFVCX1NJR19NQVNLICgoMSA8PCBT SUdBTFJNKSB8ICgxIDw8IFNJR1dJTkNIKSkgCj4gPsKgIAo+ID7CoCAvKiBTaWduYWxzIHRoYXQg dGhlIHN0dWIgd2lsbCBmaW5pc2ggd2l0aCAtIGFueXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IgKi8g Cj4gPsKgICNkZWZpbmUgU1RVQl9ET05FX01BU0sgKDEgPDwgU0lHVFJBUCkgCj4gPiBAQCAtMTc5 LDE5ICsxNzksMTMgQEAgZXh0ZXJuIGNoYXIgX19zeXNjYWxsX3N0dWJfc3RhcnRbXTsgCj4gPsKg IHN0YXRpYyBpbnQgdXNlcnNwYWNlX3RyYW1wKHZvaWQgKnN0YWNrKSAKPiA+wqAgeyAKPiA+wqAg dm9pZCAqYWRkcjsgCj4gPiAtIGludCBlcnIsIGZkOyAKPiA+ICsgaW50IGZkOyAKPiA+wqAgdW5z aWduZWQgbG9uZyBsb25nIG9mZnNldDsgCj4gPsKgIAo+ID7CoCBwdHJhY2UoUFRSQUNFX1RSQUNF TUUsIDAsIDAsIDApOyAKPiA+wqAgCj4gPsKgIHNpZ25hbChTSUdURVJNLCBTSUdfREZMKTsgCj4g PsKgIHNpZ25hbChTSUdXSU5DSCwgU0lHX0lHTik7IAo+ID4gLSBlcnIgPSBzZXRfaW50ZXJ2YWwo KTsgCj4gPiAtIGlmIChlcnIpIHsgCj4gPiAtIHByaW50ayhVTV9LRVJOX0VSUiAidXNlcnNwYWNl X3RyYW1wIC0gc2V0dGluZyB0aW1lciBmYWlsZWQsICIgCj4gPiAtIMKgwqDCoMKgwqDCoCAiZXJy bm8gPSAlZFxuIiwgZXJyKTsgCj4gPiAtIGV4aXQoMSk7IAo+ID4gLSB9IAo+ID7CoCAKPiA+wqAg LyogCj4gPsKgICogVGhpcyBoYXMgYSBwdGUsIGJ1dCBpdCBjYW4ndCBiZSBtYXBwZWQgaW4gd2l0 aCB0aGUgdXN1YWwgCj4gPiBAQCAtMjgyLDcgKzI3Niw3IEBAIGludCBzdGFydF91c2Vyc3BhY2Uo dW5zaWduZWQgbG9uZyBzdHViX3N0YWNrKSAKPiA+wqAgwqDCoMKgwqDCoMKgICJlcnJubyA9ICVk XG4iLCBlcnJubyk7IAo+ID7CoCBnb3RvIG91dF9raWxsOyAKPiA+wqAgfSAKPiA+IC0gfSB3aGls ZSAoV0lGU1RPUFBFRChzdGF0dXMpICYmIChXU1RPUFNJRyhzdGF0dXMpID09IFNJR1ZUQUxSTSkp OyAKPiA+ICsgfSB3aGlsZSAoV0lGU1RPUFBFRChzdGF0dXMpICYmIChXU1RPUFNJRyhzdGF0dXMp ID09IFNJR0FMUk0pKTsgCj4gPsKgIAo+ID7CoCBpZiAoIVdJRlNUT1BQRUQoc3RhdHVzKSB8fCAo V1NUT1BTSUcoc3RhdHVzKSAhPSBTSUdTVE9QKSkgeyAKPiA+wqAgZXJyID0gLUVJTlZBTDsgCj4g PiBAQCAtMzE1LDggKzMwOSw2IEBAIGludCBzdGFydF91c2Vyc3BhY2UodW5zaWduZWQgbG9uZyBz dHViX3N0YWNrKSAKPiA+wqAgCj4gPsKgIHZvaWQgdXNlcnNwYWNlKHN0cnVjdCB1bWxfcHRfcmVn cyAqcmVncykgCj4gPsKgIHsgCj4gPiAtIHN0cnVjdCBpdGltZXJ2YWwgdGltZXI7IAo+ID4gLSB1 bnNpZ25lZCBsb25nIGxvbmcgbnNlY3MsIG5vdzsgCj4gPsKgIGludCBlcnIsIHN0YXR1cywgb3As IHBpZCA9IHVzZXJzcGFjZV9waWRbMF07IAo+ID7CoCAvKiBUbyBwcmV2ZW50IHJhY2VzIGlmIHVz aW5nX3N5c2VtdSBjaGFuZ2VzIHVuZGVyIHVzLiovIAo+ID7CoCBpbnQgbG9jYWxfdXNpbmdfc3lz ZW11OyAKPiA+IEBAIC0zMjUsMTMgKzMxNyw4IEBAIHZvaWQgdXNlcnNwYWNlKHN0cnVjdCB1bWxf cHRfcmVncyAqcmVncykgCj4gPsKgIC8qIEhhbmRsZSBhbnkgaW1tZWRpYXRlIHJlc2NoZWR1bGVz IG9yIHNpZ25hbHMgKi8gCj4gPsKgIGludGVycnVwdF9lbmQoKTsgCj4gPsKgIAo+ID4gLSBpZiAo Z2V0aXRpbWVyKElUSU1FUl9WSVJUVUFMLCAmdGltZXIpKSAKPiA+IC0gcHJpbnRrKFVNX0tFUk5f RVJSICJGYWlsZWQgdG8gZ2V0IGl0aW1lciwgZXJybm8gPSAlZFxuIiwgZXJybm8pOyAKPiA+IC0g bnNlY3MgPSB0aW1lci5pdF92YWx1ZS50dl9zZWMgKiBVTV9OU0VDX1BFUl9TRUMgKyAKPiA+IC0g dGltZXIuaXRfdmFsdWUudHZfdXNlYyAqIFVNX05TRUNfUEVSX1VTRUM7IAo+ID4gLSBuc2VjcyAr PSBvc19uc2VjcygpOyAKPiA+IC0gCj4gPsKgIHdoaWxlICgxKSB7IAo+ID4gKyAKPiA+wqAgLyog Cj4gPsKgICogVGhpcyBjYW4gbGVnaXRpbWF0ZWx5IGZhaWwgaWYgdGhlIHByb2Nlc3MgbG9hZHMg YSAKPiA+wqAgKiBib2d1cyB2YWx1ZSBpbnRvIGEgc2VnbWVudCByZWdpc3Rlci7CoCBJdCB3aWxs IAo+ID4gQEAgLTQwMSwxOCArMzg4LDcgQEAgdm9pZCB1c2Vyc3BhY2Uoc3RydWN0IHVtbF9wdF9y ZWdzICpyZWdzKSAKPiA+wqAgY2FzZSBTSUdUUkFQOiAKPiA+wqAgcmVsYXlfc2lnbmFsKFNJR1RS QVAsIChzdHJ1Y3Qgc2lnaW5mbyAqKSZzaSwgcmVncyk7IAo+ID7CoCBicmVhazsgCj4gPiAtIGNh c2UgU0lHVlRBTFJNOiAKPiA+IC0gbm93ID0gb3NfbnNlY3MoKTsgCj4gPiAtIGlmIChub3cgPCBu c2VjcykgCj4gPiAtIGJyZWFrOyAKPiA+IC0gYmxvY2tfc2lnbmFscygpOyAKPiA+IC0gKCpzaWdf aW5mb1tzaWddKShzaWcsIChzdHJ1Y3Qgc2lnaW5mbyAqKSZzaSwgcmVncyk7IAo+ID4gLSB1bmJs b2NrX3NpZ25hbHMoKTsgCj4gPiAtIG5zZWNzID0gdGltZXIuaXRfdmFsdWUudHZfc2VjICogCj4g PiAtIFVNX05TRUNfUEVSX1NFQyArIAo+ID4gLSB0aW1lci5pdF92YWx1ZS50dl91c2VjICogCj4g PiAtIFVNX05TRUNfUEVSX1VTRUM7IAo+ID4gLSBuc2VjcyArPSBvc19uc2VjcygpOyAKPiA+ICsg Y2FzZSBTSUdBTFJNOiAKPiA+wqAgYnJlYWs7IAo+ID7CoCBjYXNlIFNJR0lPOiAKPiA+wqAgY2Fz ZSBTSUdJTEw6IAo+ID4gQEAgLTQ2MCw3ICs0MzYsNiBAQCBfX2luaXRjYWxsKGluaXRfdGhyZWFk X3JlZ3MpOyAKPiA+wqAgCj4gPsKgIGludCBjb3B5X2NvbnRleHRfc2thczAodW5zaWduZWQgbG9u ZyBuZXdfc3RhY2ssIGludCBwaWQpIAo+ID7CoCB7IAo+ID4gLSBzdHJ1Y3QgdGltZXZhbCB0diA9 IHsgLnR2X3NlYyA9IDAsIC50dl91c2VjID0gVU1fVVNFQ19QRVJfU0VDIC8gVU1fSFogfTsgCj4g PsKgIGludCBlcnI7IAo+ID7CoCB1bnNpZ25lZCBsb25nIGN1cnJlbnRfc3RhY2sgPSBjdXJyZW50 X3N0dWJfc3RhY2soKTsgCj4gPsKgIHN0cnVjdCBzdHViX2RhdGEgKmRhdGEgPSAoc3RydWN0IHN0 dWJfZGF0YSAqKSBjdXJyZW50X3N0YWNrOyAKPiA+IEBAIC00NzIsMTEgKzQ0NywxMCBAQCBpbnQg Y29weV9jb250ZXh0X3NrYXMwKHVuc2lnbmVkIGxvbmcgbmV3X3N0YWNrLCBpbnQgcGlkKSAKPiA+ wqAgKiBwcmVwYXJlIG9mZnNldCBhbmQgZmQgb2YgY2hpbGQncyBzdGFjayBhcyBhcmd1bWVudCBm b3IgcGFyZW50J3MgCj4gPsKgICogYW5kIGNoaWxkJ3MgbW1hcDIgY2FsbHMgCj4gPsKgICovIAo+ ID4gLSAqZGF0YSA9ICgoc3RydWN0IHN0dWJfZGF0YSkgeyAub2Zmc2V0ID0gTU1BUF9PRkZTRVQo bmV3X29mZnNldCksIAo+ID4gLSDCoMKgwqDCoMKgIC5mZCA9IG5ld19mZCwgCj4gPiAtIMKgwqDC oMKgwqAgLnRpbWVywqDCoMKgID0gKChzdHJ1Y3QgaXRpbWVydmFsKSAKPiA+IC0gwqDCoMKgwqDC oMKgwqDCoMKgwqAgeyAuaXRfdmFsdWUgPSB0diwgCj4gPiAtIMKgwqDCoMKgIC5pdF9pbnRlcnZh bCA9IHR2IH0pIH0pOyAKPiA+ICsgKmRhdGEgPSAoKHN0cnVjdCBzdHViX2RhdGEpIHsgCj4gPiAr IC5vZmZzZXQgPSBNTUFQX09GRlNFVChuZXdfb2Zmc2V0KSwgCj4gPiArIC5mZMKgwqDCoMKgID0g bmV3X2ZkIAo+ID4gKyB9KTsgCj4KPiBBcyB3cml0dGVuIGFib3ZlLCB5b3UgY2hhbmdlIHRoZSB3 YXkgaG93IFNLQVMwIHdvcmtzLCB0aGlzIG5lZWRzIAo+IG11Y2ggbW9yZSBleHBsYWluYXRpb24u IAoKWWVzLCBva2F5LiBTZWUgYWJvdmUuIFRoZSB1c2Vyc3BhY2Ugc3R1YiBjb2RlIG5vIGxvbmdl ciBnZW5lcmF0ZXMgYW4gaXRpbWVyLCBzbyBubyB0aW1lciBpbmZvcm1hdGlvbiBuZWVkcyB0byBi ZSBwYXNzZWQgaGVyZS4KCj4KPiA+wqAgZXJyID0gcHRyYWNlX3NldHJlZ3MocGlkLCB0aHJlYWRf cmVncyk7IAo+ID7CoCBpZiAoZXJyIDwgMCkgeyAKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3VtL29z LUxpbnV4L3RpbWUuYyBiL2FyY2gvdW0vb3MtTGludXgvdGltZS5jIAo+ID4gaW5kZXggZTk4MjRk NS4uMGUyYmI3ZCAxMDA2NDQgCj4gPiAtLS0gYS9hcmNoL3VtL29zLUxpbnV4L3RpbWUuYyAKPiA+ ICsrKyBiL2FyY2gvdW0vb3MtTGludXgvdGltZS5jIAo+ID4gQEAgLTEsNCArMSw1IEBAIAo+ID7C oCAvKiAKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBDaXNjbyBTeXN0ZW1zIAo+ID7C oMKgICogQ29weXJpZ2h0IChDKSAyMDAwIC0gMjAwNyBKZWZmIERpa2UgKGpkaWtle2FkZHRvaXQs bGludXguaW50ZWx9LmNvbSkgCj4gPsKgwqAgKiBMaWNlbnNlZCB1bmRlciB0aGUgR1BMIAo+ID7C oMKgICovIAo+ID4gQEAgLTEwLDE3NyArMTEsMTcyIEBAIAo+ID7CoCAjaW5jbHVkZSA8c3lzL3Rp bWUuaD4gCj4gPsKgICNpbmNsdWRlIDxrZXJuX3V0aWwuaD4gCj4gPsKgICNpbmNsdWRlIDxvcy5o PiAKPiA+IC0jaW5jbHVkZSAiaW50ZXJuYWwuaCIgCj4gPiArI2luY2x1ZGUgPHN0cmluZy5oPiAK PiA+ICsjaW5jbHVkZSA8dGltZXItaW50ZXJuYWwuaD4gCj4gPsKgIAo+ID4gLWludCBzZXRfaW50 ZXJ2YWwodm9pZCkgCj4gPiAteyAKPiA+IC0gaW50IHVzZWMgPSBVTV9VU0VDX1BFUl9TRUMgLyBV TV9IWjsgCj4gPiAtIHN0cnVjdCBpdGltZXJ2YWwgaW50ZXJ2YWwgPSAoKHN0cnVjdCBpdGltZXJ2 YWwpIHsgeyAwLCB1c2VjIH0sIAo+ID4gLSDCoCB7IDAsIHVzZWMgfSB9KTsgCj4gPiAtIAo+ID4g LSBpZiAoc2V0aXRpbWVyKElUSU1FUl9WSVJUVUFMLCAmaW50ZXJ2YWwsIE5VTEwpID09IC0xKSAK PiA+IC0gcmV0dXJuIC1lcnJubzsgCj4gPiArc3RhdGljIHRpbWVyX3QgZXZlbnRfaGlnaF9yZXNf dGltZXIgPSAwOyAKPiA+wqAgCj4gPiAtIHJldHVybiAwOyAKPiA+ICtzdGF0aWMgaW5saW5lIGxv bmcgbG9uZyB0aW1ldmFsX3RvX25zKGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0dikgCj4gPiAreyAK PiA+ICsgcmV0dXJuICgobG9uZyBsb25nKSB0di0+dHZfc2VjICogVU1fTlNFQ19QRVJfU0VDKSAr IAo+ID4gKyB0di0+dHZfdXNlYyAqIFVNX05TRUNfUEVSX1VTRUM7IAo+ID7CoCB9IAo+ID7CoCAK PiA+IC1pbnQgdGltZXJfb25lX3Nob3QoaW50IHRpY2tzKSAKPiA+ICtzdGF0aWMgaW5saW5lIGxv bmcgbG9uZyB0aW1lc3BlY190b19ucyhjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRzKSAKPiA+wqAg eyAKPiA+IC0gdW5zaWduZWQgbG9uZyB1c2VjID0gdGlja3MgKiBVTV9VU0VDX1BFUl9TRUMgLyBV TV9IWjsgCj4gPiAtIHVuc2lnbmVkIGxvbmcgc2VjID0gdXNlYyAvIFVNX1VTRUNfUEVSX1NFQzsg Cj4gPiAtIHN0cnVjdCBpdGltZXJ2YWwgaW50ZXJ2YWw7IAo+ID4gLSAKPiA+IC0gdXNlYyAlPSBV TV9VU0VDX1BFUl9TRUM7IAo+ID4gLSBpbnRlcnZhbCA9ICgoc3RydWN0IGl0aW1lcnZhbCkgeyB7 IDAsIDAgfSwgeyBzZWMsIHVzZWMgfSB9KTsgCj4gPiArIHJldHVybiAoKGxvbmcgbG9uZykgdHMt PnR2X3NlYyAqIFVNX05TRUNfUEVSX1NFQykgKyAKPiA+ICsgdHMtPnR2X25zZWM7IAo+ID4gK30g Cj4gPsKgIAo+ID4gLSBpZiAoc2V0aXRpbWVyKElUSU1FUl9WSVJUVUFMLCAmaW50ZXJ2YWwsIE5V TEwpID09IC0xKSAKPiA+IC0gcmV0dXJuIC1lcnJubzsgCj4gPiArbG9uZyBsb25nIG9zX3BlcnNp c3RlbnRfY2xvY2tfZW11bGF0aW9uICh2b2lkKSB7IAo+ID4gKyBzdHJ1Y3QgdGltZXNwZWMgcmVh bHRpbWVfdHA7IAo+ID7CoCAKPiA+IC0gcmV0dXJuIDA7IAo+ID4gKyBjbG9ja19nZXR0aW1lKENM T0NLX1JFQUxUSU1FLCAmcmVhbHRpbWVfdHApOyAKPiA+ICsgcmV0dXJuIHRpbWVzcGVjX3RvX25z KCZyZWFsdGltZV90cCk7IAo+ID7CoCB9IAo+ID7CoCAKPiA+wqAgLyoqIAo+ID4gLSAqIHRpbWV2 YWxfdG9fbnMgLSBDb252ZXJ0IHRpbWV2YWwgdG8gbmFub3NlY29uZHMgCj4gPiAtICogQHRzOiBw b2ludGVyIHRvIHRoZSB0aW1ldmFsIHZhcmlhYmxlIHRvIGJlIGNvbnZlcnRlZCAKPiA+IC0gKiAK PiA+IC0gKiBSZXR1cm5zIHRoZSBzY2FsYXIgbmFub3NlY29uZCByZXByZXNlbnRhdGlvbiBvZiB0 aGUgdGltZXZhbCAKPiA+IC0gKiBwYXJhbWV0ZXIuIAo+ID4gLSAqIAo+ID4gLSAqIFJpcHBlZCBm cm9tIGxpbnV4L3RpbWUuaCBiZWNhdXNlIGl0J3MgYSBrZXJuZWwgaGVhZGVyLCBhbmQgdGh1cyAK PiA+IC0gKiB1bnVzYWJsZSBmcm9tIGhlcmUuIAo+ID4gKyAqIG9zX3RpbWVyX2NyZWF0ZSgpIC0g Y3JlYXRlIGFuIG5ldyBwb3NpeCAoaW50ZXJ2YWwpIHRpbWVyIAo+ID7CoMKgICovIAo+ID4gLXN0 YXRpYyBpbmxpbmUgbG9uZyBsb25nIHRpbWV2YWxfdG9fbnMoY29uc3Qgc3RydWN0IHRpbWV2YWwg KnR2KSAKPiA+IC17IAo+ID4gLSByZXR1cm4gKChsb25nIGxvbmcpIHR2LT50dl9zZWMgKiBVTV9O U0VDX1BFUl9TRUMpICsgCj4gPiAtIHR2LT50dl91c2VjICogVU1fTlNFQ19QRVJfVVNFQzsgCj4g PiAraW50IG9zX3RpbWVyX2NyZWF0ZSh2b2lkKiB0aW1lcikgeyAKPiA+ICsgCj4gPiArIHRpbWVy X3QqIHQgPSB0aW1lcjsgCj4gPiArIAo+ID4gKyBpZih0ID09IE5VTEwpIHsgCj4gPiArIHQgPSAm ZXZlbnRfaGlnaF9yZXNfdGltZXI7IAo+ID4gKyB9IAo+ID4gKyAKPiA+ICsgaWYgKHRpbWVyX2Ny ZWF0ZSggCj4gPiArIENMT0NLX01PTk9UT05JQywgCj4gPiArIE5VTEwsIAo+ID4gKyB0KSA9PSAt MSkgeyAKPiA+ICsgcmV0dXJuIC0xOyAKPiA+ICsgfSAKPiA+ICsgcmV0dXJuIDA7IAo+ID7CoCB9 IAo+ID7CoCAKPiA+IC1sb25nIGxvbmcgZGlzYWJsZV90aW1lcih2b2lkKSAKPiA+ICtpbnQgb3Nf dGltZXJfc2V0X2ludGVydmFsKHZvaWQqIHRpbWVyLCB2b2lkKiBpKSAKPiA+wqAgeyAKPiA+IC0g c3RydWN0IGl0aW1lcnZhbCB0aW1lID0gKChzdHJ1Y3QgaXRpbWVydmFsKSB7IHsgMCwgMCB9LCB7 IDAsIDAgfSB9KTsgCj4gPiAtIGxvbmcgbG9uZyByZW1haW4sIG1heCA9IFVNX05TRUNfUEVSX1NF QyAvIFVNX0haOyAKPiA+ICsgc3RydWN0IGl0aW1lcnNwZWMgaXRzOyAKPiA+ICsgdW5zaWduZWQg bG9uZyBsb25nIG5zZWM7IAo+ID4gKyB0aW1lcl90KiB0ID0gdGltZXI7IAo+ID4gKyBzdHJ1Y3Qg aXRpbWVyc3BlYyogaXRzX2luID0gaTsgCj4gPsKgIAo+ID4gLSBpZiAoc2V0aXRpbWVyKElUSU1F Ul9WSVJUVUFMLCAmdGltZSwgJnRpbWUpIDwgMCkgCj4gPiAtIHByaW50ayhVTV9LRVJOX0VSUiAi ZGlzYWJsZV90aW1lciAtIHNldGl0aW1lciBmYWlsZWQsICIgCj4gPiAtIMKgwqDCoMKgwqDCoCAi ZXJybm8gPSAlZFxuIiwgZXJybm8pOyAKPiA+ICsgaWYodCA9PSBOVUxMKSB7IAo+ID4gKyB0ID0g JmV2ZW50X2hpZ2hfcmVzX3RpbWVyOyAKPiA+ICsgfSAKPiA+wqAgCj4gPiAtIHJlbWFpbiA9IHRp bWV2YWxfdG9fbnMoJnRpbWUuaXRfdmFsdWUpOyAKPiA+IC0gaWYgKHJlbWFpbiA+IG1heCkgCj4g PiAtIHJlbWFpbiA9IG1heDsgCj4gPiArIG5zZWMgPSBVTV9OU0VDX1BFUl9TRUMgLyBVTV9IWjsg Cj4gPsKgIAo+ID4gLSByZXR1cm4gcmVtYWluOyAKPiA+IC19IAo+ID4gKyBpZihpdHNfaW4gIT0g TlVMTCkgeyAKPiA+ICsgaXRzLml0X3ZhbHVlLnR2X3NlYyA9IGl0c19pbi0+aXRfdmFsdWUudHZf c2VjOyAKPiA+ICsgaXRzLml0X3ZhbHVlLnR2X25zZWMgPSBpdHNfaW4tPml0X3ZhbHVlLnR2X25z ZWM7IAo+ID4gKyB9IGVsc2UgeyAKPiA+ICsgaXRzLml0X3ZhbHVlLnR2X3NlYyA9IDA7IAo+ID4g KyBpdHMuaXRfdmFsdWUudHZfbnNlYyA9IG5zZWM7IAo+ID4gKyB9IAo+ID7CoCAKPiA+IC1sb25n IGxvbmcgb3NfbnNlY3Modm9pZCkgCj4gPiAteyAKPiA+IC0gc3RydWN0IHRpbWV2YWwgdHY7IAo+ ID4gKyBpdHMuaXRfaW50ZXJ2YWwudHZfc2VjID0gMDsgCj4gPiArIGl0cy5pdF9pbnRlcnZhbC50 dl9uc2VjID0gbnNlYzsgCj4gPsKgIAo+ID4gLSBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsgCj4g PiAtIHJldHVybiB0aW1ldmFsX3RvX25zKCZ0dik7IAo+ID4gLX0gCj4gPiArIGlmKHRpbWVyX3Nl dHRpbWUoKnQsIDAsICZpdHMsIE5VTEwpID09IC0xKSB7IAo+ID4gKyByZXR1cm4gLWVycm5vOyAK PiA+ICsgfSAKPiA+wqAgCj4gPiAtI2lmZGVmIFVNTF9DT05GSUdfTk9fSFpfQ09NTU9OIAo+ID4g LXN0YXRpYyBpbnQgYWZ0ZXJfc2xlZXBfaW50ZXJ2YWwoc3RydWN0IHRpbWVzcGVjICp0cykgCj4g PiAteyAKPiA+wqAgcmV0dXJuIDA7IAo+ID7CoCB9IAo+ID7CoCAKPiA+IC1zdGF0aWMgdm9pZCBk ZWxpdmVyX2FsYXJtKHZvaWQpIAo+ID4gKy8qKiAKPiA+ICsgKiBvc190aW1lcl9yZW1haW4oKSAt IHJldHVybnMgdGhlIHJlbWFpbmluZyBuYW5vIHNlY29uZHMgb2YgdGhlIGdpdmVuIGludGVydmFs IAo+ID4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aW1lciAK PiA+ICsgKiBCZWNhdXNlIHRoaXMgaXMgdGhlIHJlbWFpbmluZyB0aW1lIG9mIGFuIGludGVydmFs IHRpbWVyLCB3aGljaCBjb3JyZXNwb25kZW5kcyAKPiA+ICsgKiB0byBIWiwgdGhpcyB2YWx1ZSBj YW4gbmV2ZXIgYmUgYmlnZ2VyIHRoYW4gb25lIHNlY29uZC4gSnVzdCAKPiA+ICsgKiB0aGUgbmFu b3NlY29uZCBwYXJ0IG9mIHRoZSB0aW1lciBpcyByZXR1cm5lZC4gCj4gPiArICogVGhlIHJldHVy bmVkIHRpbWUgaXMgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHRpbWUgb2YgdGhlIGludGVydmFsIHRp bWVyLiAKPiA+ICsgKiBSZXR1cm4gYW4gbmVnYXRpdmUgdmFsdWUgaW4gYW4gZXJyb3IgY2FzZS4g Cj4gPiArICovIAo+ID4gK2xvbmcgb3NfdGltZXJfcmVtYWluKHZvaWQqIHRpbWVyKSAKPiA+wqAg eyAKPiA+IC0gYWxhcm1faGFuZGxlcihTSUdWVEFMUk0sIE5VTEwsIE5VTEwpOyAKPiA+IC19IAo+ ID4gKyBzdHJ1Y3QgaXRpbWVyc3BlYyBpdHM7IAo+ID4gKyB0aW1lcl90KiB0ID0gdGltZXI7IAo+ ID7CoCAKPiA+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHNsZWVwX3RpbWUodW5zaWduZWQg bG9uZyBsb25nIG5zZWNzKSAKPiA+IC17IAo+ID4gLSByZXR1cm4gbnNlY3M7IAo+ID4gLX0gCj4g PiArIGlmKHQgPT0gTlVMTCkgeyAKPiA+ICsgdCA9ICZldmVudF9oaWdoX3Jlc190aW1lcjsgCj4g PiArIH0gCj4gPsKgIAo+ID4gLSNlbHNlIAo+ID4gLXVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0X3Rp Y2s7IAo+ID4gLXVuc2lnbmVkIGxvbmcgbG9uZyBza2V3OyAKPiA+ICsgaWYodGltZXJfZ2V0dGlt ZSh0LCAmaXRzKSA9PSAtMSkgeyAKPiA+ICsgcmV0dXJuIC1lcnJubzsgCj4gPiArIH0gCj4gPiAr IAo+ID4gKyByZXR1cm4gaXRzLml0X3ZhbHVlLnR2X25zZWM7IAo+ID4gK30gCj4gPsKgIAo+ID4g LXN0YXRpYyB2b2lkIGRlbGl2ZXJfYWxhcm0odm9pZCkgCj4gPiAraW50IG9zX3RpbWVyX29uZV9z aG90KGludCB0aWNrcykgCj4gPsKgIHsgCj4gPiAtIHVuc2lnbmVkIGxvbmcgbG9uZyB0aGlzX3Rp Y2sgPSBvc19uc2VjcygpOyAKPiA+IC0gaW50IG9uZV90aWNrID0gVU1fTlNFQ19QRVJfU0VDIC8g VU1fSFo7IAo+ID4gKyBzdHJ1Y3QgaXRpbWVyc3BlYyBpdHM7IAo+ID4gKyB1bnNpZ25lZCBsb25n IGxvbmcgbnNlYzsgCj4gPiArIHVuc2lnbmVkIGxvbmcgc2VjOyAKPiA+wqAgCj4gPiAtIC8qIFBy b3RlY3Rpb24gYWdhaW5zdCB0aGUgaG9zdCdzIHRpbWUgZ29pbmcgYmFja3dhcmRzICovIAo+ID4g LSBpZiAoKGxhc3RfdGljayAhPSAwKSAmJiAodGhpc190aWNrIDwgbGFzdF90aWNrKSkgCj4gPiAt IHRoaXNfdGljayA9IGxhc3RfdGljazsgCj4gPiArwqDCoMKgIG5zZWMgPSAodGlja3MgKyAxKTsg Cj4gPiArwqDCoMKgIHNlYyA9IG5zZWMgLyBVTV9OU0VDX1BFUl9TRUM7IAo+ID4gKyBuc2VjID0g bnNlYyAlIFVNX05TRUNfUEVSX1NFQzsgCj4gPsKgIAo+ID4gLSBpZiAobGFzdF90aWNrID09IDAp IAo+ID4gLSBsYXN0X3RpY2sgPSB0aGlzX3RpY2sgLSBvbmVfdGljazsgCj4gPiArIGl0cy5pdF92 YWx1ZS50dl9zZWMgPSBuc2VjIC8gVU1fTlNFQ19QRVJfU0VDOyAKPiA+ICsgaXRzLml0X3ZhbHVl LnR2X25zZWMgPSBuc2VjOyAKPiA+wqAgCj4gPiAtIHNrZXcgKz0gdGhpc190aWNrIC0gbGFzdF90 aWNrOyAKPiA+ICsgaXRzLml0X2ludGVydmFsLnR2X3NlYyA9IDA7IAo+ID4gKyBpdHMuaXRfaW50 ZXJ2YWwudHZfbnNlYyA9IDA7IC8vIHdlIGNoZWF0IGhlcmUgCj4gPsKgIAo+ID4gLSB3aGlsZSAo c2tldyA+PSBvbmVfdGljaykgeyAKPiA+IC0gYWxhcm1faGFuZGxlcihTSUdWVEFMUk0sIE5VTEws IE5VTEwpOyAKPiA+IC0gc2tldyAtPSBvbmVfdGljazsgCj4gPiAtIH0gCj4gPiAtIAo+ID4gLSBs YXN0X3RpY2sgPSB0aGlzX3RpY2s7IAo+ID4gKyB0aW1lcl9zZXR0aW1lKGV2ZW50X2hpZ2hfcmVz X3RpbWVyLCAwLCAmaXRzLCBOVUxMKTsgCj4gPiArIHJldHVybiAwOyAKPiA+wqAgfSAKPiA+wqAg Cj4gPiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBzbGVlcF90aW1lKHVuc2lnbmVkIGxvbmcg bG9uZyBuc2VjcykgCj4gPiArLyoqIAo+ID4gKyAqIG9zX3RpbWVyX2Rpc2FibGUoKSAtIGRpc2Fi bGUgdGhlIHBvc2l4IChpbnRlcnZhbCkgdGltZXIgCj4gPiArICogUmV0dXJucyB0aGUgcmVtYWlu aW5nIGludGVydmFsIHRpbWVyIHRpbWUgaW4gbmFub3NlY29uZHMgCj4gPiArICovIAo+ID4gK2xv bmcgbG9uZyBvc190aW1lcl9kaXNhYmxlKHZvaWQpIAo+ID7CoCB7IAo+ID4gLSByZXR1cm4gbnNl Y3MgPiBza2V3ID8gbnNlY3MgLSBza2V3IDogMDsgCj4gPiArIHN0cnVjdCBpdGltZXJzcGVjIGl0 czsgCj4gPiArIAo+ID4gKyBtZW1zZXQoJml0cywgMCwgc2l6ZW9mKHN0cnVjdCBpdGltZXJzcGVj KSk7IAo+ID4gKyB0aW1lcl9zZXR0aW1lKGV2ZW50X2hpZ2hfcmVzX3RpbWVyLCAwLCAmaXRzLCAm aXRzKTsgCj4gPiArIAo+ID4gKyByZXR1cm4gaXRzLml0X3ZhbHVlLnR2X3NlYyAqIFVNX05TRUNf UEVSX1NFQyArIGl0cy5pdF92YWx1ZS50dl9uc2VjOyAKPiA+wqAgfSAKPiA+wqAgCj4gPiAtc3Rh dGljIGlubGluZSBsb25nIGxvbmcgdGltZXNwZWNfdG9fdXMoY29uc3Qgc3RydWN0IHRpbWVzcGVj ICp0cykgCj4gPiArbG9uZyBsb25nIG9zX3Zuc2Vjcyh2b2lkKSAKPiA+wqAgeyAKPiA+IC0gcmV0 dXJuICgobG9uZyBsb25nKSB0cy0+dHZfc2VjICogVU1fVVNFQ19QRVJfU0VDKSArIAo+ID4gLSB0 cy0+dHZfbnNlYyAvIFVNX05TRUNfUEVSX1VTRUM7IAo+ID4gKyBzdHJ1Y3QgdGltZXNwZWMgdHM7 IAo+ID4gKyAKPiA+ICsgY2xvY2tfZ2V0dGltZShDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQsJnRz KTsgCj4gPiArIHJldHVybiB0aW1lc3BlY190b19ucygmdHMpOyAKPiA+wqAgfSAKPiA+wqAgCj4g PiAtc3RhdGljIGludCBhZnRlcl9zbGVlcF9pbnRlcnZhbChzdHJ1Y3QgdGltZXNwZWMgKnRzKSAK PiA+ICtsb25nIGxvbmcgb3NfbnNlY3Modm9pZCkgCj4gPsKgIHsgCj4gPiAtIGludCB1c2VjID0g VU1fVVNFQ19QRVJfU0VDIC8gVU1fSFo7IAo+ID4gLSBsb25nIGxvbmcgc3RhcnRfdXNlY3MgPSB0 aW1lc3BlY190b191cyh0cyk7IAo+ID4gLSBzdHJ1Y3QgdGltZXZhbCB0djsgCj4gPiAtIHN0cnVj dCBpdGltZXJ2YWwgaW50ZXJ2YWw7IAo+ID4gLSAKPiA+IC0gLyogCj4gPiAtICogSXQgc2VlbXMg dGhhdCByb3VuZGluZyBjYW4gaW5jcmVhc2UgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gCj4gPiAt ICogc2V0aXRpbWVyIHRvIGxhcmdlciB0aGFuIHRoZSBvbmUgcGFzc2VkIGluLsKgIE92ZXIgdGlt ZSwgCj4gPiAtICogdGhpcyB3aWxsIGNhdXNlIHRoZSByZW1haW5pbmcgdGltZSB0byBiZSBncmVh dGVyIHRoYW4gdGhlIAo+ID4gLSAqIHRpY2sgaW50ZXJ2YWwuwqAgSWYgdGhpcyBoYXBwZW5zLCB0 aGVuIGp1c3QgcmVkdWNlIHRoZSBmaXJzdCAKPiA+IC0gKiB0aWNrIHRvIHRoZSBpbnRlcnZhbCB2 YWx1ZS4gCj4gPiAtICovIAo+ID4gLSBpZiAoc3RhcnRfdXNlY3MgPiB1c2VjKSAKPiA+IC0gc3Rh cnRfdXNlY3MgPSB1c2VjOyAKPiA+IC0gCj4gPiAtIHN0YXJ0X3VzZWNzIC09IHNrZXcgLyBVTV9O U0VDX1BFUl9VU0VDOyAKPiA+IC0gaWYgKHN0YXJ0X3VzZWNzIDwgMCkgCj4gPiAtIHN0YXJ0X3Vz ZWNzID0gMDsgCj4gPiAtIAo+ID4gLSB0diA9ICgoc3RydWN0IHRpbWV2YWwpIHsgLnR2X3NlY8Kg ID0gc3RhcnRfdXNlY3MgLyBVTV9VU0VDX1BFUl9TRUMsIAo+ID4gLSAudHZfdXNlYyA9IHN0YXJ0 X3VzZWNzICUgVU1fVVNFQ19QRVJfU0VDIH0pOyAKPiA+IC0gaW50ZXJ2YWwgPSAoKHN0cnVjdCBp dGltZXJ2YWwpIHsgeyAwLCB1c2VjIH0sIHR2IH0pOyAKPiA+IC0gCj4gPiAtIGlmIChzZXRpdGlt ZXIoSVRJTUVSX1ZJUlRVQUwsICZpbnRlcnZhbCwgTlVMTCkgPT0gLTEpIAo+ID4gLSByZXR1cm4g LWVycm5vOyAKPiA+ICsgc3RydWN0IHRpbWVzcGVjIHRzOyAKPiA+wqAgCj4gPiAtIHJldHVybiAw OyAKPiA+ICsgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsJnRzKTsgCj4gPiArIHJldHVy biB0aW1lc3BlY190b19ucygmdHMpOyAKPiA+wqAgfSAKPiA+IC0jZW5kaWYgCj4gPsKgIAo+ID4g LXZvaWQgaWRsZV9zbGVlcCh1bnNpZ25lZCBsb25nIGxvbmcgbnNlY3MpIAo+ID4gKy8qKiAKPiA+ ICsgKiBvc19pZGxlX3NsZWVwKCkgLSBzbGVlcCBmb3IgYSBnaXZlbiB0aW1lIG9mIG5zZWNzIAo+ ID4gKyAqIEBuc2VjczogbmFub3NlY29uZHMgdG8gc2xlZXAgCj4gPiArICovIAo+ID4gK3ZvaWQg b3NfaWRsZV9zbGVlcCh1bnNpZ25lZCBsb25nIGxvbmcgbnNlY3MpIAo+ID7CoCB7IAo+ID7CoCBz dHJ1Y3QgdGltZXNwZWMgdHM7IAo+ID7CoCAKPiA+IC0gLyogCj4gPiAtICogbnNlY3MgY2FuIGNv bWUgaW4gYXMgemVybywgaW4gd2hpY2ggY2FzZSwgdGhpcyBzdGFydHMgYSAKPiA+IC0gKiBidXN5 IGxvb3AuwqAgVG8gcHJldmVudCB0aGlzLCByZXNldCBuc2VjcyB0byB0aGUgdGljayAKPiA+IC0g KiBpbnRlcnZhbCBpZiBpdCBpcyB6ZXJvLiAKPiA+IC0gKi8gCj4gPiAtIGlmIChuc2VjcyA9PSAw KSAKPiA+IC0gbnNlY3MgPSBVTV9OU0VDX1BFUl9TRUMgLyBVTV9IWjsgCj4gPiAtIAo+ID4gLSBu c2VjcyA9IHNsZWVwX3RpbWUobnNlY3MpOyAKPiA+IC0gdHMgPSAoKHN0cnVjdCB0aW1lc3BlYykg eyAudHZfc2VjID0gbnNlY3MgLyBVTV9OU0VDX1BFUl9TRUMsIAo+ID4gLSDCoCAudHZfbnNlYyA9 IG5zZWNzICUgVU1fTlNFQ19QRVJfU0VDIH0pOyAKPiA+IC0gCj4gPiAtIGlmIChuYW5vc2xlZXAo JnRzLCAmdHMpID09IDApIAo+ID4gLSBkZWxpdmVyX2FsYXJtKCk7IAo+ID4gLSBhZnRlcl9zbGVl cF9pbnRlcnZhbCgmdHMpOyAKPiA+ICsgaWYgKG5zZWNzIDw9IDApIHsgCj4gPiArIHJldHVybjsg Cj4gPiArIH0gCj4gPiArIAo+ID4gKyB0cyA9ICgoc3RydWN0IHRpbWVzcGVjKSB7IAo+ID4gKyAu dHZfc2VjwqAgPSBuc2VjcyAvIFVNX05TRUNfUEVSX1NFQywgCj4gPiArIC50dl9uc2VjID0gbnNl Y3MgJSBVTV9OU0VDX1BFUl9TRUMgCj4gPiArIH0pOyAKPiA+ICsgCj4gPiArIGNsb2NrX25hbm9z bGVlcChDTE9DS19NT05PVE9OSUMsIDAsICZ0cywgTlVMTCk7IAo+ID7CoCB9IAo+ID4gCj4KPiBU aGFua3MsIAo+IC8vcmljaGFyZCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClVzZXItbW9kZS1saW51eC1kZXZlbCBt YWlsaW5nIGxpc3QKVXNlci1tb2RlLWxpbnV4LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApo dHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby91c2VyLW1vZGUtbGlu dXgtZGV2ZWwK