From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Winkler, Tomas" Subject: Re: [PATCH 7/8 v5] mmc: block: Convert RPMB to a character device Date: Mon, 21 Aug 2017 18:59:19 +0000 Message-ID: <1503341833.483.2.camel@intel.com> References: <20170820213913.9737-1-linus.walleij@linaro.org> <20170820213913.9737-8-linus.walleij@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com ([134.134.136.100]:4333 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753596AbdHUS7a (ORCPT ); Mon, 21 Aug 2017 14:59:30 -0400 In-Reply-To: <20170820213913.9737-8-linus.walleij@linaro.org> Content-Language: en-US Content-ID: Sender: linux-mmc-owner@vger.kernel.org List-Id: linux-mmc@vger.kernel.org To: "ulf.hansson@linaro.org" , "linux-mmc@vger.kernel.org" , "linus.walleij@linaro.org" T24gU3VuLCAyMDE3LTA4LTIwIGF0IDIzOjM5ICswMjAwLCBMaW51cyBXYWxsZWlqIHdyb3RlOg0K PiBUaGUgUlBNQiBwYXJ0aXRpb24gb24gdGhlIGVNTUMgZGV2aWNlcyBpcyBhIHNwZWNpYWwgYXJl YSB1c2VkDQo+IGZvciBzdG9yaW5nIGNyeXB0b2dyYXBoaWNhbGx5IHNhZmUgaW5mb3JtYXRpb24g c2lnbmVkIGJ5IGENCj4gc3BlY2lhbCBzZWNyZXQga2V5LiBUbyB3cml0ZSBhbmQgcmVhZCByZWNv cmRzIGZyb20gdGhpcyBzcGVjaWFsDQo+IGFyZWEsIGF1dGhlbnRpY2F0aW9uIGlzIG5lZWRlZC4N Cj4gDQo+IFRoZSBSUE1CIGFyZWEgaXMgKm9ubHkqIGFuZCAqZXhjbHVzaXZlbHkqIGFjY2Vzc2Vk IHVzaW5nDQo+IGlvY3RsKCk6cyBmcm9tIHVzZXJzcGFjZS4gSXQgaXMgbm90IHJlYWxseSBhIGJs b2NrIGRldmljZSwNCj4gYXMgYmxvY2tzIGNhbm5vdCBiZSByZWFkIG9yIHdyaXR0ZW4gZnJvbSB0 aGUgZGV2aWNlLCBhbHNvDQo+IHRoZSBzaWduZWQgY2h1bmtzIHRoYXQgY2FuIGJlIHN0b3JlZCBv biB0aGUgUlBNQiBhcmUgYWN0dWFsbHkNCj4gMjU2IGJ5dGVzLCBub3QgNTEyIG1ha2luZyBhIGJs b2NrIGRldmljZSBhIHJlYWwgYmFkIGZpdC4NCj4gDQo+IEN1cnJlbnRseSB0aGUgUlBNQiBwYXJ0 aXRpb24gc3Bhd25zIGEgc2VwYXJhdGUgYmxvY2sgZGV2aWNlDQo+IG5hbWVkIC9kZXYvbW1jYmxr TnJwbWIgZm9yIGVhY2ggZGV2aWNlIHdpdGggYW4gUlBNQiBwYXJ0aXRpb24sDQo+IGluY2x1ZGlu ZyB0aGUgY3JlYXRpb24gb2YgYSBibG9jayBxdWV1ZSB3aXRoIGl0cyBvd24ga2VybmVsDQo+IHRo cmVhZCBhbmQgYWxsIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCB0aGlzLiBPbiB0aGUgVXg1MDAN Cj4gSFJFRnY2MCBwbGF0Zm9ybSwgZm9yIGV4YW1wbGUsIHRoZSB0d28gZU1NQ3MgbWVhbnMgdGhh dCB0d28NCj4gYmxvY2sgcXVldWVzIHdpdGggc2VwYXJhdGUgdGhyZWFkcyBhcmUgY3JlYXRlZCBm b3Igbm8gdXNlDQo+IHdoYXRzb2V2ZXIuDQo+IA0KPiBJIGhhdmUgY29uY2x1ZGVkIHRoYXQgdGhp cyBibG9jayBkZXZpY2UgZGVzaWduIGZvciBSUE1CIGlzDQo+IGFjdHVhbGx5IHByZXR0eSB3cm9u Zy4gVGhlIFJQTUIgYXJlYSBzaG91bGQgaGF2ZSBiZWVuIGRlc2lnbmVkDQo+IHRvIGJlIGFjY2Vz c2VkIGZyb20gL2Rldi9tbWNibGtOIGRpcmVjdGx5LCB1c2luZyBpb2N0bCgpcyBvbg0KPiB0aGUg bWFpbiBibG9jayBkZXZpY2UuIEl0IGlzIGhvd2V2ZXIgd2F5IHRvbyBsYXRlIHRvIGNoYW5nZQ0K PiB0aGF0LCBzaW5jZSB1c2Vyc3BhY2UgZXhwZWN0cyB0byBvcGVuIGFuIFJQTUIgZGV2aWNlIGlu DQo+IC9kZXYvbW1jYmxrTnJwbWIgYW5kIHdlIGNhbm5vdCBicmVhayB1c2Vyc3BhY2UuDQo+IA0K PiBUaGlzIHBhdGNoIHRyaWVzIHRvIGFtZW5kIHRoZSBzaXR1YXRpb24gdXNpbmcgdGhlIGZvbGxv d2luZw0KPiBzdHJhdGVneToNCj4gDQo+IC0gU3RvcCBjcmVhdGluZyBhIGJsb2NrIGRldmljZSBm b3IgdGhlIFJQTUIgcGFydGl0aW9uL2FyZWENCj4gDQo+IC0gSW5zdGVhZCBjcmVhdGUgYSBjdXN0 b20sIGR5bmFtaWMgY2hhcmFjdGVyIGRldmljZSB3aXRoDQo+ICAgdGhlIHNhbWUgbmFtZS4NCj4g DQo+IC0gTWFrZSB0aGlzIG5ldyBjaGFyYWN0ZXIgZGV2aWNlIHN1cHBvcnQgZXhhY3RseSB0aGUg c2FtZQ0KPiAgIHNldCBvZiBpb2N0bCgpcyBhcyB0aGUgb2xkIGJsb2NrIGRldmljZS4NCj4gDQo+ IC0gV3JhcCB0aGUgcmVxdWVzdHMgYmFjayB0byB0aGUgc2FtZSBpb2N0bCgpIGhhbmRsZXJzLCBi dXQNCj4gICBpc3N1ZSB0aGVtIG9uIHRoZSBibG9jayBxdWV1ZSBvZiB0aGUgbWFpbiBwYXJ0aXRp b24vYXJlYSwNCj4gICBpLmUuIC9kZXYvbW1jYmxrTg0KPiANCj4gV2UgbmVlZCB0byBjcmVhdGUg YSBzcGVjaWFsICJycG1iIiBidXMgdHlwZSBpbiBvcmRlciB0byBnZXQNCj4gdWRldiBhbmQvb3Ig YnVzeWJveCBob3QvY29sZHBsdWcgdG8gaW5zdGFudGlhdGUgdGhlIGRldmljZQ0KPiBub2RlIHBy b3Blcmx5Lg0KPiANCj4gQmVmb3JlIHRoZSBwYXRjaCwgdGhpcyBhcHBlYXJzIGluICdwcyBhdXgn Og0KPiANCj4gMTAxIHJvb3QgICAgICAgMDowMCBbbW1jcWQvMnJwbWJdDQo+IDEyMyByb290ICAg ICAgIDA6MDAgW21tY3FkLzNycG1iXQ0KPiANCj4gQWZ0ZXIgYXBwbHlpbmcgdGhlIHBhdGNoIHRo ZXNlIHN1cnBsdXMgYmxvY2sgcXVldWUgdGhyZWFkcw0KPiBhcmUgZ29uZSwgYnV0IFJQTUIgaXMg YXMgdXNhYmxlIGFzIGV2ZXIgdXNpbmcgdGhlIHVzZXJzcGFjZQ0KPiBNTUMgdG9vbHMsIHN1Y2gg YXMgJ21tYyBycG1iIHJlYWQtY291bnRlcicuDQo+IA0KPiBXZSBnZXQgaW5zdGVhZCB0aG9zZSBk eW5hbWljZSBkZXZpY2VzIGluIC9kZXY6DQo+IA0KPiBicnctcnctLS0tICAgIDEgcm9vdCAgICAg cm9vdCAgICAgIDE3OSwgICAwIEphbiAgMSAgMjAwMCBtbWNibGswDQo+IGJydy1ydy0tLS0gICAg MSByb290ICAgICByb290ICAgICAgMTc5LCAgIDEgSmFuICAxICAyMDAwIG1tY2JsazBwMQ0KPiBi cnctcnctLS0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDE3OSwgICAyIEphbiAgMSAgMjAwMCBt bWNibGswcDINCj4gYnJ3LXJ3LS0tLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAxNzksICAgNSBK YW4gIDEgIDIwMDAgbW1jYmxrMHA1DQo+IGJydy1ydy0tLS0gICAgMSByb290ICAgICByb290ICAg ICAgMTc5LCAgIDggSmFuICAxICAyMDAwIG1tY2JsazINCj4gYnJ3LXJ3LS0tLSAgICAxIHJvb3Qg ICAgIHJvb3QgICAgICAxNzksICAxNiBKYW4gIDEgIDIwMDAgbW1jYmxrMmJvb3QwDQo+IGJydy1y dy0tLS0gICAgMSByb290ICAgICByb290ICAgICAgMTc5LCAgMjQgSmFuICAxICAyMDAwIG1tY2Js azJib290MQ0KPiBjcnctcnctLS0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDI0OCwgICAwIEph biAgMSAgMjAwMCBtbWNibGsycnBtYg0KPiBicnctcnctLS0tICAgIDEgcm9vdCAgICAgcm9vdCAg ICAgIDE3OSwgIDMyIEphbiAgMSAgMjAwMCBtbWNibGszDQo+IGJydy1ydy0tLS0gICAgMSByb290 ICAgICByb290ICAgICAgMTc5LCAgNDAgSmFuICAxICAyMDAwIG1tY2JsazNib290MA0KPiBicnct cnctLS0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDE3OSwgIDQ4IEphbiAgMSAgMjAwMCBtbWNi bGszYm9vdDENCj4gYnJ3LXJ3LS0tLSAgICAxIHJvb3QgICAgIHJvb3QgICAgICAxNzksICAzMyBK YW4gIDEgIDIwMDAgbW1jYmxrM3AxDQo+IGNydy1ydy0tLS0gICAgMSByb290ICAgICByb290ICAg ICAgMjQ4LCAgIDEgSmFuICAxICAyMDAwIG1tY2JsazNycG1iDQo+IA0KPiBOb3RpY2UgdGhlICgy NDgsMCkgYW5kICgyNDgsMSkgY2hhcmFjdGVyIGRldmljZXMgZm9yIFJQTUIuDQo+IA0KPiBDYzog VG9tYXMgV2lua2xlciA8dG9tYXMud2lua2xlckBpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6 IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4NCj4gLS0tDQo+IENoYW5n ZUxvZyB2MSAoUkZDKSAtPiB2NToNCj4gLSBSZWJhc2UuDQo+IC0gRHJvcCBkaXNjdXNzaW9uIGNv bW1lbnRzLCBsZXQncyBnbyBmb3IgdGhpcyB1bmxlc3Mgc29tZW9uZQ0KPiAgIGhhcyBhIGJldHRl ciBpZGVhLg0KPiAtIFJlbmFtZSBycG1iX2RldnQgYW5kIHJwbWJfYnVzX3R5cGUgdG8gbW1jX3Jw bWJfZGV2dCBhbmQNCj4gICBtbWNfcnBtYl9idXNfdHlwZSBhcyByZXF1ZXN0ZWQgYnkgVG9tYXMu DQo+IC0gSGFuZGxlIG11bHRpcGxlIFJQTUIgcGFydGl0aW9ucyBhcyByZXF1ZXN0ZWQgYnkgVG9t YXMuDQo+IC0gUmVudW1iZXIgdjUgdG8ga2VlcCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRo ZSBzZXJpZXMuDQo+IC0tLQ0KPiAgZHJpdmVycy9tbWMvY29yZS9ibG9jay5jIHwgMjg2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tDQo+ICBkcml2ZXJzL21t Yy9jb3JlL3F1ZXVlLmggfCAgIDIgKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9u cygrKSwgMjIgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29y ZS9ibG9jay5jIGIvZHJpdmVycy9tbWMvY29yZS9ibG9jay5jDQo+IGluZGV4IDUwMjA2OGIxNTVi OS4uMjdlMWNmMDdhN2EyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21tYy9jb3JlL2Jsb2NrLmMN Cj4gKysrIGIvZHJpdmVycy9tbWMvY29yZS9ibG9jay5jDQo+IEBAIC0yOCw2ICsyOCw3IEBADQo+ ICAjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9rZGV2X3QuaD4N Cj4gICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+ DQo+ICAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gICNpbmNsdWRlIDxsaW51eC9zY2F0dGVy bGlzdC5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L3N0cmluZ19oZWxwZXJzLmg+DQo+IEBAIC04Niw2 ICs4Nyw3IEBAIHN0YXRpYyBpbnQgbWF4X2RldmljZXM7DQo+ICAjZGVmaW5lIE1BWF9ERVZJQ0VT IDI1Ng0KPiAgDQo+ICBzdGF0aWMgREVGSU5FX0lEQShtbWNfYmxrX2lkYSk7DQo+ICtzdGF0aWMg REVGSU5FX0lEQShtbWNfcnBtYl9pZGEpOw0KPiAgDQo+ICAvKg0KPiAgICogVGhlcmUgaXMgb25l IG1tY19ibGtfZGF0YSBwZXIgc2xvdC4NCj4gQEAgLTk2LDYgKzk4LDcgQEAgc3RydWN0IG1tY19i bGtfZGF0YSB7DQo+ICAJc3RydWN0IGdlbmRpc2sJKmRpc2s7DQo+ICAJc3RydWN0IG1tY19xdWV1 ZSBxdWV1ZTsNCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIHBhcnQ7DQo+ICsJc3RydWN0IGxpc3RfaGVh ZCBycG1iczsNCj4gIA0KPiAgCXVuc2lnbmVkIGludAlmbGFnczsNCj4gICNkZWZpbmUgTU1DX0JM S19DTUQyMwkoMSA8PCAwKQkvKiBDYW4gZG8gU0VUX0JMT0NLX0NPVU5UIGZvciBtdWx0aWJsb2Nr ICovDQo+IEBAIC0xMjEsNiArMTI0LDMyIEBAIHN0cnVjdCBtbWNfYmxrX2RhdGEgew0KPiAgCWlu dAlhcmVhX3R5cGU7DQo+ICB9Ow0KPiAgDQo+ICsvKiBEZXZpY2UgdHlwZSBmb3IgUlBNQiBjaGFy YWN0ZXIgZGV2aWNlcyAqLw0KPiArc3RhdGljIGRldl90IG1tY19ycG1iX2RldnQ7DQo+ICsNCj4g Ky8qIEJ1cyB0eXBlIGZvciBSUE1CIGNoYXJhY3RlciBkZXZpY2VzICovDQo+ICtzdGF0aWMgc3Ry dWN0IGJ1c190eXBlIG1tY19ycG1iX2J1c190eXBlID0gew0KPiArCS5uYW1lID0gInJwbWIiLA0K QWxzbyBuZWVkIHJlbmFtaW5nIHRvICdtbWNfcnBtYicsIHRoaXMgZ29lcyB0byBBQkkgL3N5cy9i dXMvbW1jX3JwbWIvIA0KSSdtIG5vdCBDQ2VkIHRvIHdob2xlIHNlcmllcyBzbyBub3Qgc3VyZSB5 b3UndmUgdXBkYXRlZCBhbHNvDQpEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy0q IA0KDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBtbWNfcnBtYl9kYXRhIC0gc3Bl Y2lhbCBSUE1CIGRldmljZSB0eXBlIGZvciB0aGVzZSBhcmVhcw0KPiArICogQGRldjogdGhlIGRl dmljZSBmb3IgdGhlIFJQTUIgYXJlYQ0KPiArICogQGNocmRldjogY2hhcmFjdGVyIGRldmljZSBm b3IgdGhlIFJQTUIgYXJlYQ0KPiArICogQGlkOiB1bmlxdWUgZGV2aWNlIElEIG51bWJlcg0KPiAr ICogQHBhcnRfaW5kZXg6IHBhcnRpdGlvbiBpbmRleCAoMCBvbiBmaXJzdCkNCj4gKyAqIEBtZDog cGFyZW50IE1NQyBibG9jayBkZXZpY2UNCj4gKyAqIEBub2RlOiBsaXN0IGl0ZW0sIHNvIHdlIGNh biBwdXQgdGhpcyBkZXZpY2Ugb24gYSBsaXN0DQo+ICsgKi8NCj4gK3N0cnVjdCBtbWNfcnBtYl9k YXRhIHsNCj4gKwlzdHJ1Y3QgZGV2aWNlIGRldjsNCj4gKwlzdHJ1Y3QgY2RldiBjaHJkZXY7DQo+ ICsJaW50IGlkOw0KPiArCXVuc2lnbmVkIGludCBwYXJ0X2luZGV4Ow0KPiArCXN0cnVjdCBtbWNf YmxrX2RhdGEgKm1kOw0KPiArCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsNCj4gK307DQo+ICsNCj4g IHN0YXRpYyBERUZJTkVfTVVURVgob3Blbl9sb2NrKTsNCj4gIA0KPiAgbW9kdWxlX3BhcmFtKHBl cmRldl9taW5vcnMsIGludCwgMDQ0NCk7DQo+IEBAIC0yOTksNiArMzI4LDcgQEAgc3RydWN0IG1t Y19ibGtfaW9jX2RhdGEgew0KPiAgCXN0cnVjdCBtbWNfaW9jX2NtZCBpYzsNCj4gIAl1bnNpZ25l ZCBjaGFyICpidWY7DQo+ICAJdTY0IGJ1Zl9ieXRlczsNCj4gKwlzdHJ1Y3QgbW1jX3JwbWJfZGF0 YSAqcnBtYjsNCj4gIH07DQo+ICANCj4gIHN0YXRpYyBzdHJ1Y3QgbW1jX2Jsa19pb2NfZGF0YSAq bW1jX2Jsa19pb2N0bF9jb3B5X2Zyb21fdXNlcigNCj4gQEAgLTQzNywxNCArNDY3LDI1IEBAIHN0 YXRpYyBpbnQgX19tbWNfYmxrX2lvY3RsX2NtZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHN0cnVj dCBtbWNfYmxrX2RhdGEgKm1kLA0KPiAgCXN0cnVjdCBtbWNfcmVxdWVzdCBtcnEgPSB7fTsNCj4g IAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2c7DQo+ICAJaW50IGVycjsNCj4gLQlib29sIGlzX3JwbWIg PSBmYWxzZTsNCj4gKwl1bnNpZ25lZCBpbnQgdGFyZ2V0X3BhcnQ7DQo+ICAJdTMyIHN0YXR1cyA9 IDA7DQo+ICANCj4gIAlpZiAoIWNhcmQgfHwgIW1kIHx8ICFpZGF0YSkNCj4gIAkJcmV0dXJuIC1F SU5WQUw7DQo+ICANCj4gLQlpZiAobWQtPmFyZWFfdHlwZSAmIE1NQ19CTEtfREFUQV9BUkVBX1JQ TUIpDQo+IC0JCWlzX3JwbWIgPSB0cnVlOw0KPiArCS8qDQo+ICsJICogVGhlIFJQTUIgYWNjZXNz ZXMgY29tZXMgaW4gZnJvbSB0aGUgY2hhcmFjdGVyIGRldmljZSwgc28gd2UNCj4gKwkgKiBuZWVk IHRvIHRhcmdldCB0aGVzZSBleHBsaWNpdGx5LiBFbHNlIHdlIGp1c3QgdGFyZ2V0IHRoZQ0KPiAr CSAqIHBhcnRpdGlvbiB0eXBlIGZvciB0aGUgYmxvY2sgZGV2aWNlIHRoZSBpb2N0bCgpIHdhcyBp c3N1ZWQNCj4gKwkgKiBvbi4NCj4gKwkgKi8NCj4gKwlpZiAoaWRhdGEtPnJwbWIpIHsNCj4gKwkJ LyogU3VwcG9ydCBtdWx0aXBsZSBSUE1CIHBhcnRpdGlvbnMgKi8NCj4gKwkJdGFyZ2V0X3BhcnQg PSBpZGF0YS0+cnBtYi0+cGFydF9pbmRleDsNCj4gKwkJdGFyZ2V0X3BhcnQgfD0gRVhUX0NTRF9Q QVJUX0NPTkZJR19BQ0NfUlBNQjsNCj4gKwl9IGVsc2Ugew0KPiArCQl0YXJnZXRfcGFydCA9IG1k LT5wYXJ0X3R5cGU7DQo+ICsJfQ0KPiAgDQo+ICAJY21kLm9wY29kZSA9IGlkYXRhLT5pYy5vcGNv ZGU7DQo+ICAJY21kLmFyZyA9IGlkYXRhLT5pYy5hcmc7DQo+IEBAIC00ODgsNyArNTI5LDcgQEAg c3RhdGljIGludCBfX21tY19ibGtfaW9jdGxfY21kKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgc3Ry dWN0IG1tY19ibGtfZGF0YSAqbWQsDQo+ICANCj4gIAltcnEuY21kID0gJmNtZDsNCj4gIA0KPiAt CWVyciA9IG1tY19ibGtfcGFydF9zd2l0Y2goY2FyZCwgbWQtPnBhcnRfdHlwZSk7DQo+ICsJZXJy ID0gbW1jX2Jsa19wYXJ0X3N3aXRjaChjYXJkLCB0YXJnZXRfcGFydCk7DQo+ICAJaWYgKGVycikN Cj4gIAkJcmV0dXJuIGVycjsNCj4gIA0KPiBAQCAtNDk4LDcgKzUzOSw3IEBAIHN0YXRpYyBpbnQg X19tbWNfYmxrX2lvY3RsX2NtZChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHN0cnVjdCBtbWNfYmxr X2RhdGEgKm1kLA0KPiAgCQkJcmV0dXJuIGVycjsNCj4gIAl9DQo+ICANCj4gLQlpZiAoaXNfcnBt Yikgew0KPiArCWlmIChpZGF0YS0+cnBtYikgew0KPiAgCQllcnIgPSBtbWNfc2V0X2Jsb2NrY291 bnQoY2FyZCwgZGF0YS5ibG9ja3MsDQo+ICAJCQlpZGF0YS0+aWMud3JpdGVfZmxhZyAmICgxIDw8 IDMxKSk7DQo+ICAJCWlmIChlcnIpDQo+IEBAIC01MzgsNyArNTc5LDcgQEAgc3RhdGljIGludCBf X21tY19ibGtfaW9jdGxfY21kKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgc3RydWN0IG1tY19ibGtf ZGF0YSAqbWQsDQo+ICANCj4gIAltZW1jcHkoJihpZGF0YS0+aWMucmVzcG9uc2UpLCBjbWQucmVz cCwgc2l6ZW9mKGNtZC5yZXNwKSk7DQo+ICANCj4gLQlpZiAoaXNfcnBtYikgew0KPiArCWlmIChp ZGF0YS0+cnBtYikgew0KPiAgCQkvKg0KPiAgCQkgKiBFbnN1cmUgUlBNQiBjb21tYW5kIGhhcyBj b21wbGV0ZWQgYnkgcG9sbGluZyBDTUQxMw0KPiAgCQkgKiAiU2VuZCBTdGF0dXMiLg0KPiBAQCAt NTU0LDcgKzU5NSw4IEBAIHN0YXRpYyBpbnQgX19tbWNfYmxrX2lvY3RsX2NtZChzdHJ1Y3QgbW1j X2NhcmQgKmNhcmQsIHN0cnVjdCBtbWNfYmxrX2RhdGEgKm1kLA0KPiAgfQ0KPiAgDQo+ICBzdGF0 aWMgaW50IG1tY19ibGtfaW9jdGxfY21kKHN0cnVjdCBtbWNfYmxrX2RhdGEgKm1kLA0KPiAtCQkJ ICAgICBzdHJ1Y3QgbW1jX2lvY19jbWQgX191c2VyICppY19wdHIpDQo+ICsJCQkgICAgIHN0cnVj dCBtbWNfaW9jX2NtZCBfX3VzZXIgKmljX3B0ciwNCj4gKwkJCSAgICAgc3RydWN0IG1tY19ycG1i X2RhdGEgKnJwbWIpDQo+ICB7DQo+ICAJc3RydWN0IG1tY19ibGtfaW9jX2RhdGEgKmlkYXRhOw0K PiAgCXN0cnVjdCBtbWNfYmxrX2lvY19kYXRhICppZGF0YXNbMV07DQo+IEBAIC01NjYsNiArNjA4 LDggQEAgc3RhdGljIGludCBtbWNfYmxrX2lvY3RsX2NtZChzdHJ1Y3QgbW1jX2Jsa19kYXRhICpt ZCwNCj4gIAlpZGF0YSA9IG1tY19ibGtfaW9jdGxfY29weV9mcm9tX3VzZXIoaWNfcHRyKTsNCj4g IAlpZiAoSVNfRVJSKGlkYXRhKSkNCj4gIAkJcmV0dXJuIFBUUl9FUlIoaWRhdGEpOw0KPiArCS8q IFRoaXMgd2lsbCBiZSBOVUxMIG9uIG5vbi1SUE1CIGlvY3RsKCk6cyAqLw0KPiArCWlkYXRhLT5y cG1iID0gcnBtYjsNCj4gIA0KPiAgCWNhcmQgPSBtZC0+cXVldWUuY2FyZDsNCj4gIAlpZiAoSVNf RVJSKGNhcmQpKSB7DQo+IEBAIC01ODEsNyArNjI1LDEwIEBAIHN0YXRpYyBpbnQgbW1jX2Jsa19p b2N0bF9jbWQoc3RydWN0IG1tY19ibGtfZGF0YSAqbWQsDQo+ICAJCWlkYXRhLT5pYy53cml0ZV9m bGFnID8gUkVRX09QX0RSVl9PVVQgOiBSRVFfT1BfRFJWX0lOLA0KPiAgCQlfX0dGUF9SRUNMQUlN KTsNCj4gIAlpZGF0YXNbMF0gPSBpZGF0YTsNCj4gLQlyZXFfdG9fbW1jX3F1ZXVlX3JlcShyZXEp LT5kcnZfb3AgPSBNTUNfRFJWX09QX0lPQ1RMOw0KPiArCWlmIChycG1iKQ0KPiArCQlyZXFfdG9f bW1jX3F1ZXVlX3JlcShyZXEpLT5kcnZfb3AgPSBNTUNfRFJWX09QX0lPQ1RMX1JQTUI7DQo+ICsJ ZWxzZQ0KPiArCQlyZXFfdG9fbW1jX3F1ZXVlX3JlcShyZXEpLT5kcnZfb3AgPSBNTUNfRFJWX09Q X0lPQ1RMOw0KDQptYXliZSBuZWF0ZXIgdG8gdXNlID0gPzogaGVyZSwgaXQncyB1c2VkIGluIHRo aXMgbW9kdWxlIG9mdGVuwqANCiANCj4gIAlyZXFfdG9fbW1jX3F1ZXVlX3JlcShyZXEpLT5kcnZf b3BfZGF0YSA9IGlkYXRhczsNCj4gIAlyZXFfdG9fbW1jX3F1ZXVlX3JlcShyZXEpLT5pb2NfY291 bnQgPSAxOw0KPiAgCWJsa19leGVjdXRlX3JxKG1xLT5xdWV1ZSwgTlVMTCwgcmVxLCAwKTsNCj4g QEAgLTU5Niw3ICs2NDMsOCBAQCBzdGF0aWMgaW50IG1tY19ibGtfaW9jdGxfY21kKHN0cnVjdCBt bWNfYmxrX2RhdGEgKm1kLA0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgaW50IG1tY19ibGtfaW9jdGxf bXVsdGlfY21kKHN0cnVjdCBtbWNfYmxrX2RhdGEgKm1kLA0KPiAtCQkJCSAgIHN0cnVjdCBtbWNf aW9jX211bHRpX2NtZCBfX3VzZXIgKnVzZXIpDQo+ICsJCQkJICAgc3RydWN0IG1tY19pb2NfbXVs dGlfY21kIF9fdXNlciAqdXNlciwNCj4gKwkJCQkgICBzdHJ1Y3QgbW1jX3JwbWJfZGF0YSAqcnBt YikNCj4gIHsNCj4gIAlzdHJ1Y3QgbW1jX2Jsa19pb2NfZGF0YSAqKmlkYXRhID0gTlVMTDsNCj4g IAlzdHJ1Y3QgbW1jX2lvY19jbWQgX191c2VyICpjbWRzID0gdXNlci0+Y21kczsNCj4gQEAgLTYy Nyw2ICs2NzUsOCBAQCBzdGF0aWMgaW50IG1tY19ibGtfaW9jdGxfbXVsdGlfY21kKHN0cnVjdCBt bWNfYmxrX2RhdGEgKm1kLA0KPiAgCQkJbnVtX29mX2NtZHMgPSBpOw0KPiAgCQkJZ290byBjbWRf ZXJyOw0KPiAgCQl9DQo+ICsJCS8qIFRoaXMgd2lsbCBiZSBOVUxMIG9uIG5vbi1SUE1CIGlvY3Rs KCk6cyAqLw0KPiArCQlpZGF0YVtpXS0+cnBtYiA9IHJwbWI7DQo+ICAJfQ0KPiAgDQo+ICAJY2Fy ZCA9IG1kLT5xdWV1ZS5jYXJkOw0KPiBAQCAtNjQzLDcgKzY5MywxMCBAQCBzdGF0aWMgaW50IG1t Y19ibGtfaW9jdGxfbXVsdGlfY21kKHN0cnVjdCBtbWNfYmxrX2RhdGEgKm1kLA0KPiAgCXJlcSA9 IGJsa19nZXRfcmVxdWVzdChtcS0+cXVldWUsDQo+ICAJCWlkYXRhWzBdLT5pYy53cml0ZV9mbGFn ID8gUkVRX09QX0RSVl9PVVQgOiBSRVFfT1BfRFJWX0lOLA0KPiAgCQlfX0dGUF9SRUNMQUlNKTsN Cj4gLQlyZXFfdG9fbW1jX3F1ZXVlX3JlcShyZXEpLT5kcnZfb3AgPSBNTUNfRFJWX09QX0lPQ1RM Ow0KPiArCWlmIChycG1iKQ0KPiArCQlyZXFfdG9fbW1jX3F1ZXVlX3JlcShyZXEpLT5kcnZfb3Ag PSBNTUNfRFJWX09QX0lPQ1RMX1JQTUI7DQo+ICsJZWxzZQ0KPiArCQlyZXFfdG9fbW1jX3F1ZXVl X3JlcShyZXEpLT5kcnZfb3AgPSBNTUNfRFJWX09QX0lPQ1RMOw0KPiAgCXJlcV90b19tbWNfcXVl dWVfcmVxKHJlcSktPmRydl9vcF9kYXRhID0gaWRhdGE7DQo+ICAJcmVxX3RvX21tY19xdWV1ZV9y ZXEocmVxKS0+aW9jX2NvdW50ID0gbnVtX29mX2NtZHM7DQo+ICAJYmxrX2V4ZWN1dGVfcnEobXEt PnF1ZXVlLCBOVUxMLCByZXEsIDApOw0KPiBAQCAtNjkxLDcgKzc0NCw4IEBAIHN0YXRpYyBpbnQg bW1jX2Jsa19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUsDQo+ ICAJCWlmICghbWQpDQo+ICAJCQlyZXR1cm4gLUVJTlZBTDsNCj4gIAkJcmV0ID0gbW1jX2Jsa19p b2N0bF9jbWQobWQsDQo+IC0JCQkJCShzdHJ1Y3QgbW1jX2lvY19jbWQgX191c2VyICopYXJnKTsN Cj4gKwkJCQkJKHN0cnVjdCBtbWNfaW9jX2NtZCBfX3VzZXIgKilhcmcsDQo+ICsJCQkJCU5VTEwp Ow0KPiAgCQltbWNfYmxrX3B1dChtZCk7DQo+ICAJCXJldHVybiByZXQ7DQo+ICAJY2FzZSBNTUNf SU9DX01VTFRJX0NNRDoNCj4gQEAgLTcwMiw3ICs3NTYsOCBAQCBzdGF0aWMgaW50IG1tY19ibGtf aW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgZm1vZGVfdCBtb2RlLA0KPiAgCQlpZiAo IW1kKQ0KPiAgCQkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJCXJldCA9IG1tY19ibGtfaW9jdGxfbXVs dGlfY21kKG1kLA0KPiAtCQkJCQkoc3RydWN0IG1tY19pb2NfbXVsdGlfY21kIF9fdXNlciAqKWFy Zyk7DQo+ICsJCQkJCShzdHJ1Y3QgbW1jX2lvY19tdWx0aV9jbWQgX191c2VyICopYXJnLA0KPiAr CQkJCQlOVUxMKTsNCj4gIAkJbW1jX2Jsa19wdXQobWQpOw0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAg CWRlZmF1bHQ6DQo+IEBAIC0xMTc0LDE3ICsxMjI5LDE5IEBAIHN0YXRpYyB2b2lkIG1tY19ibGtf aXNzdWVfZHJ2X29wKHN0cnVjdCBtbWNfcXVldWUgKm1xLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxKQ0K PiAgCXN0cnVjdCBtbWNfcXVldWVfcmVxICptcV9ycTsNCj4gIAlzdHJ1Y3QgbW1jX2NhcmQgKmNh cmQgPSBtcS0+Y2FyZDsNCj4gIAlzdHJ1Y3QgbW1jX2Jsa19kYXRhICptZCA9IG1xLT5ibGtkYXRh Ow0KPiAtCXN0cnVjdCBtbWNfYmxrX2RhdGEgKm1haW5fbWQgPSBkZXZfZ2V0X2RydmRhdGEoJmNh cmQtPmRldik7DQo+ICAJc3RydWN0IG1tY19ibGtfaW9jX2RhdGEgKippZGF0YTsNCj4gKwlib29s IHJwbWJfaW9jdGw7DQo+ICAJdTggKipleHRfY3NkOw0KPiAgCXUzMiBzdGF0dXM7DQo+ICAJaW50 IHJldDsNCj4gIAlpbnQgaTsNCj4gIA0KPiAgCW1xX3JxID0gcmVxX3RvX21tY19xdWV1ZV9yZXEo cmVxKTsNCj4gKwlycG1iX2lvY3RsID0gKG1xX3JxLT5kcnZfb3AgPT0gTU1DX0RSVl9PUF9JT0NU TF9SUE1CKTsNCj4gIA0KPiAgCXN3aXRjaCAobXFfcnEtPmRydl9vcCkgew0KPiAgCWNhc2UgTU1D X0RSVl9PUF9JT0NUTDoNCj4gKwljYXNlIE1NQ19EUlZfT1BfSU9DVExfUlBNQjoNCj4gIAkJaWRh dGEgPSBtcV9ycS0+ZHJ2X29wX2RhdGE7DQo+ICAJCWZvciAoaSA9IDAsIHJldCA9IDA7IGkgPCBt cV9ycS0+aW9jX2NvdW50OyBpKyspIHsNCj4gIAkJCXJldCA9IF9fbW1jX2Jsa19pb2N0bF9jbWQo Y2FyZCwgbWQsIGlkYXRhW2ldKTsNCj4gQEAgLTExOTIsOCArMTI0OSw4IEBAIHN0YXRpYyB2b2lk IG1tY19ibGtfaXNzdWVfZHJ2X29wKHN0cnVjdCBtbWNfcXVldWUgKm1xLCBzdHJ1Y3QgcmVxdWVz dCAqcmVxKQ0KPiAgCQkJCWJyZWFrOw0KPiAgCQl9DQo+ICAJCS8qIEFsd2F5cyBzd2l0Y2ggYmFj ayB0byBtYWluIGFyZWEgYWZ0ZXIgUlBNQiBhY2Nlc3MgKi8NCj4gLQkJaWYgKG1kLT5hcmVhX3R5 cGUgJiBNTUNfQkxLX0RBVEFfQVJFQV9SUE1CKQ0KPiAtCQkJbW1jX2Jsa19wYXJ0X3N3aXRjaChj YXJkLCBtYWluX21kLT5wYXJ0X3R5cGUpOw0KPiArCQlpZiAocnBtYl9pb2N0bCkNCj4gKwkJCW1t Y19ibGtfcGFydF9zd2l0Y2goY2FyZCwgMCk7DQo+ICAJCWJyZWFrOw0KPiAgCWNhc2UgTU1DX0RS Vl9PUF9CT09UX1dQOg0KPiAgCQlyZXQgPSBtbWNfc3dpdGNoKGNhcmQsIEVYVF9DU0RfQ01EX1NF VF9OT1JNQUwsIEVYVF9DU0RfQk9PVF9XUCwNCj4gQEAgLTIwMjIsNiArMjA3OSw3IEBAIHN0YXRp YyBzdHJ1Y3QgbW1jX2Jsa19kYXRhICptbWNfYmxrX2FsbG9jX3JlcShzdHJ1Y3QgbW1jX2NhcmQg KmNhcmQsDQo+ICANCj4gIAlzcGluX2xvY2tfaW5pdCgmbWQtPmxvY2spOw0KPiAgCUlOSVRfTElT VF9IRUFEKCZtZC0+cGFydCk7DQo+ICsJSU5JVF9MSVNUX0hFQUQoJm1kLT5ycG1icyk7DQo+ICAJ bWQtPnVzYWdlID0gMTsNCj4gIA0KPiAgCXJldCA9IG1tY19pbml0X3F1ZXVlKCZtZC0+cXVldWUs IGNhcmQsICZtZC0+bG9jaywgc3VibmFtZSk7DQo+IEBAIC0yMTQwLDYgKzIxOTgsMTUzIEBAIHN0 YXRpYyBpbnQgbW1jX2Jsa19hbGxvY19wYXJ0KHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwNCj4gIAly ZXR1cm4gMDsNCj4gIH0NCj4gIA0KPiArLyoqDQo+ICsgKiBycG1iX2lvY3RsKCkgLSBpb2N0bCBo YW5kbGVyIGZvciB0aGUgUlBNQiBjaGFyZGV2DQo+ICsgKiBAZmlscDogdGhlIGNoYXJhY3RlciBk ZXZpY2UgZmlsZQ0KPiArICogQGNtZDogdGhlIGlvY3RsKCkgY29tbWFuZA0KPiArICogQGFyZzog dGhlIGFyZ3VtZW50IGZyb20gdXNlcnNwYWNlDQo+ICsgKg0KPiArICogVGhpcyB3aWxsIGVzc2Vu dGlhbGx5IGp1c3QgcmVkaXJlY3QgdGhlIGlvY3RsKClzIGNvbWluZyBpbiBvdmVyIHRvDQo+ICsg KiB0aGUgbWFpbiBibG9jayBkZXZpY2Ugc3Bhd25pbmcgdGhlIFJQTUIgY2hhcmFjdGVyIGRldmlj ZS4NCj4gKyAqLw0KPiArc3RhdGljIGxvbmcgcnBtYl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwg dW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQp3aWxsIGtlZXAgdGhlIG1tY18g cHJlZml4IGFsc28gaGVyZQ0KPiArew0KPiArCXN0cnVjdCBtbWNfcnBtYl9kYXRhICpycG1iID0g ZmlscC0+cHJpdmF0ZV9kYXRhOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlzd2l0Y2ggKGNtZCkg ew0KPiArCWNhc2UgTU1DX0lPQ19DTUQ6DQo+ICsJCXJldCA9IG1tY19ibGtfaW9jdGxfY21kKHJw bWItPm1kLA0KPiArCQkJCQkoc3RydWN0IG1tY19pb2NfY21kIF9fdXNlciAqKWFyZywNCj4gKwkJ CQkJcnBtYik7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgTU1DX0lPQ19NVUxUSV9DTUQ6DQo+ICsJ CXJldCA9IG1tY19ibGtfaW9jdGxfbXVsdGlfY21kKHJwbWItPm1kLA0KPiArCQkJCQkoc3RydWN0 IG1tY19pb2NfbXVsdGlfY21kIF9fdXNlciAqKWFyZywNCj4gKwkJCQkJcnBtYik7DQo+ICsJCWJy ZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWJyZWFrOw0KPiAr CX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsjaWZkZWYgQ09ORklHX0NPTVBB VA0KPiArc3RhdGljIGxvbmcgcnBtYl9pb2N0bF9jb21wYXQoc3RydWN0IGZpbGUgKmZpbHAsIHVu c2lnbmVkIGludCBjbWQsDQo+ICsJCQkgICAgICB1bnNpZ25lZCBsb25nIGFyZykNCnNhbWUgaGVy ZSwgdGhlIG1tY18gcHJlZml4DQo+ICt7DQo+ICsJcmV0dXJuIHJwbWJfaW9jdGwoZmlscCwgY21k LCAodW5zaWduZWQgbG9uZyljb21wYXRfcHRyKGFyZykpOw0KPiArfQ0KPiArI2VuZGlmDQo+ICsN Cj4gK3N0YXRpYyBpbnQgcnBtYl9jaHJkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlscCkNCj4gK3sNCnByZWZpeA0KPiArCXN0cnVjdCBtbWNfcnBtYl9kYXRhICpy cG1iID0gY29udGFpbmVyX29mKGlub2RlLT5pX2NkZXYsDQo+ICsJCQkJCQkgIHN0cnVjdCBtbWNf cnBtYl9kYXRhLCBjaHJkZXYpOw0KPiArDQo+ICsJZ2V0X2RldmljZSgmcnBtYi0+ZGV2KTsNCj4g KwlmaWxwLT5wcml2YXRlX2RhdGEgPSBycG1iOw0KPiArCW11dGV4X2xvY2soJm9wZW5fbG9jayk7 DQo+ICsJcnBtYi0+bWQtPnVzYWdlKys7DQo+ICsJbXV0ZXhfdW5sb2NrKCZvcGVuX2xvY2spOw0K PiArDQo+ICsJcmV0dXJuIG5vbnNlZWthYmxlX29wZW4oaW5vZGUsIGZpbHApOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IHJwbWJfY2hyZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwg c3RydWN0IGZpbGUgKmZpbHApDQo+ICt7DQo+ICsJc3RydWN0IG1tY19ycG1iX2RhdGEgKnJwbWIg PSBjb250YWluZXJfb2YoaW5vZGUtPmlfY2RldiwNCj4gKwkJCQkJCSAgc3RydWN0IG1tY19ycG1i X2RhdGEsIGNocmRldik7DQo+ICsNCj4gKwlwdXRfZGV2aWNlKCZycG1iLT5kZXYpOw0KPiArCW11 dGV4X2xvY2soJm9wZW5fbG9jayk7DQo+ICsJcnBtYi0+bWQtPnVzYWdlLS07DQo+ICsJbXV0ZXhf dW5sb2NrKCZvcGVuX2xvY2spOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJwbWJfZmlsZW9wcyA9IHsNCj4gKwku cmVsZWFzZSA9IHJwbWJfY2hyZGV2X3JlbGVhc2UsDQo+ICsJLm9wZW4gPSBycG1iX2NocmRldl9v cGVuLA0KPiArCS5vd25lciA9IFRISVNfTU9EVUxFLA0KPiArCS5sbHNlZWsgPSBub19sbHNlZWss DQo+ICsJLnVubG9ja2VkX2lvY3RsID0gcnBtYl9pb2N0bCwNCj4gKyNpZmRlZiBDT05GSUdfQ09N UEFUDQo+ICsJLmNvbXBhdF9pb2N0bCA9IHJwbWJfaW9jdGxfY29tcGF0LA0KPiArI2VuZGlmDQo+ ICt9Ow0KPiArDQo+ICsNCj4gK3N0YXRpYyBpbnQgbW1jX2Jsa19hbGxvY19ycG1iX3BhcnQoc3Ry dWN0IG1tY19jYXJkICpjYXJkLA0KPiArCQkJCSAgIHN0cnVjdCBtbWNfYmxrX2RhdGEgKm1kLA0K PiArCQkJCSAgIHVuc2lnbmVkIGludCBwYXJ0X2luZGV4LA0KPiArCQkJCSAgIHNlY3Rvcl90IHNp emUsDQo+ICsJCQkJICAgY29uc3QgY2hhciAqc3VibmFtZSkNCj4gK3sNCj4gKwlpbnQgZGV2aWR4 LCByZXQ7DQo+ICsJY2hhciBycG1iX25hbWVbRElTS19OQU1FX0xFTl07DQo+ICsJY2hhciBjYXBf c3RyWzEwXTsNCj4gKwlzdHJ1Y3QgbW1jX3JwbWJfZGF0YSAqcnBtYjsNCj4gKw0KPiArCS8qIFRo aXMgY3JlYXRlcyB0aGUgbWlub3IgbnVtYmVyIGZvciB0aGUgUlBNQiBjaGFyIGRldmljZSAqLw0K PiArCWRldmlkeCA9IGlkYV9zaW1wbGVfZ2V0KCZtbWNfcnBtYl9pZGEsIDAsIG1heF9kZXZpY2Vz LCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoZGV2aWR4IDwgMCkNCj4gKwkJcmV0dXJuIGRldmlkeDsN Cj4gKw0KPiArCXJwbWIgPSBremFsbG9jKHNpemVvZigqcnBtYiksIEdGUF9LRVJORUwpOw0KPiAr CWlmICghcnBtYikNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlzbnByaW50ZihycG1i X25hbWUsIHNpemVvZihycG1iX25hbWUpLA0KPiArCQkgIm1tY2JsayV1JXMiLCBjYXJkLT5ob3N0 LT5pbmRleCwgc3VibmFtZSA/IHN1Ym5hbWUgOiAiIik7DQo+ICsNCj4gKwlycG1iLT5pZCA9IGRl dmlkeDsNCj4gKwlycG1iLT5wYXJ0X2luZGV4ID0gcGFydF9pbmRleDsNCj4gKwlycG1iLT5kZXYu aW5pdF9uYW1lID0gcnBtYl9uYW1lOw0KPiArCXJwbWItPmRldi5idXMgPSAmbW1jX3JwbWJfYnVz X3R5cGU7DQo+ICsJcnBtYi0+ZGV2LmRldnQgPSBNS0RFVihNQUpPUihtbWNfcnBtYl9kZXZ0KSwg cnBtYi0+aWQpOw0KPiArCXJwbWItPmRldi5wYXJlbnQgPSAmY2FyZC0+ZGV2Ow0KPiArCWRldmlj ZV9pbml0aWFsaXplKCZycG1iLT5kZXYpOw0KPiArCWRldl9zZXRfZHJ2ZGF0YSgmcnBtYi0+ZGV2 LCBycG1iKTsNCj4gKwlycG1iLT5tZCA9IG1kOw0KPiArDQo+ICsJY2Rldl9pbml0KCZycG1iLT5j aHJkZXYsICZycG1iX2ZpbGVvcHMpOw0KPiArCXJwbWItPmNocmRldi5vd25lciA9IFRISVNfTU9E VUxFOw0KPiArCXJldCA9IGNkZXZfZGV2aWNlX2FkZCgmcnBtYi0+Y2hyZGV2LCAmcnBtYi0+ZGV2 KTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCXByX2VycigiJXM6IGNvdWxkIG5vdCBhZGQgY2hhcmFj dGVyIGRldmljZVxuIiwgcnBtYl9uYW1lKTsNCj4gKwkJZ290byBvdXRfcmVtb3ZlX2lkYTsNCj4g Kwl9DQo+ICsNCj4gKwlsaXN0X2FkZCgmcnBtYi0+bm9kZSwgJm1kLT5ycG1icyk7DQo+ICsNCj4g KwlzdHJpbmdfZ2V0X3NpemUoKHU2NClzaXplLCA1MTIsIFNUUklOR19VTklUU18yLA0KPiArCQkJ Y2FwX3N0ciwgc2l6ZW9mKGNhcF9zdHIpKTsNCj4gKw0KPiArCXByX2luZm8oIiVzOiAlcyAlcyBw YXJ0aXRpb24gJXUgJXMsIGNoYXJkZXYgKCVkOiVkKVxuIiwNCj4gKwkJcnBtYl9uYW1lLCBtbWNf Y2FyZF9pZChjYXJkKSwNCj4gKwkJbW1jX2NhcmRfbmFtZShjYXJkKSwgRVhUX0NTRF9QQVJUX0NP TkZJR19BQ0NfUlBNQiwgY2FwX3N0ciwNCj4gKwkJTUFKT1IobW1jX3JwbWJfZGV2dCksIHJwbWIt PmlkKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtvdXRfcmVtb3ZlX2lkYToNCj4gKwlp ZGFfc2ltcGxlX3JlbW92ZSgmbW1jX3JwbWJfaWRhLCBycG1iLT5pZCk7DQo+ICsJa2ZyZWUocnBt Yik7DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgbW1jX2Jsa19y ZW1vdmVfcnBtYl9wYXJ0KHN0cnVjdCBtbWNfcnBtYl9kYXRhICpycG1iKQ0KPiArew0KPiArCWNk ZXZfZGV2aWNlX2RlbCgmcnBtYi0+Y2hyZGV2LCAmcnBtYi0+ZGV2KTsNCj4gKwlkZXZpY2VfZGVs KCZycG1iLT5kZXYpOw0KPiArCWlkYV9zaW1wbGVfcmVtb3ZlKCZtbWNfcnBtYl9pZGEsIHJwbWIt PmlkKTsNCj4gKwlrZnJlZShycG1iKTsNCj4gK30NCj4gKw0KPiAgLyogTU1DIFBoeXNpY2FsIHBh cnRpdGlvbnMgY29uc2lzdCBvZiB0d28gYm9vdCBwYXJ0aXRpb25zIGFuZA0KPiAgICogdXAgdG8g Zm91ciBnZW5lcmFsIHB1cnBvc2UgcGFydGl0aW9ucy4NCj4gICAqIEZvciBlYWNoIHBhcnRpdGlv biBlbmFibGVkIGluIEVYVF9DU0QgYSBibG9jayBkZXZpY2Ugd2lsbCBiZSBhbGxvY2F0ZWRpDQo+ IEBAIC0yMTQ4LDEzICsyMzUzLDI2IEBAIHN0YXRpYyBpbnQgbW1jX2Jsa19hbGxvY19wYXJ0KHN0 cnVjdCBtbWNfY2FyZCAqY2FyZCwNCj4gIA0KPiAgc3RhdGljIGludCBtbWNfYmxrX2FsbG9jX3Bh cnRzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwgc3RydWN0IG1tY19ibGtfZGF0YSAqbWQpDQo+ICB7 DQo+IC0JaW50IGlkeCwgcmV0ID0gMDsNCj4gKwlpbnQgaWR4LCByZXQ7DQo+ICANCj4gIAlpZiAo IW1tY19jYXJkX21tYyhjYXJkKSkNCj4gIAkJcmV0dXJuIDA7DQo+ICANCj4gIAlmb3IgKGlkeCA9 IDA7IGlkeCA8IGNhcmQtPm5yX3BhcnRzOyBpZHgrKykgew0KPiAtCQlpZiAoY2FyZC0+cGFydFtp ZHhdLnNpemUpIHsNCj4gKwkJaWYgKGNhcmQtPnBhcnRbaWR4XS5hcmVhX3R5cGUgJiBNTUNfQkxL X0RBVEFfQVJFQV9SUE1CKSB7DQo+ICsJCQkvKg0KPiArCQkJICogUlBNQiBwYXJ0aXRpb25zIGRv ZXMgbm90IHByb3ZpZGUgYmxvY2sgYWNjZXNzLCB0aGV5DQo+ICsJCQkgKiBhcmUgb25seSBhY2Nl c3NlZCB1c2luZyBpb2N0bCgpOnMuIFRodXMgY3JlYXRlDQo+ICsJCQkgKiBzcGVjaWFsIFJQTUIg YmxvY2sgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGENCj4gKwkJCSAqIGJhY2tpbmcgYmxvY2sg cXVldWUgZm9yIHRoZXNlLg0KPiArCQkJICovDQo+ICsJCQlyZXQgPSBtbWNfYmxrX2FsbG9jX3Jw bWJfcGFydChjYXJkLCBtZCwNCj4gKwkJCQljYXJkLT5wYXJ0W2lkeF0ucGFydF9jZmcsDQo+ICsJ CQkJY2FyZC0+cGFydFtpZHhdLnNpemUgPj4gOSwNCj4gKwkJCQljYXJkLT5wYXJ0W2lkeF0ubmFt ZSk7DQo+ICsJCQlpZiAocmV0KQ0KPiArCQkJCXJldHVybiByZXQ7DQo+ICsJCX0gZWxzZSBpZiAo Y2FyZC0+cGFydFtpZHhdLnNpemUpIHsNCj4gIAkJCXJldCA9IG1tY19ibGtfYWxsb2NfcGFydChj YXJkLCBtZCwNCj4gIAkJCQljYXJkLT5wYXJ0W2lkeF0ucGFydF9jZmcsDQo+ICAJCQkJY2FyZC0+ cGFydFtpZHhdLnNpemUgPj4gOSwNCj4gQEAgLTIxNjYsNyArMjM4NCw3IEBAIHN0YXRpYyBpbnQg bW1jX2Jsa19hbGxvY19wYXJ0cyhzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsIHN0cnVjdCBtbWNfYmxr X2RhdGEgKm1kKQ0KPiAgCQl9DQo+ICAJfQ0KPiAgDQo+IC0JcmV0dXJuIHJldDsNCj4gKwlyZXR1 cm4gMDsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgbW1jX2Jsa19yZW1vdmVfcmVxKHN0cnVj dCBtbWNfYmxrX2RhdGEgKm1kKQ0KPiBAQCAtMjIwMyw3ICsyNDIxLDE1IEBAIHN0YXRpYyB2b2lk IG1tY19ibGtfcmVtb3ZlX3BhcnRzKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwNCj4gIHsNCj4gIAlz dHJ1Y3QgbGlzdF9oZWFkICpwb3MsICpxOw0KPiAgCXN0cnVjdCBtbWNfYmxrX2RhdGEgKnBhcnRf bWQ7DQo+ICsJc3RydWN0IG1tY19ycG1iX2RhdGEgKnJwbWI7DQo+ICANCj4gKwkvKiBSZW1vdmUg UlBNQiBwYXJ0aXRpb25zICovDQo+ICsJbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgcSwgJm1kLT5y cG1icykgew0KPiArCQlycG1iID0gbGlzdF9lbnRyeShwb3MsIHN0cnVjdCBtbWNfcnBtYl9kYXRh LCBub2RlKTsNCj4gKwkJbGlzdF9kZWwocG9zKTsNCj4gKwkJbW1jX2Jsa19yZW1vdmVfcnBtYl9w YXJ0KHJwbWIpOw0KPiArCX0NCj4gKwkvKiBSZW1vdmUgYmxvY2sgcGFydGl0aW9ucyAqLw0KPiAg CWxpc3RfZm9yX2VhY2hfc2FmZShwb3MsIHEsICZtZC0+cGFydCkgew0KPiAgCQlwYXJ0X21kID0g bGlzdF9lbnRyeShwb3MsIHN0cnVjdCBtbWNfYmxrX2RhdGEsIHBhcnQpOw0KPiAgCQlsaXN0X2Rl bChwb3MpOw0KPiBAQCAtMjUyMiw2ICsyNzQ4LDE3IEBAIHN0YXRpYyBpbnQgX19pbml0IG1tY19i bGtfaW5pdCh2b2lkKQ0KPiAgew0KPiAgCWludCByZXM7DQo+ICANCj4gKwlyZXMgID0gYnVzX3Jl Z2lzdGVyKCZtbWNfcnBtYl9idXNfdHlwZSk7DQo+ICsJaWYgKHJlcyA8IDApIHsNCj4gKwkJcHJf ZXJyKCJtbWNibGs6IGNvdWxkIG5vdCByZWdpc3RlciBSUE1CIGJ1cyB0eXBlXG4iKTsNCj4gKwkJ cmV0dXJuIHJlczsNCj4gKwl9DQo+ICsJcmVzID0gYWxsb2NfY2hyZGV2X3JlZ2lvbigmbW1jX3Jw bWJfZGV2dCwgMCwgTUFYX0RFVklDRVMsICJycG1iIik7DQo+ICsJaWYgKHJlcyA8IDApIHsNCj4g KwkJcHJfZXJyKCJtbWNibGs6IGZhaWxlZCB0byBhbGxvY2F0ZSBycG1iIGNocmRldiByZWdpb25c biIpOw0KPiArCQlnb3RvIG91dF9idXNfdW5yZWc7DQo+ICsJfQ0KPiArDQo+ICAJaWYgKHBlcmRl dl9taW5vcnMgIT0gQ09ORklHX01NQ19CTE9DS19NSU5PUlMpDQo+ICAJCXByX2luZm8oIm1tY2Js azogdXNpbmcgJWQgbWlub3JzIHBlciBkZXZpY2VcbiIsIHBlcmRldl9taW5vcnMpOw0KPiAgDQo+ IEBAIC0yNTI5LDE2ICsyNzY2LDIwIEBAIHN0YXRpYyBpbnQgX19pbml0IG1tY19ibGtfaW5pdCh2 b2lkKQ0KPiAgDQo+ICAJcmVzID0gcmVnaXN0ZXJfYmxrZGV2KE1NQ19CTE9DS19NQUpPUiwgIm1t YyIpOw0KPiAgCWlmIChyZXMpDQo+IC0JCWdvdG8gb3V0Ow0KPiArCQlnb3RvIG91dF9jaHJkZXZf dW5yZWc7DQo+ICANCj4gIAlyZXMgPSBtbWNfcmVnaXN0ZXJfZHJpdmVyKCZtbWNfZHJpdmVyKTsN Cj4gIAlpZiAocmVzKQ0KPiAtCQlnb3RvIG91dDI7DQo+ICsJCWdvdG8gb3V0X2Jsa2Rldl91bnJl ZzsNCj4gIA0KPiAgCXJldHVybiAwOw0KPiAtIG91dDI6DQo+ICsNCj4gK291dF9ibGtkZXZfdW5y ZWc6DQo+ICAJdW5yZWdpc3Rlcl9ibGtkZXYoTU1DX0JMT0NLX01BSk9SLCAibW1jIik7DQo+IC0g b3V0Og0KPiArb3V0X2NocmRldl91bnJlZzoNCj4gKwl1bnJlZ2lzdGVyX2NocmRldl9yZWdpb24o bW1jX3JwbWJfZGV2dCwgTUFYX0RFVklDRVMpOw0KPiArb3V0X2J1c191bnJlZzoNCj4gKwlidXNf dW5yZWdpc3RlcigmbW1jX3JwbWJfYnVzX3R5cGUpOw0KPiAgCXJldHVybiByZXM7DQo+ICB9DQo+ ICANCj4gQEAgLTI1NDYsNiArMjc4Nyw3IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBtbWNfYmxrX2V4 aXQodm9pZCkNCj4gIHsNCj4gIAltbWNfdW5yZWdpc3Rlcl9kcml2ZXIoJm1tY19kcml2ZXIpOw0K PiAgCXVucmVnaXN0ZXJfYmxrZGV2KE1NQ19CTE9DS19NQUpPUiwgIm1tYyIpOw0KPiArCXVucmVn aXN0ZXJfY2hyZGV2X3JlZ2lvbihtbWNfcnBtYl9kZXZ0LCBNQVhfREVWSUNFUyk7DQo+ICB9DQo+ ICANCj4gIG1vZHVsZV9pbml0KG1tY19ibGtfaW5pdCk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21tYy9jb3JlL3F1ZXVlLmggYi9kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmgNCj4gaW5kZXggMDRm Yzg5MzYwYTdhLi5hMmI2YTlmY2FiMDEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbW1jL2NvcmUv cXVldWUuaA0KPiArKysgYi9kcml2ZXJzL21tYy9jb3JlL3F1ZXVlLmgNCj4gQEAgLTM1LDEyICsz NSwxNCBAQCBzdHJ1Y3QgbW1jX2Jsa19yZXF1ZXN0IHsNCj4gIC8qKg0KPiAgICogZW51bSBtbWNf ZHJ2X29wIC0gZW51bWVyYXRlcyB0aGUgb3BlcmF0aW9ucyBpbiB0aGUgbW1jX3F1ZXVlX3JlcQ0K PiAgICogQE1NQ19EUlZfT1BfSU9DVEw6IGlvY3RsIG9wZXJhdGlvbg0KPiArICogQE1NQ19EUlZf T1BfSU9DVExfUlBNQjogUlBNQi1vcmllbnRlZCBpb2N0bCBvcGVyYXRpb24NCj4gICAqIEBNTUNf RFJWX09QX0JPT1RfV1A6IHdyaXRlIHByb3RlY3QgYm9vdCBwYXJ0aXRpb25zDQo+ICAgKiBATU1D X0RSVl9PUF9HRVRfQ0FSRF9TVEFUVVM6IGdldCBjYXJkIHN0YXR1cw0KPiAgICogQE1NQ19EUlZf T1BfR0VUX0VYVF9DU0Q6IGdldCB0aGUgRVhUIENTRCBmcm9tIGFuIGVNTUMgY2FyZA0KPiAgICov DQo+ICBlbnVtIG1tY19kcnZfb3Agew0KPiAgCU1NQ19EUlZfT1BfSU9DVEwsDQo+ICsJTU1DX0RS Vl9PUF9JT0NUTF9SUE1CLA0KPiAgCU1NQ19EUlZfT1BfQk9PVF9XUCwNCj4gIAlNTUNfRFJWX09Q X0dFVF9DQVJEX1NUQVRVUywNCj4gIAlNTUNfRFJWX09QX0dFVF9FWFRfQ1NELA==