From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FD17C282CE for ; Tue, 4 Jun 2019 20:06:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0FD702070B for ; Tue, 4 Jun 2019 20:06:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726343AbfFDUG3 (ORCPT ); Tue, 4 Jun 2019 16:06:29 -0400 Received: from mga17.intel.com ([192.55.52.151]:13515 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726179AbfFDUG3 (ORCPT ); Tue, 4 Jun 2019 16:06:29 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jun 2019 13:06:26 -0700 X-ExtLoop1: 1 Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131]) by orsmga001.jf.intel.com with ESMTP; 04 Jun 2019 13:06:26 -0700 Received: from orsmsx162.amr.corp.intel.com (10.22.240.85) by ORSMSX104.amr.corp.intel.com (10.22.225.131) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 4 Jun 2019 13:06:26 -0700 Received: from orsmsx115.amr.corp.intel.com ([169.254.4.95]) by ORSMSX162.amr.corp.intel.com ([169.254.3.190]) with mapi id 14.03.0415.000; Tue, 4 Jun 2019 13:06:26 -0700 From: "Patel, Vedang" To: Murali Karicheri CC: "netdev@vger.kernel.org" , "Kirsher, Jeffrey T" , "David S . Miller" , Jamal Hadi Salim , "xiyou.wangcong@gmail.com" , "jiri@resnulli.us" , "intel-wired-lan@lists.osuosl.org" , "Gomes, Vinicius" , "l@dorileo.org" Subject: Re: [PATCH net-next v1 5/7] taprio: Add support for txtime offload mode. Thread-Topic: [PATCH net-next v1 5/7] taprio: Add support for txtime offload mode. Thread-Index: AQHVFX1jB+iNR+raHE+empHywwSrKaaKeAIAgAH0TAA= Date: Tue, 4 Jun 2019 20:06:22 +0000 Message-ID: References: <1559065608-27888-1-git-send-email-vedang.patel@intel.com> <1559065608-27888-6-git-send-email-vedang.patel@intel.com> <55c2daae-c69b-4847-f995-4df85c4ee8b8@ti.com> In-Reply-To: <55c2daae-c69b-4847-f995-4df85c4ee8b8@ti.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.24.14.114] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org SGkgTXVyYWxpLA0KDQo+IE9uIEp1biAzLCAyMDE5LCBhdCA3OjE1IEFNLCBNdXJhbGkgS2FyaWNo ZXJpIDxtLWthcmljaGVyaTJAdGkuY29tPiB3cm90ZToNCj4gDQo+IEhpIFZlZGFuZywNCj4gDQo+ IE9uIDA1LzI4LzIwMTkgMDE6NDYgUE0sIFZlZGFuZyBQYXRlbCB3cm90ZToNCj4+IEN1cnJlbnRs eSwgd2UgYXJlIHNlZWluZyBub24tY3JpdGljYWwgcGFja2V0cyBiZWluZyB0cmFuc21pdHRlZCBv dXRzaWRlDQo+PiBvZiB0aGVpciB0aW1lc2xpY2UuIFdlIGNhbiBjb25maXJtIHRoYXQgdGhlIHBh Y2tldHMgYXJlIGJlaW5nIGRlcXVldWVkDQo+PiBhdCB0aGUgcmlnaHQgdGltZS4gU28sIHRoZSBk ZWxheSBpcyBpbmR1Y2VkIGluIHRoZSBoYXJkd2FyZSBzaWRlLiAgVGhlDQo+PiBtb3N0IGxpa2Vs eSByZWFzb24gaXMgdGhlIGhhcmR3YXJlIHF1ZXVlcyBhcmUgc3RhcnZpbmcgdGhlIGxvd2VyDQo+ PiBwcmlvcml0eSBxdWV1ZXMuDQo+PiBJbiBvcmRlciB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5j ZSBvZiB0YXByaW8sIHdlIHdpbGwgYmUgbWFraW5nIHVzZSBvZiB0aGUNCj4+IHR4dGltZSBmZWF0 dXJlIHByb3ZpZGVkIGJ5IHRoZSBFVEYgcWRpc2MuIEZvciBhbGwgdGhlIHBhY2tldHMgd2hpY2gg ZG8gbm90IGhhdmUNCj4+IHRoZSBTT19UWFRJTUUgb3B0aW9uIHNldCwgdGFwcmlvIHdpbGwgc2V0 IHRoZSB0cmFuc21pdCB0aW1lc3RhbXAgKHNldCBpbg0KPj4gc2tiLT50c3RhbXApIGluIHRoaXMg bW9kZS4gVEFQcmlvIFFkaXNjIHdpbGwgZW5zdXJlIHRoYXQgdGhlIHRyYW5zbWl0IHRpbWUgZm9y DQo+PiB0aGUgcGFja2V0IGlzIHNldCB0byB3aGVuIHRoZSBnYXRlIGlzIG9wZW4uIElmIFNPX1RY VElNRSBpcyBzZXQsIHRoZSBUQVByaW8NCj4+IHFkaXNjIHdpbGwgdmFsaWRhdGUgd2hldGhlciB0 aGUgdGltZXN0YW1wIChpbiBza2ItPnRzdGFtcCkgb2NjdXJzIHdoZW4gdGhlIGdhdGUNCj4+IGNv cnJlc3BvbmRpbmcgdG8gc2tiJ3MgdHJhZmZpYyBjbGFzcyBpcyBvcGVuLg0KPj4gRm9sbG93aW5n IGlzIHRoZSBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIGVuYWJsaW5nIHR4dGltZSBvZmZsb2Fk Og0KPj4gdGMgcWRpc2MgcmVwbGFjZSBkZXYgZXRoMCBwYXJlbnQgcm9vdCBoYW5kbGUgMTAwIHRh cHJpbyBcXA0KPj4gICAgICAgbnVtX3RjIDMgXFwNCj4+ICAgICAgIG1hcCAyIDIgMSAwIDIgMiAy IDIgMiAyIDIgMiAyIDIgMiAyIFxcDQo+PiAgICAgICBxdWV1ZXMgMUAwIDFAMCAxQDAgXFwNCj4+ ICAgICAgIGJhc2UtdGltZSAxNTU4NjUzNDI0Mjc5ODQyNTY4IFxcDQo+PiAgICAgICBzY2hlZC1l bnRyeSBTIDAxIDMwMDAwMCBcXA0KPj4gICAgICAgc2NoZWQtZW50cnkgUyAwMiAzMDAwMDAgXFwN Cj4+ICAgICAgIHNjaGVkLWVudHJ5IFMgMDQgNDAwMDAwIFxcDQo+PiAgICAgICBvZmZsb2FkIDIg XFwNCj4+ICAgICAgIHR4dGltZS1kZWxheSA0MDAwMCBcXA0KPj4gICAgICAgY2xvY2tpZCBDTE9D S19UQUkNCj4+IHRjIHFkaXNjIHJlcGxhY2UgZGV2ICRJRkFDRSBwYXJlbnQgMTAwOjEgZXRmIHNr aXBfc29ja19jaGVjayBcXA0KPj4gICAgICAgb2ZmbG9hZCBkZWx0YSAyMDAwMDAgY2xvY2tpZCBD TE9DS19UQUkNCj4+IEhlcmUsIHRoZSAib2ZmbG9hZCIgcGFyYW1ldGVyIGlzIGluZGljYXRpbmcg dGhhdCB0aGUgVFhUSU1FX09GRkxPQUQgbW9kZSBpcw0KPj4gZW5hYmxlZC4gQWxzbywgYWxsIHRo ZSB0cmFmZmljIGNsYXNzZXMgYXJlIG1hcHBlZCB0byB0aGUgc2FtZSBxdWV1ZS4gIFRoaXMgaXMN Cj4+IG9ubHkgcG9zc2libGUgaW4gdGFwcmlvIHdoZW4gdHh0aW1lIG9mZmxvYWQgaXMgZW5hYmxl ZC4gQWxzbyBub3RlIHRoYXQgdGhlIEVURg0KPj4gUWRpc2MgaXMgZW5hYmxlZCB3aXRoIG9mZmxv YWQgbW9kZSBzZXQuDQo+PiBJbiB0aGlzIG1vZGUsIGlmIHRoZSBwYWNrZXQncyB0cmFmZmljIGNs YXNzIGlzIG9wZW4gYW5kIHRoZSBjb21wbGV0ZSBwYWNrZXQgY2FuDQo+PiBiZSB0cmFuc21pdHRl ZCwgdGFwcmlvIHdpbGwgdHJ5IHRvIHRyYW5zbWl0IHRoZSBwYWNrZXQgaW1tZWRpYXRlbHkuIFRo aXMgd2lsbA0KPj4gYmUgZG9uZSBieSBzZXR0aW5nIHNrYi0+dHN0YW1wIHRvIGN1cnJlbnRfdGlt ZSArIHRoZSB0aW1lIGRlbHRhIGluZGljYXRlZCBpbg0KPj4gdGhlIHR4dGltZV9kZWxheSBwYXJh bWV0ZXIuIFRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgdGltZSB0YWtlbiAoaW4NCj4+IHNv ZnR3YXJlKSBmb3IgcGFja2V0IHRvIHJlYWNoIHRoZSBuZXR3b3JrIGFkYXB0ZXIuDQo+IA0KPiBJ biBUU04gVGltZSBhd2FyZSBzaGFwZXIsIHBhY2tldHMgYXJlIHNlbnQgd2hlbiBnYXRlIGZvciBh IHNwZWNpZmljDQo+IHRyYWZmaWMgY2xhc3MgaXMgb3Blbi4gU28gcGFja2V0cyB0aGF0IGFyZSBh dmFpbGFibGUgaW4gdGhlIHF1ZXVlcyBhcmUNCj4gc2VudCBieSB0aGUgc2NoZWR1bGVyLiBTbyB0 aGUgRVRGIGlzIG5vdCBzdHJpY3RseSByZXF1aXJlZCBmb3IgdGhpcw0KPiBmdW5jdGlvbi4NCj4g SSB1bmRlcnN0YW5kIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzZW5kIHBhY2tldHMgd2l0 aA0KPiBzb21lIGxhdGVuY3kgZXhwZWN0YXRpb24gc2hvdWxkIHVzZSBFVEYgdG8gc2NoZWR1bGUg dGhlIHBhY2tldCBpbiBzeW5jDQo+IHdpdGggdGhlIG5leHQgZ2F0ZSBvcGVuIHRpbWUuIFNvIHR4 dGltZV9kZWxheSBpcyB1c2VkIHRvIGFjY291bnQgZm9yDQo+IHRoZSBkZWxheSBmb3IgcGFja2V0 cyB0byB0cmF2ZWwgZnJvbSB1c2VyIHNwYWNlIHRvIG5pYy4NClRoaXMgaXMgbm90IHRydWUuIEFz IGV4cGxhaW5lZCBpbiB0aGUgb3RoZXIgZW1haWwsIHR4dGltZS1kZWxheSBpcyB0aGUgbWF4aW11 bSB0aW1lIGEgcGFja2V0IG1pZ2h0IHRha2UgYWZ0ZXIgcmVhY2hpbmcgdGFwcmlvX2VucXVldWUo KSBhc3N1bWluZyB0aGUgZ2F0ZSBjb3JyZXNwb25kaW5nIHRvIHRoYXQgcGFja2V0IHdhcyBhbHJl YWR5IG9wZW4uDQo+IFNvIGl0IGlzIEVURg0KPiB0aGF0IG5lZWQgdG8gaW5zcGVjdCB0aGUgc2ti LT50c3RhbXAgYW5kIGFsbG93IG9yIGlmIHRpbWUgbWF0Y2ggb3INCj4gZGlzY2FyZCBpZiBsYXRl LiBJcyB0aGlzIHRoZSBjYXNlPw0KPiANClRoZSByb2xlIG9mIEVURiBpcyBqdXN0IHRvIHNvcnQg cGFja2V0cyBhY2NvcmRpbmcgdG8gdGhlaXIgdHJhbnNtaXQgdGltZXN0YW1wIGFuZCBzZW5kIHRo ZW0gdG8gdGhlIGhhcmR3YXJlIHF1ZXVlcyB0byB0cmFuc21pdCB3aGVuZXZlciB0aGVpciB0aW1l IGNvbWVzLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBpMjEwIGhhcmR3YXJlIGRvZXMgbm90 IGhhdmUgYW55IHNvcnQgZmVhdHVyZSB3aXRoaW4gaXRzIHF1ZXVlLiBJZiAyIHBhY2tldHMgYXJy aXZlIGFuZCB0aGUgZmlyc3QgcGFja2V0IGhhcyBhIHRyYW5zbWl0IHRpbWVzdGFtcCBsYXRlciB0 aGFuIHRoZSBzZWNvbmQgcGFja2V0LCB0aGUgc2Vjb25kIHBhY2tldCB3b27igJl0IGJlIHRyYW5z bWl0dGVkIG9uIHRpbWUuDQoNClRhcHJpbyBpbiB0aGUgdHh0aW1lIG9mZmxvYWQgbW9kZSAoYnR3 LCB0aGlzIHdpbGwgc29vbiBiZSByZW5hbWVkIHRvIHR4dGltZS1hc3Npc3QpIHdpbGwgc2V0IHRo ZSB0cmFuc21pdCB0aW1lc3RhbXAgb2YgZWFjaCBwYWNrZXQgKGluIHNrYi0+dHN0YW1wKSBhbmQg dGhlbiBzZW5kIGl0IHRvIEVURiBzbyB0aGF0IGl0IGNhbiBiZSBzb3J0ZWQgd2l0aCB0aGUgb3Ro ZXIgcGFja2V0cyBhbmQgc2VudCB0byBoYXJkd2FyZSB3aGVuZXZlciB0aGUgdGltZSBjb21lcy4g RVRGIHdpbGwgZGlzY2FyZCB0aGUgcGFja2V0IGlmIHRoZSB0cmFuc21pdCB0aW1lIGlzIGluIHRo ZSBwYXN0IG9yIGJlZm9yZSB0aGUgdHJhbnNtaXQgdGltZSBvZiB0aGUgcGFja2V0IHdoaWNoIGlz IGFscmVhZHkgYmVlbiBzZW50IHRvIHRoZSBoYXJkd2FyZS4gDQoNCkxldCBtZSBrbm93IGlmIHlv dSBoYXZlIG1vcmUgcXVlc3Rpb25zIGFib3V0IHRoaXMuIA0KDQpUaGFua3MsDQpWZWRhbmcNCj4g Rm9yIG9mZmxvYWQgY2FzZSwgdGhlIGgvdyB0aGF0IG9mZmxvYWQgRVRGIG5lZWRzIHRvIHNlbmQg YSB0cmlnZ2VyIHRvDQo+IHNvZnR3YXJlIHRvIGdldCBwYWNrZXQgZm9yIHRyYW5zbWlzc2lvbiBh aGVhZCBvZiB0aGUgR2F0ZSBvcGVuIGV2ZW50Pw0KPiANCj4gVGhhbmtzDQo+IA0KPiBNdXJhbGkN Cj4+IElmIHRoZSBwYWNrZXQgY2Fubm90IGJlIHRyYW5zbWl0dGVkIGluIHRoZSBjdXJyZW50IGlu dGVydmFsIG9yIGlmIHRoZSBwYWNrZXQncw0KPj4gdHJhZmZpYyBpcyBub3QgY3VycmVudGx5IHRy YW5zbWl0dGluZywgdGhlIHNrYi0+dHN0YW1wIGlzIHNldCB0byB0aGUgbmV4dA0KPj4gYXZhaWxh YmxlIHRpbWVzdGFtcCB2YWx1ZS4gVGhpcyBpcyB0cmFja2VkIGluIHRoZSBuZXh0X2xhdW5jaHRp bWUgcGFyYW1ldGVyIGluDQo+PiB0aGUgc3RydWN0IHNjaGVkX2VudHJ5Lg0KPj4gVGhlIGJlaGF2 aW91ciB3LnIudCBhZG1pbiBhbmQgb3BlciBzY2hlZHVsZXMgaXMgbm90IGNoYW5nZWQgZnJvbSB3 aGF0IGlzDQo+PiBwcmVzZW50IGluIHNvZnR3YXJlIG1vZGUuDQo+PiBUaGUgdHJhbnNtaXQgdGlt ZSBpcyBhbHJlYWR5IGtub3duIGluIGFkdmFuY2UuIFNvLCB3ZSBkbyBub3QgbmVlZCB0aGUgSFIg dGltZXJzDQo+PiB0byBhZHZhbmNlIHRoZSBzY2hlZHVsZSBhbmQgd2FrZXVwIHRoZSBkZXF1ZXVl IHNpZGUgb2YgdGFwcmlvLiAgU28sIEhSIHRpbWVyDQo+PiB3b24ndCBiZSBydW4gd2hlbiB0aGlz IG1vZGUgaXMgZW5hYmxlZC4NCj4+IFNpZ25lZC1vZmYtYnk6IFZlZGFuZyBQYXRlbCA8dmVkYW5n LnBhdGVsQGludGVsLmNvbT4NCj4+IC0tLQ0KPj4gIGluY2x1ZGUvdWFwaS9saW51eC9wa3Rfc2No ZWQuaCB8ICAgMSArDQo+PiAgbmV0L3NjaGVkL3NjaF90YXByaW8uYyAgICAgICAgIHwgMzI2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0KPj4gIDIgZmlsZXMgY2hhbmdlZCwgMzA2 IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQ0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv dWFwaS9saW51eC9wa3Rfc2NoZWQuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3Rfc2NoZWQuaA0K Pj4gaW5kZXggMzMxOTI1NWZmYTI1Li5hZmZmZGEyNGUwNTUgMTAwNjQ0DQo+PiAtLS0gYS9pbmNs dWRlL3VhcGkvbGludXgvcGt0X3NjaGVkLmgNCj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9w a3Rfc2NoZWQuaA0KPj4gQEAgLTExNzQsNiArMTE3NCw3IEBAIGVudW0gew0KPj4gIAlUQ0FfVEFQ UklPX0FUVFJfU0NIRURfQ1lDTEVfVElNRSwgLyogczY0ICovDQo+PiAgCVRDQV9UQVBSSU9fQVRU Ul9TQ0hFRF9DWUNMRV9USU1FX0VYVEVOU0lPTiwgLyogczY0ICovDQo+PiAgCVRDQV9UQVBSSU9f QVRUUl9PRkZMT0FEX0ZMQUdTLCAvKiB1MzIgKi8NCj4+ICsJVENBX1RBUFJJT19BVFRSX1RYVElN RV9ERUxBWSwgLyogczMyICovDQo+PiAgCV9fVENBX1RBUFJJT19BVFRSX01BWCwNCj4+ICB9Ow0K Pj4gIGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90 YXByaW8uYw0KPj4gaW5kZXggOGQ4N2JhMDk5MTMwLi4xY2QxOWVhYmM1M2IgMTAwNjQ0DQo+PiAt LS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jDQo+PiArKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJp by5jDQo+PiBAQCAtMjEsNiArMjEsNyBAQA0KPj4gICNpbmNsdWRlIDxuZXQvcGt0X3NjaGVkLmg+ DQo+PiAgI2luY2x1ZGUgPG5ldC9wa3RfY2xzLmg+DQo+PiAgI2luY2x1ZGUgPG5ldC9zY2hfZ2Vu ZXJpYy5oPg0KPj4gKyNpbmNsdWRlIDxuZXQvc29jay5oPg0KPj4gICAgc3RhdGljIExJU1RfSEVB RCh0YXByaW9fbGlzdCk7DQo+PiAgc3RhdGljIERFRklORV9TUElOTE9DSyh0YXByaW9fbGlzdF9s b2NrKTsNCj4+IEBAIC00MCw2ICs0MSw3IEBAIHN0cnVjdCBzY2hlZF9lbnRyeSB7DQo+PiAgCSAq IHBhY2tldCBsZWF2ZXMgYWZ0ZXIgdGhpcyB0aW1lLg0KPj4gIAkgKi8NCj4+ICAJa3RpbWVfdCBj bG9zZV90aW1lOw0KPj4gKwlrdGltZV90IG5leHRfdHh0aW1lOw0KPj4gIAlhdG9taWNfdCBidWRn ZXQ7DQo+PiAgCWludCBpbmRleDsNCj4+ICAJdTMyIGdhdGVfbWFzazsNCj4+IEBAIC03Niw2ICs3 OCw3IEBAIHN0cnVjdCB0YXByaW9fc2NoZWQgew0KPj4gIAlzdHJ1Y3Qgc2tfYnVmZiAqKCpwZWVr KShzdHJ1Y3QgUWRpc2MgKnNjaCk7DQo+PiAgCXN0cnVjdCBocnRpbWVyIGFkdmFuY2VfdGltZXI7 DQo+PiAgCXN0cnVjdCBsaXN0X2hlYWQgdGFwcmlvX2xpc3Q7DQo+PiArCWludCB0eHRpbWVfZGVs YXk7DQo+PiAgfTsNCj4+ICAgIHN0YXRpYyBrdGltZV90IHNjaGVkX2Jhc2VfdGltZShjb25zdCBz dHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCkNCj4+IEBAIC0xMTYsNiArMTE5LDIzNSBAQCBz dGF0aWMgdm9pZCBzd2l0Y2hfc2NoZWR1bGVzKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsDQo+PiAg CSphZG1pbiA9IE5VTEw7DQo+PiAgfQ0KPj4gICsvKiBHZXQgaG93IG11Y2ggdGltZSBoYXMgYmVl biBhbHJlYWR5IGVsYXBzZWQgaW4gdGhlIGN1cnJlbnQgY3ljbGUuICovDQo+PiArc3RhdGljIGlu bGluZSBzMzIgZ2V0X2N5Y2xlX3RpbWVfZWxhcHNlZChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpz Y2hlZCwga3RpbWVfdCB0aW1lKQ0KPj4gK3sNCj4+ICsJa3RpbWVfdCB0aW1lX3NpbmNlX3NjaGVk X3N0YXJ0Ow0KPj4gKwlzMzIgdGltZV9lbGFwc2VkOw0KPj4gKw0KPj4gKwl0aW1lX3NpbmNlX3Nj aGVkX3N0YXJ0ID0ga3RpbWVfc3ViKHRpbWUsIHNjaGVkLT5iYXNlX3RpbWUpOw0KPj4gKwlkaXZf czY0X3JlbSh0aW1lX3NpbmNlX3NjaGVkX3N0YXJ0LCBzY2hlZC0+Y3ljbGVfdGltZSwgJnRpbWVf ZWxhcHNlZCk7DQo+PiArDQo+PiArCXJldHVybiB0aW1lX2VsYXBzZWQ7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBrdGltZV90IGdldF9pbnRlcnZhbF9lbmRfdGltZShzdHJ1Y3Qgc2NoZWRfZ2F0 ZV9saXN0ICpzY2hlZCwNCj4+ICsJCQkJICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1p biwNCj4+ICsJCQkJICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LA0KPj4gKwkJCQkgICAg IGt0aW1lX3QgaW50dl9zdGFydCkNCj4+ICt7DQo+PiArCXMzMiBjeWNsZV9lbGFwc2VkID0gZ2V0 X2N5Y2xlX3RpbWVfZWxhcHNlZChzY2hlZCwgaW50dl9zdGFydCk7DQo+PiArCWt0aW1lX3QgaW50 dl9lbmQsIGN5Y2xlX2V4dF9lbmQsIGN5Y2xlX2VuZDsNCj4+ICsNCj4+ICsJY3ljbGVfZW5kID0g a3RpbWVfYWRkX25zKGludHZfc3RhcnQsIHNjaGVkLT5jeWNsZV90aW1lIC0gY3ljbGVfZWxhcHNl ZCk7DQo+PiArCWludHZfZW5kID0ga3RpbWVfYWRkX25zKGludHZfc3RhcnQsIGVudHJ5LT5pbnRl cnZhbCk7DQo+PiArCWN5Y2xlX2V4dF9lbmQgPSBrdGltZV9hZGQoY3ljbGVfZW5kLCBzY2hlZC0+ Y3ljbGVfdGltZV9leHRlbnNpb24pOw0KPj4gKw0KPj4gKwlpZiAoa3RpbWVfYmVmb3JlKGludHZf ZW5kLCBjeWNsZV9lbmQpKQ0KPj4gKwkJcmV0dXJuIGludHZfZW5kOw0KPj4gKwllbHNlIGlmIChh ZG1pbiAmJiBhZG1pbiAhPSBzY2hlZCAmJg0KPj4gKwkJIGt0aW1lX2FmdGVyKGFkbWluLT5iYXNl X3RpbWUsIGN5Y2xlX2VuZCkgJiYNCj4+ICsJCSBrdGltZV9iZWZvcmUoYWRtaW4tPmJhc2VfdGlt ZSwgY3ljbGVfZXh0X2VuZCkpDQo+PiArCQlyZXR1cm4gYWRtaW4tPmJhc2VfdGltZTsNCj4+ICsJ ZWxzZQ0KPj4gKwkJcmV0dXJuIGN5Y2xlX2VuZDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu bGluZSBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBs ZW4pDQo+PiArew0KPj4gKwlyZXR1cm4gKGxlbiAqIGF0b21pYzY0X3JlYWQoJnEtPnBpY29zX3Bl cl9ieXRlKSkgLyAxMDAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKiBSZXR1cm5zIHRoZSBlbnRyeSBj b3JyZXNwb25kaW5nIHRvIG5leHQgYXZhaWxhYmxlIGludGVydmFsLiBJZg0KPj4gKyAqIHZhbGlk YXRlX2ludGVydmFsIGlzIHNldCwgaXQgb25seSB2YWxpZGF0ZXMgd2hldGhlciB0aGUgdGltZXN0 YW1wIG9jY3Vycw0KPj4gKyAqIHdoZW4gdGhlIGdhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgc2ti J3MgdHJhZmZpYyBjbGFzcyBpcyBvcGVuLg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBzdHJ1Y3Qgc2No ZWRfZW50cnkgKmZpbmRfZW50cnlfdG9fdHJhbnNtaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwNCj4+ ICsJCQkJCQkgIHN0cnVjdCBRZGlzYyAqc2NoLA0KPj4gKwkJCQkJCSAgc3RydWN0IHNjaGVkX2dh dGVfbGlzdCAqc2NoZWQsDQo+PiArCQkJCQkJICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1p biwNCj4+ICsJCQkJCQkgIGt0aW1lX3QgdGltZSwNCj4+ICsJCQkJCQkgIGt0aW1lX3QgKmludGVy dmFsX3N0YXJ0LA0KPj4gKwkJCQkJCSAga3RpbWVfdCAqaW50ZXJ2YWxfZW5kLA0KPj4gKwkJCQkJ CSAgYm9vbCB2YWxpZGF0ZV9pbnRlcnZhbCkNCj4+ICt7DQo+PiArCWt0aW1lX3QgY3Vycl9pbnR2 X3N0YXJ0LCBjdXJyX2ludHZfZW5kLCBjeWNsZV9lbmQsIHBhY2tldF90cmFuc21pdF90aW1lOw0K Pj4gKwlrdGltZV90IGVhcmxpZXN0X3R4dGltZSA9IEtUSU1FX01BWCwgdHh0aW1lLCBjeWNsZSwg dHJhbnNtaXRfZW5kX3RpbWU7DQo+PiArCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSBOVUxM LCAqZW50cnlfZm91bmQgPSBOVUxMOw0KPj4gKwlzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRp c2NfcHJpdihzY2gpOw0KPj4gKwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNj aCk7DQo+PiArCWludCB0YywgZW50cnlfYXZhaWxhYmxlID0gMCwgbjsNCj4+ICsJczMyIGN5Y2xl X2VsYXBzZWQ7DQo+PiArDQo+PiArCXRjID0gbmV0ZGV2X2dldF9wcmlvX3RjX21hcChkZXYsIHNr Yi0+cHJpb3JpdHkpOw0KPj4gKwlwYWNrZXRfdHJhbnNtaXRfdGltZSA9IGxlbmd0aF90b19kdXJh dGlvbihxLCBxZGlzY19wa3RfbGVuKHNrYikpOw0KPj4gKw0KPj4gKwkqaW50ZXJ2YWxfc3RhcnQg PSAwOw0KPj4gKwkqaW50ZXJ2YWxfZW5kID0gMDsNCj4+ICsNCj4+ICsJaWYgKCFzY2hlZCkNCj4+ ICsJCXJldHVybiBOVUxMOw0KPj4gKw0KPj4gKwljeWNsZSA9IHNjaGVkLT5jeWNsZV90aW1lOw0K Pj4gKwljeWNsZV9lbGFwc2VkID0gZ2V0X2N5Y2xlX3RpbWVfZWxhcHNlZChzY2hlZCwgdGltZSk7 DQo+PiArCWN1cnJfaW50dl9lbmQgPSBrdGltZV9zdWJfbnModGltZSwgY3ljbGVfZWxhcHNlZCk7 DQo+PiArCWN5Y2xlX2VuZCA9IGt0aW1lX2FkZF9ucyhjdXJyX2ludHZfZW5kLCBjeWNsZSk7DQo+ PiArDQo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZzY2hlZC0+ZW50cmllcywgbGlz dCkgew0KPj4gKwkJY3Vycl9pbnR2X3N0YXJ0ID0gY3Vycl9pbnR2X2VuZDsNCj4+ICsJCWN1cnJf aW50dl9lbmQgPSBnZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc2NoZWQsIGFkbWluLCBlbnRyeSwNCj4+ ICsJCQkJCQkgICAgICBjdXJyX2ludHZfc3RhcnQpOw0KPj4gKw0KPj4gKwkJaWYgKGt0aW1lX2Fm dGVyKGN1cnJfaW50dl9zdGFydCwgY3ljbGVfZW5kKSkNCj4+ICsJCQlicmVhazsNCj4+ICsNCj4+ ICsJCWlmICghKGVudHJ5LT5nYXRlX21hc2sgJiBCSVQodGMpKSB8fA0KPj4gKwkJICAgIHBhY2tl dF90cmFuc21pdF90aW1lID4gZW50cnktPmludGVydmFsKQ0KPj4gKwkJCWNvbnRpbnVlOw0KPj4g Kw0KPj4gKwkJdHh0aW1lID0gZW50cnktPm5leHRfdHh0aW1lOw0KPj4gKw0KPj4gKwkJaWYgKGt0 aW1lX2JlZm9yZSh0eHRpbWUsIHRpbWUpIHx8IHZhbGlkYXRlX2ludGVydmFsKSB7DQo+PiArCQkJ dHJhbnNtaXRfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnModGltZSwgcGFja2V0X3RyYW5zbWl0X3Rp bWUpOw0KPj4gKwkJCWlmICgoa3RpbWVfYmVmb3JlKGN1cnJfaW50dl9zdGFydCwgdGltZSkgJiYN Cj4+ICsJCQkgICAgIGt0aW1lX2JlZm9yZSh0cmFuc21pdF9lbmRfdGltZSwgY3Vycl9pbnR2X2Vu ZCkpIHx8DQo+PiArCQkJICAgIChrdGltZV9hZnRlcihjdXJyX2ludHZfc3RhcnQsIHRpbWUpICYm ICF2YWxpZGF0ZV9pbnRlcnZhbCkpIHsNCj4+ICsJCQkJZW50cnlfZm91bmQgPSBlbnRyeTsNCj4+ ICsJCQkJKmludGVydmFsX3N0YXJ0ID0gY3Vycl9pbnR2X3N0YXJ0Ow0KPj4gKwkJCQkqaW50ZXJ2 YWxfZW5kID0gY3Vycl9pbnR2X2VuZDsNCj4+ICsJCQkJYnJlYWs7DQo+PiArCQkJfSBlbHNlIGlm ICghZW50cnlfYXZhaWxhYmxlICYmICF2YWxpZGF0ZV9pbnRlcnZhbCkgew0KPj4gKwkJCQkvKiBI ZXJlLCB3ZSBhcmUganVzdCB0cnlpbmcgdG8gZmluZCBvdXQgdGhlDQo+PiArCQkJCSAqIGZpcnN0 IGF2YWlsYWJsZSBpbnRlcnZhbCBpbiB0aGUgbmV4dCBjeWNsZS4NCj4+ICsJCQkJICovDQo+PiAr CQkJCWVudHJ5X2F2YWlsYWJsZSA9IDE7DQo+PiArCQkJCWVudHJ5X2ZvdW5kID0gZW50cnk7DQo+ PiArCQkJCSppbnRlcnZhbF9zdGFydCA9IGt0aW1lX2FkZF9ucyhjdXJyX2ludHZfc3RhcnQsIGN5 Y2xlKTsNCj4+ICsJCQkJKmludGVydmFsX2VuZCA9IGt0aW1lX2FkZF9ucyhjdXJyX2ludHZfZW5k LCBjeWNsZSk7DQo+PiArCQkJfQ0KPj4gKwkJfSBlbHNlIGlmIChrdGltZV9iZWZvcmUodHh0aW1l LCBlYXJsaWVzdF90eHRpbWUpICYmDQo+PiArCQkJICAgIWVudHJ5X2F2YWlsYWJsZSkgew0KPj4g KwkJCWVhcmxpZXN0X3R4dGltZSA9IHR4dGltZTsNCj4+ICsJCQllbnRyeV9mb3VuZCA9IGVudHJ5 Ow0KPj4gKwkJCW4gPSBkaXZfczY0KGt0aW1lX3N1Yih0eHRpbWUsIGN1cnJfaW50dl9zdGFydCks IGN5Y2xlKTsNCj4+ICsJCQkqaW50ZXJ2YWxfc3RhcnQgPSBrdGltZV9hZGQoY3Vycl9pbnR2X3N0 YXJ0LCBuICogY3ljbGUpOw0KPj4gKwkJCSppbnRlcnZhbF9lbmQgPSBrdGltZV9hZGQoY3Vycl9p bnR2X2VuZCwgbiAqIGN5Y2xlKTsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4g ZW50cnlfZm91bmQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBib29sIGlzX3ZhbGlkX2ludGVy dmFsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoKQ0KPj4gK3sNCj4+ICsJ c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTsNCj4+ICsJc3RydWN0IHNj aGVkX2dhdGVfbGlzdCAqc2NoZWQsICphZG1pbjsNCj4+ICsJa3RpbWVfdCBpbnRlcnZhbF9zdGFy dCwgaW50ZXJ2YWxfZW5kOw0KPj4gKwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5Ow0KPj4gKw0K Pj4gKwlyY3VfcmVhZF9sb2NrKCk7DQo+PiArCXNjaGVkID0gcmN1X2RlcmVmZXJlbmNlKHEtPm9w ZXJfc2NoZWQpOw0KPj4gKwlhZG1pbiA9IHJjdV9kZXJlZmVyZW5jZShxLT5hZG1pbl9zY2hlZCk7 DQo+PiArDQo+PiArCWVudHJ5ID0gZmluZF9lbnRyeV90b190cmFuc21pdChza2IsIHNjaCwgc2No ZWQsIGFkbWluLCBza2ItPnRzdGFtcCwNCj4+ICsJCQkJICAgICAgICZpbnRlcnZhbF9zdGFydCwg JmludGVydmFsX2VuZCwgdHJ1ZSk7DQo+PiArCXJjdV9yZWFkX3VubG9jaygpOw0KPj4gKw0KPj4g KwlyZXR1cm4gZW50cnk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUga3RpbWVfdCBn ZXRfY3ljbGVfc3RhcnQoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsDQo+PiArCQkJCSAg ICAgIGt0aW1lX3QgdGltZSkNCj4+ICt7DQo+PiArCWt0aW1lX3QgY3ljbGVfZWxhcHNlZDsNCj4+ ICsNCj4+ICsJY3ljbGVfZWxhcHNlZCA9IGdldF9jeWNsZV90aW1lX2VsYXBzZWQoc2NoZWQsIHRp bWUpOw0KPj4gKw0KPj4gKwlyZXR1cm4ga3RpbWVfc3ViKHRpbWUsIGN5Y2xlX2VsYXBzZWQpOw0K Pj4gK30NCj4+ICsNCj4+ICsvKiBUaGVyZSBhcmUgYSBmZXcgc2NlbmFyaW9zIHdoZXJlIHdlIHdp bGwgaGF2ZSB0byBtb2RpZnkgdGhlIHR4dGltZSBmcm9tDQo+PiArICogd2hhdCBpcyByZWFkIGZy b20gbmV4dF90eHRpbWUgaW4gc2NoZWRfZW50cnkuIFRoZXkgYXJlOg0KPj4gKyAqIDEuIElmIHR4 dGltZSBpcyBpbiB0aGUgcGFzdCwNCj4+ICsgKiAgICBhLiBUaGUgZ2F0ZSBmb3IgdGhlIHRyYWZm aWMgY2xhc3MgaXMgY3VycmVudGx5IG9wZW4gYW5kIHBhY2tldCBjYW4gYmUNCj4+ICsgKiAgICAg ICB0cmFuc21pdHRlZCBiZWZvcmUgaXQgY2xvc2VzLCBzY2hlZHVsZSB0aGUgcGFja2V0IHJpZ2h0 IGF3YXkuDQo+PiArICogICAgYi4gSWYgdGhlIGdhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgdHJh ZmZpYyBjbGFzcyBpcyBnb2luZyB0byBvcGVuIGxhdGVyDQo+PiArICogICAgICAgaW4gdGhlIGN5 Y2xlLCBzZXQgdGhlIHR4dGltZSBvZiBwYWNrZXQgdG8gdGhlIGludGVydmFsIHN0YXJ0Lg0KPj4g KyAqIDIuIElmIHR4dGltZSBpcyBpbiB0aGUgZnV0dXJlLCB0aGVyZSBhcmUgcGFja2V0cyBjb3Jy ZXNwb25kaW5nIHRvIHRoZQ0KPj4gKyAqICAgIGN1cnJlbnQgdHJhZmZpYyBjbGFzcyB3YWl0aW5n IHRvIGJlIHRyYW5zbWl0dGVkLiBTbywgdGhlIGZvbGxvd2luZw0KPj4gKyAqICAgIHBvc3NpYmls aXRpZXMgZXhpc3Q6DQo+PiArICogICAgYS4gV2UgY2FuIHRyYW5zbWl0IHRoZSBwYWNrZXQgYmVm b3JlIHRoZSB3aW5kb3cgY29udGFpbmluZyB0aGUgdHh0aW1lDQo+PiArICogICAgICAgY2xvc2Vz Lg0KPj4gKyAqICAgIGIuIFRoZSB3aW5kb3cgbWlnaHQgY2xvc2UgYmVmb3JlIHRoZSB0cmFuc21p c3Npb24gY2FuIGJlIGNvbXBsZXRlZA0KPj4gKyAqICAgICAgIHN1Y2Nlc3NmdWxseS4gU28sIHNj aGVkdWxlIHRoZSBwYWNrZXQgaW4gdGhlIG5leHQgb3BlbiB3aW5kb3cuDQo+PiArICovDQo+PiAr c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IFFkaXNjICpzY2gpDQo+PiArew0KPj4gKwlrdGltZV90IHRyYW5zbWl0X2VuZF90aW1lLCBpbnRl cnZhbF9lbmQsIGludGVydmFsX3N0YXJ0Ow0KPj4gKwlpbnQgbGVuLCBwYWNrZXRfdHJhbnNtaXRf dGltZSwgc2NoZWRfY2hhbmdlZDsNCj4+ICsJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNj X3ByaXYoc2NoKTsNCj4+ICsJa3RpbWVfdCBtaW5pbXVtX3RpbWUsIG5vdywgdHh0aW1lOw0KPj4g KwlzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwgKmFkbWluOw0KPj4gKwlzdHJ1Y3Qgc2No ZWRfZW50cnkgKmVudHJ5Ow0KPj4gKw0KPj4gKwlub3cgPSBxLT5nZXRfdGltZSgpOw0KPj4gKwlt aW5pbXVtX3RpbWUgPSBrdGltZV9hZGRfbnMobm93LCBxLT50eHRpbWVfZGVsYXkpOw0KPj4gKw0K Pj4gKwlyY3VfcmVhZF9sb2NrKCk7DQo+PiArCWFkbWluID0gcmN1X2RlcmVmZXJlbmNlKHEtPmFk bWluX3NjaGVkKTsNCj4+ICsJc2NoZWQgPSByY3VfZGVyZWZlcmVuY2UocS0+b3Blcl9zY2hlZCk7 DQo+PiArCWlmIChhZG1pbiAmJiBrdGltZV9hZnRlcihtaW5pbXVtX3RpbWUsIGFkbWluLT5iYXNl X3RpbWUpKQ0KPj4gKwkJc3dpdGNoX3NjaGVkdWxlcyhxLCAmYWRtaW4sICZzY2hlZCk7DQo+PiAr DQo+PiArCS8qIFVudGlsIHRoZSBzY2hlZHVsZSBzdGFydHMsIGFsbCB0aGUgcXVldWVzIGFyZSBv cGVuICovDQo+PiArCWlmICghc2NoZWQgfHwga3RpbWVfYmVmb3JlKG1pbmltdW1fdGltZSwgc2No ZWQtPmJhc2VfdGltZSkpIHsNCj4+ICsJCXR4dGltZSA9IG1pbmltdW1fdGltZTsNCj4+ICsJCWdv dG8gZG9uZTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlsZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7DQo+ PiArCXBhY2tldF90cmFuc21pdF90aW1lID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIGxlbik7DQo+ PiArDQo+PiArCWRvIHsNCj4+ICsJCXNjaGVkX2NoYW5nZWQgPSAwOw0KPj4gKw0KPj4gKwkJZW50 cnkgPSBmaW5kX2VudHJ5X3RvX3RyYW5zbWl0KHNrYiwgc2NoLCBzY2hlZCwgYWRtaW4sDQo+PiAr CQkJCQkgICAgICAgbWluaW11bV90aW1lLA0KPj4gKwkJCQkJICAgICAgICZpbnRlcnZhbF9zdGFy dCwgJmludGVydmFsX2VuZCwNCj4+ICsJCQkJCSAgICAgICBmYWxzZSk7DQo+PiArCQlpZiAoIWVu dHJ5KSB7DQo+PiArCQkJdHh0aW1lID0gMDsNCj4+ICsJCQlnb3RvIGRvbmU7DQo+PiArCQl9DQo+ PiArDQo+PiArCQl0eHRpbWUgPSBlbnRyeS0+bmV4dF90eHRpbWU7DQo+PiArCQl0eHRpbWUgPSBt YXhfdChrdGltZV90LCB0eHRpbWUsIG1pbmltdW1fdGltZSk7DQo+PiArCQl0eHRpbWUgPSBtYXhf dChrdGltZV90LCB0eHRpbWUsIGludGVydmFsX3N0YXJ0KTsNCj4+ICsNCj4+ICsJCWlmIChhZG1p biAmJiBhZG1pbiAhPSBzY2hlZCAmJg0KPj4gKwkJICAgIGt0aW1lX2FmdGVyKHR4dGltZSwgYWRt aW4tPmJhc2VfdGltZSkpIHsNCj4+ICsJCQlzY2hlZCA9IGFkbWluOw0KPj4gKwkJCXNjaGVkX2No YW5nZWQgPSAxOw0KPj4gKwkJCWNvbnRpbnVlOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJdHJhbnNt aXRfZW5kX3RpbWUgPSBrdGltZV9hZGQodHh0aW1lLCBwYWNrZXRfdHJhbnNtaXRfdGltZSk7DQo+ PiArCQltaW5pbXVtX3RpbWUgPSB0cmFuc21pdF9lbmRfdGltZTsNCj4+ICsNCj4+ICsJCS8qIFVw ZGF0ZSB0aGUgdHh0aW1lIG9mIGN1cnJlbnQgZW50cnkgdG8gdGhlIG5leHQgdGltZSBpdCdzDQo+ PiArCQkgKiBpbnRlcnZhbCBzdGFydHMuDQo+PiArCQkgKi8NCj4+ICsJCWlmIChrdGltZV9hZnRl cih0cmFuc21pdF9lbmRfdGltZSwgaW50ZXJ2YWxfZW5kKSkNCj4+ICsJCQllbnRyeS0+bmV4dF90 eHRpbWUgPSBrdGltZV9hZGQoaW50ZXJ2YWxfc3RhcnQsIHNjaGVkLT5jeWNsZV90aW1lKTsNCj4+ ICsJfSB3aGlsZSAoc2NoZWRfY2hhbmdlZCB8fCBrdGltZV9hZnRlcih0cmFuc21pdF9lbmRfdGlt ZSwgaW50ZXJ2YWxfZW5kKSk7DQo+PiArDQo+PiArCWVudHJ5LT5uZXh0X3R4dGltZSA9IHRyYW5z bWl0X2VuZF90aW1lOw0KPj4gKw0KPj4gK2RvbmU6DQo+PiArCXJjdV9yZWFkX3VubG9jaygpOw0K Pj4gKwlyZXR1cm4gdHh0aW1lOw0KPj4gK30NCj4+ICsNCj4+ICBzdGF0aWMgaW50IHRhcHJpb19l bnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLA0KPj4gIAkJCSAg c3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKQ0KPj4gIHsNCj4+IEBAIC0xMjksNiArMzYxLDE1IEBA IHN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFk aXNjICpzY2gsDQo+PiAgCWlmICh1bmxpa2VseSghY2hpbGQpKQ0KPj4gIAkJcmV0dXJuIHFkaXNj X2Ryb3Aoc2tiLCBzY2gsIHRvX2ZyZWUpOw0KPj4gICsJaWYgKHNrYi0+c2sgJiYgc29ja19mbGFn KHNrYi0+c2ssIFNPQ0tfVFhUSU1FKSkgew0KPj4gKwkJaWYgKCFpc192YWxpZF9pbnRlcnZhbChz a2IsIHNjaCkpDQo+PiArCQkJcmV0dXJuIHFkaXNjX2Ryb3Aoc2tiLCBzY2gsIHRvX2ZyZWUpOw0K Pj4gKwl9IGVsc2UgaWYgKFRYVElNRV9PRkZMT0FEX0lTX09OKHEtPm9mZmxvYWRfZmxhZ3MpKSB7 DQo+PiArCQlza2ItPnRzdGFtcCA9IGdldF9wYWNrZXRfdHh0aW1lKHNrYiwgc2NoKTsNCj4+ICsJ CWlmICghc2tiLT50c3RhbXApDQo+PiArCQkJcmV0dXJuIHFkaXNjX2Ryb3Aoc2tiLCBzY2gsIHRv X2ZyZWUpOw0KPj4gKwl9DQo+PiArDQo+PiAgCXFkaXNjX3FzdGF0c19iYWNrbG9nX2luYyhzY2gs IHNrYik7DQo+PiAgCXNjaC0+cS5xbGVuKys7DQo+PiAgQEAgLTIwNiwxMSArNDQ3LDYgQEAgc3Rh dGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaCkNCj4+ICAJ cmV0dXJuIHEtPnBlZWsoc2NoKTsNCj4+ICB9DQo+PiAgLXN0YXRpYyBpbmxpbmUgaW50IGxlbmd0 aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKQ0KPj4gLXsNCj4+ IC0JcmV0dXJuIGRpdl91NjQobGVuICogYXRvbWljNjRfcmVhZCgmcS0+cGljb3NfcGVyX2J5dGUp LCAxMDAwKTsNCj4+IC19DQo+PiAtDQo+PiAgc3RhdGljIHZvaWQgdGFwcmlvX3NldF9idWRnZXQo c3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSkNCj4+ICB7 DQo+PiAgCWF0b21pY19zZXQoJmVudHJ5LT5idWRnZXQsDQo+PiBAQCAtNTk0LDcgKzgzMCw4IEBA IHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCBubGF0dHIgKip0YiwNCj4+ ICAgIHN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX21xcHJpb19vcHQoc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwNCj4+ICAJCQkJICAgc3RydWN0IHRjX21xcHJpb19xb3B0ICpxb3B0LA0KPj4gLQkJCQkg ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spDQo+PiArCQkJCSAgIHN0cnVjdCBuZXRs aW5rX2V4dF9hY2sgKmV4dGFjaywNCj4+ICsJCQkJICAgdTMyIG9mZmxvYWRfZmxhZ3MpDQo+PiAg ew0KPj4gIAlpbnQgaSwgajsNCj4+ICBAQCAtNjQyLDYgKzg3OSw5IEBAIHN0YXRpYyBpbnQgdGFw cmlvX3BhcnNlX21xcHJpb19vcHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCj4+ICAJCQlyZXR1 cm4gLUVJTlZBTDsNCj4+ICAJCX0NCj4+ICArCQlpZiAoVFhUSU1FX09GRkxPQURfSVNfT04ob2Zm bG9hZF9mbGFncykpDQo+PiArCQkJY29udGludWU7DQo+PiArDQo+PiAgCQkvKiBWZXJpZnkgdGhh dCB0aGUgb2Zmc2V0IGFuZCBjb3VudHMgZG8gbm90IG92ZXJsYXAgKi8NCj4+ICAJCWZvciAoaiA9 IGkgKyAxOyBqIDwgcW9wdC0+bnVtX3RjOyBqKyspIHsNCj4+ICAJCQlpZiAobGFzdCA+IHFvcHQt Pm9mZnNldFtqXSkgew0KPj4gQEAgLTgwNCw2ICsxMDQ0LDkgQEAgc3RhdGljIGludCB0YXByaW9f ZW5hYmxlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCj4+ICAJY29uc3Qgc3RydWN0 IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtPm5ldGRldl9vcHM7DQo+PiAgCWludCBlcnIgPSAw Ow0KPj4gICsJaWYgKFRYVElNRV9PRkZMT0FEX0lTX09OKG9mZmxvYWRfZmxhZ3MpKQ0KPj4gKwkJ Z290byBkb25lOw0KPj4gKw0KPj4gIAlpZiAoIUZVTExfT0ZGTE9BRF9JU19PTihvZmZsb2FkX2Zs YWdzKSkgew0KPj4gIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAiT2ZmbG9hZCBtb2RlIGlzIG5v dCBzdXBwb3J0ZWQiKTsNCj4+ICAJCXJldHVybiAtRU9QTk9UU1VQUDsNCj4+IEBAIC04MTYsMTUg KzEwNTksMjggQEAgc3RhdGljIGludCB0YXByaW9fZW5hYmxlX29mZmxvYWQoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwNCj4+ICAgIAkvKiBGSVhNRTogZW5hYmxlIG9mZmxvYWRpbmcgKi8NCj4+ICAt CXEtPmRlcXVldWUgPSB0YXByaW9fZGVxdWV1ZV9vZmZsb2FkOw0KPj4gLQlxLT5wZWVrID0gdGFw cmlvX3BlZWtfb2ZmbG9hZDsNCj4+IC0NCj4+IC0JaWYgKGVyciA9PSAwKQ0KPj4gK2RvbmU6DQo+ PiArCWlmIChlcnIgPT0gMCkgew0KPj4gKwkJcS0+ZGVxdWV1ZSA9IHRhcHJpb19kZXF1ZXVlX29m ZmxvYWQ7DQo+PiArCQlxLT5wZWVrID0gdGFwcmlvX3BlZWtfb2ZmbG9hZDsNCj4+ICAJCXEtPm9m ZmxvYWRfZmxhZ3MgPSBvZmZsb2FkX2ZsYWdzOw0KPj4gKwl9DQo+PiAgICAJcmV0dXJuIGVycjsN Cj4+ICB9DQo+PiAgK3N0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVk ICpxLA0KPj4gKwkJCSBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNl KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeTsNCj4+ICsJdTMyIGludGVy dmFsID0gMDsNCj4+ICsNCj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJnNjaGVkLT5l bnRyaWVzLCBsaXN0KSB7DQo+PiArCQllbnRyeS0+bmV4dF90eHRpbWUgPSBrdGltZV9hZGRfbnMo YmFzZSwgaW50ZXJ2YWwpOw0KPj4gKwkJaW50ZXJ2YWwgKz0gZW50cnktPmludGVydmFsOw0KPj4g Kwl9DQo+PiArfQ0KPj4gKw0KPj4gIHN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRp c2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KPj4gIAkJCSBzdHJ1Y3QgbmV0bGlua19leHRf YWNrICpleHRhY2spDQo+PiAgew0KPj4gQEAgLTg0Niw3ICsxMTAyLDEwIEBAIHN0YXRpYyBpbnQg dGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KPj4g IAlpZiAodGJbVENBX1RBUFJJT19BVFRSX1BSSU9NQVBdKQ0KPj4gIAkJbXFwcmlvID0gbmxhX2Rh dGEodGJbVENBX1RBUFJJT19BVFRSX1BSSU9NQVBdKTsNCj4+ICAtCWVyciA9IHRhcHJpb19wYXJz ZV9tcXByaW9fb3B0KGRldiwgbXFwcmlvLCBleHRhY2spOw0KPj4gKwlpZiAodGJbVENBX1RBUFJJ T19BVFRSX09GRkxPQURfRkxBR1NdKQ0KPj4gKwkJb2ZmbG9hZF9mbGFncyA9IG5sYV9nZXRfdTMy KHRiW1RDQV9UQVBSSU9fQVRUUl9PRkZMT0FEX0ZMQUdTXSk7DQo+PiArDQo+PiArCWVyciA9IHRh cHJpb19wYXJzZV9tcXByaW9fb3B0KGRldiwgbXFwcmlvLCBleHRhY2ssIG9mZmxvYWRfZmxhZ3Mp Ow0KPj4gIAlpZiAoZXJyIDwgMCkNCj4+ICAJCXJldHVybiBlcnI7DQo+PiAgQEAgLTg4Nyw2ICsx MTQ2LDEwIEBAIHN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3Ry dWN0IG5sYXR0ciAqb3B0LA0KPj4gIAkJZ290byBmcmVlX3NjaGVkOw0KPj4gIAl9DQo+PiAgKwkv KiBwcmVzZXJ2ZSBvZmZsb2FkIGZsYWdzIHdoZW4gY2hhbmdpbmcgdGhlIHNjaGVkdWxlLiAqLw0K Pj4gKwlpZiAocS0+b2ZmbG9hZF9mbGFncykNCj4+ICsJCW9mZmxvYWRfZmxhZ3MgPSBxLT5vZmZs b2FkX2ZsYWdzOw0KPj4gKw0KPj4gIAlpZiAodGJbVENBX1RBUFJJT19BVFRSX1NDSEVEX0NMT0NL SURdKSB7DQo+PiAgCQljbG9ja2lkID0gbmxhX2dldF9zMzIodGJbVENBX1RBUFJJT19BVFRSX1ND SEVEX0NMT0NLSURdKTsNCj4+ICBAQCAtOTE0LDcgKzExNzcsMTAgQEAgc3RhdGljIGludCB0YXBy aW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQo+PiAgCS8q IFByb3RlY3RzIGFnYWluc3QgZW5xdWV1ZSgpL2RlcXVldWUoKSAqLw0KPj4gIAlzcGluX2xvY2tf YmgocWRpc2NfbG9jayhzY2gpKTsNCj4+ICAtCWlmICghaHJ0aW1lcl9hY3RpdmUoJnEtPmFkdmFu Y2VfdGltZXIpKSB7DQo+PiArCWlmICh0YltUQ0FfVEFQUklPX0FUVFJfVFhUSU1FX0RFTEFZXSkN Cj4+ICsJCXEtPnR4dGltZV9kZWxheSA9IG5sYV9nZXRfczMyKHRiW1RDQV9UQVBSSU9fQVRUUl9U WFRJTUVfREVMQVldKTsNCj4+ICsNCj4+ICsJaWYgKCFUWFRJTUVfT0ZGTE9BRF9JU19PTihvZmZs b2FkX2ZsYWdzKSAmJiAhaHJ0aW1lcl9hY3RpdmUoJnEtPmFkdmFuY2VfdGltZXIpKSB7DQo+PiAg CQlocnRpbWVyX2luaXQoJnEtPmFkdmFuY2VfdGltZXIsIHEtPmNsb2NraWQsIEhSVElNRVJfTU9E RV9BQlMpOw0KPj4gIAkJcS0+YWR2YW5jZV90aW1lci5mdW5jdGlvbiA9IGFkdmFuY2Vfc2NoZWQ7 DQo+PiAgCX0NCj4+IEBAIC05NjYsMjAgKzEyMzIsMzUgQEAgc3RhdGljIGludCB0YXByaW9fY2hh bmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQo+PiAgCQlnb3RvIHVu bG9jazsNCj4+ICAJfQ0KPj4gIC0Jc2V0dXBfZmlyc3RfY2xvc2VfdGltZShxLCBuZXdfYWRtaW4s IHN0YXJ0KTsNCj4+ICsJaWYgKFRYVElNRV9PRkZMT0FEX0lTX09OKG9mZmxvYWRfZmxhZ3MpKSB7 DQo+PiArCQlzZXR1cF90eHRpbWUocSwgbmV3X2FkbWluLCBzdGFydCk7DQo+PiArDQo+PiArCQlp ZiAoIW9wZXIpIHsNCj4+ICsJCQlyY3VfYXNzaWduX3BvaW50ZXIocS0+b3Blcl9zY2hlZCwgbmV3 X2FkbWluKTsNCj4+ICsJCQllcnIgPSAwOw0KPj4gKwkJCW5ld19hZG1pbiA9IE5VTEw7DQo+PiAr CQkJZ290byB1bmxvY2s7DQo+PiArCQl9DQo+PiArDQo+PiArCQlyY3VfYXNzaWduX3BvaW50ZXIo cS0+YWRtaW5fc2NoZWQsIG5ld19hZG1pbik7DQo+PiArCQlpZiAoYWRtaW4pDQo+PiArCQkJY2Fs bF9yY3UoJmFkbWluLT5yY3UsIHRhcHJpb19mcmVlX3NjaGVkX2NiKTsNCj4+ICsJfSBlbHNlIHsN Cj4+ICsJCXNldHVwX2ZpcnN0X2Nsb3NlX3RpbWUocSwgbmV3X2FkbWluLCBzdGFydCk7DQo+PiAg LQkvKiBQcm90ZWN0cyBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSAqLw0KPj4gLQlzcGluX2xvY2tf aXJxc2F2ZSgmcS0+Y3VycmVudF9lbnRyeV9sb2NrLCBmbGFncyk7DQo+PiArCQkvKiBQcm90ZWN0 cyBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSAqLw0KPj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnEt PmN1cnJlbnRfZW50cnlfbG9jaywgZmxhZ3MpOw0KPj4gIC0JdGFwcmlvX3N0YXJ0X3NjaGVkKHNj aCwgc3RhcnQsIG5ld19hZG1pbik7DQo+PiArCQl0YXByaW9fc3RhcnRfc2NoZWQoc2NoLCBzdGFy dCwgbmV3X2FkbWluKTsNCj4+ICAtCXJjdV9hc3NpZ25fcG9pbnRlcihxLT5hZG1pbl9zY2hlZCwg bmV3X2FkbWluKTsNCj4+IC0JaWYgKGFkbWluKQ0KPj4gLQkJY2FsbF9yY3UoJmFkbWluLT5yY3Us IHRhcHJpb19mcmVlX3NjaGVkX2NiKTsNCj4+IC0JbmV3X2FkbWluID0gTlVMTDsNCj4+ICsJCXJj dV9hc3NpZ25fcG9pbnRlcihxLT5hZG1pbl9zY2hlZCwgbmV3X2FkbWluKTsNCj4+ICsJCWlmIChh ZG1pbikNCj4+ICsJCQljYWxsX3JjdSgmYWRtaW4tPnJjdSwgdGFwcmlvX2ZyZWVfc2NoZWRfY2Ip Ow0KPj4gIC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcS0+Y3VycmVudF9lbnRyeV9sb2NrLCBm bGFncyk7DQo+PiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZxLT5jdXJyZW50X2VudHJ5X2xv Y2ssIGZsYWdzKTsNCj4+ICsJfQ0KPj4gICsJbmV3X2FkbWluID0gTlVMTDsNCj4+ICAJZXJyID0g MDsNCj4+ICAgIHVubG9jazoNCj4+IEBAIC0xMjI1LDYgKzE1MDYsOSBAQCBzdGF0aWMgaW50IHRh cHJpb19kdW1wKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPj4gIAlp ZiAobmxhX3B1dF91MzIoc2tiLCBUQ0FfVEFQUklPX0FUVFJfT0ZGTE9BRF9GTEFHUywgcS0+b2Zm bG9hZF9mbGFncykpDQo+PiAgCQlnb3RvIG9wdGlvbnNfZXJyb3I7DQo+PiAgKwlpZiAobmxhX3B1 dF9zMzIoc2tiLCBUQ0FfVEFQUklPX0FUVFJfVFhUSU1FX0RFTEFZLCBxLT50eHRpbWVfZGVsYXkp KQ0KPj4gKwkJZ290byBvcHRpb25zX2Vycm9yOw0KPj4gKw0KPj4gIAlpZiAob3BlciAmJiBkdW1w X3NjaGVkdWxlKHNrYiwgb3BlcikpDQo+PiAgCQlnb3RvIG9wdGlvbnNfZXJyb3I7DQo+PiAgDQo+ IA0KDQo=