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 CE61FC2BCA1 for ; Fri, 7 Jun 2019 21:12:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 94BE02064A for ; Fri, 7 Jun 2019 21:12:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731194AbfFGVMo (ORCPT ); Fri, 7 Jun 2019 17:12:44 -0400 Received: from mga03.intel.com ([134.134.136.65]:42067 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730701AbfFGVMm (ORCPT ); Fri, 7 Jun 2019 17:12:42 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Jun 2019 14:12:40 -0700 X-ExtLoop1: 1 Received: from orsmsx107.amr.corp.intel.com ([10.22.240.5]) by orsmga005.jf.intel.com with ESMTP; 07 Jun 2019 14:12:40 -0700 Received: from orsmsx160.amr.corp.intel.com (10.22.226.43) by ORSMSX107.amr.corp.intel.com (10.22.240.5) with Microsoft SMTP Server (TLS) id 14.3.408.0; Fri, 7 Jun 2019 14:12:40 -0700 Received: from orsmsx115.amr.corp.intel.com ([169.254.4.13]) by ORSMSX160.amr.corp.intel.com ([169.254.13.69]) with mapi id 14.03.0415.000; Fri, 7 Jun 2019 14:12:40 -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+empHywwSrKaaKeAIAgAH0TACABKJOgIAAJzGA Date: Fri, 7 Jun 2019 21:12:36 +0000 Message-ID: <7F0484D6-80AA-454B-B179-9FAC20D633FD@intel.com> 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> <7a8f56c5-69aa-52ed-3889-810466f80137@ti.com> In-Reply-To: <7a8f56c5-69aa-52ed-3889-810466f80137@ti.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.24.14.138] Content-Type: text/plain; charset="utf-8" Content-ID: <98D72E097FD24A408805952C1A6F13A7@intel.com> 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+IE9uIEp1biA3LCAyMDE5LCBhdCAxMTo1MiBBTSwgTXVyYWxpIEthcmlj aGVyaSA8bS1rYXJpY2hlcmkyQHRpLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiAwNi8wNC8yMDE5IDA0 OjA2IFBNLCBQYXRlbCwgVmVkYW5nIHdyb3RlOg0KPj4gSGkgTXVyYWxpLA0KPj4+IE9uIEp1biAz LCAyMDE5LCBhdCA3OjE1IEFNLCBNdXJhbGkgS2FyaWNoZXJpIDxtLWthcmljaGVyaTJAdGkuY29t PiB3cm90ZToNCj4+PiANCj4+PiBIaSBWZWRhbmcsDQo+Pj4gDQo+Pj4gT24gMDUvMjgvMjAxOSAw MTo0NiBQTSwgVmVkYW5nIFBhdGVsIHdyb3RlOg0KPj4+PiBDdXJyZW50bHksIHdlIGFyZSBzZWVp bmcgbm9uLWNyaXRpY2FsIHBhY2tldHMgYmVpbmcgdHJhbnNtaXR0ZWQgb3V0c2lkZQ0KPj4+PiBv ZiB0aGVpciB0aW1lc2xpY2UuIFdlIGNhbiBjb25maXJtIHRoYXQgdGhlIHBhY2tldHMgYXJlIGJl aW5nIGRlcXVldWVkDQo+Pj4+IGF0IHRoZSByaWdodCB0aW1lLiBTbywgdGhlIGRlbGF5IGlzIGlu ZHVjZWQgaW4gdGhlIGhhcmR3YXJlIHNpZGUuICBUaGUNCj4+Pj4gbW9zdCBsaWtlbHkgcmVhc29u IGlzIHRoZSBoYXJkd2FyZSBxdWV1ZXMgYXJlIHN0YXJ2aW5nIHRoZSBsb3dlcg0KPj4+PiBwcmlv cml0eSBxdWV1ZXMuDQo+Pj4+IEluIG9yZGVyIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9m IHRhcHJpbywgd2Ugd2lsbCBiZSBtYWtpbmcgdXNlIG9mIHRoZQ0KPj4+PiB0eHRpbWUgZmVhdHVy ZSBwcm92aWRlZCBieSB0aGUgRVRGIHFkaXNjLiBGb3IgYWxsIHRoZSBwYWNrZXRzIHdoaWNoIGRv IG5vdCBoYXZlDQo+Pj4+IHRoZSBTT19UWFRJTUUgb3B0aW9uIHNldCwgdGFwcmlvIHdpbGwgc2V0 IHRoZSB0cmFuc21pdCB0aW1lc3RhbXAgKHNldCBpbg0KPj4+PiBza2ItPnRzdGFtcCkgaW4gdGhp cyBtb2RlLiBUQVByaW8gUWRpc2Mgd2lsbCBlbnN1cmUgdGhhdCB0aGUgdHJhbnNtaXQgdGltZSBm b3INCj4+Pj4gdGhlIHBhY2tldCBpcyBzZXQgdG8gd2hlbiB0aGUgZ2F0ZSBpcyBvcGVuLiBJZiBT T19UWFRJTUUgaXMgc2V0LCB0aGUgVEFQcmlvDQo+Pj4+IHFkaXNjIHdpbGwgdmFsaWRhdGUgd2hl dGhlciB0aGUgdGltZXN0YW1wIChpbiBza2ItPnRzdGFtcCkgb2NjdXJzIHdoZW4gdGhlIGdhdGUN Cj4+Pj4gY29ycmVzcG9uZGluZyB0byBza2IncyB0cmFmZmljIGNsYXNzIGlzIG9wZW4uDQo+Pj4+ IEZvbGxvd2luZyBpcyB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9uIGZvciBlbmFibGluZyB0eHRp bWUgb2ZmbG9hZDoNCj4+Pj4gdGMgcWRpc2MgcmVwbGFjZSBkZXYgZXRoMCBwYXJlbnQgcm9vdCBo YW5kbGUgMTAwIHRhcHJpbyBcXA0KPj4+PiAgICAgICBudW1fdGMgMyBcXA0KPj4+PiAgICAgICBt YXAgMiAyIDEgMCAyIDIgMiAyIDIgMiAyIDIgMiAyIDIgMiBcXA0KPj4+PiAgICAgICBxdWV1ZXMg MUAwIDFAMCAxQDAgXFwNCj4+Pj4gICAgICAgYmFzZS10aW1lIDE1NTg2NTM0MjQyNzk4NDI1Njgg XFwNCj4+Pj4gICAgICAgc2NoZWQtZW50cnkgUyAwMSAzMDAwMDAgXFwNCj4+Pj4gICAgICAgc2No ZWQtZW50cnkgUyAwMiAzMDAwMDAgXFwNCj4+Pj4gICAgICAgc2NoZWQtZW50cnkgUyAwNCA0MDAw MDAgXFwNCj4+Pj4gICAgICAgb2ZmbG9hZCAyIFxcDQo+Pj4+ICAgICAgIHR4dGltZS1kZWxheSA0 MDAwMCBcXA0KPj4+PiAgICAgICBjbG9ja2lkIENMT0NLX1RBSQ0KPj4+PiB0YyBxZGlzYyByZXBs YWNlIGRldiAkSUZBQ0UgcGFyZW50IDEwMDoxIGV0ZiBza2lwX3NvY2tfY2hlY2sgXFwNCj4+Pj4g ICAgICAgb2ZmbG9hZCBkZWx0YSAyMDAwMDAgY2xvY2tpZCBDTE9DS19UQUkNCj4+Pj4gSGVyZSwg dGhlICJvZmZsb2FkIiBwYXJhbWV0ZXIgaXMgaW5kaWNhdGluZyB0aGF0IHRoZSBUWFRJTUVfT0ZG TE9BRCBtb2RlIGlzDQo+Pj4+IGVuYWJsZWQuIEFsc28sIGFsbCB0aGUgdHJhZmZpYyBjbGFzc2Vz IGFyZSBtYXBwZWQgdG8gdGhlIHNhbWUgcXVldWUuICBUaGlzIGlzDQo+Pj4+IG9ubHkgcG9zc2li bGUgaW4gdGFwcmlvIHdoZW4gdHh0aW1lIG9mZmxvYWQgaXMgZW5hYmxlZC4gQWxzbyBub3RlIHRo YXQgdGhlIEVURg0KPj4+PiBRZGlzYyBpcyBlbmFibGVkIHdpdGggb2ZmbG9hZCBtb2RlIHNldC4N Cj4+Pj4gSW4gdGhpcyBtb2RlLCBpZiB0aGUgcGFja2V0J3MgdHJhZmZpYyBjbGFzcyBpcyBvcGVu IGFuZCB0aGUgY29tcGxldGUgcGFja2V0IGNhbg0KPj4+PiBiZSB0cmFuc21pdHRlZCwgdGFwcmlv IHdpbGwgdHJ5IHRvIHRyYW5zbWl0IHRoZSBwYWNrZXQgaW1tZWRpYXRlbHkuIFRoaXMgd2lsbA0K Pj4+PiBiZSBkb25lIGJ5IHNldHRpbmcgc2tiLT50c3RhbXAgdG8gY3VycmVudF90aW1lICsgdGhl IHRpbWUgZGVsdGEgaW5kaWNhdGVkIGluDQo+Pj4+IHRoZSB0eHRpbWVfZGVsYXkgcGFyYW1ldGVy LiBUaGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIHRpbWUgdGFrZW4gKGluDQo+Pj4+IHNvZnR3 YXJlKSBmb3IgcGFja2V0IHRvIHJlYWNoIHRoZSBuZXR3b3JrIGFkYXB0ZXIuDQo+Pj4gDQo+Pj4g SW4gVFNOIFRpbWUgYXdhcmUgc2hhcGVyLCBwYWNrZXRzIGFyZSBzZW50IHdoZW4gZ2F0ZSBmb3Ig YSBzcGVjaWZpYw0KPj4+IHRyYWZmaWMgY2xhc3MgaXMgb3Blbi4gU28gcGFja2V0cyB0aGF0IGFy ZSBhdmFpbGFibGUgaW4gdGhlIHF1ZXVlcyBhcmUNCj4+PiBzZW50IGJ5IHRoZSBzY2hlZHVsZXIu IFNvIHRoZSBFVEYgaXMgbm90IHN0cmljdGx5IHJlcXVpcmVkIGZvciB0aGlzDQo+Pj4gZnVuY3Rp b24uDQo+Pj4gSSB1bmRlcnN0YW5kIGlmIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzZW5kIHBh Y2tldHMgd2l0aA0KPj4+IHNvbWUgbGF0ZW5jeSBleHBlY3RhdGlvbiBzaG91bGQgdXNlIEVURiB0 byBzY2hlZHVsZSB0aGUgcGFja2V0IGluIHN5bmMNCj4+PiB3aXRoIHRoZSBuZXh0IGdhdGUgb3Bl biB0aW1lLiBTbyB0eHRpbWVfZGVsYXkgaXMgdXNlZCB0byBhY2NvdW50IGZvcg0KPj4+IHRoZSBk ZWxheSBmb3IgcGFja2V0cyB0byB0cmF2ZWwgZnJvbSB1c2VyIHNwYWNlIHRvIG5pYy4NCj4+IFRo aXMgaXMgbm90IHRydWUuIEFzIGV4cGxhaW5lZCBpbiB0aGUgb3RoZXIgZW1haWwsIHR4dGltZS1k ZWxheSBpcyB0aGUgbWF4aW11bSB0aW1lIGEgcGFja2V0IG1pZ2h0IHRha2UgYWZ0ZXIgcmVhY2hp bmcgdGFwcmlvX2VucXVldWUoKSBhc3N1bWluZyB0aGUgZ2F0ZSBjb3JyZXNwb25kaW5nIHRvIHRo YXQgcGFja2V0IHdhcyBhbHJlYWR5IG9wZW4uDQo+Pj4gU28gaXQgaXMgRVRGDQo+Pj4gdGhhdCBu ZWVkIHRvIGluc3BlY3QgdGhlIHNrYi0+dHN0YW1wIGFuZCBhbGxvdyBvciBpZiB0aW1lIG1hdGNo IG9yDQo+Pj4gZGlzY2FyZCBpZiBsYXRlLiBJcyB0aGlzIHRoZSBjYXNlPw0KPj4+IA0KPj4gVGhl IHJvbGUgb2YgRVRGIGlzIGp1c3QgdG8gc29ydCBwYWNrZXRzIGFjY29yZGluZyB0byB0aGVpciB0 cmFuc21pdCB0aW1lc3RhbXAgYW5kIHNlbmQgdGhlbSB0byB0aGUgaGFyZHdhcmUgcXVldWVzIHRv IHRyYW5zbWl0IHdoZW5ldmVyIHRoZWlyIHRpbWUgY29tZXMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1 c2UgdGhlIGkyMTAgaGFyZHdhcmUgZG9lcyBub3QgaGF2ZSBhbnkgc29ydCBmZWF0dXJlIHdpdGhp biBpdHMgcXVldWUuIElmIDIgcGFja2V0cyBhcnJpdmUgYW5kIHRoZSBmaXJzdCBwYWNrZXQgaGFz IGEgdHJhbnNtaXQgdGltZXN0YW1wIGxhdGVyIHRoYW4gdGhlIHNlY29uZCBwYWNrZXQsIHRoZSBz ZWNvbmQgcGFja2V0IHdvbuKAmXQgYmUgdHJhbnNtaXR0ZWQgb24gdGltZS4NCj4+IFRhcHJpbyBp biB0aGUgdHh0aW1lIG9mZmxvYWQgbW9kZSAoYnR3LCB0aGlzIHdpbGwgc29vbiBiZSByZW5hbWVk IHRvIHR4dGltZS1hc3Npc3QpIHdpbGwgc2V0IHRoZSB0cmFuc21pdCB0aW1lc3RhbXAgb2YgZWFj aCBwYWNrZXQgKGluIHNrYi0+dHN0YW1wKSBhbmQgdGhlbiBzZW5kIGl0IHRvIEVURiBzbyB0aGF0 IGl0IGNhbiBiZSBzb3J0ZWQgd2l0aCB0aGUgb3RoZXIgcGFja2V0cyBhbmQgc2VudCB0byBoYXJk d2FyZSB3aGVuZXZlciB0aGUgdGltZSBjb21lcy4gRVRGIHdpbGwgZGlzY2FyZCB0aGUgcGFja2V0 IGlmIHRoZSB0cmFuc21pdCB0aW1lIGlzIGluIHRoZSBwYXN0IG9yIGJlZm9yZSB0aGUgdHJhbnNt aXQgdGltZSBvZiB0aGUgcGFja2V0IHdoaWNoIGlzIGFscmVhZHkgYmVlbiBzZW50IHRvIHRoZSBo YXJkd2FyZS4NCj4+IExldCBtZSBrbm93IGlmIHlvdSBoYXZlIG1vcmUgcXVlc3Rpb25zIGFib3V0 IHRoaXMuDQo+IA0KPiBJdCBpcyBiaXQgY29uZnVzaW5nIHRvIGhhdmUgdGhpcyBtb2RlIGluIHRh cHJpby4gTXkgYXNzdW1wdGlvbiBpcw0KPiB0aGF0IHRhcHJpbyBpbXBsZW1lbnRzIFRTTiBzdGFu ZGFyZCA4MDIuMVFidiBzY2hlZHVsZXIgdGhhdCBpcw0KPiByZXNwb25zaWJsZSBmb3IgbWFuYWdp bmcgdGhlIEdhdGUgb3Blbi9jbG9zZSBhbmQgc2VuZGluZyBmcmFtZXMNCj4gZm9yIHNwZWNpZmlj IHRyYWZmaWMgY2xhc3MgZHVyaW5nIHRoZSBHYXRlIG9wZW4uIEFGQUlLLCB0aGlzDQo+IHNjaGVk dWxlciBkb2Vzbid0IGluc3BlY3QgdGhlIHBhY2tldCdzIG1ldGFkYXRhIHN1Y2ggYXMgdGltZSB0 bw0KPiBzZW5kIG9yIHN1Y2guIFNvIHdoeSBpcyB0eHRpbWUgb2ZmbG9hZCBtb2RlIGlzIGFkZGVk IHRvIHRhcHJpbz8NCj4gQ291bGQgeW91IHBsZWFzZSBleHBsYWluPw0KPiANCj4gTXVyYWxpDQo+ IA0KU2hvcnQgYW5zd2VyOiBUYXByaW8gc3RpbGwgaW1wbGVtZW50cyBhIDgwMi4xUWJ2IGxpa2Ug c2NoZWR1bGUuIEJ1dCwgaXQgbGV2ZXJhZ2VzIHRoZSBmdW5jdGlvbmFsaXR5IGZyb20gRVRGIHRv IGRvIHNvLg0KDQpMb25nIGFuc3dlcjoNClRoZSBzb2Z0d2FyZS1vbmx5IGltcGxlbWVudGF0aW9u IG9mIDgwMi4xUWJ2IGhhcyBxdWl0ZSBhIGZldyBsb3cgcHJpb3JpdHkgcGFja2V0cyBiZWluZyB0 cmFuc21pdHRlZCBvdXRzaWRlIHRoZWlyIHRpbWVzbGljZS4gVGhpcyBpcyBiZWNhdXNlIHRoZSBo aWdoZXIgcHJpb3JpdHkgcXVldWVzIGluIGkyMTAgYXJlIHN0YXJ2aW5nIHRoZSBsb3dlciBwcmlv cml0eSBxdWV1ZXMuIFNvLCB3aGF0IHRoZSB0eHRpbWUtYXNzaXN0IG1vZGUgZG9lcyBpcyB0byBh c3NpZ24gYW4gZXhwbGljaXQgdHggdGltZXN0YW1wIGFuZCB1c2UgdGhlIGxhdW5jaHRpbWUgZmVh dHVyZSBvZiB0aGUgaTIxMCBhZGFwdGVyIGNhcmQgdG8gdHJhbnNtaXQgdGhlIHBhY2tldHMgb24g dGltZS4gSXQgaXMgc3RpbGwgc2VuZGluZyBmcmFtZXMgZm9yIGEgcGFydGljdWxhciB0cmFmZmlj IGNsYXNzIG9ubHkgd2hlbiB0aGVpciBnYXRlIGlzIG9wZW4uIEFsc28sIGl0IGlzIG5vdCBtb2Rp ZnlpbmcgYW55IGRhdGEgaW4gdGhlIHBhY2tldCB3aGljaCBpcyB0cmFuc21pdHRlZC4gSnVzdCBu b3RpZnlpbmcgdGhlIE5JQyB3aGVuIHRvIHRyYW5zbWl0IHRoZSBwYWNrZXQuIElmIHRoZXJlIGlz IGEgdHggdGltZXN0YW1wIGFscmVhZHkgYXNzaWduZWQgdG8gYSBwYWNrZXQsIGl0IGRvZXMgbm90 IGNoYW5nZSBpdC4gU2luY2Ugd2UgYXJlIGFzc2lnbmluZyB0aGUgdHggdGltZXN0YW1wLCB3ZSBo YXZlIHRvIHJvdXRlIHRoZSBwYWNrZXQgdGhyb3VnaCB0aGUgRVRGIHF1ZXVlIGRpc2MgZm9yIHNv cnRpbmcgdGhlIHBhY2tldHMgYWNjb3JkaW5nIHRvIHRoZWlyIHRpbWVzdGFtcHMgYW5kIHNlbmRp bmcgaXQgdG8gdGhlIE5JQy4NCg0KV2UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlIGFib3ZlIG1lY2hh bmlzbSBiZWNhdXNlLCBjdXJyZW50bHksIHdlIGRvIG5vdCBoYXZlIHRoZSBjYXBhYmlsaXR5IHRv IG9mZmxvYWQgdGhlIHRhcHJpbyBzY2hlZHVsZSB0byB0aGUgaGFyZHdhcmUuDQoNCkhvcGUgdGhp cyBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBjbGVhci4gTGV0IG1lIGtub3cgaWYgeW91IGhhdmUg bW9yZSBxdWVzdGlvbnMuDQoNClRoYW5rcywNClZlZGFuZyANCj4+IFRoYW5rcywNCj4+IFZlZGFu Zw0KPj4+IEZvciBvZmZsb2FkIGNhc2UsIHRoZSBoL3cgdGhhdCBvZmZsb2FkIEVURiBuZWVkcyB0 byBzZW5kIGEgdHJpZ2dlciB0bw0KPj4+IHNvZnR3YXJlIHRvIGdldCBwYWNrZXQgZm9yIHRyYW5z bWlzc2lvbiBhaGVhZCBvZiB0aGUgR2F0ZSBvcGVuIGV2ZW50Pw0KPj4+IA0KPj4+IFRoYW5rcw0K Pj4+IA0KPj4+IE11cmFsaQ0KPj4+PiBJZiB0aGUgcGFja2V0IGNhbm5vdCBiZSB0cmFuc21pdHRl ZCBpbiB0aGUgY3VycmVudCBpbnRlcnZhbCBvciBpZiB0aGUgcGFja2V0J3MNCj4+Pj4gdHJhZmZp YyBpcyBub3QgY3VycmVudGx5IHRyYW5zbWl0dGluZywgdGhlIHNrYi0+dHN0YW1wIGlzIHNldCB0 byB0aGUgbmV4dA0KPj4+PiBhdmFpbGFibGUgdGltZXN0YW1wIHZhbHVlLiBUaGlzIGlzIHRyYWNr ZWQgaW4gdGhlIG5leHRfbGF1bmNodGltZSBwYXJhbWV0ZXIgaW4NCj4+Pj4gdGhlIHN0cnVjdCBz Y2hlZF9lbnRyeS4NCj4+Pj4gVGhlIGJlaGF2aW91ciB3LnIudCBhZG1pbiBhbmQgb3BlciBzY2hl ZHVsZXMgaXMgbm90IGNoYW5nZWQgZnJvbSB3aGF0IGlzDQo+Pj4+IHByZXNlbnQgaW4gc29mdHdh cmUgbW9kZS4NCj4+Pj4gVGhlIHRyYW5zbWl0IHRpbWUgaXMgYWxyZWFkeSBrbm93biBpbiBhZHZh bmNlLiBTbywgd2UgZG8gbm90IG5lZWQgdGhlIEhSIHRpbWVycw0KPj4+PiB0byBhZHZhbmNlIHRo ZSBzY2hlZHVsZSBhbmQgd2FrZXVwIHRoZSBkZXF1ZXVlIHNpZGUgb2YgdGFwcmlvLiAgU28sIEhS IHRpbWVyDQo+Pj4+IHdvbid0IGJlIHJ1biB3aGVuIHRoaXMgbW9kZSBpcyBlbmFibGVkLg0KPj4+ PiBTaWduZWQtb2ZmLWJ5OiBWZWRhbmcgUGF0ZWwgPHZlZGFuZy5wYXRlbEBpbnRlbC5jb20+DQo+ Pj4+IC0tLQ0KPj4+PiAgaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9zY2hlZC5oIHwgICAxICsNCj4+ Pj4gIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmMgICAgICAgICB8IDMyNiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0NCj4+Pj4gIDIgZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMo KyksIDIxIGRlbGV0aW9ucygtKQ0KPj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4 L3BrdF9zY2hlZC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9zY2hlZC5oDQo+Pj4+IGluZGV4 IDMzMTkyNTVmZmEyNS4uYWZmZmRhMjRlMDU1IDEwMDY0NA0KPj4+PiAtLS0gYS9pbmNsdWRlL3Vh cGkvbGludXgvcGt0X3NjaGVkLmgNCj4+Pj4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9z Y2hlZC5oDQo+Pj4+IEBAIC0xMTc0LDYgKzExNzQsNyBAQCBlbnVtIHsNCj4+Pj4gIAlUQ0FfVEFQ UklPX0FUVFJfU0NIRURfQ1lDTEVfVElNRSwgLyogczY0ICovDQo+Pj4+ICAJVENBX1RBUFJJT19B VFRSX1NDSEVEX0NZQ0xFX1RJTUVfRVhURU5TSU9OLCAvKiBzNjQgKi8NCj4+Pj4gIAlUQ0FfVEFQ UklPX0FUVFJfT0ZGTE9BRF9GTEFHUywgLyogdTMyICovDQo+Pj4+ICsJVENBX1RBUFJJT19BVFRS X1RYVElNRV9ERUxBWSwgLyogczMyICovDQo+Pj4+ICAJX19UQ0FfVEFQUklPX0FUVFJfTUFYLA0K Pj4+PiAgfTsNCj4+Pj4gIGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0 L3NjaGVkL3NjaF90YXByaW8uYw0KPj4+PiBpbmRleCA4ZDg3YmEwOTkxMzAuLjFjZDE5ZWFiYzUz YiAxMDA2NDQNCj4+Pj4gLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uYw0KPj4+PiArKysgYi9u ZXQvc2NoZWQvc2NoX3RhcHJpby5jDQo+Pj4+IEBAIC0yMSw2ICsyMSw3IEBADQo+Pj4+ICAjaW5j bHVkZSA8bmV0L3BrdF9zY2hlZC5oPg0KPj4+PiAgI2luY2x1ZGUgPG5ldC9wa3RfY2xzLmg+DQo+ Pj4+ICAjaW5jbHVkZSA8bmV0L3NjaF9nZW5lcmljLmg+DQo+Pj4+ICsjaW5jbHVkZSA8bmV0L3Nv Y2suaD4NCj4+Pj4gICAgc3RhdGljIExJU1RfSEVBRCh0YXByaW9fbGlzdCk7DQo+Pj4+ICBzdGF0 aWMgREVGSU5FX1NQSU5MT0NLKHRhcHJpb19saXN0X2xvY2spOw0KPj4+PiBAQCAtNDAsNiArNDEs NyBAQCBzdHJ1Y3Qgc2NoZWRfZW50cnkgew0KPj4+PiAgCSAqIHBhY2tldCBsZWF2ZXMgYWZ0ZXIg dGhpcyB0aW1lLg0KPj4+PiAgCSAqLw0KPj4+PiAgCWt0aW1lX3QgY2xvc2VfdGltZTsNCj4+Pj4g KwlrdGltZV90IG5leHRfdHh0aW1lOw0KPj4+PiAgCWF0b21pY190IGJ1ZGdldDsNCj4+Pj4gIAlp bnQgaW5kZXg7DQo+Pj4+ICAJdTMyIGdhdGVfbWFzazsNCj4+Pj4gQEAgLTc2LDYgKzc4LDcgQEAg c3RydWN0IHRhcHJpb19zY2hlZCB7DQo+Pj4+ICAJc3RydWN0IHNrX2J1ZmYgKigqcGVlaykoc3Ry dWN0IFFkaXNjICpzY2gpOw0KPj4+PiAgCXN0cnVjdCBocnRpbWVyIGFkdmFuY2VfdGltZXI7DQo+ Pj4+ICAJc3RydWN0IGxpc3RfaGVhZCB0YXByaW9fbGlzdDsNCj4+Pj4gKwlpbnQgdHh0aW1lX2Rl bGF5Ow0KPj4+PiAgfTsNCj4+Pj4gICAgc3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNv bnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKQ0KPj4+PiBAQCAtMTE2LDYgKzExOSwy MzUgQEAgc3RhdGljIHZvaWQgc3dpdGNoX3NjaGVkdWxlcyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpx LA0KPj4+PiAgCSphZG1pbiA9IE5VTEw7DQo+Pj4+ICB9DQo+Pj4+ICArLyogR2V0IGhvdyBtdWNo IHRpbWUgaGFzIGJlZW4gYWxyZWFkeSBlbGFwc2VkIGluIHRoZSBjdXJyZW50IGN5Y2xlLiAqLw0K Pj4+PiArc3RhdGljIGlubGluZSBzMzIgZ2V0X2N5Y2xlX3RpbWVfZWxhcHNlZChzdHJ1Y3Qgc2No ZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCB0aW1lKQ0KPj4+PiArew0KPj4+PiArCWt0aW1l X3QgdGltZV9zaW5jZV9zY2hlZF9zdGFydDsNCj4+Pj4gKwlzMzIgdGltZV9lbGFwc2VkOw0KPj4+ PiArDQo+Pj4+ICsJdGltZV9zaW5jZV9zY2hlZF9zdGFydCA9IGt0aW1lX3N1Yih0aW1lLCBzY2hl ZC0+YmFzZV90aW1lKTsNCj4+Pj4gKwlkaXZfczY0X3JlbSh0aW1lX3NpbmNlX3NjaGVkX3N0YXJ0 LCBzY2hlZC0+Y3ljbGVfdGltZSwgJnRpbWVfZWxhcHNlZCk7DQo+Pj4+ICsNCj4+Pj4gKwlyZXR1 cm4gdGltZV9lbGFwc2VkOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMga3RpbWVfdCBn ZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsDQo+Pj4+ ICsJCQkJICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbiwNCj4+Pj4gKwkJCQkgICAg IHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksDQo+Pj4+ICsJCQkJICAgICBrdGltZV90IGludHZf c3RhcnQpDQo+Pj4+ICt7DQo+Pj4+ICsJczMyIGN5Y2xlX2VsYXBzZWQgPSBnZXRfY3ljbGVfdGlt ZV9lbGFwc2VkKHNjaGVkLCBpbnR2X3N0YXJ0KTsNCj4+Pj4gKwlrdGltZV90IGludHZfZW5kLCBj eWNsZV9leHRfZW5kLCBjeWNsZV9lbmQ7DQo+Pj4+ICsNCj4+Pj4gKwljeWNsZV9lbmQgPSBrdGlt ZV9hZGRfbnMoaW50dl9zdGFydCwgc2NoZWQtPmN5Y2xlX3RpbWUgLSBjeWNsZV9lbGFwc2VkKTsN Cj4+Pj4gKwlpbnR2X2VuZCA9IGt0aW1lX2FkZF9ucyhpbnR2X3N0YXJ0LCBlbnRyeS0+aW50ZXJ2 YWwpOw0KPj4+PiArCWN5Y2xlX2V4dF9lbmQgPSBrdGltZV9hZGQoY3ljbGVfZW5kLCBzY2hlZC0+ Y3ljbGVfdGltZV9leHRlbnNpb24pOw0KPj4+PiArDQo+Pj4+ICsJaWYgKGt0aW1lX2JlZm9yZShp bnR2X2VuZCwgY3ljbGVfZW5kKSkNCj4+Pj4gKwkJcmV0dXJuIGludHZfZW5kOw0KPj4+PiArCWVs c2UgaWYgKGFkbWluICYmIGFkbWluICE9IHNjaGVkICYmDQo+Pj4+ICsJCSBrdGltZV9hZnRlcihh ZG1pbi0+YmFzZV90aW1lLCBjeWNsZV9lbmQpICYmDQo+Pj4+ICsJCSBrdGltZV9iZWZvcmUoYWRt aW4tPmJhc2VfdGltZSwgY3ljbGVfZXh0X2VuZCkpDQo+Pj4+ICsJCXJldHVybiBhZG1pbi0+YmFz ZV90aW1lOw0KPj4+PiArCWVsc2UNCj4+Pj4gKwkJcmV0dXJuIGN5Y2xlX2VuZDsNCj4+Pj4gK30N Cj4+Pj4gKw0KPj4+PiArc3RhdGljIGlubGluZSBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVj dCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pDQo+Pj4+ICt7DQo+Pj4+ICsJcmV0dXJuIChsZW4g KiBhdG9taWM2NF9yZWFkKCZxLT5waWNvc19wZXJfYnl0ZSkpIC8gMTAwMDsNCj4+Pj4gK30NCj4+ Pj4gKw0KPj4+PiArLyogUmV0dXJucyB0aGUgZW50cnkgY29ycmVzcG9uZGluZyB0byBuZXh0IGF2 YWlsYWJsZSBpbnRlcnZhbC4gSWYNCj4+Pj4gKyAqIHZhbGlkYXRlX2ludGVydmFsIGlzIHNldCwg aXQgb25seSB2YWxpZGF0ZXMgd2hldGhlciB0aGUgdGltZXN0YW1wIG9jY3Vycw0KPj4+PiArICog d2hlbiB0aGUgZ2F0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBza2IncyB0cmFmZmljIGNsYXNzIGlz IG9wZW4uDQo+Pj4+ICsgKi8NCj4+Pj4gK3N0YXRpYyBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmZpbmRf ZW50cnlfdG9fdHJhbnNtaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwNCj4+Pj4gKwkJCQkJCSAgc3Ry dWN0IFFkaXNjICpzY2gsDQo+Pj4+ICsJCQkJCQkgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNj aGVkLA0KPj4+PiArCQkJCQkJICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbiwNCj4+Pj4g KwkJCQkJCSAga3RpbWVfdCB0aW1lLA0KPj4+PiArCQkJCQkJICBrdGltZV90ICppbnRlcnZhbF9z dGFydCwNCj4+Pj4gKwkJCQkJCSAga3RpbWVfdCAqaW50ZXJ2YWxfZW5kLA0KPj4+PiArCQkJCQkJ ICBib29sIHZhbGlkYXRlX2ludGVydmFsKQ0KPj4+PiArew0KPj4+PiArCWt0aW1lX3QgY3Vycl9p bnR2X3N0YXJ0LCBjdXJyX2ludHZfZW5kLCBjeWNsZV9lbmQsIHBhY2tldF90cmFuc21pdF90aW1l Ow0KPj4+PiArCWt0aW1lX3QgZWFybGllc3RfdHh0aW1lID0gS1RJTUVfTUFYLCB0eHRpbWUsIGN5 Y2xlLCB0cmFuc21pdF9lbmRfdGltZTsNCj4+Pj4gKwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5 ID0gTlVMTCwgKmVudHJ5X2ZvdW5kID0gTlVMTDsNCj4+Pj4gKwlzdHJ1Y3QgdGFwcmlvX3NjaGVk ICpxID0gcWRpc2NfcHJpdihzY2gpOw0KPj4+PiArCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBx ZGlzY19kZXYoc2NoKTsNCj4+Pj4gKwlpbnQgdGMsIGVudHJ5X2F2YWlsYWJsZSA9IDAsIG47DQo+ Pj4+ICsJczMyIGN5Y2xlX2VsYXBzZWQ7DQo+Pj4+ICsNCj4+Pj4gKwl0YyA9IG5ldGRldl9nZXRf cHJpb190Y19tYXAoZGV2LCBza2ItPnByaW9yaXR5KTsNCj4+Pj4gKwlwYWNrZXRfdHJhbnNtaXRf dGltZSA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBxZGlzY19wa3RfbGVuKHNrYikpOw0KPj4+PiAr DQo+Pj4+ICsJKmludGVydmFsX3N0YXJ0ID0gMDsNCj4+Pj4gKwkqaW50ZXJ2YWxfZW5kID0gMDsN Cj4+Pj4gKw0KPj4+PiArCWlmICghc2NoZWQpDQo+Pj4+ICsJCXJldHVybiBOVUxMOw0KPj4+PiAr DQo+Pj4+ICsJY3ljbGUgPSBzY2hlZC0+Y3ljbGVfdGltZTsNCj4+Pj4gKwljeWNsZV9lbGFwc2Vk ID0gZ2V0X2N5Y2xlX3RpbWVfZWxhcHNlZChzY2hlZCwgdGltZSk7DQo+Pj4+ICsJY3Vycl9pbnR2 X2VuZCA9IGt0aW1lX3N1Yl9ucyh0aW1lLCBjeWNsZV9lbGFwc2VkKTsNCj4+Pj4gKwljeWNsZV9l bmQgPSBrdGltZV9hZGRfbnMoY3Vycl9pbnR2X2VuZCwgY3ljbGUpOw0KPj4+PiArDQo+Pj4+ICsJ bGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJnNjaGVkLT5lbnRyaWVzLCBsaXN0KSB7DQo+Pj4+ ICsJCWN1cnJfaW50dl9zdGFydCA9IGN1cnJfaW50dl9lbmQ7DQo+Pj4+ICsJCWN1cnJfaW50dl9l bmQgPSBnZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc2NoZWQsIGFkbWluLCBlbnRyeSwNCj4+Pj4gKwkJ CQkJCSAgICAgIGN1cnJfaW50dl9zdGFydCk7DQo+Pj4+ICsNCj4+Pj4gKwkJaWYgKGt0aW1lX2Fm dGVyKGN1cnJfaW50dl9zdGFydCwgY3ljbGVfZW5kKSkNCj4+Pj4gKwkJCWJyZWFrOw0KPj4+PiAr DQo+Pj4+ICsJCWlmICghKGVudHJ5LT5nYXRlX21hc2sgJiBCSVQodGMpKSB8fA0KPj4+PiArCQkg ICAgcGFja2V0X3RyYW5zbWl0X3RpbWUgPiBlbnRyeS0+aW50ZXJ2YWwpDQo+Pj4+ICsJCQljb250 aW51ZTsNCj4+Pj4gKw0KPj4+PiArCQl0eHRpbWUgPSBlbnRyeS0+bmV4dF90eHRpbWU7DQo+Pj4+ ICsNCj4+Pj4gKwkJaWYgKGt0aW1lX2JlZm9yZSh0eHRpbWUsIHRpbWUpIHx8IHZhbGlkYXRlX2lu dGVydmFsKSB7DQo+Pj4+ICsJCQl0cmFuc21pdF9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyh0aW1l LCBwYWNrZXRfdHJhbnNtaXRfdGltZSk7DQo+Pj4+ICsJCQlpZiAoKGt0aW1lX2JlZm9yZShjdXJy X2ludHZfc3RhcnQsIHRpbWUpICYmDQo+Pj4+ICsJCQkgICAgIGt0aW1lX2JlZm9yZSh0cmFuc21p dF9lbmRfdGltZSwgY3Vycl9pbnR2X2VuZCkpIHx8DQo+Pj4+ICsJCQkgICAgKGt0aW1lX2FmdGVy KGN1cnJfaW50dl9zdGFydCwgdGltZSkgJiYgIXZhbGlkYXRlX2ludGVydmFsKSkgew0KPj4+PiAr CQkJCWVudHJ5X2ZvdW5kID0gZW50cnk7DQo+Pj4+ICsJCQkJKmludGVydmFsX3N0YXJ0ID0gY3Vy cl9pbnR2X3N0YXJ0Ow0KPj4+PiArCQkJCSppbnRlcnZhbF9lbmQgPSBjdXJyX2ludHZfZW5kOw0K Pj4+PiArCQkJCWJyZWFrOw0KPj4+PiArCQkJfSBlbHNlIGlmICghZW50cnlfYXZhaWxhYmxlICYm ICF2YWxpZGF0ZV9pbnRlcnZhbCkgew0KPj4+PiArCQkJCS8qIEhlcmUsIHdlIGFyZSBqdXN0IHRy eWluZyB0byBmaW5kIG91dCB0aGUNCj4+Pj4gKwkJCQkgKiBmaXJzdCBhdmFpbGFibGUgaW50ZXJ2 YWwgaW4gdGhlIG5leHQgY3ljbGUuDQo+Pj4+ICsJCQkJICovDQo+Pj4+ICsJCQkJZW50cnlfYXZh aWxhYmxlID0gMTsNCj4+Pj4gKwkJCQllbnRyeV9mb3VuZCA9IGVudHJ5Ow0KPj4+PiArCQkJCSpp bnRlcnZhbF9zdGFydCA9IGt0aW1lX2FkZF9ucyhjdXJyX2ludHZfc3RhcnQsIGN5Y2xlKTsNCj4+ Pj4gKwkJCQkqaW50ZXJ2YWxfZW5kID0ga3RpbWVfYWRkX25zKGN1cnJfaW50dl9lbmQsIGN5Y2xl KTsNCj4+Pj4gKwkJCX0NCj4+Pj4gKwkJfSBlbHNlIGlmIChrdGltZV9iZWZvcmUodHh0aW1lLCBl YXJsaWVzdF90eHRpbWUpICYmDQo+Pj4+ICsJCQkgICAhZW50cnlfYXZhaWxhYmxlKSB7DQo+Pj4+ ICsJCQllYXJsaWVzdF90eHRpbWUgPSB0eHRpbWU7DQo+Pj4+ICsJCQllbnRyeV9mb3VuZCA9IGVu dHJ5Ow0KPj4+PiArCQkJbiA9IGRpdl9zNjQoa3RpbWVfc3ViKHR4dGltZSwgY3Vycl9pbnR2X3N0 YXJ0KSwgY3ljbGUpOw0KPj4+PiArCQkJKmludGVydmFsX3N0YXJ0ID0ga3RpbWVfYWRkKGN1cnJf aW50dl9zdGFydCwgbiAqIGN5Y2xlKTsNCj4+Pj4gKwkJCSppbnRlcnZhbF9lbmQgPSBrdGltZV9h ZGQoY3Vycl9pbnR2X2VuZCwgbiAqIGN5Y2xlKTsNCj4+Pj4gKwkJfQ0KPj4+PiArCX0NCj4+Pj4g Kw0KPj4+PiArCXJldHVybiBlbnRyeV9mb3VuZDsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3Rh dGljIGJvb2wgaXNfdmFsaWRfaW50ZXJ2YWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFk aXNjICpzY2gpDQo+Pj4+ICt7DQo+Pj4+ICsJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNj X3ByaXYoc2NoKTsNCj4+Pj4gKwlzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwgKmFkbWlu Ow0KPj4+PiArCWt0aW1lX3QgaW50ZXJ2YWxfc3RhcnQsIGludGVydmFsX2VuZDsNCj4+Pj4gKwlz dHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5Ow0KPj4+PiArDQo+Pj4+ICsJcmN1X3JlYWRfbG9jaygp Ow0KPj4+PiArCXNjaGVkID0gcmN1X2RlcmVmZXJlbmNlKHEtPm9wZXJfc2NoZWQpOw0KPj4+PiAr CWFkbWluID0gcmN1X2RlcmVmZXJlbmNlKHEtPmFkbWluX3NjaGVkKTsNCj4+Pj4gKw0KPj4+PiAr CWVudHJ5ID0gZmluZF9lbnRyeV90b190cmFuc21pdChza2IsIHNjaCwgc2NoZWQsIGFkbWluLCBz a2ItPnRzdGFtcCwNCj4+Pj4gKwkJCQkgICAgICAgJmludGVydmFsX3N0YXJ0LCAmaW50ZXJ2YWxf ZW5kLCB0cnVlKTsNCj4+Pj4gKwlyY3VfcmVhZF91bmxvY2soKTsNCj4+Pj4gKw0KPj4+PiArCXJl dHVybiBlbnRyeTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3RhdGljIGlubGluZSBrdGltZV90 IGdldF9jeWNsZV9zdGFydChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwNCj4+Pj4gKwkJ CQkgICAgICBrdGltZV90IHRpbWUpDQo+Pj4+ICt7DQo+Pj4+ICsJa3RpbWVfdCBjeWNsZV9lbGFw c2VkOw0KPj4+PiArDQo+Pj4+ICsJY3ljbGVfZWxhcHNlZCA9IGdldF9jeWNsZV90aW1lX2VsYXBz ZWQoc2NoZWQsIHRpbWUpOw0KPj4+PiArDQo+Pj4+ICsJcmV0dXJuIGt0aW1lX3N1Yih0aW1lLCBj eWNsZV9lbGFwc2VkKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArLyogVGhlcmUgYXJlIGEgZmV3 IHNjZW5hcmlvcyB3aGVyZSB3ZSB3aWxsIGhhdmUgdG8gbW9kaWZ5IHRoZSB0eHRpbWUgZnJvbQ0K Pj4+PiArICogd2hhdCBpcyByZWFkIGZyb20gbmV4dF90eHRpbWUgaW4gc2NoZWRfZW50cnkuIFRo ZXkgYXJlOg0KPj4+PiArICogMS4gSWYgdHh0aW1lIGlzIGluIHRoZSBwYXN0LA0KPj4+PiArICog ICAgYS4gVGhlIGdhdGUgZm9yIHRoZSB0cmFmZmljIGNsYXNzIGlzIGN1cnJlbnRseSBvcGVuIGFu ZCBwYWNrZXQgY2FuIGJlDQo+Pj4+ICsgKiAgICAgICB0cmFuc21pdHRlZCBiZWZvcmUgaXQgY2xv c2VzLCBzY2hlZHVsZSB0aGUgcGFja2V0IHJpZ2h0IGF3YXkuDQo+Pj4+ICsgKiAgICBiLiBJZiB0 aGUgZ2F0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFmZmljIGNsYXNzIGlzIGdvaW5nIHRvIG9w ZW4gbGF0ZXINCj4+Pj4gKyAqICAgICAgIGluIHRoZSBjeWNsZSwgc2V0IHRoZSB0eHRpbWUgb2Yg cGFja2V0IHRvIHRoZSBpbnRlcnZhbCBzdGFydC4NCj4+Pj4gKyAqIDIuIElmIHR4dGltZSBpcyBp biB0aGUgZnV0dXJlLCB0aGVyZSBhcmUgcGFja2V0cyBjb3JyZXNwb25kaW5nIHRvIHRoZQ0KPj4+ PiArICogICAgY3VycmVudCB0cmFmZmljIGNsYXNzIHdhaXRpbmcgdG8gYmUgdHJhbnNtaXR0ZWQu IFNvLCB0aGUgZm9sbG93aW5nDQo+Pj4+ICsgKiAgICBwb3NzaWJpbGl0aWVzIGV4aXN0Og0KPj4+ PiArICogICAgYS4gV2UgY2FuIHRyYW5zbWl0IHRoZSBwYWNrZXQgYmVmb3JlIHRoZSB3aW5kb3cg Y29udGFpbmluZyB0aGUgdHh0aW1lDQo+Pj4+ICsgKiAgICAgICBjbG9zZXMuDQo+Pj4+ICsgKiAg ICBiLiBUaGUgd2luZG93IG1pZ2h0IGNsb3NlIGJlZm9yZSB0aGUgdHJhbnNtaXNzaW9uIGNhbiBi ZSBjb21wbGV0ZWQNCj4+Pj4gKyAqICAgICAgIHN1Y2Nlc3NmdWxseS4gU28sIHNjaGVkdWxlIHRo ZSBwYWNrZXQgaW4gdGhlIG5leHQgb3BlbiB3aW5kb3cuDQo+Pj4+ICsgKi8NCj4+Pj4gK3N0YXRp YyBsb25nIGdldF9wYWNrZXRfdHh0aW1lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlz YyAqc2NoKQ0KPj4+PiArew0KPj4+PiArCWt0aW1lX3QgdHJhbnNtaXRfZW5kX3RpbWUsIGludGVy dmFsX2VuZCwgaW50ZXJ2YWxfc3RhcnQ7DQo+Pj4+ICsJaW50IGxlbiwgcGFja2V0X3RyYW5zbWl0 X3RpbWUsIHNjaGVkX2NoYW5nZWQ7DQo+Pj4+ICsJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFk aXNjX3ByaXYoc2NoKTsNCj4+Pj4gKwlrdGltZV90IG1pbmltdW1fdGltZSwgbm93LCB0eHRpbWU7 DQo+Pj4+ICsJc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsICphZG1pbjsNCj4+Pj4gKwlz dHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5Ow0KPj4+PiArDQo+Pj4+ICsJbm93ID0gcS0+Z2V0X3Rp bWUoKTsNCj4+Pj4gKwltaW5pbXVtX3RpbWUgPSBrdGltZV9hZGRfbnMobm93LCBxLT50eHRpbWVf ZGVsYXkpOw0KPj4+PiArDQo+Pj4+ICsJcmN1X3JlYWRfbG9jaygpOw0KPj4+PiArCWFkbWluID0g cmN1X2RlcmVmZXJlbmNlKHEtPmFkbWluX3NjaGVkKTsNCj4+Pj4gKwlzY2hlZCA9IHJjdV9kZXJl ZmVyZW5jZShxLT5vcGVyX3NjaGVkKTsNCj4+Pj4gKwlpZiAoYWRtaW4gJiYga3RpbWVfYWZ0ZXIo bWluaW11bV90aW1lLCBhZG1pbi0+YmFzZV90aW1lKSkNCj4+Pj4gKwkJc3dpdGNoX3NjaGVkdWxl cyhxLCAmYWRtaW4sICZzY2hlZCk7DQo+Pj4+ICsNCj4+Pj4gKwkvKiBVbnRpbCB0aGUgc2NoZWR1 bGUgc3RhcnRzLCBhbGwgdGhlIHF1ZXVlcyBhcmUgb3BlbiAqLw0KPj4+PiArCWlmICghc2NoZWQg fHwga3RpbWVfYmVmb3JlKG1pbmltdW1fdGltZSwgc2NoZWQtPmJhc2VfdGltZSkpIHsNCj4+Pj4g KwkJdHh0aW1lID0gbWluaW11bV90aW1lOw0KPj4+PiArCQlnb3RvIGRvbmU7DQo+Pj4+ICsJfQ0K Pj4+PiArDQo+Pj4+ICsJbGVuID0gcWRpc2NfcGt0X2xlbihza2IpOw0KPj4+PiArCXBhY2tldF90 cmFuc21pdF90aW1lID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIGxlbik7DQo+Pj4+ICsNCj4+Pj4g KwlkbyB7DQo+Pj4+ICsJCXNjaGVkX2NoYW5nZWQgPSAwOw0KPj4+PiArDQo+Pj4+ICsJCWVudHJ5 ID0gZmluZF9lbnRyeV90b190cmFuc21pdChza2IsIHNjaCwgc2NoZWQsIGFkbWluLA0KPj4+PiAr CQkJCQkgICAgICAgbWluaW11bV90aW1lLA0KPj4+PiArCQkJCQkgICAgICAgJmludGVydmFsX3N0 YXJ0LCAmaW50ZXJ2YWxfZW5kLA0KPj4+PiArCQkJCQkgICAgICAgZmFsc2UpOw0KPj4+PiArCQlp ZiAoIWVudHJ5KSB7DQo+Pj4+ICsJCQl0eHRpbWUgPSAwOw0KPj4+PiArCQkJZ290byBkb25lOw0K Pj4+PiArCQl9DQo+Pj4+ICsNCj4+Pj4gKwkJdHh0aW1lID0gZW50cnktPm5leHRfdHh0aW1lOw0K Pj4+PiArCQl0eHRpbWUgPSBtYXhfdChrdGltZV90LCB0eHRpbWUsIG1pbmltdW1fdGltZSk7DQo+ Pj4+ICsJCXR4dGltZSA9IG1heF90KGt0aW1lX3QsIHR4dGltZSwgaW50ZXJ2YWxfc3RhcnQpOw0K Pj4+PiArDQo+Pj4+ICsJCWlmIChhZG1pbiAmJiBhZG1pbiAhPSBzY2hlZCAmJg0KPj4+PiArCQkg ICAga3RpbWVfYWZ0ZXIodHh0aW1lLCBhZG1pbi0+YmFzZV90aW1lKSkgew0KPj4+PiArCQkJc2No ZWQgPSBhZG1pbjsNCj4+Pj4gKwkJCXNjaGVkX2NoYW5nZWQgPSAxOw0KPj4+PiArCQkJY29udGlu dWU7DQo+Pj4+ICsJCX0NCj4+Pj4gKw0KPj4+PiArCQl0cmFuc21pdF9lbmRfdGltZSA9IGt0aW1l X2FkZCh0eHRpbWUsIHBhY2tldF90cmFuc21pdF90aW1lKTsNCj4+Pj4gKwkJbWluaW11bV90aW1l ID0gdHJhbnNtaXRfZW5kX3RpbWU7DQo+Pj4+ICsNCj4+Pj4gKwkJLyogVXBkYXRlIHRoZSB0eHRp bWUgb2YgY3VycmVudCBlbnRyeSB0byB0aGUgbmV4dCB0aW1lIGl0J3MNCj4+Pj4gKwkJICogaW50 ZXJ2YWwgc3RhcnRzLg0KPj4+PiArCQkgKi8NCj4+Pj4gKwkJaWYgKGt0aW1lX2FmdGVyKHRyYW5z bWl0X2VuZF90aW1lLCBpbnRlcnZhbF9lbmQpKQ0KPj4+PiArCQkJZW50cnktPm5leHRfdHh0aW1l ID0ga3RpbWVfYWRkKGludGVydmFsX3N0YXJ0LCBzY2hlZC0+Y3ljbGVfdGltZSk7DQo+Pj4+ICsJ fSB3aGlsZSAoc2NoZWRfY2hhbmdlZCB8fCBrdGltZV9hZnRlcih0cmFuc21pdF9lbmRfdGltZSwg aW50ZXJ2YWxfZW5kKSk7DQo+Pj4+ICsNCj4+Pj4gKwllbnRyeS0+bmV4dF90eHRpbWUgPSB0cmFu c21pdF9lbmRfdGltZTsNCj4+Pj4gKw0KPj4+PiArZG9uZToNCj4+Pj4gKwlyY3VfcmVhZF91bmxv Y2soKTsNCj4+Pj4gKwlyZXR1cm4gdHh0aW1lOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICBzdGF0 aWMgaW50IHRhcHJpb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAq c2NoLA0KPj4+PiAgCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpDQo+Pj4+ICB7DQo+Pj4+ IEBAIC0xMjksNiArMzYxLDE1IEBAIHN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWUoc3RydWN0IHNr X2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsDQo+Pj4+ICAJaWYgKHVubGlrZWx5KCFjaGls ZCkpDQo+Pj4+ICAJCXJldHVybiBxZGlzY19kcm9wKHNrYiwgc2NoLCB0b19mcmVlKTsNCj4+Pj4g ICsJaWYgKHNrYi0+c2sgJiYgc29ja19mbGFnKHNrYi0+c2ssIFNPQ0tfVFhUSU1FKSkgew0KPj4+ PiArCQlpZiAoIWlzX3ZhbGlkX2ludGVydmFsKHNrYiwgc2NoKSkNCj4+Pj4gKwkJCXJldHVybiBx ZGlzY19kcm9wKHNrYiwgc2NoLCB0b19mcmVlKTsNCj4+Pj4gKwl9IGVsc2UgaWYgKFRYVElNRV9P RkZMT0FEX0lTX09OKHEtPm9mZmxvYWRfZmxhZ3MpKSB7DQo+Pj4+ICsJCXNrYi0+dHN0YW1wID0g Z2V0X3BhY2tldF90eHRpbWUoc2tiLCBzY2gpOw0KPj4+PiArCQlpZiAoIXNrYi0+dHN0YW1wKQ0K Pj4+PiArCQkJcmV0dXJuIHFkaXNjX2Ryb3Aoc2tiLCBzY2gsIHRvX2ZyZWUpOw0KPj4+PiArCX0N Cj4+Pj4gKw0KPj4+PiAgCXFkaXNjX3FzdGF0c19iYWNrbG9nX2luYyhzY2gsIHNrYik7DQo+Pj4+ ICAJc2NoLT5xLnFsZW4rKzsNCj4+Pj4gIEBAIC0yMDYsMTEgKzQ0Nyw2IEBAIHN0YXRpYyBzdHJ1 Y3Qgc2tfYnVmZiAqdGFwcmlvX3BlZWsoc3RydWN0IFFkaXNjICpzY2gpDQo+Pj4+ICAJcmV0dXJu IHEtPnBlZWsoc2NoKTsNCj4+Pj4gIH0NCj4+Pj4gIC1zdGF0aWMgaW5saW5lIGludCBsZW5ndGhf dG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikNCj4+Pj4gLXsNCj4+ Pj4gLQlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZxLT5waWNvc19wZXJfYnl0 ZSksIDEwMDApOw0KPj4+PiAtfQ0KPj4+PiAtDQo+Pj4+ICBzdGF0aWMgdm9pZCB0YXByaW9fc2V0 X2J1ZGdldChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5 KQ0KPj4+PiAgew0KPj4+PiAgCWF0b21pY19zZXQoJmVudHJ5LT5idWRnZXQsDQo+Pj4+IEBAIC01 OTQsNyArODMwLDggQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IG5s YXR0ciAqKnRiLA0KPj4+PiAgICBzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9tcXByaW9fb3B0KHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsDQo+Pj4+ICAJCQkJICAgc3RydWN0IHRjX21xcHJpb19xb3B0 ICpxb3B0LA0KPj4+PiAtCQkJCSAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykNCj4+ Pj4gKwkJCQkgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssDQo+Pj4+ICsJCQkJICAg dTMyIG9mZmxvYWRfZmxhZ3MpDQo+Pj4+ICB7DQo+Pj4+ICAJaW50IGksIGo7DQo+Pj4+ICBAQCAt NjQyLDYgKzg3OSw5IEBAIHN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX21xcHJpb19vcHQoc3RydWN0 IG5ldF9kZXZpY2UgKmRldiwNCj4+Pj4gIAkJCXJldHVybiAtRUlOVkFMOw0KPj4+PiAgCQl9DQo+ Pj4+ICArCQlpZiAoVFhUSU1FX09GRkxPQURfSVNfT04ob2ZmbG9hZF9mbGFncykpDQo+Pj4+ICsJ CQljb250aW51ZTsNCj4+Pj4gKw0KPj4+PiAgCQkvKiBWZXJpZnkgdGhhdCB0aGUgb2Zmc2V0IGFu ZCBjb3VudHMgZG8gbm90IG92ZXJsYXAgKi8NCj4+Pj4gIAkJZm9yIChqID0gaSArIDE7IGogPCBx b3B0LT5udW1fdGM7IGorKykgew0KPj4+PiAgCQkJaWYgKGxhc3QgPiBxb3B0LT5vZmZzZXRbal0p IHsNCj4+Pj4gQEAgLTgwNCw2ICsxMDQ0LDkgQEAgc3RhdGljIGludCB0YXByaW9fZW5hYmxlX29m ZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCj4+Pj4gIAljb25zdCBzdHJ1Y3QgbmV0X2Rl dmljZV9vcHMgKm9wcyA9IGRldi0+bmV0ZGV2X29wczsNCj4+Pj4gIAlpbnQgZXJyID0gMDsNCj4+ Pj4gICsJaWYgKFRYVElNRV9PRkZMT0FEX0lTX09OKG9mZmxvYWRfZmxhZ3MpKQ0KPj4+PiArCQln b3RvIGRvbmU7DQo+Pj4+ICsNCj4+Pj4gIAlpZiAoIUZVTExfT0ZGTE9BRF9JU19PTihvZmZsb2Fk X2ZsYWdzKSkgew0KPj4+PiAgCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICJPZmZsb2FkIG1vZGUg aXMgbm90IHN1cHBvcnRlZCIpOw0KPj4+PiAgCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQo+Pj4+IEBA IC04MTYsMTUgKzEwNTksMjggQEAgc3RhdGljIGludCB0YXByaW9fZW5hYmxlX29mZmxvYWQoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwNCj4+Pj4gICAgCS8qIEZJWE1FOiBlbmFibGUgb2ZmbG9hZGlu ZyAqLw0KPj4+PiAgLQlxLT5kZXF1ZXVlID0gdGFwcmlvX2RlcXVldWVfb2ZmbG9hZDsNCj4+Pj4g LQlxLT5wZWVrID0gdGFwcmlvX3BlZWtfb2ZmbG9hZDsNCj4+Pj4gLQ0KPj4+PiAtCWlmIChlcnIg PT0gMCkNCj4+Pj4gK2RvbmU6DQo+Pj4+ICsJaWYgKGVyciA9PSAwKSB7DQo+Pj4+ICsJCXEtPmRl cXVldWUgPSB0YXByaW9fZGVxdWV1ZV9vZmZsb2FkOw0KPj4+PiArCQlxLT5wZWVrID0gdGFwcmlv X3BlZWtfb2ZmbG9hZDsNCj4+Pj4gIAkJcS0+b2ZmbG9hZF9mbGFncyA9IG9mZmxvYWRfZmxhZ3M7 DQo+Pj4+ICsJfQ0KPj4+PiAgICAJcmV0dXJuIGVycjsNCj4+Pj4gIH0NCj4+Pj4gICtzdGF0aWMg dm9pZCBzZXR1cF90eHRpbWUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwNCj4+Pj4gKwkJCSBzdHJ1 Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKQ0KPj4+PiArew0KPj4+PiAr CXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnk7DQo+Pj4+ICsJdTMyIGludGVydmFsID0gMDsNCj4+ Pj4gKw0KPj4+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZzY2hlZC0+ZW50cmllcywg bGlzdCkgew0KPj4+PiArCQllbnRyeS0+bmV4dF90eHRpbWUgPSBrdGltZV9hZGRfbnMoYmFzZSwg aW50ZXJ2YWwpOw0KPj4+PiArCQlpbnRlcnZhbCArPSBlbnRyeS0+aW50ZXJ2YWw7DQo+Pj4+ICsJ fQ0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICBzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0 IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCwNCj4+Pj4gIAkJCSBzdHJ1Y3QgbmV0bGlu a19leHRfYWNrICpleHRhY2spDQo+Pj4+ICB7DQo+Pj4+IEBAIC04NDYsNyArMTEwMiwxMCBAQCBz dGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIg Km9wdCwNCj4+Pj4gIAlpZiAodGJbVENBX1RBUFJJT19BVFRSX1BSSU9NQVBdKQ0KPj4+PiAgCQlt cXByaW8gPSBubGFfZGF0YSh0YltUQ0FfVEFQUklPX0FUVFJfUFJJT01BUF0pOw0KPj4+PiAgLQll cnIgPSB0YXByaW9fcGFyc2VfbXFwcmlvX29wdChkZXYsIG1xcHJpbywgZXh0YWNrKTsNCj4+Pj4g KwlpZiAodGJbVENBX1RBUFJJT19BVFRSX09GRkxPQURfRkxBR1NdKQ0KPj4+PiArCQlvZmZsb2Fk X2ZsYWdzID0gbmxhX2dldF91MzIodGJbVENBX1RBUFJJT19BVFRSX09GRkxPQURfRkxBR1NdKTsN Cj4+Pj4gKw0KPj4+PiArCWVyciA9IHRhcHJpb19wYXJzZV9tcXByaW9fb3B0KGRldiwgbXFwcmlv LCBleHRhY2ssIG9mZmxvYWRfZmxhZ3MpOw0KPj4+PiAgCWlmIChlcnIgPCAwKQ0KPj4+PiAgCQly ZXR1cm4gZXJyOw0KPj4+PiAgQEAgLTg4Nyw2ICsxMTQ2LDEwIEBAIHN0YXRpYyBpbnQgdGFwcmlv X2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0KPj4+PiAgCQln b3RvIGZyZWVfc2NoZWQ7DQo+Pj4+ICAJfQ0KPj4+PiAgKwkvKiBwcmVzZXJ2ZSBvZmZsb2FkIGZs YWdzIHdoZW4gY2hhbmdpbmcgdGhlIHNjaGVkdWxlLiAqLw0KPj4+PiArCWlmIChxLT5vZmZsb2Fk X2ZsYWdzKQ0KPj4+PiArCQlvZmZsb2FkX2ZsYWdzID0gcS0+b2ZmbG9hZF9mbGFnczsNCj4+Pj4g Kw0KPj4+PiAgCWlmICh0YltUQ0FfVEFQUklPX0FUVFJfU0NIRURfQ0xPQ0tJRF0pIHsNCj4+Pj4g IAkJY2xvY2tpZCA9IG5sYV9nZXRfczMyKHRiW1RDQV9UQVBSSU9fQVRUUl9TQ0hFRF9DTE9DS0lE XSk7DQo+Pj4+ICBAQCAtOTE0LDcgKzExNzcsMTAgQEAgc3RhdGljIGludCB0YXByaW9fY2hhbmdl KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsDQo+Pj4+ICAJLyogUHJvdGVj dHMgYWdhaW5zdCBlbnF1ZXVlKCkvZGVxdWV1ZSgpICovDQo+Pj4+ICAJc3Bpbl9sb2NrX2JoKHFk aXNjX2xvY2soc2NoKSk7DQo+Pj4+ICAtCWlmICghaHJ0aW1lcl9hY3RpdmUoJnEtPmFkdmFuY2Vf dGltZXIpKSB7DQo+Pj4+ICsJaWYgKHRiW1RDQV9UQVBSSU9fQVRUUl9UWFRJTUVfREVMQVldKQ0K Pj4+PiArCQlxLT50eHRpbWVfZGVsYXkgPSBubGFfZ2V0X3MzMih0YltUQ0FfVEFQUklPX0FUVFJf VFhUSU1FX0RFTEFZXSk7DQo+Pj4+ICsNCj4+Pj4gKwlpZiAoIVRYVElNRV9PRkZMT0FEX0lTX09O KG9mZmxvYWRfZmxhZ3MpICYmICFocnRpbWVyX2FjdGl2ZSgmcS0+YWR2YW5jZV90aW1lcikpIHsN Cj4+Pj4gIAkJaHJ0aW1lcl9pbml0KCZxLT5hZHZhbmNlX3RpbWVyLCBxLT5jbG9ja2lkLCBIUlRJ TUVSX01PREVfQUJTKTsNCj4+Pj4gIAkJcS0+YWR2YW5jZV90aW1lci5mdW5jdGlvbiA9IGFkdmFu Y2Vfc2NoZWQ7DQo+Pj4+ICAJfQ0KPj4+PiBAQCAtOTY2LDIwICsxMjMyLDM1IEBAIHN0YXRpYyBp bnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LA0K Pj4+PiAgCQlnb3RvIHVubG9jazsNCj4+Pj4gIAl9DQo+Pj4+ICAtCXNldHVwX2ZpcnN0X2Nsb3Nl X3RpbWUocSwgbmV3X2FkbWluLCBzdGFydCk7DQo+Pj4+ICsJaWYgKFRYVElNRV9PRkZMT0FEX0lT X09OKG9mZmxvYWRfZmxhZ3MpKSB7DQo+Pj4+ICsJCXNldHVwX3R4dGltZShxLCBuZXdfYWRtaW4s IHN0YXJ0KTsNCj4+Pj4gKw0KPj4+PiArCQlpZiAoIW9wZXIpIHsNCj4+Pj4gKwkJCXJjdV9hc3Np Z25fcG9pbnRlcihxLT5vcGVyX3NjaGVkLCBuZXdfYWRtaW4pOw0KPj4+PiArCQkJZXJyID0gMDsN Cj4+Pj4gKwkJCW5ld19hZG1pbiA9IE5VTEw7DQo+Pj4+ICsJCQlnb3RvIHVubG9jazsNCj4+Pj4g KwkJfQ0KPj4+PiArDQo+Pj4+ICsJCXJjdV9hc3NpZ25fcG9pbnRlcihxLT5hZG1pbl9zY2hlZCwg bmV3X2FkbWluKTsNCj4+Pj4gKwkJaWYgKGFkbWluKQ0KPj4+PiArCQkJY2FsbF9yY3UoJmFkbWlu LT5yY3UsIHRhcHJpb19mcmVlX3NjaGVkX2NiKTsNCj4+Pj4gKwl9IGVsc2Ugew0KPj4+PiArCQlz ZXR1cF9maXJzdF9jbG9zZV90aW1lKHEsIG5ld19hZG1pbiwgc3RhcnQpOw0KPj4+PiAgLQkvKiBQ cm90ZWN0cyBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSAqLw0KPj4+PiAtCXNwaW5fbG9ja19pcnFz YXZlKCZxLT5jdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTsNCj4+Pj4gKwkJLyogUHJvdGVjdHMg YWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi8NCj4+Pj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnEt PmN1cnJlbnRfZW50cnlfbG9jaywgZmxhZ3MpOw0KPj4+PiAgLQl0YXByaW9fc3RhcnRfc2NoZWQo c2NoLCBzdGFydCwgbmV3X2FkbWluKTsNCj4+Pj4gKwkJdGFwcmlvX3N0YXJ0X3NjaGVkKHNjaCwg c3RhcnQsIG5ld19hZG1pbik7DQo+Pj4+ICAtCXJjdV9hc3NpZ25fcG9pbnRlcihxLT5hZG1pbl9z Y2hlZCwgbmV3X2FkbWluKTsNCj4+Pj4gLQlpZiAoYWRtaW4pDQo+Pj4+IC0JCWNhbGxfcmN1KCZh ZG1pbi0+cmN1LCB0YXByaW9fZnJlZV9zY2hlZF9jYik7DQo+Pj4+IC0JbmV3X2FkbWluID0gTlVM TDsNCj4+Pj4gKwkJcmN1X2Fzc2lnbl9wb2ludGVyKHEtPmFkbWluX3NjaGVkLCBuZXdfYWRtaW4p Ow0KPj4+PiArCQlpZiAoYWRtaW4pDQo+Pj4+ICsJCQljYWxsX3JjdSgmYWRtaW4tPnJjdSwgdGFw cmlvX2ZyZWVfc2NoZWRfY2IpOw0KPj4+PiAgLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZxLT5j dXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTsNCj4+Pj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmcS0+Y3VycmVudF9lbnRyeV9sb2NrLCBmbGFncyk7DQo+Pj4+ICsJfQ0KPj4+PiAgKwluZXdf YWRtaW4gPSBOVUxMOw0KPj4+PiAgCWVyciA9IDA7DQo+Pj4+ICAgIHVubG9jazoNCj4+Pj4gQEAg LTEyMjUsNiArMTUwNiw5IEBAIHN0YXRpYyBpbnQgdGFwcmlvX2R1bXAoc3RydWN0IFFkaXNjICpz Y2gsIHN0cnVjdCBza19idWZmICpza2IpDQo+Pj4+ICAJaWYgKG5sYV9wdXRfdTMyKHNrYiwgVENB X1RBUFJJT19BVFRSX09GRkxPQURfRkxBR1MsIHEtPm9mZmxvYWRfZmxhZ3MpKQ0KPj4+PiAgCQln b3RvIG9wdGlvbnNfZXJyb3I7DQo+Pj4+ICArCWlmIChubGFfcHV0X3MzMihza2IsIFRDQV9UQVBS SU9fQVRUUl9UWFRJTUVfREVMQVksIHEtPnR4dGltZV9kZWxheSkpDQo+Pj4+ICsJCWdvdG8gb3B0 aW9uc19lcnJvcjsNCj4+Pj4gKw0KPj4+PiAgCWlmIChvcGVyICYmIGR1bXBfc2NoZWR1bGUoc2ti LCBvcGVyKSkNCj4+Pj4gIAkJZ290byBvcHRpb25zX2Vycm9yOw0KDQo=