From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH v4 1/3] xen: move wallclock functions from x86 to common Date: Mon, 16 Nov 2015 13:04:06 +0000 Message-ID: <1447679046.27871.79.camel@citrix.com> References: <1447350364-22923-1-git-send-email-stefano.stabellini@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1447350364-22923-1-git-send-email-stefano.stabellini@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini , xen-devel@lists.xensource.com Cc: andrew.cooper3@citrix.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAyMDE1LTExLTEyIGF0IDE3OjQ2ICswMDAwLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3Jv dGU6Cj4gUmVtb3ZlIGR1bW15IGFybSBpbXBsZW1lbnRhdGlvbiBvZiB3YWxsY2xvY2tfdGltZS4K PiBVc2Ugc2hhcmVkX2luZm8oKSBpbiBjb21tb24gY29kZSByYXRoZXIgdGhhbiB4ODYtaXNtIHRv IGFjY2VzcyBpdCwgd2hlbgo+IHBvc3NpYmxlLgo+IAo+IERlZmluZSB0aGUgc3RhdGljIHZhcmlh YmxlIHdjX3NlYywgYW5kIHRoZSBsb2NhbCB2YXJpYWxlIHNlYyBpbgoKwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqB2YXJpYWJsZQoKPiB1cGRhdGVfZG9tYWluX3dhbGxjbG9ja190aW1lLCBhcyB1aW50NjRf dCBpbnN0ZWFkIG9mIHVuc2lnbmVkIGxvbmcsIHRvCj4gYXZvaWQgc2l6ZSBpc3N1ZSBvbiBhcm0u CgrCoCDCoCDCoCDCoCDCoCDCoCDCoGlzc3VlcwoKPiBUYWtlIGEgdWludDY0X3Qgc2VjIHBhcmFt dGVyIGluIGRvX3NldHRpbWUgZm9yIHRoZSBzYW1lIHJlYXNvbi4KCsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIHBhcmFtZXRlcgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0 YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBldS5jaXRyaXguY29tPgo+IEFja2VkLWJ5OiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CgpBcGFydCBmcm9tIHRoZSB0eXBvczoKCkFj a2VkLWJ5OiBJYW4gQ2FtcGJlbGwgPGlhbi5jYW1wYmVsbEBjaXRyaXguY29tPgoKPiBDQzogSkJl dWxpY2hAc3VzZS5jb20KPiBDQzogYW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbQo+IAo+IC0tLQo+ IAo+IENoYW5nZXMgaW4gdjM6Cj4gLSByZW1vdmUgc3RyYXkgYmxhbmsgbGluZXMKPiAKPiBDaGFu Z2VzIGluIHYyOgo+IC0gcmVtb3ZlIHN0cmF5IGJsYW5rIGxpbmVzCj4gLSByZW1vdmUgaW5jbHVk ZSA8eGVuL2NvbmZpZy5oPgo+IC0gbW92ZSB2ZXJzaW9uX3VwZGF0ZV8qIHRvIGluY2x1ZGUveGVu L3RpbWUuaAo+IC0gaW50cm9kdWNlIGlmZGVmIHRvIGZpeCBidWlsZCBpc3N1ZSBpbiBjb21tb24v dGltZS5jCj4gLSBkZWZpbmUgd2Nfc2VjIGFuZCBzZWMgYXMgdWludDY0X3QKPiAtIHBhc3MgdTY0 IHRvIGRvX3NldHRpbWUKPiAtLS0KPiDCoHhlbi9hcmNoL2FybS90aW1lLmPCoMKgwqDCoHzCoMKg wqDCoDUgLS0tCj4gwqB4ZW4vYXJjaC94ODYvdGltZS5jwqDCoMKgwqB8wqDCoMKgOTYgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gLS0tLS0tCj4gwqB4ZW4vY29t bW9uL3RpbWUuY8KgwqDCoMKgwqDCoHzCoMKgwqA5NQo+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCj4gwqB4ZW4vaW5jbHVkZS94ZW4vdGltZS5oIHzCoMKg wqDCoDUgKystCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDEwMiBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RpbWUuYyBiL3hlbi9hcmNo L2FybS90aW1lLmMKPiBpbmRleCA1ZGVkMzBjLi42MjA3NjE1IDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL2FybS90aW1lLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vdGltZS5jCj4gQEAgLTI4MCwxMSAr MjgwLDYgQEAgdm9pZCBkb21haW5fc2V0X3RpbWVfb2Zmc2V0KHN0cnVjdCBkb21haW4gKmQsCj4g aW50NjRfdCB0aW1lX29mZnNldF9zZWNvbmRzKQo+IMKgwqDCoMKgwqAvKiBYWFggdXBkYXRlIGd1 ZXN0IHZpc2libGUgd2FsbGNsb2NrIHRpbWUgKi8KPiDCoH0KPiDCoAo+IC1zdHJ1Y3QgdG0gd2Fs bGNsb2NrX3RpbWUodWludDY0X3QgKm5zKQo+IC17Cj4gLcKgwqDCoMKgcmV0dXJuIChzdHJ1Y3Qg dG0pIHsgMCB9Owo+IC19Cj4gLQo+IMKgLyoKPiDCoCAqIExvY2FsIHZhcmlhYmxlczoKPiDCoCAq IG1vZGU6IEMKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RpbWUuYyBiL3hlbi9hcmNoL3g4 Ni90aW1lLmMKPiBpbmRleCBiYmI3ZTZjLi4wZjE2ZGI1IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L3g4Ni90aW1lLmMKPiArKysgYi94ZW4vYXJjaC94ODYvdGltZS5jCj4gQEAgLTQ3LDkgKzQ3LDYg QEAgc3RyaW5nX3BhcmFtKCJjbG9ja3NvdXJjZSIsIG9wdF9jbG9ja3NvdXJjZSk7Cj4gwqB1bnNp Z25lZCBsb25nIF9fcmVhZF9tb3N0bHkgY3B1X2toejvCoMKgLyogQ1BVIGNsb2NrIGZyZXF1ZW5j eSBpbiBrSHouICovCj4gwqBERUZJTkVfU1BJTkxPQ0socnRjX2xvY2spOwo+IMKgdW5zaWduZWQg bG9uZyBwaXQwX3RpY2tzOwo+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyB3Y19zZWM7IC8qIFVUQyB0 aW1lIGF0IGxhc3QgJ3RpbWUgdXBkYXRlJy4gKi8KPiAtc3RhdGljIHVuc2lnbmVkIGludCB3Y19u c2VjOwo+IC1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHdjX2xvY2spOwo+IMKgCj4gwqBzdHJ1Y3Qg Y3B1X3RpbWUgewo+IMKgwqDCoMKgwqB1NjQgbG9jYWxfdHNjX3N0YW1wOwo+IEBAIC03ODMsMTAg Kzc4MCw2IEBAIHVpbnQ2NF90IHRzY190aWNrczJucyh1aW50NjRfdCB0aWNrcykKPiDCoMKgwqDC oMKgcmV0dXJuIHNjYWxlX2RlbHRhKHRpY2tzLCAmdC0+dHNjX3NjYWxlKTsKPiDCoH0KPiDCoAo+ IC0vKiBFeHBsaWNpdGx5IE9SIHdpdGggMSBqdXN0IGluIGNhc2UgdmVyc2lvbiBudW1iZXIgZ2V0 cyBvdXQgb2Ygc3luYy4gKi8KPiAtI2RlZmluZSB2ZXJzaW9uX3VwZGF0ZV9iZWdpbih2KSAoKCh2 KSsxKXwxKQo+IC0jZGVmaW5lIHZlcnNpb25fdXBkYXRlX2VuZCh2KcKgwqDCoCgodikrMSkKPiAt Cj4gwqBzdGF0aWMgdm9pZCBfX3VwZGF0ZV92Y3B1X3N5c3RlbV90aW1lKHN0cnVjdCB2Y3B1ICp2 LCBpbnQgZm9yY2UpCj4gwqB7Cj4gwqDCoMKgwqDCoHN0cnVjdCBjcHVfdGltZcKgwqDCoMKgwqDC oMKgKnQ7Cj4gQEAgLTkwMCwzNyArODkzLDYgQEAgdm9pZCBmb3JjZV91cGRhdGVfdmNwdV9zeXN0 ZW1fdGltZShzdHJ1Y3QgdmNwdSAqdikKPiDCoMKgwqDCoMKgX191cGRhdGVfdmNwdV9zeXN0ZW1f dGltZSh2LCAxKTsKPiDCoH0KPiDCoAo+IC12b2lkIHVwZGF0ZV9kb21haW5fd2FsbGNsb2NrX3Rp bWUoc3RydWN0IGRvbWFpbiAqZCkKPiAtewo+IC3CoMKgwqDCoHVpbnQzMl90ICp3Y192ZXJzaW9u Owo+IC3CoMKgwqDCoHVuc2lnbmVkIGxvbmcgc2VjOwo+IC0KPiAtwqDCoMKgwqBzcGluX2xvY2so JndjX2xvY2spOwo+IC0KPiAtwqDCoMKgwqB3Y192ZXJzaW9uID0gJnNoYXJlZF9pbmZvKGQsIHdj X3ZlcnNpb24pOwo+IC3CoMKgwqDCoCp3Y192ZXJzaW9uID0gdmVyc2lvbl91cGRhdGVfYmVnaW4o KndjX3ZlcnNpb24pOwo+IC3CoMKgwqDCoHdtYigpOwo+IC0KPiAtwqDCoMKgwqBzZWMgPSB3Y19z ZWMgKyBkLT50aW1lX29mZnNldF9zZWNvbmRzOwo+IC3CoMKgwqDCoGlmICggbGlrZWx5KCFoYXNf MzJiaXRfc2hpbmZvKGQpKSApCj4gLcKgwqDCoMKgewo+IC3CoMKgwqDCoMKgwqDCoMKgZC0+c2hh cmVkX2luZm8tPm5hdGl2ZS53Y19zZWPCoMKgwqDCoD0gc2VjOwo+IC3CoMKgwqDCoMKgwqDCoMKg ZC0+c2hhcmVkX2luZm8tPm5hdGl2ZS53Y19uc2VjwqDCoMKgPSB3Y19uc2VjOwo+IC3CoMKgwqDC oMKgwqDCoMKgZC0+c2hhcmVkX2luZm8tPm5hdGl2ZS53Y19zZWNfaGkgPSBzZWMgPj4gMzI7Cj4g LcKgwqDCoMKgfQo+IC3CoMKgwqDCoGVsc2UKPiAtwqDCoMKgwqB7Cj4gLcKgwqDCoMKgwqDCoMKg wqBkLT5zaGFyZWRfaW5mby0+Y29tcGF0LndjX3NlY8KgwqDCoMKgwqDCoMKgwqDCoD0gc2VjOwo+ IC3CoMKgwqDCoMKgwqDCoMKgZC0+c2hhcmVkX2luZm8tPmNvbXBhdC53Y19uc2VjwqDCoMKgwqDC oMKgwqDCoD0gd2NfbnNlYzsKPiAtwqDCoMKgwqDCoMKgwqDCoGQtPnNoYXJlZF9pbmZvLT5jb21w YXQuYXJjaC53Y19zZWNfaGkgPSBzZWMgPj4gMzI7Cj4gLcKgwqDCoMKgfQo+IC0KPiAtwqDCoMKg wqB3bWIoKTsKPiAtwqDCoMKgwqAqd2NfdmVyc2lvbiA9IHZlcnNpb25fdXBkYXRlX2VuZCgqd2Nf dmVyc2lvbik7Cj4gLQo+IC3CoMKgwqDCoHNwaW5fdW5sb2NrKCZ3Y19sb2NrKTsKPiAtfQo+IC0K PiDCoHN0YXRpYyB2b2lkIHVwZGF0ZV9kb21haW5fcnRjKHZvaWQpCj4gwqB7Cj4gwqDCoMKgwqDC oHN0cnVjdCBkb21haW4gKmQ7Cj4gQEAgLTk4OCwyNyArOTUwLDYgQEAgaW50IGNwdV9mcmVxdWVu Y3lfY2hhbmdlKHU2NCBmcmVxKQo+IMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC0v KiBTZXQgY2xvY2sgdG8gPHNlY3MsdXNlY3M+IGFmdGVyIDAwOjAwOjAwIFVUQywgMSBKYW51YXJ5 LCAxOTcwLiAqLwo+IC12b2lkIGRvX3NldHRpbWUodW5zaWduZWQgbG9uZyBzZWNzLCB1bnNpZ25l ZCBpbnQgbnNlY3MsIHU2NAo+IHN5c3RlbV90aW1lX2Jhc2UpCj4gLXsKPiAtwqDCoMKgwqB1NjQg eDsKPiAtwqDCoMKgwqB1MzIgeTsKPiAtwqDCoMKgwqBzdHJ1Y3QgZG9tYWluICpkOwo+IC0KPiAt wqDCoMKgwqB4ID0gU0VDT05EUyhzZWNzKSArIG5zZWNzIC0gc3lzdGVtX3RpbWVfYmFzZTsKPiAt wqDCoMKgwqB5ID0gZG9fZGl2KHgsIDEwMDAwMDAwMDApOwo+IC0KPiAtwqDCoMKgwqBzcGluX2xv Y2soJndjX2xvY2spOwo+IC3CoMKgwqDCoHdjX3NlY8KgwqA9IHg7Cj4gLcKgwqDCoMKgd2NfbnNl YyA9IHk7Cj4gLcKgwqDCoMKgc3Bpbl91bmxvY2soJndjX2xvY2spOwo+IC0KPiAtwqDCoMKgwqBy Y3VfcmVhZF9sb2NrKCZkb21saXN0X3JlYWRfbG9jayk7Cj4gLcKgwqDCoMKgZm9yX2VhY2hfZG9t YWluICggZCApCj4gLcKgwqDCoMKgwqDCoMKgwqB1cGRhdGVfZG9tYWluX3dhbGxjbG9ja190aW1l KGQpOwo+IC3CoMKgwqDCoHJjdV9yZWFkX3VubG9jaygmZG9tbGlzdF9yZWFkX2xvY2spOwo+IC19 Cj4gLQo+IMKgLyogUGVyLUNQVSBjb21tdW5pY2F0aW9uIGJldHdlZW4gcmVuZGV6dm91cyBJUlEg YW5kIHNvZnRpcnEgaGFuZGxlci4gKi8KPiDCoHN0cnVjdCBjcHVfY2FsaWJyYXRpb24gewo+IMKg wqDCoMKgwqB1NjQgbG9jYWxfdHNjX3N0YW1wOwo+IEBAIC0xNjA4LDI1ICsxNTQ5LDYgQEAgdm9p ZCBzZW5kX3RpbWVyX2V2ZW50KHN0cnVjdCB2Y3B1ICp2KQo+IMKgwqDCoMKgwqBzZW5kX2d1ZXN0 X3ZjcHVfdmlycSh2LCBWSVJRX1RJTUVSKTsKPiDCoH0KPiDCoAo+IC0vKiBSZXR1cm4gc2VjcyBh ZnRlciAwMDowMDowMCBsb2NhbHRpbWUsIDEgSmFudWFyeSwgMTk3MC4gKi8KPiAtdW5zaWduZWQg bG9uZyBnZXRfbG9jYWx0aW1lKHN0cnVjdCBkb21haW4gKmQpCj4gLXsKPiAtwqDCoMKgwqByZXR1 cm4gd2Nfc2VjICsgKHdjX25zZWMgKyBOT1coKSkgLyAxMDAwMDAwMDAwVUxMIAo+IC3CoMKgwqDC oMKgwqDCoMKgKyBkLT50aW1lX29mZnNldF9zZWNvbmRzOwo+IC19Cj4gLQo+IC0vKiBSZXR1cm4g bWljcm9zZWNzIGFmdGVyIDAwOjAwOjAwIGxvY2FsdGltZSwgMSBKYW51YXJ5LCAxOTcwLiAqLwo+ IC11aW50NjRfdCBnZXRfbG9jYWx0aW1lX3VzKHN0cnVjdCBkb21haW4gKmQpCj4gLXsKPiAtwqDC oMKgwqByZXR1cm4gKFNFQ09ORFMod2Nfc2VjICsgZC0+dGltZV9vZmZzZXRfc2Vjb25kcykgKyB3 Y19uc2VjICsgTk9XKCkpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvIDEwMDBVTDsKPiAtfQo+ IC0KPiAtdW5zaWduZWQgbG9uZyBnZXRfc2VjKHZvaWQpCj4gLXsKPiAtwqDCoMKgwqByZXR1cm4g d2Nfc2VjICsgKHdjX25zZWMgKyBOT1coKSkgLyAxMDAwMDAwMDAwVUxMOwo+IC19Cj4gLQo+IMKg LyogImNtb3NfdXRjX29mZnNldCIgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVVEMgdGltZSBh bmQgQ01PUyB0aW1lLgo+ICovCj4gwqBzdGF0aWMgbG9uZyBjbW9zX3V0Y19vZmZzZXQ7IC8qIGlu IHNlY29uZHMgKi8KPiDCoAo+IEBAIC0xNjM1LDcgKzE1NTcsNyBAQCBpbnQgdGltZV9zdXNwZW5k KHZvaWQpCj4gwqDCoMKgwqDCoGlmICggc21wX3Byb2Nlc3Nvcl9pZCgpID09IDAgKQo+IMKgwqDC oMKgwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgY21vc191dGNfb2Zmc2V0ID0gLWdldF9jbW9zX3Rp bWUoKTsKPiAtwqDCoMKgwqDCoMKgwqDCoGNtb3NfdXRjX29mZnNldCArPSAod2Nfc2VjICsgKHdj X25zZWMgKyBOT1coKSkgLyAxMDAwMDAwMDAwVUxMKTsKPiArwqDCoMKgwqDCoMKgwqDCoGNtb3Nf dXRjX29mZnNldCArPSBnZXRfc2VjKCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKga2lsbF90aW1lcigm Y2FsaWJyYXRpb25fdGltZXIpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgLyogU3luYyBwbGF0 Zm9ybSB0aW1lciBzdGFtcHMuICovCj4gQEAgLTE3MTUsMjIgKzE2MzcsNiBAQCBpbnQgaHdkb21f cGl0X2FjY2VzcyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQo+IMKgwqDCoMKgwqByZXR1cm4gMDsKPiDC oH0KPiDCoAo+IC1zdHJ1Y3QgdG0gd2FsbGNsb2NrX3RpbWUodWludDY0X3QgKm5zKQo+IC17Cj4g LcKgwqDCoMKgdWludDY0X3Qgc2Vjb25kcywgbnNlYzsKPiAtCj4gLcKgwqDCoMKgaWYgKCAhd2Nf c2VjICkKPiAtwqDCoMKgwqDCoMKgwqDCoHJldHVybiAoc3RydWN0IHRtKSB7IDAgfTsKPiAtCj4g LcKgwqDCoMKgc2Vjb25kcyA9IE5PVygpICsgU0VDT05EUyh3Y19zZWMpICsgd2NfbnNlYzsKPiAt wqDCoMKgwqBuc2VjID0gZG9fZGl2KHNlY29uZHMsIDEwMDAwMDAwMDApOwo+IC0KPiAtwqDCoMKg wqBpZiAoIG5zICkKPiAtwqDCoMKgwqDCoMKgwqDCoCpucyA9IG5zZWM7Cj4gLQo+IC3CoMKgwqDC oHJldHVybiBnbXRpbWUoc2Vjb25kcyk7Cj4gLX0KPiAtCj4gwqAvKgo+IMKgICogUFYgU29mdFRT QyBFbXVsYXRpb24uCj4gwqAgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi90aW1lLmMgYi94 ZW4vY29tbW9uL3RpbWUuYwo+IGluZGV4IDI5ZmRmNTIuLjcyMWFkYTggMTAwNjQ0Cj4gLS0tIGEv eGVuL2NvbW1vbi90aW1lLmMKPiArKysgYi94ZW4vY29tbW9uL3RpbWUuYwo+IEBAIC0xNSw4ICsx NSwxMiBAQAo+IMKgICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiDCoCAqLwo+IMKgCj4gLSNpbmNsdWRlIDx4ZW4v Y29uZmlnLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KPiArI2luY2x1ZGUgPHhlbi9zaGFy ZWQuaD4KPiArI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgo+IMKgI2luY2x1ZGUgPHhlbi90aW1l Lmg+Cj4gKyNpbmNsdWRlIDxhc20vZGl2NjQuaD4KPiArI2luY2x1ZGUgPGFzbS9kb21haW4uaD4K PiDCoAo+IMKgLyogTm9uemVybyBpZiBZRUFSIGlzIGEgbGVhcCB5ZWFyIChldmVyeSA0IHllYXJz LAo+IMKgwqDCoMKgZXhjZXB0IGV2ZXJ5IDEwMHRoIGlzbid0LCBhbmQgZXZlcnkgNDAwdGggaXMp LsKgwqAqLwo+IEBAIC0zNCw2ICszOCwxMCBAQCBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgX19t b25fbGVuZ3Roc1syXVsxMl0gPSB7Cj4gwqAjZGVmaW5lIFNFQ1NfUEVSX0hPVVIgKDYwICogNjAp Cj4gwqAjZGVmaW5lIFNFQ1NfUEVSX0RBWcKgwqAoU0VDU19QRVJfSE9VUiAqIDI0KQo+IMKgCj4g K3N0YXRpYyB1aW50NjRfdCB3Y19zZWM7IC8qIFVUQyB0aW1lIGF0IGxhc3QgJ3RpbWUgdXBkYXRl Jy4gKi8KPiArc3RhdGljIHVuc2lnbmVkIGludCB3Y19uc2VjOwo+ICtzdGF0aWMgREVGSU5FX1NQ SU5MT0NLKHdjX2xvY2spOwo+ICsKPiDCoHN0cnVjdCB0bSBnbXRpbWUodW5zaWduZWQgbG9uZyB0 KQo+IMKgewo+IMKgwqDCoMKgwqBzdHJ1Y3QgdG0gdGJ1ZjsKPiBAQCAtODUsMyArOTMsODggQEAg c3RydWN0IHRtIGdtdGltZSh1bnNpZ25lZCBsb25nIHQpCj4gwqAKPiDCoMKgwqDCoMKgcmV0dXJu IHRidWY7Cj4gwqB9Cj4gKwo+ICt2b2lkIHVwZGF0ZV9kb21haW5fd2FsbGNsb2NrX3RpbWUoc3Ry dWN0IGRvbWFpbiAqZCkKPiArewo+ICvCoMKgwqDCoHVpbnQzMl90ICp3Y192ZXJzaW9uOwo+ICvC oMKgwqDCoHVpbnQ2NF90IHNlYzsKPiArCj4gK8KgwqDCoMKgc3Bpbl9sb2NrKCZ3Y19sb2NrKTsK PiArCj4gK8KgwqDCoMKgd2NfdmVyc2lvbiA9ICZzaGFyZWRfaW5mbyhkLCB3Y192ZXJzaW9uKTsK PiArwqDCoMKgwqAqd2NfdmVyc2lvbiA9IHZlcnNpb25fdXBkYXRlX2JlZ2luKCp3Y192ZXJzaW9u KTsKPiArwqDCoMKgwqB3bWIoKTsKPiArCj4gK8KgwqDCoMKgc2VjID0gd2Nfc2VjICsgZC0+dGlt ZV9vZmZzZXRfc2Vjb25kczsKPiArwqDCoMKgwqBzaGFyZWRfaW5mbyhkLCB3Y19zZWMpwqDCoMKg wqA9IHNlYzsKPiArwqDCoMKgwqBzaGFyZWRfaW5mbyhkLCB3Y19uc2VjKcKgwqDCoD0gd2NfbnNl YzsKPiArI2lmZGVmIENPTkZJR19YODYKPiArwqDCoMKgwqBpZiAoIGxpa2VseSghaGFzXzMyYml0 X3NoaW5mbyhkKSkgKQo+ICvCoMKgwqDCoMKgwqDCoMKgZC0+c2hhcmVkX2luZm8tPm5hdGl2ZS53 Y19zZWNfaGkgPSBzZWMgPj4gMzI7Cj4gK8KgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKg ZC0+c2hhcmVkX2luZm8tPmNvbXBhdC5hcmNoLndjX3NlY19oaSA9IHNlYyA+PiAzMjsKPiArI2Vs c2UKPiArwqDCoMKgwqBzaGFyZWRfaW5mbyhkLCB3Y19zZWNfaGkpID0gc2VjID4+IDMyOwo+ICsj ZW5kaWYKPiArCj4gK8KgwqDCoMKgd21iKCk7Cj4gK8KgwqDCoMKgKndjX3ZlcnNpb24gPSB2ZXJz aW9uX3VwZGF0ZV9lbmQoKndjX3ZlcnNpb24pOwo+ICsKPiArwqDCoMKgwqBzcGluX3VubG9jaygm d2NfbG9jayk7Cj4gK30KPiArCj4gKy8qIFNldCBjbG9jayB0byA8c2Vjcyx1c2Vjcz4gYWZ0ZXIg MDA6MDA6MDAgVVRDLCAxIEphbnVhcnksIDE5NzAuICovCj4gK3ZvaWQgZG9fc2V0dGltZSh1NjQg c2VjcywgdW5zaWduZWQgaW50IG5zZWNzLCB1NjQgc3lzdGVtX3RpbWVfYmFzZSkKPiArewo+ICvC oMKgwqDCoHU2NCB4Owo+ICvCoMKgwqDCoHUzMiB5Owo+ICvCoMKgwqDCoHN0cnVjdCBkb21haW4g KmQ7Cj4gKwo+ICvCoMKgwqDCoHggPSBTRUNPTkRTKHNlY3MpICsgbnNlY3MgLSBzeXN0ZW1fdGlt ZV9iYXNlOwo+ICvCoMKgwqDCoHkgPSBkb19kaXYoeCwgMTAwMDAwMDAwMCk7Cj4gKwo+ICvCoMKg wqDCoHNwaW5fbG9jaygmd2NfbG9jayk7Cj4gK8KgwqDCoMKgd2Nfc2VjwqDCoD0geDsKPiArwqDC oMKgwqB3Y19uc2VjID0geTsKPiArwqDCoMKgwqBzcGluX3VubG9jaygmd2NfbG9jayk7Cj4gKwo+ ICvCoMKgwqDCoHJjdV9yZWFkX2xvY2soJmRvbWxpc3RfcmVhZF9sb2NrKTsKPiArwqDCoMKgwqBm b3JfZWFjaF9kb21haW4gKCBkICkKPiArwqDCoMKgwqDCoMKgwqDCoHVwZGF0ZV9kb21haW5fd2Fs bGNsb2NrX3RpbWUoZCk7Cj4gK8KgwqDCoMKgcmN1X3JlYWRfdW5sb2NrKCZkb21saXN0X3JlYWRf bG9jayk7Cj4gK30KPiArCj4gKy8qIFJldHVybiBzZWNzIGFmdGVyIDAwOjAwOjAwIGxvY2FsdGlt ZSwgMSBKYW51YXJ5LCAxOTcwLiAqLwo+ICt1bnNpZ25lZCBsb25nIGdldF9sb2NhbHRpbWUoc3Ry dWN0IGRvbWFpbiAqZCkKPiArewo+ICvCoMKgwqDCoHJldHVybiB3Y19zZWMgKyAod2NfbnNlYyAr IE5PVygpKSAvIDEwMDAwMDAwMDBVTEwKPiArwqDCoMKgwqDCoMKgwqDCoCsgZC0+dGltZV9vZmZz ZXRfc2Vjb25kczsKPiArfQo+ICsKPiArLyogUmV0dXJuIG1pY3Jvc2VjcyBhZnRlciAwMDowMDow MCBsb2NhbHRpbWUsIDEgSmFudWFyeSwgMTk3MC4gKi8KPiArdWludDY0X3QgZ2V0X2xvY2FsdGlt ZV91cyhzdHJ1Y3QgZG9tYWluICpkKQo+ICt7Cj4gK8KgwqDCoMKgcmV0dXJuIChTRUNPTkRTKHdj X3NlYyArIGQtPnRpbWVfb2Zmc2V0X3NlY29uZHMpICsgd2NfbnNlYyArIE5PVygpKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyAxMDAwVUw7Cj4gK30KPiArCj4gK3Vuc2lnbmVkIGxvbmcgZ2V0 X3NlYyh2b2lkKQo+ICt7Cj4gK8KgwqDCoMKgcmV0dXJuIHdjX3NlYyArICh3Y19uc2VjICsgTk9X KCkpIC8gMTAwMDAwMDAwMFVMTDsKPiArfQo+ICsKPiArc3RydWN0IHRtIHdhbGxjbG9ja190aW1l KHVpbnQ2NF90ICpucykKPiArewo+ICvCoMKgwqDCoHVpbnQ2NF90IHNlY29uZHMsIG5zZWM7Cj4g Kwo+ICvCoMKgwqDCoGlmICggIXdjX3NlYyApCj4gK8KgwqDCoMKgwqDCoMKgwqByZXR1cm4gKHN0 cnVjdCB0bSkgeyAwIH07Cj4gKwo+ICvCoMKgwqDCoHNlY29uZHMgPSBOT1coKSArIFNFQ09ORFMo d2Nfc2VjKSArIHdjX25zZWM7Cj4gK8KgwqDCoMKgbnNlYyA9IGRvX2RpdihzZWNvbmRzLCAxMDAw MDAwMDAwKTsKPiArCj4gK8KgwqDCoMKgaWYgKCBucyApCj4gK8KgwqDCoMKgwqDCoMKgwqAqbnMg PSBuc2VjOwo+ICsKPiArwqDCoMKgwqByZXR1cm4gZ210aW1lKHNlY29uZHMpOwo+ICt9Cj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi90aW1lLmggYi94ZW4vaW5jbHVkZS94ZW4vdGltZS5o Cj4gaW5kZXggZGE0ZThkNy4uYjc0Mjc0NiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4v dGltZS5oCj4gKysrIGIveGVuL2luY2x1ZGUveGVuL3RpbWUuaAo+IEBAIC02MCwxMSArNjAsMTQg QEAgc3RydWN0IHRtIHdhbGxjbG9ja190aW1lKHVpbnQ2NF90ICpucyk7Cj4gwqAvKiBDaG9zZW4g c28gKE5PVygpICsgZGVsdGEpIHdvbnQgb3ZlcmZsb3cgd2l0aG91dCBhbiB1cHRpbWUgb2YgMjAw Cj4geWVhcnMgKi8KPiDCoCNkZWZpbmUgU1RJTUVfREVMVEFfTUFYICgoc190aW1lX3QpKCh1aW50 NjRfdCl+MHVsbD4+MikpCj4gwqAKPiArLyogRXhwbGljaXRseSBPUiB3aXRoIDEganVzdCBpbiBj YXNlIHZlcnNpb24gbnVtYmVyIGdldHMgb3V0IG9mIHN5bmMuICovCj4gKyNkZWZpbmUgdmVyc2lv bl91cGRhdGVfYmVnaW4odikgKCgodikgKyAxKSB8IDEpCj4gKyNkZWZpbmUgdmVyc2lvbl91cGRh dGVfZW5kKHYpwqDCoMKgKCh2KSArIDEpCj4gwqBleHRlcm4gdm9pZCB1cGRhdGVfdmNwdV9zeXN0 ZW1fdGltZShzdHJ1Y3QgdmNwdSAqdik7Cj4gwqBleHRlcm4gdm9pZCB1cGRhdGVfZG9tYWluX3dh bGxjbG9ja190aW1lKHN0cnVjdCBkb21haW4gKmQpOwo+IMKgCj4gwqBleHRlcm4gdm9pZCBkb19z ZXR0aW1lKAo+IC3CoMKgwqDCoHVuc2lnbmVkIGxvbmcgc2VjcywgdW5zaWduZWQgaW50IG5zZWNz LCB1NjQgc3lzdGVtX3RpbWVfYmFzZSk7Cj4gK8KgwqDCoMKgdTY0IHNlY3MsIHVuc2lnbmVkIGlu dCBuc2VjcywgdTY0IHN5c3RlbV90aW1lX2Jhc2UpOwo+IMKgCj4gwqBleHRlcm4gdm9pZCBzZW5k X3RpbWVyX2V2ZW50KHN0cnVjdCB2Y3B1ICp2KTsKPiDCoAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK