From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-co1nam03on0134.outbound.protection.outlook.com ([104.47.40.134]:45362 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750876AbeEKS0c (ORCPT ); Fri, 11 May 2018 14:26:32 -0400 From: Trent Piepho To: "a.zummo@towertech.it" , "pure.logic@nexus-software.ie" CC: "linux-rtc@vger.kernel.org" , "alexandre.belloni@free-electrons.com" , "shawnguo@kernel.org" , "kernel@pengutronix.de" , "fabio.estevam@nxp.com" Subject: Re: [PATCH] rtc-snvs: Add timeouts to avoid kernel lockups Date: Fri, 11 May 2018 18:26:30 +0000 Message-ID: <1526063189.30073.16.camel@impinj.com> References: <20180316181202.14896-1-tpiepho@impinj.com> <1525897165.31312.111.camel@impinj.com> <4da943d9-a0e3-7b83-c29a-e49bf842ea5d@nexus-software.ie> In-Reply-To: <4da943d9-a0e3-7b83-c29a-e49bf842ea5d@nexus-software.ie> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-rtc-owner@vger.kernel.org List-ID: T24gV2VkLCAyMDE4LTA1LTA5IGF0IDIzOjE3ICswMTAwLCBCcnlhbiBPJ0Rvbm9naHVlIHdyb3Rl Og0KPiBPbiAwOS8wNS8xOCAyMToxOSwgVHJlbnQgUGllcGhvIHdyb3RlOg0KPiA+IA0KPiA+ID4g SXQncyBhbHNvIG5lY2Vzc2FyeSB0byB3YWl0IGZvciB0aHJlZSBSVEMgY2xvY2sgdGlja3MgZm9y IGNlcnRhaW4NCj4gPiA+IG9wZXJhdGlvbnMgdG8gdGFrZSBlZmZlY3QgYW5kIHRoZSBkcml2ZXIg bWlnaHQgd2FpdCBmb3JldmVyIGZvciB0aGlzIHRvDQo+ID4gPiBoYXBwZW4uDQo+ID4gPiANCj4g PiA+IFRvIGF2b2lkIGtlcm5lbCBoYW5ncywgcHV0IGluIHRpbWVvdXRzLg0KPiA+ID4gDQo+ID4g PiBUaGVzZSBoYW5ncyB3aWxsIGhhcHBlbiB3aGVuIHJ1bm5pbmcgdW5kZXIgcWVtdSwgd2hpY2gg ZG9lc24ndCBlbXVsYXRlIHRoZQ0KPiA+ID4gU05WUyBSVEMuICANCj4gDQo+IFRoZSB0aXAgb2Yg dHJlZSBzaG91bGQgZGV0ZWN0IHRoaXMgbm93IHRob3VnaC4gU2luY2UgUUVNVSBkb2Vzbid0IA0K PiBlbXVsYXRlIHRoZSBSVEMsIGVuYWJsaW5nIGl0IHdpbGwgZmFpbCBhbmQgdGhlIGRyaXZlciB3 aWxsIGJ1ZyBvdXQuDQoNClllcywgdGhpcyBpcyB3aGF0IGhhcHBlbnMuICBXaXRoIGp1c3QgbXkg cGF0Y2gsIHRoZSBkcml2ZXIgd291bGQgbG9hZA0KYnV0IGNsb2NrIG9wZXJhdGlvbnMgd291bGQg cmV0dXJuIGVycm9ycyBhbmQgdGhlcmUgd291bGQgYmUga2VybmVsIGxvZw0KbWVzc2FnZXMgYWJv dXQgdGhlIHNydGMuDQoNCkluIHNvbWUgd2F5cywgSSBsaWtlZCB0aGF0IGJlaGF2aW9yIGJldHRl ci4gIEl0IGFsbG93ZWQgY29kZSB0aGF0IHVzZWQNCnRoZSBydGMgdG8gcnVuIGluIHFlbXUgYW5k IGFsbG93ZWQgb25lIHRvIHRlc3QgcnRjIGZhaWx1cmUgcGF0aHMuICBPbmUNCmNvdWxkIHRlc3Qg dGhhdCB0aGUgZGV2aWNlIHdvdWxkIGdldCB0aW1lIHZpYSBOVFAsIHRyaWVzIHRvIHNldCB0aGUN ClJUQywgZmFpbCwgYW5kIGRldGVjdCB0aGUgZmFpbHVyZS4NCg0KQnV0IHRoZSByZWFsIGFuc3dl ciBpcyB0byBlbXVsYXRlIHRoZSBzbnZzLXNydGMgaW4gcWVtdSwgd2hpY2ggaXMNCnNvbWV0aGlu ZyB3ZSd2ZSBiZWVuIHdvcmtpbmcgb24sIGFsb25nIHdpdGggdGhlIG90aGVyIHVuZW11bGF0ZWQg c252cw0KaGFyZHdhcmUgd2UgdXNlLg0KDQo+ID4gPiBJdCBjb3VsZCBhbHNvIGhhcHBlbiBpZiB0 aGUgUlRDIGJsb2NrIHdoZXJlIHNvbWVob3cgcGxhY2VkIGludG8NCj4gPiA+IHJlc2V0IG9yIHRo ZSBzbG93IHNwZWVkIGNsb2NrIHRoYXQgZHJpdmVzIHRoZSBSVEMgY291bnRlciAoYnV0IG5vdCB0 aGUNCj4gPiA+IENQVSkgd2VyZSB0byBzdG9wLg0KPiANCj4gQ2FuIHRoYXQgaGFwcGVuID8NCg0K WWVzLiAgU2VlIFNSVENfSU5WX0VOIGluIExQQ1I6DQoNCiAgICBJZiB0aGlzIGJpdCBpcyAxLCBp biB0aGUgY2FzZSBvZiBhIHNlY3VyaXR5IHZpb2xhdGlvbiB0aGUgU1JUQyBzdG9wcw0KICAgIGNv dW50aW5nDQoNCkFuZCBpbmRlZWQgYWZ0ZXIgc2V0dGluZyB1cCBhIHRhbXBlciBzd2l0Y2ggYW5k IHRyaWdnZXJpbmcgaXQsIHRoZSBTUlRDDQp3aWxsIHN0b3AgY291bnRpbmcgYW5kIHRoZSBrZXJu ZWwgc3J0YyBkcml2ZXIgd2lsbCBnbyBvZmYgaW50byBhbg0KaW5maW5pdGUgbG9vcC4NCg0KPiA+ ID4gVGhlIHN5bXB0b21zIGFyZSBhIHdvcmsgcXVldWUgaGFuZyBvbiBydGNfdGltZXJfZG9fd29y aygpLCB3aGljaA0KPiA+ID4gZXZlbnR1YWxseSBibG9ja3MgYSBzeXN0ZW1kIGZzbm90aWZ5IG9w ZXJhdGlvbiB0aGF0IHRyaWdnZXJzIGEgd29yayBxdWV1ZQ0KPiA+ID4gZmx1c2gsIGNhdXNpbmcg c3lzdGVtZCB0byBoYW5nIGFuZCB0aHVzIGNhdXNpbmcgYWxsIHNlcnZpY2VzIHRoYXQgc2hvdWxk DQo+ID4gPiBiZSBzdGFydGVkIGJ5IHN5c3RlbWQsIGxpa2UgYSBjb25zb2xlIGdldHR5LCB0byBm YWlsIHRvIHN0YXJ0IG9yIHN0b3AuDQo+IA0KPiBNbW0uIFdoaWxlIEkgYWdyZWUgd2l0aCB5b3Ug dGhhdCBsb29waW5nIGZvcmV2ZXIgaXMgYSBiYWQgdGhpbmcsIEkgDQo+IHdvbmRlciBkbyB3ZSBo YXZlIGFuIGFjdHVhbCBjYXNlIGVpdGhlciBvbiBoYXJkd2FyZSBvciBpbiBRRU1VIHdlIGNhbiAN Cj4gc2hvdyB0aGlzIGhhcHBlbmluZyA/DQoNCkkgdGhpbmsgaXQncyBzYWZlciB0byBqdXN0IG5l dmVyIGNvZGUgYW4gaW5maW5pdGUgbG9vcCBvbiBoYXJkd2FyZQ0Kc3RhdHVzLg0KDQpJdCBzaG91 bGRuJ3QgYmUgbmVjZXNzYXJ5IHRvIGZvcmNlIHNvbWVvbmUgb24gYSBuZXcgU29DIHRvIGZpZ3Vy ZSBvdXQNCndoZXJlIHRoZWlyIGhhcmQgdG8gcmVwcm9kdWNlIGtlcm5lbCBoYW5nIGlzIGZyb20g YmVmb3JlIG1ha2luZyB3aGF0IGlzDQplYXN5IGZpeCwgdG8gY29kaW5nIHVzaW5nIGEgcGF0dGVy biBrbm93biB0byBjYXVzZSBwcm9ibGVtcyBhbmQgYWxyZWFkeQ0KaWRlbnRpZmllZC4NCg0KPiBJ ZiBub3QgdGhlbiB0aGUgYWRkaXRpb25hbCBjb3VudGVyIHJlcHJlc2VudHMgZXh0cmEgY3ljbGVz IHdlIGRvbid0IG5lZWQgDQo+IHRvIHNwZW5kLg0KDQpOb3QgbmVjZXNzYXJpbHkuICBJZiB3ZSBh cmUgd2FpdGluZyBmb3IgYSByZWdpc3RlciB0byBjaGFuZ2UsIHRoZW4gaXQNCndpbGwgdGFrZSBh cyBsb25nIGFzIGl0IHRha2VzIHRvIGNoYW5nZS4gIEFkZGluZyBhbiBhZGRpdGlvbmFsDQppbnN0 cnVjdGlvbiB0byB0aGUgd2FpdCBsb29wIGRvZXNuJ3QgbWFrZSB0aGUgaGFyZHdhcmUgdGFrZSBs b25nZXIuDQoNCj4gDQo+ID4gPiBBbHNvIG9wdGltaXplIHRoZSB3YWl0IGNvZGUgdG8gd2FpdCBs ZXNzLiAgSXQgb25seSBuZWVkcyB0byB3YWl0IGZvciB0aGUNCj4gPiA+IGNsb2NrIHRvIGFkdmFu Y2UgdGhyZWUgdGlja3MsIG5vdCB0byBzZWUgaXQgY2hhbmdlIHRocmVlIHRpbWVzLg0KPiANCj4g UmlnaHQgc28gSSB0aGluayB0aGlzIHNob3VsZCBiZSBzcGxpdCBvdXQgaW50byBpdHMgb3duIHBh dGNoIGFuZCANCj4gcHJvZ3Jlc3NlZCB3aXRoIHNpbmNlIHlvdSdkIGVuZCB1cCB3aXRoIGEgbmlj ZSBiaXQgb2Ygb3B0aW1pc2F0aW9uIHRoZW4uDQo+IA0KPiBPbiB0aGUgc3Vic3RhbmNlIG9mIHRp bWluZyBvdXQgdGhlIHJlYWRzIFRCSCBJJ20gbm90IGNvbnZpbmNlZCwgb24gdGhlIA0KPiAnYWxz bycgcGFydCBvZiB5b3VyIHBhdGNoIC0gSSB0aGluayB0aGF0IHNob3VsZCBiZSBtYWRlIGludG8g YSBzZXBhcmF0ZSANCj4gcGF0Y2ggYW5kIHN1Ym1pdHRlZCAtIHNpbmNlIGl0IGxvb2tzIGxpa2Ug YSBsb2dpY2FsIGFuZCBkZXNpcmFibGUgY2hhbmdlIA0KPiB0byBtZS4NCj4gDQo+IEJUVyBJIHRl c3QgeW91ciBwYXRjaCBhbmQgaXQgZGlkbid0IGJyZWFrIGFueXRoaW5nLCBub3QgY29udmluY2Vk IHdlIA0KPiBuZWVkIHRoYXQgdGltZW91dCB0aG91Z2guDQo+IA0KPiA+ID4gDQo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AaW1waW5qLmNvbT4NCj4gPiA+IENjOiBB bGVzc2FuZHJvIFp1bW1vIDxhLnp1bW1vQHRvd2VydGVjaC5pdD4NCj4gPiA+IENjOiBBbGV4YW5k cmUgQmVsbG9uaSA8YWxleGFuZHJlLmJlbGxvbmlAZnJlZS1lbGVjdHJvbnMuY29tPg0KPiA+ID4g Q2M6IGxpbnV4LXJ0Y0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+IENjOiBTaGF3biBHdW8gPHNoYXdu Z3VvQGtlcm5lbC5vcmc+DQo+ID4gPiBDYzogU2FzY2hhIEhhdWVyIDxrZXJuZWxAcGVuZ3V0cm9u aXguZGU+DQo+ID4gPiBDYzogRmFiaW8gRXN0ZXZhbSA8ZmFiaW8uZXN0ZXZhbUBueHAuY29tPg0K PiA+ID4gDQo+ID4gPiAtLS0NCj4gPiA+ICAgZHJpdmVycy9ydGMvcnRjLXNudnMuYyB8IDEwNSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiAg IDEgZmlsZSBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkNCj4gPiA+ IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1zbnZzLmMgYi9kcml2ZXJzL3J0 Yy9ydGMtc252cy5jDQo+ID4gPiBpbmRleCBkOGVmOWUwNTJjNGYuLjBlNzU2NGI5ZDZmMiAxMDA2 NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1zbnZzLmMNCj4gPiA+ICsrKyBiL2RyaXZl cnMvcnRjL3J0Yy1zbnZzLmMNCj4gPiA+IEBAIC00Nyw0OSArNDcsODMgQEAgc3RydWN0IHNudnNf cnRjX2RhdGEgew0KPiA+ID4gICAJc3RydWN0IGNsayAqY2xrOw0KPiA+ID4gICB9Ow0KPiA+ID4g ICANCj4gPiA+ICsvKiBSZWFkIDY0IGJpdCB0aW1lciByZWdpc3Rlciwgd2hpY2ggY291bGQgYmUg aW4gaW5jb25zaXN0ZW50IHN0YXRlICovDQo+ID4gPiArc3RhdGljIHU2NCBydGNfcmVhZF9scHNy dChzdHJ1Y3Qgc252c19ydGNfZGF0YSAqZGF0YSkNCj4gPiA+ICt7DQo+ID4gPiArCXUzMiBtc2Is IGxzYjsNCj4gPiA+ICsNCj4gPiA+ICsJcmVnbWFwX3JlYWQoZGF0YS0+cmVnbWFwLCBkYXRhLT5v ZmZzZXQgKyBTTlZTX0xQU1JUQ01SLCAmbXNiKTsNCj4gPiA+ICsJcmVnbWFwX3JlYWQoZGF0YS0+ cmVnbWFwLCBkYXRhLT5vZmZzZXQgKyBTTlZTX0xQU1JUQ0xSLCAmbHNiKTsNCj4gPiA+ICsJcmV0 dXJuICh1NjQpbXNiIDw8IDMyIHwgbHNiOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICsvKiBS ZWFkIHRoZSBzZWN1cmUgcmVhbCB0aW1lIGNvdW50ZXIsIHRha2luZyBjYXJlIHRvIGRlYWwgd2l0 aCB0aGUgY2FzZXMgb2YgdGhlDQo+ID4gPiArICogY291bnRlciB1cGRhdGluZyB3aGlsZSBiZWlu ZyByZWFkLg0KPiA+ID4gKyAqLw0KPiA+ID4gICBzdGF0aWMgdTMyIHJ0Y19yZWFkX2xwX2NvdW50 ZXIoc3RydWN0IHNudnNfcnRjX2RhdGEgKmRhdGEpDQo+ID4gPiAgIHsNCj4gPiA+ICAgCXU2NCBy ZWFkMSwgcmVhZDI7DQo+ID4gPiAtCXUzMiB2YWw7DQo+ID4gPiArCXVuc2lnbmVkIGludCB0aW1l b3V0ID0gMTAwOw0KPiA+ID4gICANCj4gPiA+ICsJLyogQXMgZXhwZWN0ZWQsIHRoZSByZWdpc3Rl cnMgbWlnaHQgdXBkYXRlIGJldHdlZW4gdGhlIHJlYWQgb2YgdGhlIExTQg0KPiA+ID4gKwkgKiBy ZWcgYW5kIHRoZSBNU0IgcmVnLiAgSXQncyBhbHNvIHBvc3NpYmxlIHRoYXQgb25lIHJlZ2lzdGVy IG1pZ2h0IGJlDQo+ID4gPiArCSAqIGluIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSBhcyB3ZWxs Lg0KPiA+ID4gKwkgKi8NCj4gPiA+ICsJcmVhZDEgPSBydGNfcmVhZF9scHNydChkYXRhKTsNCj4g PiA+ICAgCWRvIHsNCj4gPiA+IC0JCXJlZ21hcF9yZWFkKGRhdGEtPnJlZ21hcCwgZGF0YS0+b2Zm c2V0ICsgU05WU19MUFNSVENNUiwgJnZhbCk7DQo+ID4gPiAtCQlyZWFkMSA9IHZhbDsNCj4gPiA+ IC0JCXJlYWQxIDw8PSAzMjsNCj4gPiA+IC0JCXJlZ21hcF9yZWFkKGRhdGEtPnJlZ21hcCwgZGF0 YS0+b2Zmc2V0ICsgU05WU19MUFNSVENMUiwgJnZhbCk7DQo+ID4gPiAtCQlyZWFkMSB8PSB2YWw7 DQo+ID4gPiAtDQo+ID4gPiAtCQlyZWdtYXBfcmVhZChkYXRhLT5yZWdtYXAsIGRhdGEtPm9mZnNl dCArIFNOVlNfTFBTUlRDTVIsICZ2YWwpOw0KPiA+ID4gLQkJcmVhZDIgPSB2YWw7DQo+ID4gPiAt CQlyZWFkMiA8PD0gMzI7DQo+ID4gPiAtCQlyZWdtYXBfcmVhZChkYXRhLT5yZWdtYXAsIGRhdGEt Pm9mZnNldCArIFNOVlNfTFBTUlRDTFIsICZ2YWwpOw0KPiA+ID4gLQkJcmVhZDIgfD0gdmFsOw0K PiA+ID4gLQl9IHdoaWxlIChyZWFkMSAhPSByZWFkMik7DQo+ID4gPiArCQlyZWFkMiA9IHJlYWQx Ow0KPiA+ID4gKwkJcmVhZDEgPSBydGNfcmVhZF9scHNydChkYXRhKTsNCj4gPiA+ICsJfSB3aGls ZSAocmVhZDEgIT0gcmVhZDIgJiYgLS10aW1lb3V0KTsNCj4gPiA+ICsJaWYgKCF0aW1lb3V0KQ0K PiA+ID4gKwkJZGV2X2VycigmZGF0YS0+cnRjLT5kZXYsICJUaW1lb3V0IHRyeWluZyB0byBnZXQg dmFsaWQgTFBTUlQgQ291bnRlciByZWFkXG4iKTsNCj4gPiA+ICAgDQo+ID4gPiAgIAkvKiBDb252 ZXJ0IDQ3LWJpdCBjb3VudGVyIHRvIDMyLWJpdCByYXcgc2Vjb25kIGNvdW50ICovDQo+ID4gPiAg IAlyZXR1cm4gKHUzMikgKHJlYWQxID4+IENOVFJfVE9fU0VDU19TSCk7DQo+ID4gPiAgIH0NCj4g PiA+ICAgDQo+ID4gPiAtc3RhdGljIHZvaWQgcnRjX3dyaXRlX3N5bmNfbHAoc3RydWN0IHNudnNf cnRjX2RhdGEgKmRhdGEpDQo+ID4gPiArLyogSnVzdCByZWFkIHRoZSBsc2IgZnJvbSB0aGUgY291 bnRlciwgZGVhbGluZyB3aXRoIGluY29uc2lzdGVudCBzdGF0ZSAqLw0KPiA+ID4gK3N0YXRpYyBp bnQgcnRjX3JlYWRfbHBfY291bnRlcl9sc2Ioc3RydWN0IHNudnNfcnRjX2RhdGEgKmRhdGEsIHUz MiAqbHNiKQ0KPiA+ID4gICB7DQo+ID4gPiAtCXUzMiBjb3VudDEsIGNvdW50MiwgY291bnQzOw0K PiA+ID4gLQlpbnQgaTsNCj4gPiA+IC0NCj4gPiA+IC0JLyogV2FpdCBmb3IgMyBDS0lMIGN5Y2xl cyAqLw0KPiA+ID4gLQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7DQo+ID4gPiAtCQlkbyB7DQo+ ID4gPiAtCQkJcmVnbWFwX3JlYWQoZGF0YS0+cmVnbWFwLCBkYXRhLT5vZmZzZXQgKyBTTlZTX0xQ U1JUQ0xSLCAmY291bnQxKTsNCj4gPiA+IC0JCQlyZWdtYXBfcmVhZChkYXRhLT5yZWdtYXAsIGRh dGEtPm9mZnNldCArIFNOVlNfTFBTUlRDTFIsICZjb3VudDIpOw0KPiA+ID4gLQkJfSB3aGlsZSAo Y291bnQxICE9IGNvdW50Mik7DQo+ID4gPiAtDQo+ID4gPiAtCQkvKiBOb3cgd2FpdCB1bnRpbCBj b3VudGVyIHZhbHVlIGNoYW5nZXMgKi8NCj4gPiA+IC0JCWRvIHsNCj4gPiA+IC0JCQlkbyB7DQo+ ID4gPiAtCQkJCXJlZ21hcF9yZWFkKGRhdGEtPnJlZ21hcCwgZGF0YS0+b2Zmc2V0ICsgU05WU19M UFNSVENMUiwgJmNvdW50Mik7DQo+ID4gPiAtCQkJCXJlZ21hcF9yZWFkKGRhdGEtPnJlZ21hcCwg ZGF0YS0+b2Zmc2V0ICsgU05WU19MUFNSVENMUiwgJmNvdW50Myk7DQo+ID4gPiAtCQkJfSB3aGls ZSAoY291bnQyICE9IGNvdW50Myk7DQo+ID4gPiAtCQl9IHdoaWxlIChjb3VudDMgPT0gY291bnQx KTsNCj4gPiA+ICsJdTMyIGNvdW50MSwgY291bnQyOw0KPiA+ID4gKwl1bnNpZ25lZCBpbnQgdGlt ZW91dCA9IDEwMDsNCj4gPiA+ICsNCj4gPiA+ICsJcmVnbWFwX3JlYWQoZGF0YS0+cmVnbWFwLCBk YXRhLT5vZmZzZXQgKyBTTlZTX0xQU1JUQ0xSLCAmY291bnQxKTsNCj4gPiA+ICsJZG8gew0KPiA+ ID4gKwkJY291bnQyID0gY291bnQxOw0KPiA+ID4gKwkJcmVnbWFwX3JlYWQoZGF0YS0+cmVnbWFw LCBkYXRhLT5vZmZzZXQgKyBTTlZTX0xQU1JUQ0xSLCAmY291bnQxKTsNCj4gPiA+ICsJfSB3aGls ZSAoY291bnQxICE9IGNvdW50MiAmJiAtLXRpbWVvdXQpOw0KPiA+ID4gKwlpZiAoIXRpbWVvdXQp IHsNCj4gPiA+ICsJCWRldl9lcnIoJmRhdGEtPnJ0Yy0+ZGV2LCAiVGltZW91dCB0cnlpbmcgdG8g Z2V0IHZhbGlkIExQU1JUIENvdW50ZXIgcmVhZFxuIik7DQo+ID4gPiArCQlyZXR1cm4gLUVUSU1F RE9VVDsNCj4gPiA+ICAgCX0NCj4gPiA+ICsNCj4gPiA+ICsJKmxzYiA9IGNvdW50MTsNCj4gPiA+ ICsJcmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBpbnQgcnRjX3dy aXRlX3N5bmNfbHAoc3RydWN0IHNudnNfcnRjX2RhdGEgKmRhdGEpDQo+ID4gPiArew0KPiA+ID4g Kwl1MzIgY291bnQxLCBjb3VudDI7DQo+ID4gPiArCXUzMiBlbGFwc2VkOw0KPiA+ID4gKwl1bnNp Z25lZCBpbnQgdGltZW91dCA9IDEwMDA7DQo+ID4gPiArCWludCByZXQ7DQo+ID4gPiArDQo+ID4g PiArCXJldCA9IHJ0Y19yZWFkX2xwX2NvdW50ZXJfbHNiKGRhdGEsICZjb3VudDEpOw0KPiA+ID4g KwlpZiAocmV0KQ0KPiA+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJLyogV2Fp dCBmb3IgMyBDS0lMIGN5Y2xlcywgYWJvdXQgNjEuMC05MS41IMK1cyAqLw0KPiA+ID4gKwlkbyB7 DQo+ID4gPiArCQlyZXQgPSBydGNfcmVhZF9scF9jb3VudGVyX2xzYihkYXRhLCAmY291bnQyKTsN Cj4gPiA+ICsJCWlmIChyZXQpDQo+ID4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiA+ICsJCWVsYXBz ZWQgPSBjb3VudDIgLSBjb3VudDE7IC8qIHdyYXAgYXJvdW5kIF9pc18gaGFuZGxlZCEgKi8NCj4g PiA+ICsJfSB3aGlsZSAoZWxhcHNlZCA8IDMgJiYgLS10aW1lb3V0KTsNCj4gPiA+ICsJaWYgKCF0 aW1lb3V0KSB7DQo+ID4gPiArCQlkZXZfZXJyKCZkYXRhLT5ydGMtPmRldiwgIlRpbWVvdXQgd2Fp dGluZyBmb3IgTFBTUlQgQ291bnRlciB0byBjaGFuZ2VcbiIpOw0KPiA+ID4gKwkJcmV0dXJuIC1F VElNRURPVVQ7DQo+ID4gPiArCX0NCj4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiAgIH0NCj4gPiA+ ICAgDQo+ID4gPiAgIHN0YXRpYyBpbnQgc252c19ydGNfZW5hYmxlKHN0cnVjdCBzbnZzX3J0Y19k YXRhICpkYXRhLCBib29sIGVuYWJsZSkNCj4gPiA+IEBAIC0xNzAsOSArMjA0LDcgQEAgc3RhdGlj IGludCBzbnZzX3J0Y19hbGFybV9pcnFfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWdu ZWQgaW50IGVuYWJsZSkNCj4gPiA+ICAgCQkJICAgKFNOVlNfTFBDUl9MUFRBX0VOIHwgU05WU19M UENSX0xQV1VJX0VOKSwNCj4gPiA+ICAgCQkJICAgZW5hYmxlID8gKFNOVlNfTFBDUl9MUFRBX0VO IHwgU05WU19MUENSX0xQV1VJX0VOKSA6IDApOw0KPiA+ID4gICANCj4gPiA+IC0JcnRjX3dyaXRl X3N5bmNfbHAoZGF0YSk7DQo+ID4gPiAtDQo+ID4gPiAtCXJldHVybiAwOw0KPiA+ID4gKwlyZXR1 cm4gcnRjX3dyaXRlX3N5bmNfbHAoZGF0YSk7DQo+ID4gPiAgIH0NCj4gPiA+ICAgDQo+ID4gPiAg IHN0YXRpYyBpbnQgc252c19ydGNfc2V0X2FsYXJtKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IHJ0Y193a2Fscm0gKmFscm0pDQo+ID4gPiBAQCAtMTgwLDExICsyMTIsMTQgQEAgc3RhdGljIGlu dCBzbnZzX3J0Y19zZXRfYWxhcm0oc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcnRjX3drYWxy bSAqYWxybSkNCj4gPiA+ICAgCXN0cnVjdCBzbnZzX3J0Y19kYXRhICpkYXRhID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQo+ID4gPiAgIAlzdHJ1Y3QgcnRjX3RpbWUgKmFscm1fdG0gPSAmYWxybS0+ dGltZTsNCj4gPiA+ICAgCXVuc2lnbmVkIGxvbmcgdGltZTsNCj4gPiA+ICsJaW50IHJldDsNCj4g PiA+ICAgDQo+ID4gPiAgIAlydGNfdG1fdG9fdGltZShhbHJtX3RtLCAmdGltZSk7DQo+ID4gPiAg IA0KPiA+ID4gICAJcmVnbWFwX3VwZGF0ZV9iaXRzKGRhdGEtPnJlZ21hcCwgZGF0YS0+b2Zmc2V0 ICsgU05WU19MUENSLCBTTlZTX0xQQ1JfTFBUQV9FTiwgMCk7DQo+ID4gPiAtCXJ0Y193cml0ZV9z eW5jX2xwKGRhdGEpOw0KPiA+ID4gKwlyZXQgPSBydGNfd3JpdGVfc3luY19scChkYXRhKTsNCj4g PiA+ICsJaWYgKHJldCkNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiAgIAlyZWdtYXBfd3Jp dGUoZGF0YS0+cmVnbWFwLCBkYXRhLT5vZmZzZXQgKyBTTlZTX0xQVEFSLCB0aW1lKTsNCj4gPiA+ ICAgDQo+ID4gPiAgIAkvKiBDbGVhciBhbGFybSBpbnRlcnJ1cHQgc3RhdHVzIGJpdCAqLw0KPiAN Cj4g