From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Bennett Subject: Re: [PATCH] mmc: core: Check for timeout before checking mmc device state Date: Mon, 11 May 2015 21:55:53 +0000 Message-ID: <1431381353.3328.36.camel@mattb-dl> References: <1431052847-16270-1-git-send-email-matt.bennett@alliedtelesis.co.nz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: <401616553BF7CC4EAA0F5474A0A9C6A7@atlnz.lc> Sender: linux-kernel-owner@vger.kernel.org To: "ulf.hansson@linaro.org" Cc: "kuninori.morimoto.gx@renesas.com" , "linux-kernel@vger.kernel.org" , "jh80.chung@samsung.com" , "sboyd@codeaurora.org" , "linux-mmc@vger.kernel.org" , "johan.rudholm@axis.com" List-Id: linux-mmc@vger.kernel.org SGkgVWZmZSwNCg0KV2UgYXJlIHVzaW5nIHRoZSBPY3Rlb24gbW1jIGhvc3QgZHJpdmVyIHN1cHBs aWVkIGZyb20gdGhlIENhdml1bSBTREsgKEkNCmRvbid0IGJlbGlldmUgaXQgaXMgcmVsZWFzZWQg dG8gdXBzdHJlYW0gbGludXgpLiBXZSBoYXZlIGJvdGggYSBtbWMNCmZsYXNoIG1lbW9yeSBkZXZp Y2UgYW5kIGFuIFNEIGNhcmQgcmVhZGVyIGF0dGFjaGVkIHRvIHRoZSBtbWMgYnVzLiANCg0KSW4g dGhlIGhvc3QgZHJpdmVyIGNvZGUgdGhlaXIgaXMgYSBtdXRleCB3aGljaCBtdXN0IGJlIG9idGFp bmVkIGJlZm9yZQ0KdGhlIGRyaXZlciBjYW4gYWNjZXNzIHRoZSBtbWMgYnVzLiBUaGlzIHN0b3Bz IHRoZSBtbWMgZmxhc2ggYW5kIFNEIGNhcmQNCnJlYWRlciBiZWluZyB3cml0dGVuIHRvIGluIHBh cmFsbGVsIChvdGhlcndpc2UgdGhlIHNpZ25hbCBvbiB0aGUgYnVzDQp3aWxsIGJlIGNvcnJ1cHRl ZCkuIEl0IGRvZXNuJ3QgcHJldmVudCBwYXJhbGxlbCByZXF1ZXN0cywgaXQncyBqdXN0IHRoYXQN CnRoZSBzZWNvbmQgcmVxdWVzdCB3aWxsIGJsb2NrIG9uIHRoaXMgbXV0ZXggdW50aWwgdGhlIGZp cnN0IHJlcXVlc3QgaGFzDQpiZWVuIGNvbXBsZXRlZC4NCg0KSW4gb3VyIHNwZWNpZmljIGNhc2Ug dGhlIGZvbGxvd2luZyBpcyBvY2N1cnJpbmc6DQoNCjEuIG1tY19ibGtfcGFydF9zd2l0Y2goKSBp cyBjYWxsZWQgdG8gc3dpdGNoIHBhcnRpdGlvbiBvbiB0aGUgbW1jIGZsYXNoDQpkZXZpY2UuIFRo aXMgY2FsbHMgbW1jX3N3aXRjaCB3aXRoIGEgdGltZW91dF9tcyB2YWx1ZSBvZg0KJ2NhcmQtPmV4 dF9jc2QucGFydF90aW1lJyB3aGljaCBpcyAxMG1zIGluIHRoaXMgY2FzZS4NCg0KMi4gSW4gX19t bWNfc3dpdGNoKCkgdGhlIGNvbW1hbmQgdG8gc3dpdGNoIHBhcnRpdGlvbiBpcyBzZW50IHRvIHRo ZSBtbWMNCmZsYXNoLg0KDQozLiBCZXR3ZWVuIHRoZSBjb21tYW5kIGJlaW5nIHNlbnQgdG8gdGhl IGZsYXNoIGFuZCB0aGVuIHRoZSBob3N0IHBvbGxpbmcNCnRoZSBzdGF0dXMgb2YgdGhlIGRldmlj ZSAobm8gYnVzeSBkZXRlY3Rpb24gaGFyZHdhcmUpIGEgcmVhZCBvciB3cml0ZQ0Kb3BlcmF0aW9u IGlzIGJlZ3VuIG9uIHRoZSBTRCBjYXJkIChpbiBvdXIgY2FzZSBhIFNwZWNpZmljYXRpb24gVmVy c2lvbg0KMi4wMCBjYXJkKS4gSW4gbXkgdGVzdGluZyBJIGhhdmUgc2VlbiB0aGUgYnVzIGJlIGJs b2NrZWQgdXAgdG8gODAwbXMNCndoaWxlIGNvbXBsZXRpbmcgdGhpcyBvcGVyYXRpb24uDQoNCjQu IFRoZSBob3N0IHBvbGxzIHRoZSBkZXZpY2UgZm9yIHRoZSBzdGF0dXMgYnV0IGJsb2NrcyB0aGUg Zmlyc3QgdGltZSBvbg0KdGhlIG11dGV4IGZvciB+ODAwbXMgd2hpbGUgdGhlIFNEIGNhcmQgb3Bl cmF0aW9uIGNvbXBsZXRlcy4NCg0KNS4gRmluYWxseSB0aGUgaG9zdCBnYWlucyB0aGUgbXV0ZXgg YW5kIGdldHMgdGhlIHN0YXR1cyBmcm9tIHRoZSBmbGFzaA0KZGV2aWNlLg0KDQpJbiBteSB0ZXN0 aW5nIGF0IHRoaXMgc3RhZ2UgdGhlIHN0YXR1cyB3YXMgbmV2ZXIgc3RpbGwNCidSMV9TVEFURV9Q UkcnIChpdCBoYXMgYmVlbiA4MDBtcyBzaW5jZSB0aGUgY29tbWFuZCB3YXMgc2VudCBhZnRlciBh bGwpLg0KSG93ZXZlciB0aGUgdGltZW91dCBjaGVjayBmYWlscyBiZWNhdXNlIGl0IGhhcyBiZWVu IDgwMG1zIGNvbXBhcmVkIHRvDQp0aGUgb3JpZ2luYWwgdGltZW91dF9tcyB2YWx1ZSBwYXNzZWQg aW4gb2YgMTBtcy4gVGhlcmVmb3JlIGV2ZW4gdGhvdWdoDQp0aGUgZGV2aWNlIGhhcyBsZWZ0IHRo ZSAnUjFfU1RBVEVfUFJHJyBzdGF0ZSB3ZSByZXR1cm4gZWFybHkgd2l0aCBhbg0KZXJyb3IgdGhh dCBldmVudHVhbGx5IGdldHMgcHJpbnRlZCB0byB0aGUgbG9nLiBUaGlzIGRvZXMgbm90IGFmZmVj dCBhbnkNCmZ1bmN0aW9uYWxpdHkgYXMgdGhlIGhvc3Qgd2lsbCBzaW1wbHkgdHJ5IHRvIHN3aXRj aCB0aGUgcGFydGl0aW9uIGFnYWluDQphbmQgaWYgdGhlIGJ1cyBkb2VzIG5vdCBibG9jayBhZ2Fp biB0aGVuIHRoZXJlIGFyZSBubyBpc3N1ZXMuDQoNCkJ5IHB1dHRpbmcgdGhlIHRpbWVvdXQgY2hl Y2sgYmVmb3JlIHdlIHJlYWQgdGhlIHN0YXR1cyBvZiB0aGUgZGV2aWNlDQooYW5kIHBvdGVudGlh bGx5IGJsb2NrIGZvciBsb25nZXIgdGhhbiB0aGUgdGltZW91dCkgd2UgZG9uJ3QgcmV0dXJuIGFu DQplYXJseSBlcnJvciBpZiB0aGUgZGV2aWNlIGhhcyBpbmRlZWQgbGVmdCB0aGUgcHJvZ3JhbW1p bmcgc3RhdGUuIFdlDQptaWdodCBhcyB3ZWxsIGNvbnRpbnVlIHRocm91Z2ggdGhlIGZ1bmN0aW9u IGFzIGFmdGVyIHdlIHJldHVybiB0aGUgZXJyb3INCnRoZSBob3N0IGlzIGp1c3QgZ29pbmcgdG8g aXNzdWUgdGhlIGNvbW1hbmQgYWdhaW4uIA0KDQpQbGVhc2UgZXhjdXNlIG1lIGlmIEkgaGF2ZSBt aXNzZWQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLg0KDQpUaGFua3MsDQpNYXR0DQoNCg0KDQpPbiBN b24sIDIwMTUtMDUtMTEgYXQgMTI6MDAgKzAyMDAsIFVsZiBIYW5zc29uIHdyb3RlOg0KPiBPbiA4 IE1heSAyMDE1IGF0IDA0OjQwLCBNYXR0IEJlbm5ldHQgPG1hdHQuYmVubmV0dEBhbGxpZWR0ZWxl c2lzLmNvLm56PiB3cm90ZToNCj4gPiBPbiBhIHN5c3RlbSB0aGF0IGhhcyBtdWx0aXBsZSBkZXZp Y2VzIG9uIHRoZSBtbWMgYnVzIHRoZSBob3N0IGNhbg0KPiA+IGJsb2NrIG9uIHRoZSBtdXRleCB0 aGF0IHByb3RlY3RzIGFjY2VzcyB0byB0aGUgYnVzLiBTb21lIG9wZXJhdGlvbnMNCj4gDQo+IFdo YXQgbXV0ZXggYXJlIHlvdSByZWZlcnJpbmcgdG8/DQo+IA0KPiBBbmQgd2h5LCBleGFjdGx5LCBk b2VzIGl0IHByZXZlbnQgcGFyYWxsZWwgcmVxdWVzdHMgb24gZGlmZmVyZW50IGNhcmRzDQo+IChk ZXZpY2VzKT8NCj4gDQo+IEtpbmQgcmVnYXJkcw0KPiBVZmZlDQo+IA0KPiA+IHJlcXVpcmUgdGhl IHN0YXR1cyBvZiB0aGUgZGV2aWNlIHRvIGJlIHBvbGxlZCB0byBzZWUgd2hlbiB0aGUgZGV2aWNl DQo+ID4gZmluaXNoZXMgZXhlY3V0aW5nIHRoZSBwcmV2aW91cyBjb21tYW5kIHRoYXQgd2FzIHNl bnQgdG8gaXQgKGlmDQo+ID4gdGhlcmUgaXMgbm8gYnVzeSBkZXRlY3Rpb24gaW4gaGFyZHdhcmUp LiBUaGUgY3VycmVudCBleGVjdXRpb24gb3JkZXINCj4gPiB0byBjaGVjayB0aGUgc3RhdHVzIGlz Og0KPiA+DQo+ID4gTE9PUA0KPiA+IHsNCj4gPiAgIDEuIFNlbmQgY29tbWFuZCB0byBkZXZpY2Ug dG8gcmV0cmlldmUgdGhlIHN0YXR1cyAodGhpcyBjYW4gYmxvY2spLg0KPiA+ICAgMi4gQ2hlY2sg d2UgaGF2ZW4ndCBleGNlZWRlZCB0aGUgdGltZW91dCB2YWx1ZS4gSWYgd2UgaGF2ZSB0aGVuDQo+ ID4gICAgICByZXR1cm4gYW4gZXJyb3IuDQo+ID4gICAzLiBJZiB0aGUgZGV2aWNlIGlzIG5vIGxv bmdlciBpbiB0aGUgcHJvZ3JhbSBzdGF0ZSB0aGVuIGV4aXQgdGhlDQo+ID4gICAgICBsb29wIGFu ZCBjb250aW51ZSB0aHJvdWdoIHRoZSBmdW5jdGlvbi4NCj4gPiB9DQo+ID4NCj4gPiBJZiB0aGUg c2VuZCBjb21tYW5kIGJsb2NrcyAoYW5kIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkKSB0aGVuIHRo ZQ0KPiA+IGZ1bmN0aW9uIHJldHVybnMgKGFuZCBwcmludHMpIGFuIGVycm9yIGV2ZW4gdGhvdWdo IHRoZSBkZXZpY2UgaGFzDQo+ID4gbGlrZWx5IGxlZnQgdGhlIHByb2dyYW1taW5nIHN0YXRlIChk dWUgdG8gdGhlIGxlbmd0aHkgcGVyaW9kIG9mDQo+ID4gdGltZSB3aGlsZSB0aGUgYnVzIGlzIGJs b2NrZWQpLiBCeSBtb3ZpbmcgdGhlIHRpbWVvdXQgY2hlY2sgYmVmb3JlDQo+ID4gcmV0cmlldmlu ZyB0aGUgZGV2aWNlIHN0YXR1cyBpbiB0aGUgbG9vcCB3ZSBiZXR0ZXIgaGFuZGxlIHRoZSBjYXNl DQo+ID4gd2hlcmUgdGhlIG1tYyBidXMgaGFzIGJlZW4gYmxvY2tlZCBidXQgdGhlIGRldmljZSBo YXMgbGVmdCB0aGUNCj4gPiBwcm9ncmFtbWluZyBzdGF0ZS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYt Ynk6IE1hdHQgQmVubmV0dCA8bWF0dC5iZW5uZXR0QGFsbGllZHRlbGVzaXMuY28ubno+DQo+ID4g Q2M6IGt1bmlub3JpLm1vcmltb3RvLmd4QHJlbmVzYXMuY29tDQo+ID4gQ2M6IGpoODAuY2h1bmdA c2Ftc3VuZy5jb20NCj4gPiBDYzogc2JveWRAY29kZWF1cm9yYS5vcmcNCj4gPiBDYzogam9oYW4u cnVkaG9sbUBheGlzLmNvbQ0KPiA+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ ID4gQ2M6IGxpbnV4LW1tY0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9t bWMvY2FyZC9ibG9jay5jICAgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tDQo+ID4gIGRyaXZl cnMvbW1jL2NvcmUvY29yZS5jICAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiAgZHJp dmVycy9tbWMvY29yZS9tbWNfb3BzLmMgfCAxNCArKysrKysrLS0tLS0tLQ0KPiA+ICAzIGZpbGVz IGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NhcmQvYmxvY2suYyBiL2RyaXZlcnMvbW1jL2NhcmQvYmxv Y2suYw0KPiA+IGluZGV4IDJjMjUyNzEuLjBhYmVmZGUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9tbWMvY2FyZC9ibG9jay5jDQo+ID4gKysrIGIvZHJpdmVycy9tbWMvY2FyZC9ibG9jay5jDQo+ ID4gQEAgLTc0Nyw2ICs3NDcsMTcgQEAgc3RhdGljIGludCBjYXJkX2J1c3lfZGV0ZWN0KHN0cnVj dCBtbWNfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMsDQo+ID4gICAgICAgICB1 MzIgc3RhdHVzOw0KPiA+DQo+ID4gICAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIC8q DQo+ID4gKyAgICAgICAgICAgICAgICAqIFRpbWVvdXQgaWYgdGhlIGRldmljZSBuZXZlciBiZWNv bWVzIHJlYWR5IGZvciBkYXRhIGFuZCBuZXZlcg0KPiA+ICsgICAgICAgICAgICAgICAgKiBsZWF2 ZXMgdGhlIHByb2dyYW0gc3RhdGUuDQo+ID4gKyAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAg ICAgICAgICAgICBpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHByX2VycigiJXM6IENhcmQgc3R1Y2sgaW4gcHJvZ3JhbW1pbmcg c3RhdGUhICVzICVzXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW1j X2hvc3RuYW1lKGNhcmQtPmhvc3QpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVxLT5ycV9kaXNrLT5kaXNrX25hbWUsIF9fZnVuY19fKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVUSU1FRE9VVDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ ICsNCj4gPiAgICAgICAgICAgICAgICAgZXJyID0gZ2V0X2NhcmRfc3RhdHVzKGNhcmQsICZzdGF0 dXMsIDUpOw0KPiA+ICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7DQo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgcHJfZXJyKCIlczogZXJyb3IgJWQgcmVxdWVzdGluZyBzdGF0dXNcbiIsDQo+ ID4gQEAgLTc2NiwxNyArNzc3LDYgQEAgc3RhdGljIGludCBjYXJkX2J1c3lfZGV0ZWN0KHN0cnVj dCBtbWNfY2FyZCAqY2FyZCwgdW5zaWduZWQgaW50IHRpbWVvdXRfbXMsDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgLyoNCj4gPiAt ICAgICAgICAgICAgICAgICogVGltZW91dCBpZiB0aGUgZGV2aWNlIG5ldmVyIGJlY29tZXMgcmVh ZHkgZm9yIGRhdGEgYW5kIG5ldmVyDQo+ID4gLSAgICAgICAgICAgICAgICAqIGxlYXZlcyB0aGUg cHJvZ3JhbSBzdGF0ZS4NCj4gPiAtICAgICAgICAgICAgICAgICovDQo+ID4gLSAgICAgICAgICAg ICAgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7DQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgcHJfZXJyKCIlczogQ2FyZCBzdHVjayBpbiBwcm9ncmFtbWluZyBzdGF0ZSEg JXMgJXNcbiIsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWNfaG9zdG5h bWUoY2FyZC0+aG9zdCksDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEt PnJxX2Rpc2stPmRpc2tfbmFtZSwgX19mdW5jX18pOw0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRVRJTUVET1VUOw0KPiA+IC0gICAgICAgICAgICAgICB9DQo+ID4gLQ0KPiA+ IC0gICAgICAgICAgICAgICAvKg0KPiA+ICAgICAgICAgICAgICAgICAgKiBTb21lIGNhcmRzIG1p c2hhbmRsZSB0aGUgc3RhdHVzIGJpdHMsDQo+ID4gICAgICAgICAgICAgICAgICAqIHNvIG1ha2Ug c3VyZSB0byBjaGVjayBib3RoIHRoZSBidXN5DQo+ID4gICAgICAgICAgICAgICAgICAqIGluZGlj YXRpb24gYW5kIHRoZSBjYXJkIHN0YXRlLg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9j b3JlL2NvcmUuYyBiL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5jDQo+ID4gaW5kZXggYzI5NmJjMC4u NmU1NmNiMyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21tYy9jb3JlL2NvcmUuYw0KPiA+ICsr KyBiL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5jDQo+ID4gQEAgLTIwNDcsNiArMjA0NywxNiBAQCBz dGF0aWMgaW50IG1tY19kb19lcmFzZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGlu dCBmcm9tLA0KPiA+DQo+ID4gICAgICAgICB0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2pp ZmZpZXMoTU1DX0NPUkVfVElNRU9VVF9NUyk7DQo+ID4gICAgICAgICBkbyB7DQo+ID4gKyAgICAg ICAgICAgICAgIC8qIFRpbWVvdXQgaWYgdGhlIGRldmljZSBuZXZlciBiZWNvbWVzIHJlYWR5IGZv ciBkYXRhIGFuZA0KPiA+ICsgICAgICAgICAgICAgICAgKiBuZXZlciBsZWF2ZXMgdGhlIHByb2dy YW0gc3RhdGUuDQo+ID4gKyAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAgICAgICAgICBp ZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgew0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHByX2VycigiJXM6IENhcmQgc3R1Y2sgaW4gcHJvZ3JhbW1pbmcgc3RhdGUhICVzXG4i LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW1jX2hvc3RuYW1lKGNhcmQt Pmhvc3QpLCBfX2Z1bmNfXyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gIC1F SU87DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAgICAg ICAgICAgIH0NCj4gPiArDQo+ID4gICAgICAgICAgICAgICAgIG1lbXNldCgmY21kLCAwLCBzaXpl b2Yoc3RydWN0IG1tY19jb21tYW5kKSk7DQo+ID4gICAgICAgICAgICAgICAgIGNtZC5vcGNvZGUg PSBNTUNfU0VORF9TVEFUVVM7DQo+ID4gICAgICAgICAgICAgICAgIGNtZC5hcmcgPSBjYXJkLT5y Y2EgPDwgMTY7DQo+ID4gQEAgLTIwNjAsMTYgKzIwNzAsNiBAQCBzdGF0aWMgaW50IG1tY19kb19l cmFzZShzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBmcm9tLA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4N Cj4gPiAtICAgICAgICAgICAgICAgLyogVGltZW91dCBpZiB0aGUgZGV2aWNlIG5ldmVyIGJlY29t ZXMgcmVhZHkgZm9yIGRhdGEgYW5kDQo+ID4gLSAgICAgICAgICAgICAgICAqIG5ldmVyIGxlYXZl cyB0aGUgcHJvZ3JhbSBzdGF0ZS4NCj4gPiAtICAgICAgICAgICAgICAgICovDQo+ID4gLSAgICAg ICAgICAgICAgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7DQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgcHJfZXJyKCIlczogQ2FyZCBzdHVjayBpbiBwcm9ncmFtbWluZyBz dGF0ZSEgJXNcbiIsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWNfaG9z dG5hbWUoY2FyZC0+aG9zdCksIF9fZnVuY19fKTsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICBlcnIgPSAgLUVJTzsNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4g PiAtICAgICAgICAgICAgICAgfQ0KPiA+IC0NCj4gPiAgICAgICAgIH0gd2hpbGUgKCEoY21kLnJl c3BbMF0gJiBSMV9SRUFEWV9GT1JfREFUQSkgfHwNCj4gPiAgICAgICAgICAgICAgICAgIChSMV9D VVJSRU5UX1NUQVRFKGNtZC5yZXNwWzBdKSA9PSBSMV9TVEFURV9QUkcpKTsNCj4gPiAgb3V0Og0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYyBiL2RyaXZlcnMvbW1j L2NvcmUvbW1jX29wcy5jDQo+ID4gaW5kZXggMGVhMDQyZC4uYjMwZWQ5MSAxMDA2NDQNCj4gPiAt LS0gYS9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbW1jL2Nv cmUvbW1jX29wcy5jDQo+ID4gQEAgLTUyNiw2ICs1MjYsMTMgQEAgaW50IF9fbW1jX3N3aXRjaChz dHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHU4IHNldCwgdTggaW5kZXgsIHU4IHZhbHVlLA0KPiA+ICAg ICAgICAgLyogTXVzdCBjaGVjayBzdGF0dXMgdG8gYmUgc3VyZSBvZiBubyBlcnJvcnMuICovDQo+ ID4gICAgICAgICB0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXModGltZW91dF9t cyk7DQo+ID4gICAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIC8qIFRpbWVvdXQgaWYg dGhlIGRldmljZSBuZXZlciBsZWF2ZXMgdGhlIHByb2dyYW0gc3RhdGUuICovDQo+ID4gKyAgICAg ICAgICAgICAgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcHJfZXJyKCIlczogQ2FyZCBzdHVjayBpbiBwcm9ncmFtbWluZyBz dGF0ZSEgJXNcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbWNfaG9z dG5hbWUoaG9zdCksIF9fZnVuY19fKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLUVUSU1FRE9VVDsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAg ICAgICAgICAgaWYgKHNlbmRfc3RhdHVzKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ZXJyID0gX19tbWNfc2VuZF9zdGF0dXMoY2FyZCwgJnN0YXR1cywgaWdub3JlX2NyYyk7DQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikNCj4gPiBAQCAtNTQ1LDEzICs1NTIsNiBA QCBpbnQgX19tbWNfc3dpdGNoKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgdTggc2V0LCB1OCBpbmRl eCwgdTggdmFsdWUsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbW1jX2RlbGF5KHRpbWVv dXRfbXMpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICAgICAg ICAgICAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAgICAgICAgICAvKiBUaW1lb3V0IGlmIHRo ZSBkZXZpY2UgbmV2ZXIgbGVhdmVzIHRoZSBwcm9ncmFtIHN0YXRlLiAqLw0KPiA+IC0gICAgICAg ICAgICAgICBpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkgew0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgIHByX2VycigiJXM6IENhcmQgc3R1Y2sgaW4gcHJvZ3JhbW1pbmcgc3Rh dGUhICVzXG4iLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW1jX2hvc3Ru YW1lKGhvc3QpLCBfX2Z1bmNfXyk7DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC1FVElNRURPVVQ7DQo+ID4gLSAgICAgICAgICAgICAgIH0NCj4gPiAgICAgICAgIH0gd2hpbGUg KFIxX0NVUlJFTlRfU1RBVEUoc3RhdHVzKSA9PSBSMV9TVEFURV9QUkcpOw0KPiA+DQo+ID4gICAg ICAgICBpZiAobW1jX2hvc3RfaXNfc3BpKGhvc3QpKSB7DQo+ID4gLS0NCj4gPiAxLjkuMQ0KPiA+ DQo+ID4gLS0NCj4gPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGlu ZSAidW5zdWJzY3JpYmUgbGludXgtbW1jIiBpbg0KPiA+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0 byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnDQo+ID4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAg aHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sDQoNCg==