From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v5 10/11] viridian: add implementation of synthetic timers Date: Wed, 13 Mar 2019 13:06:12 +0000 Message-ID: <7c3e8ed8b2de4c3bb8254a97ab15fb4c@AMSPEX02CL02.citrite.net> References: <20190311134132.20536-1-paul.durrant@citrix.com> <20190311134132.20536-11-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h43dK-0000GV-8I for xen-devel@lists.xenproject.org; Wed, 13 Mar 2019 13:09:22 +0000 In-Reply-To: <20190311134132.20536-11-paul.durrant@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Paul Durrant , "xen-devel@lists.xenproject.org" Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Julien Grall , Jan Beulich , Ian Jackson , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGF1bCBEdXJyYW50IFtt YWlsdG86cGF1bC5kdXJyYW50QGNpdHJpeC5jb21dDQo+IFNlbnQ6IDExIE1hcmNoIDIwMTkgMTM6 NDINCj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogUGF1bCBEdXJy YW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5j b20+OyBJYW4gSmFja3Nvbg0KPiA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47IEFuZHJldyBDb29w ZXIgPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBHZW9yZ2UgRHVubGFwDQo+IDxHZW9yZ2Uu RHVubGFwQGNpdHJpeC5jb20+OyBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+OyBKdWxp ZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPjsNCj4gS29ucmFkIFJ6ZXN6dXRlayBXaWxr IDxrb25yYWQud2lsa0BvcmFjbGUuY29tPjsgU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGlu aUBrZXJuZWwub3JnPjsgVGltDQo+IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBSb2dlciBQYXUg TW9ubmUgPHJvZ2VyLnBhdUBjaXRyaXguY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjUgMTAvMTFd IHZpcmlkaWFuOiBhZGQgaW1wbGVtZW50YXRpb24gb2Ygc3ludGhldGljIHRpbWVycw0KPiANCj4g VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVElNRVIwLTE1 X0NPTkZJRy9DT1VOVCBNU1JzDQo+IGFuZCBoZW5jZSBhIHRoZSBmaXJzdCBTeW5JQyBtZXNzYWdl IHNvdXJjZS4NCj4gDQo+IFRoZSBuZXcgKGFuZCBkb2N1bWVudGVkKSAnc3RpbWVyJyB2aXJpZGlh biBlbmxpZ2h0ZW5tZW50IGdyb3VwIG1heSBiZQ0KPiBzcGVjaWZpZWQgdG8gZW5hYmxlIHRoaXMg ZmVhdHVyZS4NCj4gDQo+IFdoaWxlIGluIHRoZSBuZWlnaGJvdXJob29kLCB0aGlzIHBhdGNoIGFk ZHMgYSBtaXNzaW5nIGNoZWNrIGZvciBhbg0KPiBhdHRlbXB0IHRvIHdyaXRlIHRoZSB0aW1lIHJl ZmVyZW5jZSBjb3VudCBNU1IsIHdoaWNoIHNob3VsZCByZXN1bHQgaW4gYW4NCj4gZXhjZXB0aW9u IChidXQgbm90IGJlIHJlcG9ydGVkIGFzIGFuIHVuaW1wbGVtZW50ZWQgTVNSKS4NCj4gDQo+IE5P VEU6IEl0IGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdCBvcGVyYXRpb24gdGhhdCB0aW1lciBleHBp cmF0aW9uIGFuZA0KPiAgICAgICBtZXNzYWdlIGRlbGl2ZXJ5IHRpbWUtc3RhbXBpbmcgdXNlIHRo ZSBzYW1lIHRpbWUgc291cmNlIGFzIHRoZSBndWVzdC4NCj4gICAgICAgVGhlIHNwZWNpZmljYXRp b24gaXMgYW1iaWd1b3VzIGJ1dCB0ZXN0aW5nIHdpdGggYSBXaW5kb3dzIDEwIDE4MDMNCj4gICAg ICAgZ3Vlc3QgaGFzIHNob3duIHRoYXQgdXNpbmcgdGhlIHBhcnRpdGlvbiByZWZlcmVuY2UgY291 bnRlciBhcyBhDQo+ICAgICAgIHNvdXJjZSB3aGlsc3QgdGhlIGd1ZXN0IGlzIHVzaW5nIFJEVFND IGFuZCB0aGUgcmVmZXJlbmNlIHRzYyBwYWdlDQo+ICAgICAgIGRvZXMgbm90IHdvcmsgY29ycmVj dGx5LiBUaGVyZWZvcmUgdGhlIHRpbWVfbm93KCkgZnVuY3Rpb24gaXMgdXNlZC4NCj4gICAgICAg VGhpcyBpbXBsZW1lbnRzIHRoZSBhbGdvcml0aG0gZm9yIGFjcXVpcmluZyBwYXJ0aXRpb24gcmVm ZXJlbmNlIHRpbWUNCj4gICAgICAgdGhhdCBpcyBkb2N1bWVudGVkIGluIHRoZSBzcGVjaWZpY3Rp b24uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRy aXguY29tPg0KPiBBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4NCj4gLS0t DQo+IENjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4NCj4gQ2M6IEFu ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQo+IENjOiBHZW9yZ2UgRHVu bGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+DQo+IENjOiBKYW4gQmV1bGljaCA8amJl dWxpY2hAc3VzZS5jb20+DQo+IENjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29t Pg0KPiBDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPg0K PiBDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPg0KPiBDYzog VGltIERlZWdhbiA8dGltQHhlbi5vcmc+DQo+IENjOiAiUm9nZXIgUGF1IE1vbm7DqSIgPHJvZ2Vy LnBhdUBjaXRyaXguY29tPg0KPiANCj4gdjU6DQo+ICAtIEZpeCB0aW1lX25vdygpIHRvIHJlYWQg VFNDIGFzIHRoZSBndWVzdCB3b3VsZCBzZWUgaXQNCj4gDQo+IHY0Og0KPiAgLSBBZGRyZXNzIGNv bW1lbnRzIGZyb20gSmFuDQo+IA0KPiB2MzoNCj4gIC0gUmUtd29ya2VkIG1pc3NlZCB0aWNrcyBj YWxjdWxhdGlvbg0KPiAtLS0NCj4gIGRvY3MvbWFuL3hsLmNmZy41LnBvZC5pbiAgICAgICAgICAg ICAgIHwgIDEyICstDQo+ICB0b29scy9saWJ4bC9saWJ4bC5oICAgICAgICAgICAgICAgICAgICB8 ICAgNiArDQo+ICB0b29scy9saWJ4bC9saWJ4bF9kb20uYyAgICAgICAgICAgICAgICB8ICAgNCAr DQo+ICB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICAgICAgICAgICB8ICAgMSArDQo+ICB4 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ByaXZhdGUuaCAgICB8ICAgOSArLQ0KPiAgeGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jICAgICAgfCAgNTMgKysrLQ0KPiAgeGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi90aW1lLmMgICAgICAgfCAzODYgKysrKysrKysrKysrKysrKysrKysr KysrLQ0KPiAgeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jICAgfCAgMTkgKysN Cj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmggICAgIHwgIDMyICstDQo+ICB4 ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaCB8ICAgMiArDQo+ICB4ZW4vaW5j bHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oICAgICAgICB8ICAgNyArLQ0KPiAgMTEgZmlsZXMgY2hh bmdlZCwgNTIzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluIGIvZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluDQo+ IGluZGV4IGFkODFhZjFlZDguLjM1NWM2NTQ2OTMgMTAwNjQ0DQo+IC0tLSBhL2RvY3MvbWFuL3hs LmNmZy41LnBvZC5pbg0KPiArKysgYi9kb2NzL21hbi94bC5jZmcuNS5wb2QuaW4NCj4gQEAgLTIx NjcsMTEgKzIxNjcsMTkgQEAgVGhpcyBncm91cCBpbmNvcnBvcmF0ZXMgdGhlIGNyYXNoIGNvbnRy b2wgTVNScy4gVGhlc2UgZW5saWdodGVubWVudHMNCj4gIGFsbG93IFdpbmRvd3MgdG8gd3JpdGUg Y3Jhc2ggaW5mb3JtYXRpb24gc3VjaCB0aGF0IGl0IGNhbiBiZSBsb2dnZWQNCj4gIGJ5IFhlbi4N Cj4gDQo+ICs9aXRlbSBCPHN0aW1lcj4NCj4gKw0KPiArVGhpcyBzZXQgaW5jb3Jwb3JhdGVzIHRo ZSBTeW5JQyBhbmQgc3ludGhldGljIHRpbWVyIE1TUnMuIFdpbmRvd3Mgd2lsbA0KPiArdXNlIHN5 bnRoZXRpYyB0aW1lcnMgaW4gcHJlZmVyZW5jZSB0byBlbXVsYXRlZCBIUEVUIGZvciBhIHNvdXJj ZSBvZg0KPiArdGlja3MgYW5kIGhlbmNlIGVuYWJsaW5nIHRoaXMgZ3JvdXAgd2lsbCBlbnN1cmUg dGhhdCB0aWNrcyB3aWxsIGJlDQo+ICtjb25zaXN0ZW50IHdpdGggdXNlIG9mIGFuIGVubGlnaHRl bmVkIHRpbWUgc291cmNlIChCPHRpbWVfcmVmX2NvdW50PiBvcg0KPiArQjxyZWZlcmVuY2VfdHNj PikuDQo+ICsNCj4gID1pdGVtIEI8ZGVmYXVsdHM+DQo+IA0KPiAgVGhpcyBpcyBhIHNwZWNpYWwg dmFsdWUgdGhhdCBlbmFibGVzIHRoZSBkZWZhdWx0IHNldCBvZiBncm91cHMsIHdoaWNoDQo+IC1p cyBjdXJyZW50bHkgdGhlIEI8YmFzZT4sIEI8ZnJlcT4sIEI8dGltZV9yZWZfY291bnQ+LCBCPGFw aWNfYXNzaXN0Pg0KPiAtYW5kIEI8Y3Jhc2hfY3RsPiBncm91cHMuDQo+ICtpcyBjdXJyZW50bHkg dGhlIEI8YmFzZT4sIEI8ZnJlcT4sIEI8dGltZV9yZWZfY291bnQ+LCBCPGFwaWNfYXNzaXN0PiwN Cj4gK0I8Y3Jhc2hfY3RsPiBhbmQgQjxzdGltZXI+IGdyb3Vwcy4NCj4gDQo+ICA9aXRlbSBCPGFs bD4NCj4gDQo+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwv bGlieGwuaA0KPiBpbmRleCBhOTIzYTM4MGQzLi5jOGYyMTliMGQzIDEwMDY0NA0KPiAtLS0gYS90 b29scy9saWJ4bC9saWJ4bC5oDQo+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgNCj4gQEAgLTMy NCw2ICszMjQsMTIgQEANCj4gICAqLw0KPiAgI2RlZmluZSBMSUJYTF9IQVZFX1ZJUklESUFOX1NZ TklDIDENCj4gDQo+ICsvKg0KPiArICogTElCWExfSEFWRV9WSVJJRElBTl9TVElNRVIgaW5kaWNh dGVzIHRoYXQgdGhlICdzdGltZXInIHZhbHVlDQo+ICsgKiBpcyBwcmVzZW50IGluIHRoZSB2aXJp ZGlhbiBlbmxpZ2h0ZW5tZW50IGVudW1lcmF0aW9uLg0KPiArICovDQo+ICsjZGVmaW5lIExJQlhM X0hBVkVfVklSSURJQU5fU1RJTUVSIDENCj4gKw0KPiAgLyoNCj4gICAqIExJQlhMX0hBVkVfQlVJ TERJTkZPX0hWTV9BQ1BJX0xBUFRPUF9TTEFURSBpbmRpY2F0ZXMgdGhhdA0KPiAgICogbGlieGxf ZG9tYWluX2J1aWxkX2luZm8gaGFzIHRoZSB1Lmh2bS5hY3BpX2xhcHRvcF9zbGF0ZSBmaWVsZC4N Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGli eGxfZG9tLmMNCj4gaW5kZXggZmI3NThkMmFjMy4uMmVlMGY4MmVlNyAxMDA2NDQNCj4gLS0tIGEv dG9vbHMvbGlieGwvbGlieGxfZG9tLmMNCj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMN Cj4gQEAgLTI2OSw2ICsyNjksNyBAQCBzdGF0aWMgaW50IGh2bV9zZXRfdmlyaWRpYW5fZmVhdHVy ZXMobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsDQo+ICAgICAgICAgIGxpYnhsX2JpdG1h cF9zZXQoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJR0hURU5NRU5UX1RJTUVf UkVGX0NPVU5UKTsNCj4gICAgICAgICAgbGlieGxfYml0bWFwX3NldCgmZW5saWdodGVubWVudHMs IExJQlhMX1ZJUklESUFOX0VOTElHSFRFTk1FTlRfQVBJQ19BU1NJU1QpOw0KPiAgICAgICAgICBs aWJ4bF9iaXRtYXBfc2V0KCZlbmxpZ2h0ZW5tZW50cywgTElCWExfVklSSURJQU5fRU5MSUdIVEVO TUVOVF9DUkFTSF9DVEwpOw0KPiArICAgICAgICBsaWJ4bF9iaXRtYXBfc2V0KCZlbmxpZ2h0ZW5t ZW50cywgTElCWExfVklSSURJQU5fRU5MSUdIVEVOTUVOVF9TVElNRVIpOw0KPiAgICAgIH0NCj4g DQo+ICAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdCh2LCBpbmZvLT51Lmh2bS52aXJpZGlhbl9l bmFibGUpIHsNCj4gQEAgLTMyMCw2ICszMjEsOSBAQCBzdGF0aWMgaW50IGh2bV9zZXRfdmlyaWRp YW5fZmVhdHVyZXMobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsDQo+ICAgICAgaWYgKGxp YnhsX2JpdG1hcF90ZXN0KCZlbmxpZ2h0ZW5tZW50cywgTElCWExfVklSSURJQU5fRU5MSUdIVEVO TUVOVF9TWU5JQykpDQo+ICAgICAgICAgIG1hc2sgfD0gSFZNUFZfc3luaWM7DQo+IA0KPiArICAg IGlmIChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVubWVudHMsIExJQlhMX1ZJUklESUFOX0VO TElHSFRFTk1FTlRfU1RJTUVSKSkNCj4gKyAgICAgICAgbWFzayB8PSBIVk1QVl90aW1lX3JlZl9j b3VudCB8IEhWTVBWX3N5bmljIHwgSFZNUFZfc3RpbWVyOw0KPiArDQo+ICAgICAgaWYgKG1hc2sg IT0gMCAmJg0KPiAgICAgICAgICB4Y19odm1fcGFyYW1fc2V0KENUWC0+eGNoLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvbWlkLA0KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGli eGxfdHlwZXMuaWRsIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsDQo+IGluZGV4IDk4NjBi Y2FmNWYuLjFjY2UyNDlkZTQgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVz LmlkbA0KPiArKysgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwNCj4gQEAgLTIzNiw2ICsy MzYsNyBAQCBsaWJ4bF92aXJpZGlhbl9lbmxpZ2h0ZW5tZW50ID0gRW51bWVyYXRpb24oInZpcmlk aWFuX2VubGlnaHRlbm1lbnQiLCBbDQo+ICAgICAgKDUsICJhcGljX2Fzc2lzdCIpLA0KPiAgICAg ICg2LCAiY3Jhc2hfY3RsIiksDQo+ICAgICAgKDcsICJzeW5pYyIpLA0KPiArICAgICg4LCAic3Rp bWVyIiksDQo+ICAgICAgXSkNCj4gDQo+ICBsaWJ4bF9oZHR5cGUgPSBFbnVtZXJhdGlvbigiaGR0 eXBlIiwgWw0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9wcml2YXRl LmggYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ByaXZhdGUuaA0KPiBpbmRleCA5NmE3ODRi ODQwLi5jMjcyYzM0Y2RhIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFu L3ByaXZhdGUuaA0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ByaXZhdGUuaA0K PiBAQCAtNzQsNiArNzQsMTEgQEANCj4gIGludCB2aXJpZGlhbl9zeW5pY193cm1zcihzdHJ1Y3Qg dmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpOw0KPiAgaW50IHZpcmlkaWFuX3N5 bmljX3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2 YWwpOw0KPiANCj4gK2Jvb2wgdmlyaWRpYW5fc3luaWNfZGVsaXZlcl90aW1lcl9tc2coc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGludCBzaW50eCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluZGV4LA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBleHBpcmF0aW9uLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBkZWxpdmVyeSk7DQo+ICsNCj4gIGlu dCB2aXJpZGlhbl9zeW5pY192Y3B1X2luaXQoY29uc3Qgc3RydWN0IHZjcHUgKnYpOw0KPiAgaW50 IHZpcmlkaWFuX3N5bmljX2RvbWFpbl9pbml0KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpOw0KPiAN Cj4gQEAgLTkzLDcgKzk4LDkgQEAgdm9pZCB2aXJpZGlhbl9zeW5pY19sb2FkX2RvbWFpbl9jdHh0 KA0KPiAgaW50IHZpcmlkaWFuX3RpbWVfd3Jtc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlk eCwgdWludDY0X3QgdmFsKTsNCj4gIGludCB2aXJpZGlhbl90aW1lX3JkbXNyKGNvbnN0IHN0cnVj dCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpOw0KPiANCj4gLWludCB2aXJp ZGlhbl90aW1lX3ZjcHVfaW5pdChjb25zdCBzdHJ1Y3QgdmNwdSAqdik7DQo+ICt2b2lkIHZpcmlk aWFuX3RpbWVfcG9sbF90aW1lcnMoc3RydWN0IHZjcHUgKnYpOw0KPiArDQo+ICtpbnQgdmlyaWRp YW5fdGltZV92Y3B1X2luaXQoc3RydWN0IHZjcHUgKnYpOw0KPiAgaW50IHZpcmlkaWFuX3RpbWVf ZG9tYWluX2luaXQoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCk7DQo+IA0KPiAgdm9pZCB2aXJpZGlh bl90aW1lX3ZjcHVfZGVpbml0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsNCj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmly aWRpYW4vc3luaWMuYw0KPiBpbmRleCBmNDUxMGQzODI5Li5iNWYzYTc5NTU2IDEwMDY0NA0KPiAt LS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMNCj4gKysrIGIveGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jDQo+IEBAIC0zNDAsOSArMzQwLDU4IEBAIHZvaWQgdmly aWRpYW5fc3luaWNfZG9tYWluX2RlaW5pdChjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgew0K PiAgfQ0KPiANCj4gLXZvaWQgdmlyaWRpYW5fc3luaWNfcG9sbF9tZXNzYWdlcyhjb25zdCBzdHJ1 Y3QgdmNwdSAqdikNCj4gK3ZvaWQgdmlyaWRpYW5fc3luaWNfcG9sbF9tZXNzYWdlcyhzdHJ1Y3Qg dmNwdSAqdikNCj4gIHsNCj4gLSAgICAvKiBUaGVyZSBhcmUgY3VycmVudGx5IG5vIG1lc3NhZ2Ug c291cmNlcyAqLw0KPiArICAgIHZpcmlkaWFuX3RpbWVfcG9sbF90aW1lcnModik7DQo+ICt9DQo+ ICsNCj4gK2Jvb2wgdmlyaWRpYW5fc3luaWNfZGVsaXZlcl90aW1lcl9tc2coc3RydWN0IHZjcHUg KnYsIHVuc2lnbmVkIGludCBzaW50eCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGluZGV4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCBleHBpcmF0aW9uLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBkZWxpdmVyeSkNCj4gK3sNCj4gKyAgICBzdHJ1 Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsNCj4gKyAgICBjb25z dCB1bmlvbiB2aXJpZGlhbl9zaW50X21zciAqdnMgPSAmdnYtPnNpbnRbc2ludHhdOw0KPiArICAg IEhWX01FU1NBR0UgKm1zZyA9IHZ2LT5zaW1wLnB0cjsNCj4gKyAgICBzdHJ1Y3Qgew0KPiArICAg ICAgICB1aW50MzJfdCBUaW1lckluZGV4Ow0KPiArICAgICAgICB1aW50MzJfdCBSZXNlcnZlZDsN Cj4gKyAgICAgICAgdWludDY0X3QgRXhwaXJhdGlvblRpbWU7DQo+ICsgICAgICAgIHVpbnQ2NF90 IERlbGl2ZXJ5VGltZTsNCj4gKyAgICB9IHBheWxvYWQgPSB7DQo+ICsgICAgICAgIC5UaW1lcklu ZGV4ID0gaW5kZXgsDQo+ICsgICAgICAgIC5FeHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb24sDQo+ ICsgICAgICAgIC5EZWxpdmVyeVRpbWUgPSBkZWxpdmVyeSwNCj4gKyAgICB9Ow0KPiArDQo+ICsg ICAgaWYgKCB0ZXN0X2JpdChzaW50eCwgJnZ2LT5tc2dfcGVuZGluZykgKQ0KPiArICAgICAgICBy ZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKCptc2cpICE9IEhW X01FU1NBR0VfU0laRSk7DQo+ICsgICAgbXNnICs9IHNpbnR4Ow0KPiArDQo+ICsgICAgLyoNCj4g KyAgICAgKiBUbyBhdm9pZCB1c2luZyBhbiBhdG9taWMgdGVzdC1hbmQtc2V0LCBhbmQgYmFycmll ciBiZWZvcmUgY2FsbGluZw0KPiArICAgICAqIHZsYXBpY19zZXRfaXJxKCksIHRoaXMgZnVuY3Rp b24gbXVzdCBiZSBjYWxsZWQgaW4gY29udGV4dCBvZiB0aGUNCj4gKyAgICAgKiB2Y3B1IHJlY2Vp dmluZyB0aGUgbWVzc2FnZS4NCj4gKyAgICAgKi8NCj4gKyAgICBBU1NFUlQodiA9PSBjdXJyZW50 KTsNCj4gKyAgICBpZiAoIG1zZy0+SGVhZGVyLk1lc3NhZ2VUeXBlICE9IEh2TWVzc2FnZVR5cGVO b25lICkNCj4gKyAgICB7DQo+ICsgICAgICAgIG1zZy0+SGVhZGVyLk1lc3NhZ2VGbGFncy5NZXNz YWdlUGVuZGluZyA9IDE7DQo+ICsgICAgICAgIF9fc2V0X2JpdChzaW50eCwgJnZ2LT5tc2dfcGVu ZGluZyk7DQo+ICsgICAgICAgIHJldHVybiBmYWxzZTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBt c2ctPkhlYWRlci5NZXNzYWdlVHlwZSA9IEh2TWVzc2FnZVRpbWVyRXhwaXJlZDsNCj4gKyAgICBt c2ctPkhlYWRlci5NZXNzYWdlRmxhZ3MuTWVzc2FnZVBlbmRpbmcgPSAwOw0KPiArICAgIG1zZy0+ SGVhZGVyLlBheWxvYWRTaXplID0gc2l6ZW9mKHBheWxvYWQpOw0KPiArICAgIG1lbWNweShtc2ct PlBheWxvYWQsICZwYXlsb2FkLCBzaXplb2YocGF5bG9hZCkpOw0KPiArDQo+ICsgICAgaWYgKCAh dnMtPm1hc2sgKQ0KPiArICAgICAgICB2bGFwaWNfc2V0X2lycSh2Y3B1X3ZsYXBpYyh2KSwgdnMt PnZlY3RvciwgMCk7DQo+ICsNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gIH0NCj4gDQo+ICBib29s IHZpcmlkaWFuX3N5bmljX2lzX2F1dG9fZW9pX3NpbnQoY29uc3Qgc3RydWN0IHZjcHUgKnYsDQo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYyBiL3hlbi9hcmNo L3g4Ni9odm0vdmlyaWRpYW4vdGltZS5jDQo+IGluZGV4IDcxMjkxZDkyMWMuLjEyY2U2YzhmMDEg MTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdGltZS5jDQo+ICsrKyBi L3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdGltZS5jDQo+IEBAIC0xMiw2ICsxMiw3IEBADQo+ ICAjaW5jbHVkZSA8eGVuL3ZlcnNpb24uaD4NCj4gDQo+ICAjaW5jbHVkZSA8YXNtL2FwaWMuaD4N Cj4gKyNpbmNsdWRlIDxhc20vZXZlbnQuaD4NCj4gICNpbmNsdWRlIDxhc20vaHZtL3N1cHBvcnQu aD4NCj4gDQo+ICAjaW5jbHVkZSAicHJpdmF0ZS5oIg0KPiBAQCAtNzIsNiArNzMsNyBAQCBzdGF0 aWMgdm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sIGluaXRp YWxpemUpDQo+ICAgICAgICogdGlja3MgcGVyIDEwMG5zIHNoaWZ0ZWQgbGVmdCBieSA2NC4NCj4g ICAgICAgKi8NCj4gICAgICBwLT5Uc2NTY2FsZSA9ICgoMTAwMDB1bCA8PCAzMikgLyBkLT5hcmNo LnRzY19raHopIDw8IDMyOw0KPiArICAgIHNtcF93bWIoKTsNCj4gDQo+ICAgICAgcC0+VHNjU2Vx dWVuY2UrKzsNCj4gICAgICBpZiAoIHAtPlRzY1NlcXVlbmNlID09IDB4RkZGRkZGRkYgfHwNCj4g QEAgLTExOCwxOCArMTIwLDI2NSBAQCBzdGF0aWMgaW50NjRfdCB0aW1lX3JlZl9jb3VudChjb25z dCBzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgICAgIHJldHVybiByYXdfdHJjX3ZhbChkKSArIHRyYy0+ b2ZmOw0KPiAgfQ0KPiANCj4gKy8qDQo+ICsgKiBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzOiAiVGhl IHBhcnRpdGlvbiByZWZlcmVuY2UgdGltZSBpcyBjb21wdXRlZA0KPiArICogYnkgdGhlIGZvbGxv d2luZyBmb3JtdWxhOg0KPiArICoNCj4gKyAqIFJlZmVyZW5jZVRpbWUgPSAoKFZpcnR1YWxUc2Mg KiBUc2NTY2FsZSkgPj4gNjQpICsgVHNjT2Zmc2V0DQo+ICsgKg0KPiArICogVGhlIG11bHRpcGxp Y2F0aW9uIGlzIGEgNjQgYml0IG11bHRpcGxpY2F0aW9uLCB3aGljaCByZXN1bHRzIGluIGENCj4g KyAqIDEyOCBiaXQgbnVtYmVyIHdoaWNoIGlzIHRoZW4gc2hpZnRlZCA2NCB0aW1lcyB0byB0aGUg cmlnaHQgdG8gb2J0YWluDQo+ICsgKiB0aGUgaGlnaCA2NCBiaXRzLiINCj4gKyAqLw0KPiArc3Rh dGljIHVpbnQ2NF90IHNjYWxlX3RzYyh1aW50NjRfdCB0c2MsIHVpbnQ2NF90IHNjYWxlLCB1aW50 NjRfdCBvZmZzZXQpDQo+ICt7DQo+ICsgICAgdWludDY0X3QgcmVzdWx0Ow0KPiArDQo+ICsgICAg LyoNCj4gKyAgICAgKiBRdWFkd29yZCBNVUwgdGFrZXMgYW4gaW1wbGljaXQgb3BlcmFuZCBpbiBS QVgsIGFuZCBwdXRzIHRoZSByZXN1bHQNCj4gKyAgICAgKiBpbiBSRFg6UkFYLiBCZWNhdXNlIHdl IG9ubHkgd2FudCB0aGUgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbg0KPiArICAgICAqIGFm dGVyIHNoaWZ0aW5nIHJpZ2h0IGJ5IDY0IGJpdHMsIHdlIHRoZXJlZm9yZSBvbmx5IG5lZWQgdGhl IGNvbnRlbnQNCj4gKyAgICAgKiBvZiBSRFguDQo+ICsgICAgICovDQo+ICsgICAgYXNtICggIm11 bHEgJVtzY2FsZV0iDQo+ICsgICAgICAgICAgOiAiK2EiICh0c2MpLCAiPWQiIChyZXN1bHQpDQo+ ICsgICAgICAgICAgOiBbc2NhbGVdICJybSIgKHNjYWxlKSApOw0KPiArDQo+ICsgICAgcmV0dXJu IHJlc3VsdCArIG9mZnNldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHVpbnQ2NF90IHRpbWVfbm93 KHN0cnVjdCBkb21haW4gKmQpDQo+ICt7DQo+ICsgICAgY29uc3Qgc3RydWN0IHZpcmlkaWFuX3Bh Z2UgKnJ0ID0gJmQtPmFyY2guaHZtLnZpcmlkaWFuLT5yZWZlcmVuY2VfdHNjOw0KPiArICAgIEhW X1JFRkVSRU5DRV9UU0NfUEFHRSAqcCA9IHJ0LT5wdHI7DQo+ICsgICAgdWludDMyX3Qgc3RhcnQs IGVuZDsNCj4gKyAgICB1aW50NjRfdCB0c2M7DQo+ICsgICAgdWludDY0X3Qgc2NhbGU7DQo+ICsg ICAgdWludDY0X3Qgb2Zmc2V0Ow0KPiArDQo+ICsgICAgLyoNCj4gKyAgICAgKiBJZiB0aGUgcmVm ZXJlbmNlIFRTQyBwYWdlIGlzIG5vdCBlbmFibGVkLCBvciBoYXMgYmVlbiBpbnZhbGlkYXRlZA0K PiArICAgICAqIGZhbGwgYmFjayB0byB0aGUgcGFydGl0aW9uIHJlZmVyZW5jZSBjb3VudGVyLg0K PiArICAgICAqLw0KPiArICAgIGlmICggIXAgfHwgIXAtPlRzY1NlcXVlbmNlICkNCj4gKyAgICAg ICAgcmV0dXJuIHRpbWVfcmVmX2NvdW50KGQpOw0KPiArDQo+ICsgICAgLyoNCj4gKyAgICAgKiBU aGUgZm9sbG93aW5nIHNhbXBsaW5nIGFsZ29yaXRobSBmb3IgdHNjLCBzY2FsZSBhbmQgb2Zmc2V0 IGlzDQo+ICsgICAgICogZG9jdW1lbnRlZCBpbiB0aGUgc3BlY2lmaWN0aW9uLg0KPiArICAgICAq Lw0KPiArICAgIGRvIHsNCj4gKyAgICAgICAgc3RhcnQgPSBwLT5Uc2NTZXF1ZW5jZTsNCj4gKyAg ICAgICAgc21wX3JtYigpOw0KPiArDQo+ICsgICAgICAgIHRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNj KHB0X2dsb2JhbF92Y3B1X3RhcmdldChkKSk7DQo+ICsgICAgICAgIHNjYWxlID0gcC0+VHNjU2Nh bGU7DQo+ICsgICAgICAgIG9mZnNldCA9IHAtPlRzY09mZnNldDsNCj4gKw0KPiArICAgICAgICBz bXBfcm1iKCk7DQo+ICsgICAgICAgIGVuZCA9IHAtPlRzY1NlcXVlbmNlOw0KPiArICAgIH0gd2hp bGUgKGVuZCAhPSBzdGFydCk7DQo+ICsNCj4gKyAgICByZXR1cm4gc2NhbGVfdHNjKHRzYywgc2Nh bGUsIG9mZnNldCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHN0b3Bfc3RpbWVyKHN0cnVj dCB2aXJpZGlhbl9zdGltZXIgKnZzKQ0KPiArew0KPiArICAgIGNvbnN0IHN0cnVjdCB2Y3B1ICp2 ID0gdnMtPnY7DQo+ICsgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0u dmlyaWRpYW47DQo+ICsgICAgdW5zaWduZWQgaW50IHN0aW1lcnggPSB2cyAtICZ2di0+c3RpbWVy WzBdOw0KPiArDQo+ICsgICAgaWYgKCAhdnMtPnN0YXJ0ZWQgKQ0KPiArICAgICAgICByZXR1cm47 DQo+ICsNCj4gKyAgICBzdG9wX3RpbWVyKCZ2cy0+dGltZXIpOw0KPiArICAgIGNsZWFyX2JpdChz dGltZXJ4LCAmdnYtPnN0aW1lcl9wZW5kaW5nKTsNCj4gKyAgICB2cy0+c3RhcnRlZCA9IGZhbHNl Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBzdGltZXJfZXhwaXJlKHZvaWQgKmRhdGEpDQo+ ICt7DQo+ICsgICAgY29uc3Qgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMgPSBkYXRhOw0KPiAr ICAgIHN0cnVjdCB2Y3B1ICp2ID0gdnMtPnY7DQo+ICsgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUg KnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47DQo+ICsgICAgdW5zaWduZWQgaW50IHN0aW1lcngg PSB2cyAtICZ2di0+c3RpbWVyWzBdOw0KPiArDQo+ICsgICAgaWYgKCAhdnMtPmNvbmZpZy5maWVs ZHMuZW5hYmxlZCApDQo+ICsgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgIHNldF9iaXQoc3Rp bWVyeCwgJnZ2LT5zdGltZXJfcGVuZGluZyk7DQo+ICsgICAgdmNwdV9raWNrKHYpOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgdm9pZCBzdGFydF9zdGltZXIoc3RydWN0IHZpcmlkaWFuX3N0aW1lciAq dnMpDQo+ICt7DQo+ICsgICAgY29uc3Qgc3RydWN0IHZjcHUgKnYgPSB2cy0+djsNCj4gKyAgICBz dHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsNCj4gKyAgICB1 bnNpZ25lZCBpbnQgc3RpbWVyeCA9IHZzIC0gJnZ2LT5zdGltZXJbMF07DQo+ICsgICAgaW50NjRf dCBub3cgPSB0aW1lX25vdyh2LT5kb21haW4pOw0KPiArICAgIHNfdGltZV90IHRpbWVvdXQ7DQo+ ICsNCj4gKyAgICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0KHN0aW1lcngsICZ2di0+c3RpbWVyX2Vu YWJsZWQpICkNCj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19HX0lORk8gIiVwdjogVklSSURJQU4g U1RJTUVSJXU6IGVuYWJsZWRcbiIsIHYsDQo+ICsgICAgICAgICAgICAgICBzdGltZXJ4KTsNCj4g Kw0KPiArICAgIGlmICggdnMtPmNvbmZpZy5maWVsZHMucGVyaW9kaWMgKQ0KPiArICAgIHsNCj4g KyAgICAgICAgdW5zaWduZWQgaW50IG1pc3NlZCA9IDA7DQo+ICsgICAgICAgIGludDY0X3QgbmV4 dDsNCj4gKw0KPiArICAgICAgICAvKg0KPiArICAgICAgICAgKiBUaGUgc3BlY2lmaWNhdGlvbiBz YXlzIHRoYXQgaWYgdGhlIHRpbWVyIGlzIGxhenkgdGhlbiB3ZQ0KPiArICAgICAgICAgKiBza2lw IG92ZXIgYW55IG1pc3NlZCBleHBpcmF0aW9ucyBzbyB3ZSBjYW4gdHJlYXQgdGhpcyBjYXNlDQo+ ICsgICAgICAgICAqIGFzIHRoZSBzYW1lIGFzIGlmIHRoZSB0aW1lciBpcyBjdXJyZW50bHkgc3Rv cHBlZCwgaS5lLiB3ZQ0KPiArICAgICAgICAgKiBqdXN0IHNjaGVkdWxlIGV4cGlyYXRpb24gdG8g YmUgJ2NvdW50JyB0aWNrcyBmcm9tIG5vdy4NCj4gKyAgICAgICAgICovDQo+ICsgICAgICAgIGlm ICggIXZzLT5zdGFydGVkIHx8IHZzLT5jb25maWcuZmllbGRzLmxhenkgKQ0KPiArICAgICAgICAg ICAgbmV4dCA9IG5vdyArIHZzLT5jb3VudDsNCj4gKyAgICAgICAgZWxzZQ0KPiArICAgICAgICB7 DQo+ICsgICAgICAgICAgICAvKg0KPiArICAgICAgICAgICAgICogVGhlIHRpbWVyIGlzIGFscmVh ZHkgc3RhcnRlZCwgc28gd2UncmUgcmUtc2NoZWR1bGluZy4NCj4gKyAgICAgICAgICAgICAqIEhl bmNlIGFkdmFuY2UgdGhlIHRpbWVyIGV4cGlyYXRpb24gYnkgb25lIHRpY2suDQo+ICsgICAgICAg ICAgICAgKi8NCj4gKyAgICAgICAgICAgIG5leHQgPSB2cy0+ZXhwaXJhdGlvbiArIHZzLT5jb3Vu dDsNCj4gKw0KPiArICAgICAgICAgICAgLyogTm93IGNoZWNrIHRvIHNlZSBpZiBhbnkgZXhwaXJh dGlvbnMgaGF2ZSBiZWVuIG1pc3NlZCAqLw0KPiArICAgICAgICAgICAgaWYgKCBub3cgLSBuZXh0 ID4gMCApDQo+ICsgICAgICAgICAgICAgICAgbWlzc2VkID0gKG5vdyAtIG5leHQpIC8gdnMtPmNv dW50Ow0KPiArDQo+ICsgICAgICAgICAgICAvKg0KPiArICAgICAgICAgICAgICogVGhlIHNwZWNp ZmljYXRpb24gc2F5cyB0aGF0IGlmIHRoZSB0aW1lciBpcyBub3QgbGF6eSB0aGVuDQo+ICsgICAg ICAgICAgICAgKiBhIG5vbi16ZXJvIG1pc3NlZCBjb3VudCBzaG91bGQgYmUgdXNlZCB0byByZWR1 Y2UgdGhlIHBlcmlvZA0KPiArICAgICAgICAgICAgICogb2YgdGhlIHRpbWVyIHVudGlsIGl0IGNh dGNoZXMgdXAsIHVubGVzcyB0aGUgY291bnQgaGFzDQo+ICsgICAgICAgICAgICAgKiByZWFjaGVk IGEgJ3NpZ25pZmljYW50IG51bWJlcicsIGluIHdoaWNoIGNhc2UgdGhlIHRpbWVyDQo+ICsgICAg ICAgICAgICAgKiBzaG91bGQgYmUgdHJlYXRlZCBhcyBsYXp5LiBVbmZvcnR1bmF0ZWx5IHRoZSBz cGVjaWZpY2F0aW9uDQo+ICsgICAgICAgICAgICAgKiBkb2VzIG5vdCBzdGF0ZSB3aGF0IHRoYXQg bnVtYmVyIGlzIHNvIHRoZSBjaG9pY2Ugb2YgbnVtYmVyDQo+ICsgICAgICAgICAgICAgKiBoZXJl IGlzIGEgcHVyZSBndWVzcy4NCj4gKyAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgaWYg KCBtaXNzZWQgPiAzICkNCj4gKyAgICAgICAgICAgIHsNCj4gKyAgICAgICAgICAgICAgICBtaXNz ZWQgPSAwOw0KPiArICAgICAgICAgICAgICAgIG5leHQgPSBub3cgKyB2cy0+Y291bnQ7DQo+ICsg ICAgICAgICAgICB9DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICB2cy0+ZXhwaXJhdGlv biA9IG5leHQ7DQo+ICsgICAgICAgIHRpbWVvdXQgPSAoKG5leHQgLSBub3cpICogMTAwdWxsKSAv IChtaXNzZWQgKyAxKTsNCj4gKyAgICB9DQo+ICsgICAgZWxzZQ0KPiArICAgIHsNCj4gKyAgICAg ICAgdnMtPmV4cGlyYXRpb24gPSB2cy0+Y291bnQ7DQo+ICsgICAgICAgIGlmICggdnMtPmNvdW50 IC0gbm93IDw9IDAgKQ0KPiArICAgICAgICB7DQo+ICsgICAgICAgICAgICBzZXRfYml0KHN0aW1l cngsICZ2di0+c3RpbWVyX3BlbmRpbmcpOw0KPiArICAgICAgICAgICAgcmV0dXJuOw0KPiArICAg ICAgICB9DQo+ICsNCj4gKyAgICAgICAgdGltZW91dCA9ICh2cy0+ZXhwaXJhdGlvbiAtIG5vdykg KiAxMDB1bGw7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgdnMtPnN0YXJ0ZWQgPSB0cnVlOw0KPiAr ICAgIG1pZ3JhdGVfdGltZXIoJnZzLT50aW1lciwgc21wX3Byb2Nlc3Nvcl9pZCgpKTsNCj4gKyAg ICBzZXRfdGltZXIoJnZzLT50aW1lciwgdGltZW91dCArIE5PVygpKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIHZvaWQgcG9sbF9zdGltZXIoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBzdGlt ZXJ4KQ0KPiArew0KPiArICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZt LnZpcmlkaWFuOw0KPiArICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGlt ZXJbc3RpbWVyeF07DQo+ICsNCj4gKyAgICBpZiAoICF0ZXN0X2JpdChzdGltZXJ4LCAmdnYtPnN0 aW1lcl9wZW5kaW5nKSApDQo+ICsgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgIGlmICggIXZp cmlkaWFuX3N5bmljX2RlbGl2ZXJfdGltZXJfbXNnKHYsIHZzLT5jb25maWcuZmllbGRzLnNpbnR4 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aW1lcngs IHZzLT5leHBpcmF0aW9uLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpbWVfbm93KHYtPmRvbWFpbikpICkNCj4gKyAgICAgICAgcmV0dXJuOw0KPiArDQo+ ICsgICAgY2xlYXJfYml0KHN0aW1lcngsICZ2di0+c3RpbWVyX3BlbmRpbmcpOw0KPiArDQo+ICsg ICAgaWYgKCB2cy0+Y29uZmlnLmZpZWxkcy5wZXJpb2RpYyApDQo+ICsgICAgICAgIHN0YXJ0X3N0 aW1lcih2cyk7DQo+ICsgICAgZWxzZQ0KPiArICAgICAgICB2cy0+Y29uZmlnLmZpZWxkcy5lbmFi bGVkID0gMDsNCj4gK30NCj4gKw0KPiArdm9pZCB2aXJpZGlhbl90aW1lX3BvbGxfdGltZXJzKHN0 cnVjdCB2Y3B1ICp2KQ0KPiArew0KPiArICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYt PmFyY2guaHZtLnZpcmlkaWFuOw0KPiArICAgIHVuc2lnbmVkIGludCBpOw0KPiArDQo+ICsgICAg aWYgKCAhdnYtPnN0aW1lcl9wZW5kaW5nICkNCj4gKyAgICAgICByZXR1cm47DQo+ICsNCj4gKyAg ICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodnYtPnN0aW1lcik7IGkrKyApDQo+ICsgICAg ICAgIHBvbGxfc3RpbWVyKHYsIGkpOw0KPiArfQ0KPiArDQo+ICt2b2lkIHZpcmlkaWFuX3RpbWVf dmNwdV9mcmVlemUoc3RydWN0IHZjcHUgKnYpDQo+ICt7DQo+ICsgICAgc3RydWN0IHZpcmlkaWFu X3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47DQo+ICsgICAgdW5zaWduZWQgaW50IGk7 DQo+ICsNCj4gKyAgICBpZiAoICFpc192aXJpZGlhbl92Y3B1KHYpICkNCj4gKyAgICAgICAgcmV0 dXJuOw0KPiArDQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZ2LT5zdGltZXIp OyBpKysgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMg PSAmdnYtPnN0aW1lcltpXTsNCj4gKw0KPiArICAgICAgICBpZiAoIHZzLT5zdGFydGVkICkNCj4g KyAgICAgICAgICAgIHN0b3BfdGltZXIoJnZzLT50aW1lcik7DQo+ICsgICAgfQ0KPiArfQ0KPiAr DQo+ICt2b2lkIHZpcmlkaWFuX3RpbWVfdmNwdV90aGF3KHN0cnVjdCB2Y3B1ICp2KQ0KPiArew0K PiArICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOw0K PiArICAgIHVuc2lnbmVkIGludCBpOw0KPiArDQo+ICsgICAgaWYgKCAhaXNfdmlyaWRpYW5fdmNw dSh2KSApDQo+ICsgICAgICAgIHJldHVybjsNCj4gKw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwg QVJSQVlfU0laRSh2di0+c3RpbWVyKTsgaSsrICkNCj4gKyAgICB7DQo+ICsgICAgICAgIHN0cnVj dCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJbaV07DQo+ICsNCj4gKyAgICAgICAg aWYgKCB2cy0+Y29uZmlnLmZpZWxkcy5lbmFibGVkICkNCj4gKyAgICAgICAgICAgIHN0YXJ0X3N0 aW1lcih2cyk7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+ICB2b2lkIHZpcmlkaWFuX3RpbWVfZG9t YWluX2ZyZWV6ZShjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgew0KPiArICAgIHN0cnVjdCB2 Y3B1ICp2Ow0KPiArDQo+ICsgICAgaWYgKCAhaXNfdmlyaWRpYW5fZG9tYWluKGQpICkNCj4gKyAg ICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiArICAg ICAgICB2aXJpZGlhbl90aW1lX3ZjcHVfZnJlZXplKHYpOw0KPiArDQo+ICAgICAgdGltZV9yZWZf Y291bnRfZnJlZXplKGQpOw0KPiAgfQ0KPiANCj4gIHZvaWQgdmlyaWRpYW5fdGltZV9kb21haW5f dGhhdyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQ0KPiAgew0KPiArICAgIHN0cnVjdCB2Y3B1ICp2 Ow0KPiArDQo+ICsgICAgaWYgKCAhaXNfdmlyaWRpYW5fZG9tYWluKGQpICkNCj4gKyAgICAgICAg cmV0dXJuOw0KPiArDQo+ICAgICAgdGltZV9yZWZfY291bnRfdGhhdyhkKTsNCj4gKw0KPiArICAg IGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkNCj4gKyAgICAgICAgdmlyaWRpYW5fdGltZV92Y3B1X3Ro YXcodik7DQo+ICB9DQo+IA0KPiAgaW50IHZpcmlkaWFuX3RpbWVfd3Jtc3Ioc3RydWN0IHZjcHUg KnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQ0KPiAgew0KPiArICAgIHN0cnVjdCB2aXJp ZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOw0KPiAgICAgIHN0cnVjdCBkb21h aW4gKmQgPSB2LT5kb21haW47DQo+ICAgICAgc3RydWN0IHZpcmlkaWFuX2RvbWFpbiAqdmQgPSBk LT5hcmNoLmh2bS52aXJpZGlhbjsNCj4gDQo+IEBAIC0xNDksNiArMzk4LDYzIEBAIGludCB2aXJp ZGlhbl90aW1lX3dybXNyKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZh bCkNCj4gICAgICAgICAgfQ0KPiAgICAgICAgICBicmVhazsNCj4gDQo+ICsgICAgY2FzZSBIVl9Y NjRfTVNSX1RJTUVfUkVGX0NPVU5UOg0KPiArICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJ T047DQo+ICsNCj4gKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMF9DT05GSUc6DQo+ICsgICAg Y2FzZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09ORklHOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9T VElNRVIyX0NPTkZJRzoNCj4gKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSM19DT05GSUc6DQo+ ICsgICAgew0KPiArICAgICAgICB1bnNpZ25lZCBpbnQgc3RpbWVyeCA9DQo+ICsgICAgICAgICAg ICBhcnJheV9pbmRleF9ub3NwZWMoKGlkeCAtIEhWX1g2NF9NU1JfU1RJTUVSMF9DT05GSUcpIC8g MiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKHZ2LT5zdGlt ZXIpKTsNCj4gKyAgICAgICAgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMgPSAmdnYtPnN0aW1l cltzdGltZXJ4XTsNCj4gKw0KPiArICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNr KGQpICYgSFZNUFZfc3RpbWVyKSApDQo+ICsgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENF UFRJT047DQo+ICsNCj4gKyAgICAgICAgc3RvcF9zdGltZXIodnMpOw0KPiArDQo+ICsgICAgICAg IHZzLT5jb25maWcucmF3ID0gdmFsOw0KPiArDQo+ICsgICAgICAgIGlmICggIXZzLT5jb25maWcu ZmllbGRzLnNpbnR4ICkNCj4gKyAgICAgICAgICAgIHZzLT5jb25maWcuZmllbGRzLmVuYWJsZWQg PSAwOw0KPiArDQo+ICsgICAgICAgIGlmICggdnMtPmNvbmZpZy5maWVsZHMuZW5hYmxlZCApDQo+ ICsgICAgICAgICAgICBzdGFydF9zdGltZXIodnMpOw0KPiArDQo+ICsgICAgICAgIGJyZWFrOw0K PiArICAgIH0NCj4gKw0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIwX0NPVU5UOg0KPiAr ICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5UOg0KPiArICAgIGNhc2UgSFZfWDY0X01T Ul9TVElNRVIyX0NPVU5UOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIzX0NPVU5UOg0K PiArICAgIHsNCj4gKyAgICAgICAgdW5zaWduZWQgaW50IHN0aW1lcnggPQ0KPiArICAgICAgICAg ICAgYXJyYXlfaW5kZXhfbm9zcGVjKChpZHggLSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHKSAv IDIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRSh2di0+c3Rp bWVyKSk7DQo+ICsgICAgICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGlt ZXJbc3RpbWVyeF07DQo+ICsNCj4gKyAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFz ayhkKSAmIEhWTVBWX3N0aW1lcikgKQ0KPiArICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhD RVBUSU9OOw0KPiArDQo+ICsgICAgICAgIHN0b3Bfc3RpbWVyKHZzKTsNCj4gKw0KPiArICAgICAg ICB2cy0+Y291bnQgPSB2YWw7DQo+ICsNCj4gKyAgICAgICAgaWYgKCAhdnMtPmNvdW50ICApDQo+ ICsgICAgICAgICAgICB2cy0+Y29uZmlnLmZpZWxkcy5lbmFibGVkID0gMDsNCj4gKyAgICAgICAg ZWxzZSBpZiAoIHZzLT5jb25maWcuZmllbGRzLmF1dG9fZW5hYmxlICkNCj4gKyAgICAgICAgICAg IHZzLT5jb25maWcuZmllbGRzLmVuYWJsZWQgPSAxOw0KPiArDQo+ICsgICAgICAgIGlmICggdnMt PmNvbmZpZy5maWVsZHMuZW5hYmxlZCApDQo+ICsgICAgICAgICAgICBzdGFydF9zdGltZXIodnMp Ow0KPiArDQo+ICsgICAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKw0KPiAgICAgIGRlZmF1bHQ6 DQo+ICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiJXM6IHVuaW1wbGVtZW50ZWQgTVNS ICUjeCAoJTAxNiJQUkl4NjQiKVxuIiwNCj4gICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGlk eCwgdmFsKTsNCj4gQEAgLTE2MCw2ICs0NjYsNyBAQCBpbnQgdmlyaWRpYW5fdGltZV93cm1zcihz dHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpDQo+IA0KPiAgaW50IHZp cmlkaWFuX3RpbWVfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWlu dDY0X3QgKnZhbCkNCj4gIHsNCj4gKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5h cmNoLmh2bS52aXJpZGlhbjsNCj4gICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9t YWluOw0KPiAgICAgIHN0cnVjdCB2aXJpZGlhbl9kb21haW4gKnZkID0gZC0+YXJjaC5odm0udmly aWRpYW47DQo+IA0KPiBAQCAtMjAxLDYgKzUwOCwzNyBAQCBpbnQgdmlyaWRpYW5fdGltZV9yZG1z cihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFsKQ0KPiAg ICAgICAgICBicmVhazsNCj4gICAgICB9DQo+IA0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9TVElN RVIwX0NPTkZJRzoNCj4gKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMV9DT05GSUc6DQo+ICsg ICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjJfQ09ORklHOg0KPiArICAgIGNhc2UgSFZfWDY0X01T Ul9TVElNRVIzX0NPTkZJRzoNCj4gKyAgICB7DQo+ICsgICAgICAgIHVuc2lnbmVkIGludCBzdGlt ZXJ4ID0NCj4gKyAgICAgICAgICAgIGFycmF5X2luZGV4X25vc3BlYygoaWR4IC0gSFZfWDY0X01T Ul9TVElNRVIwX0NPTkZJRykgLyAyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFSUkFZX1NJWkUodnYtPnN0aW1lcikpOzsNCj4gKw0KPiArICAgICAgICBpZiAoICEodmlyaWRp YW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3RpbWVyKSApDQo+ICsgICAgICAgICAgICByZXR1 cm4gWDg2RU1VTF9FWENFUFRJT047DQo+ICsNCj4gKyAgICAgICAgKnZhbCA9IHZ2LT5zdGltZXJb c3RpbWVyeF0uY29uZmlnLnJhdzsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICAg IGNhc2UgSFZfWDY0X01TUl9TVElNRVIwX0NPVU5UOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9T VElNRVIxX0NPVU5UOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIyX0NPVU5UOg0KPiAr ICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIzX0NPVU5UOg0KPiArICAgIHsNCj4gKyAgICAgICAg dW5zaWduZWQgaW50IHN0aW1lcnggPQ0KPiArICAgICAgICAgICAgYXJyYXlfaW5kZXhfbm9zcGVj KChpZHggLSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHKSAvIDIsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRSh2di0+c3RpbWVyKSk7Ow0KPiArDQo+ICsgICAg ICAgIGlmICggISh2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zdGltZXIpICkNCj4g KyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsNCj4gKw0KPiArICAgICAgICAq dmFsID0gdnYtPnN0aW1lcltzdGltZXJ4XS5jb3VudDsNCj4gKyAgICAgICAgYnJlYWs7DQo+ICsg ICAgfQ0KPiArDQo+ICAgICAgZGVmYXVsdDoNCj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lO Rk8sICIlczogdW5pbXBsZW1lbnRlZCBNU1IgJSN4XG4iLCBfX2Z1bmNfXywgaWR4KTsNCj4gICAg ICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOw0KPiBAQCAtMjA5LDggKzU0NywxOSBAQCBp bnQgdmlyaWRpYW5fdGltZV9yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4 LCB1aW50NjRfdCAqdmFsKQ0KPiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICB9DQo+IA0K PiAtaW50IHZpcmlkaWFuX3RpbWVfdmNwdV9pbml0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQ0KPiAr aW50IHZpcmlkaWFuX3RpbWVfdmNwdV9pbml0KHN0cnVjdCB2Y3B1ICp2KQ0KPiAgew0KPiArICAg IHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOw0KPiArICAg IHVuc2lnbmVkIGludCBpOw0KPiArDQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHZ2LT5zdGltZXIpOyBpKysgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgc3RydWN0IHZpcmlkaWFu X3N0aW1lciAqdnMgPSAmdnYtPnN0aW1lcltpXTsNCj4gKw0KPiArICAgICAgICB2cy0+diA9IHY7 DQo+ICsgICAgICAgIGluaXRfdGltZXIoJnZzLT50aW1lciwgc3RpbWVyX2V4cGlyZSwgdnMsIHYt PnByb2Nlc3Nvcik7DQo+ICsgICAgfQ0KPiArDQo+ICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+IA0K PiBAQCAtMjIxLDYgKzU3MCwxNiBAQCBpbnQgdmlyaWRpYW5fdGltZV9kb21haW5faW5pdChjb25z dCBzdHJ1Y3QgZG9tYWluICpkKQ0KPiANCj4gIHZvaWQgdmlyaWRpYW5fdGltZV92Y3B1X2RlaW5p dChjb25zdCBzdHJ1Y3QgdmNwdSAqdikNCj4gIHsNCj4gKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNw dSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsNCj4gKyAgICB1bnNpZ25lZCBpbnQgaTsNCj4g Kw0KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2di0+c3RpbWVyKTsgaSsrICkN Cj4gKyAgICB7DQo+ICsgICAgICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5z dGltZXJbaV07DQo+ICsNCj4gKyAgICAgICAga2lsbF90aW1lcigmdnMtPnRpbWVyKTsNCj4gKyAg ICAgICAgdnMtPnYgPSBOVUxMOw0KPiArICAgIH0NCj4gIH0NCj4gDQo+ICB2b2lkIHZpcmlkaWFu X3RpbWVfZG9tYWluX2RlaW5pdChjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQ0KPiBAQCAtMjMxLDEx ICs1OTAsMzYgQEAgdm9pZCB2aXJpZGlhbl90aW1lX2RvbWFpbl9kZWluaXQoY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCkNCj4gIHZvaWQgdmlyaWRpYW5fdGltZV9zYXZlX3ZjcHVfY3R4dCgNCj4gICAg ICBjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV92aXJpZGlhbl92Y3B1X2NvbnRleHQg KmN0eHQpDQo+ICB7DQo+ICsgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5o dm0udmlyaWRpYW47DQo+ICsgICAgdW5zaWduZWQgaW50IGk7DQo+ICsNCj4gKyAgICBCVUlMRF9C VUdfT04oQVJSQVlfU0laRSh2di0+c3RpbWVyKSAhPQ0KPiArICAgICAgICAgICAgICAgICBBUlJB WV9TSVpFKGN0eHQtPnN0aW1lcl9jb25maWdfbXNyKSk7DQo+ICsgICAgQlVJTERfQlVHX09OKEFS UkFZX1NJWkUodnYtPnN0aW1lcikgIT0NCj4gKyAgICAgICAgICAgICAgICAgQVJSQVlfU0laRShj dHh0LT5zdGltZXJfY291bnRfbXNyKSk7DQo+ICsNCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFS UkFZX1NJWkUodnYtPnN0aW1lcik7IGkrKyApDQo+ICsgICAgew0KPiArICAgICAgICBzdHJ1Y3Qg dmlyaWRpYW5fc3RpbWVyICp2cyA9ICZ2di0+c3RpbWVyW2ldOw0KPiArDQo+ICsgICAgICAgIGN0 eHQtPnN0aW1lcl9jb25maWdfbXNyW2ldID0gdnMtPmNvbmZpZy5yYXc7DQo+ICsgICAgICAgIGN0 eHQtPnN0aW1lcl9jb3VudF9tc3JbaV0gPSB2cy0+Y291bnQ7DQo+ICsgICAgfQ0KPiAgfQ0KPiAN Cj4gIHZvaWQgdmlyaWRpYW5fdGltZV9sb2FkX3ZjcHVfY3R4dCgNCj4gICAgICBzdHJ1Y3QgdmNw dSAqdiwgY29uc3Qgc3RydWN0IGh2bV92aXJpZGlhbl92Y3B1X2NvbnRleHQgKmN0eHQpDQo+ICB7 DQo+ICsgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47 DQo+ICsgICAgdW5zaWduZWQgaW50IGk7DQo+ICsNCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFS UkFZX1NJWkUodnYtPnN0aW1lcik7IGkrKyApDQo+ICsgICAgew0KPiArICAgICAgICBzdHJ1Y3Qg dmlyaWRpYW5fc3RpbWVyICp2cyA9ICZ2di0+c3RpbWVyW2ldOw0KPiArDQo+ICsgICAgICAgIHZz LT5jb25maWcucmF3ID0gY3R4dC0+c3RpbWVyX2NvbmZpZ19tc3JbaV07DQo+ICsgICAgICAgIHZz LT5jb3VudCA9IGN0eHQtPnN0aW1lcl9jb3VudF9tc3JbaV07DQo+ICsgICAgfQ0KPiAgfQ0KPiAN Cj4gIHZvaWQgdmlyaWRpYW5fdGltZV9zYXZlX2RvbWFpbl9jdHh0KA0KPiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jIGIveGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi92aXJpZGlhbi5jDQo+IGluZGV4IDY3ZDAxMjE5MjQuLmVjNzljZDlmMTUgMTAwNjQ0 DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYw0KPiArKysgYi94 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMNCj4gQEAgLTE4MSw2ICsxODEsOCBA QCB2b2lkIGNwdWlkX3ZpcmlkaWFuX2xlYXZlcyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMy X3QgbGVhZiwNCj4gICAgICAgICAgICAgIG1hc2suQWNjZXNzUGFydGl0aW9uUmVmZXJlbmNlVHNj ID0gMTsNCj4gICAgICAgICAgaWYgKCB2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9z eW5pYyApDQo+ICAgICAgICAgICAgICBtYXNrLkFjY2Vzc1N5bmljUmVncyA9IDE7DQo+ICsgICAg ICAgIGlmICggdmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3RpbWVyICkNCj4gKyAg ICAgICAgICAgIG1hc2suQWNjZXNzU3ludGhldGljVGltZXJSZWdzID0gMTsNCj4gDQo+ICAgICAg ICAgIHUubWFzayA9IG1hc2s7DQo+IA0KPiBAQCAtMzIyLDYgKzMyNCwxNSBAQCBpbnQgZ3Vlc3Rf d3Jtc3JfdmlyaWRpYW4oc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFs KQ0KPiAgICAgIGNhc2UgSFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZOg0KPiAgICAgIGNhc2UgSFZf WDY0X01TUl9BUElDX0ZSRVFVRU5DWToNCj4gICAgICBjYXNlIEhWX1g2NF9NU1JfUkVGRVJFTkNF X1RTQzoNCj4gKyAgICBjYXNlIEhWX1g2NF9NU1JfVElNRV9SRUZfQ09VTlQ6DQo+ICsgICAgY2Fz ZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9TVElN RVIwX0NPVU5UOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPTkZJRzoNCj4gKyAg ICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMV9DT1VOVDoNCj4gKyAgICBjYXNlIEhWX1g2NF9NU1Jf U1RJTUVSMl9DT05GSUc6DQo+ICsgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjJfQ09VTlQ6DQo+ ICsgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjNfQ09ORklHOg0KPiArICAgIGNhc2UgSFZfWDY0 X01TUl9TVElNRVIzX0NPVU5UOg0KPiAgICAgICAgICByZXR1cm4gdmlyaWRpYW5fdGltZV93cm1z cih2LCBpZHgsIHZhbCk7DQo+IA0KPiAgICAgIGNhc2UgSFZfWDY0X01TUl9DUkFTSF9QMDoNCj4g QEAgLTQwMyw2ICs0MTQsMTQgQEAgaW50IGd1ZXN0X3JkbXNyX3ZpcmlkaWFuKGNvbnN0IHN0cnVj dCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpDQo+ICAgICAgY2FzZSBIVl9Y NjRfTVNSX0FQSUNfRlJFUVVFTkNZOg0KPiAgICAgIGNhc2UgSFZfWDY0X01TUl9SRUZFUkVOQ0Vf VFNDOg0KPiAgICAgIGNhc2UgSFZfWDY0X01TUl9USU1FX1JFRl9DT1VOVDoNCj4gKyAgICBjYXNl IEhWX1g2NF9NU1JfU1RJTUVSMF9DT05GSUc6DQo+ICsgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1F UjBfQ09VTlQ6DQo+ICsgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09ORklHOg0KPiArICAg IGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5UOg0KPiArICAgIGNhc2UgSFZfWDY0X01TUl9T VElNRVIyX0NPTkZJRzoNCj4gKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMl9DT1VOVDoNCj4g KyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSM19DT05GSUc6DQo+ICsgICAgY2FzZSBIVl9YNjRf TVNSX1NUSU1FUjNfQ09VTlQ6DQo+ICAgICAgICAgIHJldHVybiB2aXJpZGlhbl90aW1lX3JkbXNy KHYsIGlkeCwgdmFsKTsNCj4gDQo+ICAgICAgY2FzZSBIVl9YNjRfTVNSX0NSQVNIX1AwOg0KPiBk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgNCj4gaW5kZXggNzQ0NmJlNDkyYi4uYzljYWIzMmUw NiAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaA0KPiAr KysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oDQo+IEBAIC00MCw2ICs0MCwz MyBAQCB1bmlvbiB2aXJpZGlhbl9zaW50X21zcg0KPiAgICAgIH07DQo+ICB9Ow0KPiANCj4gK3Vu aW9uIHZpcmlkaWFuX3N0aW1lcl9jb25maWdfbXNyDQo+ICt7DQo+ICsgICAgdWludDY0X3QgcmF3 Ow0KPiArICAgIHN0cnVjdA0KPiArICAgIHsNCj4gKyAgICAgICAgdWludDY0X3QgZW5hYmxlZDox Ow0KPiArICAgICAgICB1aW50NjRfdCBwZXJpb2RpYzoxOw0KPiArICAgICAgICB1aW50NjRfdCBs YXp5OjE7DQo+ICsgICAgICAgIHVpbnQ2NF90IGF1dG9fZW5hYmxlOjE7DQo+ICsgICAgICAgIHVp bnQ2NF90IHZlY3Rvcjo4Ow0KPiArICAgICAgICB1aW50NjRfdCBkaXJlY3RfbW9kZToxOw0KPiAr ICAgICAgICB1aW50NjRfdCByZXNlcnZlZF96ZXJvMTozOw0KPiArICAgICAgICB1aW50NjRfdCBz aW50eDo0Ow0KPiArICAgICAgICB1aW50NjRfdCByZXNlcnZlZF96ZXJvMjo0NDsNCj4gKyAgICB9 IGZpZWxkczsNCg0KTG9va3MgbGlrZSBJIG1pc3NlZCB0aGlzLiBJJ2xsIHNlbmQgYSB2NiB3aXRo IGl0IHJlbW92ZWQuDQoNCiAgUGF1bA0KDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdmlyaWRpYW5f c3RpbWVyIHsNCj4gKyAgICBzdHJ1Y3QgdmNwdSAqdjsNCj4gKyAgICBzdHJ1Y3QgdGltZXIgdGlt ZXI7DQo+ICsgICAgdW5pb24gdmlyaWRpYW5fc3RpbWVyX2NvbmZpZ19tc3IgY29uZmlnOw0KPiAr ICAgIHVpbnQ2NF90IGNvdW50Ow0KPiArICAgIHVpbnQ2NF90IGV4cGlyYXRpb247DQo+ICsgICAg c190aW1lX3QgdGltZW91dDsNCj4gKyAgICBib29sIHN0YXJ0ZWQ7DQo+ICt9Ow0KPiArDQo+ICBz dHJ1Y3QgdmlyaWRpYW5fdmNwdQ0KPiAgew0KPiAgICAgIHN0cnVjdCB2aXJpZGlhbl9wYWdlIHZw X2Fzc2lzdDsNCj4gQEAgLTUwLDYgKzc3LDkgQEAgc3RydWN0IHZpcmlkaWFuX3ZjcHUNCj4gICAg ICB1bmlvbiB2aXJpZGlhbl9zaW50X21zciBzaW50WzE2XTsNCj4gICAgICB1aW50OF90IHZlY3Rv cl90b19zaW50eFsyNTZdOw0KPiAgICAgIHVuc2lnbmVkIGxvbmcgbXNnX3BlbmRpbmc7DQo+ICsg ICAgc3RydWN0IHZpcmlkaWFuX3N0aW1lciBzdGltZXJbNF07DQo+ICsgICAgdW5zaWduZWQgbG9u ZyBzdGltZXJfZW5hYmxlZDsNCj4gKyAgICB1bnNpZ25lZCBsb25nIHN0aW1lcl9wZW5kaW5nOw0K PiAgICAgIHVpbnQ2NF90IGNyYXNoX3BhcmFtWzVdOw0KPiAgfTsNCj4gDQo+IEBAIC0xMTIsNyAr MTQyLDcgQEAgdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9jbGVhcihjb25zdCBzdHJ1Y3QgdmNw dSAqdik7DQo+IA0KPiAgYm9vbCB2aXJpZGlhbl9zeW5pY19pc19hdXRvX2VvaV9zaW50KGNvbnN0 IHN0cnVjdCB2Y3B1ICp2LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCB2ZWN0b3IpOw0KPiAtdm9pZCB2aXJpZGlhbl9zeW5pY19wb2xsX21lc3Nh Z2VzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsNCj4gK3ZvaWQgdmlyaWRpYW5fc3luaWNfcG9sbF9t ZXNzYWdlcyhzdHJ1Y3QgdmNwdSAqdik7DQo+ICB2b2lkIHZpcmlkaWFuX3N5bmljX2Fja19zaW50 KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgdmVjdG9yKTsNCj4gDQo+ICAjZW5k aWYgLyogX19BU01fWDg2X0hWTV9WSVJJRElBTl9IX18gKi8NCj4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oIGIveGVuL2luY2x1ZGUvcHVibGljL2Fy Y2gteDg2L2h2bS9zYXZlLmgNCj4gaW5kZXggZWMzZTRkZjEyYy4uODM0NGFhNDcxZiAxMDA2NDQN Cj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgNCj4gKysrIGIv eGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgNCj4gQEAgLTYwNCw2ICs2MDQs OCBAQCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCB7DQo+ICAgICAgdWludDhfdCAg X3BhZFs3XTsNCj4gICAgICB1aW50NjRfdCBzaW1wX21zcjsNCj4gICAgICB1aW50NjRfdCBzaW50 X21zclsxNl07DQo+ICsgICAgdWludDY0X3Qgc3RpbWVyX2NvbmZpZ19tc3JbNF07DQo+ICsgICAg dWludDY0X3Qgc3RpbWVyX2NvdW50X21zcls0XTsNCj4gIH07DQo+IA0KPiAgREVDTEFSRV9IVk1f U0FWRV9UWVBFKFZJUklESUFOX1ZDUFUsIDE3LCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29u dGV4dCk7DQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oIGIv eGVuL2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaA0KPiBpbmRleCBlN2UzYzdjODkyLi5lMDZi MDk0MmQwIDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oDQo+ ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vcGFyYW1zLmgNCj4gQEAgLTE1MCw2ICsxNTAs MTAgQEANCj4gICNkZWZpbmUgX0hWTVBWX3N5bmljIDcNCj4gICNkZWZpbmUgSFZNUFZfc3luaWMg KDEgPDwgX0hWTVBWX3N5bmljKQ0KPiANCj4gKy8qIEVuYWJsZSBTVElNRVIgTVNScyAqLw0KPiAr I2RlZmluZSBfSFZNUFZfc3RpbWVyIDgNCj4gKyNkZWZpbmUgSFZNUFZfc3RpbWVyICgxIDw8IF9I Vk1QVl9zdGltZXIpDQo+ICsNCj4gICNkZWZpbmUgSFZNUFZfZmVhdHVyZV9tYXNrIFwNCj4gICAg ICAgICAgKEhWTVBWX2Jhc2VfZnJlcSB8IFwNCj4gICAgICAgICAgIEhWTVBWX25vX2ZyZXEgfCBc DQo+IEBAIC0xNTgsNyArMTYyLDggQEANCj4gICAgICAgICAgIEhWTVBWX2hjYWxsX3JlbW90ZV90 bGJfZmx1c2ggfCBcDQo+ICAgICAgICAgICBIVk1QVl9hcGljX2Fzc2lzdCB8IFwNCj4gICAgICAg ICAgIEhWTVBWX2NyYXNoX2N0bCB8IFwNCj4gLSAgICAgICAgIEhWTVBWX3N5bmljKQ0KPiArICAg ICAgICAgSFZNUFZfc3luaWMgfCBcDQo+ICsgICAgICAgICBIVk1QVl9zdGltZXIpDQo+IA0KPiAg I2VuZGlmDQo+IA0KPiAtLQ0KPiAyLjIwLjENCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==