This message generated a parse failure. Raw output follows here. Please use 'back' to navigate. From devnull@lkml.org Thu Apr 18 09:07:12 2024 >From mailfetcher Thu Oct 29 02:03:42 2020 Envelope-to: lkml@grols.ch Delivery-date: Thu, 29 Oct 2020 02:03:41 +0100 Received: from stout.grols.ch [195.201.141.146] by 72459556e3a9 with IMAP (fetchmail-6.3.26) for (single-drop); Thu, 29 Oct 2020 02:03:42 +0100 (CET) Received: from vger.kernel.org ([23.128.96.18]) by stout.grols.ch with esmtp (Exim 4.89) (envelope-from ) id 1kXwLs-0002JS-4b for lkml@grols.ch; Thu, 29 Oct 2020 02:03:41 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730478AbgJ2BD2 (ORCPT ); Wed, 28 Oct 2020 21:03:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730882AbgJ2BD2 (ORCPT ); Wed, 28 Oct 2020 2 Received: from gate2.alliedtelesis.co.nz (gate2.alliedtelesis.co.nz [IPv6:2001:df5:b000:5::4]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ACCCFC0613CF for ; Wed, 28 Oct 2020 18:03:27 -0700 (PDT) Received: from mmarshal3.atlnz.lc (mmarshal3.atlnz.lc [10.32.18.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by gate2.alliedtelesis.co.nz (Postfix) with ESMTPS id 2ACA7891B0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alliedtelesis.co.nz; s=mail181024; t=1603933403; bh=qMa+flmmx05HnF7eOb/i+3tyAigCvGBTQaSen5zQ5vM=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=YYEUz7yMHqIPVHggo0kt5qVCBUavaJtq0l/s Received: from svr-chch-ex1.atlnz.lc (Not Verified[10.32.16.77]) by mmarshal3.atlnz.lc with Trustwave SEG (v7,5,8,10121) id ; Thu, 29 Oct 2020 14:03:24 +1300 Received: from svr-chch-ex1.atlnz.lc (2001:df5:b000:bc8:409d:36f5:8899:92e8) by svr-chch-ex1.atlnz.lc (2001:df5:b000:bc8:409d:36f5:8899:92e8) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 29 Oct 2020 14:03:22 +1300 Received: from svr-chch-ex1.atlnz.lc ([fe80::409d:36f5:8899:92e8]) by svr-chch-ex1.atlnz.lc ([fe80::409d:36f5:8899:92e8%12]) with mapi id 15.00.1497.007; Thu, 29 Oct 2020 14:03:22 +1300 From: Chris Packham To: Guenter Roeck Cc: "jdelvare@suse.com" , Tobi Wulff , "linux-hwmon@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH 2/2] hwmon: (adt7470) Convert to regmap Thread-Topic: [PATCH 2/2] hwmon: (adt7470) Convert to regmap Thread-Index: AQHWpmgBmPH8/8oMoUWctE5nB16LFamk42kAgAgUb4A= Date: Thu, 29 Oct 2020 01:03:21 +0000 Message-Id: <81e7b950-b32e-af4c-5965-d71beb80b613@alliedtelesis.co.nz> References: <20201019223423.31488-1-chris.packham@alliedtelesis.co.nz> <20201019223423.31488-3-chris.packham@alliedtelesis.co.nz> <20201023214008.GA29435@roeck-us.net> In-Reply-To: <20201023214008.GA29435@roeck-us.net> Accept-Language: en-NZ, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted X-Originating-IP: [10.32.1.11] Content-Type: text/plain; charset="utf-8" Content-ID: <14FAD01878782C498CC53107CAAE0A1C@atlnz.lc> Content-Transfer-Encoding: base64 Mime-Version: 1.0 Precedence: bulk List-Id: X-Mailing-List: linux-kernel@vger.kernel.org Received-SPF: pass client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org X-Spam-Score: -2.9 X-Spam-Score-Bar: -- X-Spam-Action: no action X-Spam-Report: Action: no action Symbol: TO_DN_EQ_ADDR_SOME(0.00) Symbol: HAS_XOIP(0.00) Symbol: TO_DN_SOME(0.00) Symbol: R_SPF_ALLOW(-0.20) Symbol: MIME_BASE64_TEXT_BOGUS(1.00) Symbol: RCPT_COUNT_FIVE(0.00) Symbol: DKIM_TRACE(0.00) Symbol: MIME_BASE64_TEXT(0.10) Symbo DQpPbiAyNC8xMC8yMCAxMDo0MCBhbSwgR3VlbnRlciBSb2VjayB3cm90ZToNCj4gT24gVHVlLCBP Y3QgMjAsIDIwMjAgYXQgMTE6MzQ6MjNBTSArMTMwMCwgQ2hyaXMgUGFja2hhbSB3cm90ZToNCj4+ IENvbnZlcnQgdGhlIGFkdDc0NzAgdG8gdXNpbmcgcmVnbWFwIGFuZCBhZGQgZXJyb3IgaGFuZGxp bmcuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgUGFja2hhbSA8Y2hyaXMucGFja2hhbUBh bGxpZWR0ZWxlc2lzLmNvLm56Pg0KPj4gLS0tDQo+PiAgIGRyaXZlcnMvaHdtb24vYWR0NzQ3MC5j IHwgMzg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0NCj4+ICAgMSBm aWxlIGNoYW5nZWQsIDI1MCBpbnNlcnRpb25zKCspLCAxMzggZGVsZXRpb25zKC0pDQo+Pg0KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9hZHQ3 NDcwLmMNCj4+IGluZGV4IDJlOGZlYWNjY2Y4NC4uZDIwYWViM2EyZmRjIDEwMDY0NA0KPj4gLS0t IGEvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMNCj4+ICsrKyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3 MC5jDQo+PiBAQCAtMTgsNiArMTgsNyBAQA0KPj4gICAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4N Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2xvZzIuaD4NCj4+ICAgI2luY2x1ZGUgPGxpbnV4L2t0aHJl YWQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+PiAgICNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+DQo+PiAgICNpbmNsdWRlIDxsaW51eC91dGlsX21hY3Jvcy5oPg0KPj4gICANCj4+ IEBAIC0xMzcsNyArMTM4LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IG5vcm1hbF9p MmNbXSA9IHsgMHgyQywgMHgyRSwgMHgyRiwgSTJDX0NMSUVOVF9FTkQgfTsNCj4+ICAgI2RlZmlu ZSBBRFQ3NDcwX0ZSRVFfU0hJRlQJNA0KPj4gICANCj4+ICAgc3RydWN0IGFkdDc0NzBfZGF0YSB7 DQo+PiAtCXN0cnVjdCBpMmNfY2xpZW50CSpjbGllbnQ7DQo+PiArCXN0cnVjdCByZWdtYXAJCSpy ZWdtYXA7DQo+PiAgIAlzdHJ1Y3QgbXV0ZXgJCWxvY2s7DQo+PiAgIAljaGFyCQkJc2Vuc29yc192 YWxpZDsNCj4+ICAgCWNoYXIJCQlsaW1pdHNfdmFsaWQ7DQo+PiBAQCAtMTcxLDUxICsxNzIsNzMg QEAgc3RydWN0IGFkdDc0NzBfZGF0YSB7DQo+PiAgICAqIDE2LWJpdCByZWdpc3RlcnMgb24gdGhl IEFEVDc0NzAgYXJlIGxvdy1ieXRlIGZpcnN0LiAgVGhlIGRhdGEgc2hlZXQgc2F5cw0KPj4gICAg KiB0aGF0IHRoZSBsb3cgYnl0ZSBtdXN0IGJlIHJlYWQgYmVmb3JlIHRoZSBoaWdoIGJ5dGUuDQo+ PiAgICAqLw0KPj4gLXN0YXRpYyBpbmxpbmUgaW50IGFkdDc0NzBfcmVhZF93b3JkX2RhdGEoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnKQ0KPj4gK3N0YXRpYyBpbmxpbmUgaW50IGFk dDc0NzBfcmVhZF93b3JkX2RhdGEoc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0YSwgdTggcmVnKQ0K Pj4gICB7DQo+PiAtCXUxNiBmb287DQo+PiAtCWZvbyA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0 YShjbGllbnQsIHJlZyk7DQo+PiAtCWZvbyB8PSAoKHUxNilpMmNfc21idXNfcmVhZF9ieXRlX2Rh dGEoY2xpZW50LCByZWcgKyAxKSA8PCA4KTsNCj4+IC0JcmV0dXJuIGZvbzsNCj4+ICsJdTggdmFs WzJdOw0KPj4gKwlpbnQgZXJyOw0KPj4gKw0KPj4gKwllcnIgPSByZWdtYXBfYnVsa19yZWFkKGRh dGEtPnJlZ21hcCwgcmVnLCAmdmFsLCAyKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1 cm4gZXJyOw0KPj4gKw0KPj4gKwlyZXR1cm4gdmFsWzBdIHwgKHZhbFsxXSA8PCA4KTsNCj4+ICAg fQ0KPj4gICANCj4+IC1zdGF0aWMgaW5saW5lIGludCBhZHQ3NDcwX3dyaXRlX3dvcmRfZGF0YShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCByZWcsDQo+PiArc3RhdGljIGlubGluZSBpbnQg YWR0NzQ3MF93cml0ZV93b3JkX2RhdGEoc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0YSwgdTggcmVn LA0KPj4gICAJCQkJCSAgdTE2IHZhbHVlKQ0KPj4gICB7DQo+PiAtCXJldHVybiBpMmNfc21idXNf d3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSAmIDB4RkYpDQo+PiAtCSAgICAgICB8 fCBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnICsgMSwgdmFsdWUgPj4gOCk7 DQo+PiArCXU4IHZhbFsyXTsNCj4+ICsNCj4+ICsJdmFsWzBdID0gdmFsdWUgJiAweEZGOw0KPj4g Kwl2YWxbMV0gPSB2YWx1ZSA+PiA4Ow0KPj4gKw0KPj4gKwlyZXR1cm4gcmVnbWFwX2J1bGtfd3Jp dGUoZGF0YS0+cmVnbWFwLCByZWcsICZ2YWwsIDIpOw0KPj4gICB9DQo+PiAgIA0KPj4gICAvKiBQ cm9iZSBmb3IgdGVtcGVyYXR1cmUgc2Vuc29ycy4gIEFzc3VtZXMgbG9jayBpcyBoZWxkICovDQo+ PiAtc3RhdGljIGludCBhZHQ3NDcwX3JlYWRfdGVtcGVyYXR1cmVzKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQsDQo+PiAtCQkJCSAgICAgc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0YSkNCj4+ICtz dGF0aWMgaW50IGFkdDc0NzBfcmVhZF90ZW1wZXJhdHVyZXMoc3RydWN0IGFkdDc0NzBfZGF0YSAq ZGF0YSkNCj4+ICAgew0KPj4gICAJdW5zaWduZWQgbG9uZyByZXM7DQo+PiArCWludCBlcnI7DQo+ PiAgIAlpbnQgaTsNCj4+ICAgCXU4IGNmZywgcHdtWzRdLCBwd21fY2ZnWzJdOw0KPj4gICANCj4+ ICAgCS8qIHNhdmUgcHdtWzEtNF0gY29uZmlnIHJlZ2lzdGVyICovDQo+PiAtCXB3bV9jZmdbMF0g PSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDcwX1JFR19QV01fQ0ZHKDAp KTsNCj4+IC0JcHdtX2NmZ1sxXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIEFE VDc0NzBfUkVHX1BXTV9DRkcoMikpOw0KPj4gKwllcnIgPSByZWdtYXBfcmF3X3JlYWQoZGF0YS0+ cmVnbWFwLCBBRFQ3NDcwX1JFR19QV01fQ0ZHKDApLCAmcHdtX2NmZ1swXSwgMSk7DQo+PiArCWlm IChlcnIgPCAwKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd19yZWFk KGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfUFdNX0NGRygyKSwgJnB3bV9jZmdbMV0sIDEpOw0K Pj4gKwlpZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiAgIA0KPj4gICAJLyogc2V0 IG1hbnVhbCBwd20gdG8gd2hhdGV2ZXIgaXQgaXMgc2V0IHRvIG5vdyAqLw0KPj4gLQlmb3IgKGkg PSAwOyBpIDwgQURUNzQ3MF9GQU5fQ09VTlQ7IGkrKykNCj4+IC0JCXB3bVtpXSA9IGkyY19zbWJ1 c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0NzBfUkVHX1BXTShpKSk7DQo+PiArCWVyciA9 IHJlZ21hcF9idWxrX3JlYWQoZGF0YS0+cmVnbWFwLCBBRFQ3NDcwX1JFR19QV00oMCksICZwd21b MF0sIEFEVDc0NzBfRkFOX0NPVU5UKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4g ZXJyOw0KPj4gICANCj4+ICAgCS8qIHB1dCBwd20gaW4gbWFudWFsIG1vZGUgKi8NCj4+IC0JaTJj X3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0NzBfUkVHX1BXTV9DRkcoMCksDQo+ PiAtCQlwd21fY2ZnWzBdICYgfihBRFQ3NDcwX1BXTV9BVVRPX01BU0spKTsNCj4+IC0JaTJjX3Nt YnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0NzBfUkVHX1BXTV9DRkcoMiksDQo+PiAt CQlwd21fY2ZnWzFdICYgfihBRFQ3NDcwX1BXTV9BVVRPX01BU0spKTsNCj4+ICsJcHdtX2NmZ1sw XSAmPSB+QURUNzQ3MF9QV01fQVVUT19NQVNLOw0KPj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRl KGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfUFdNX0NGRygwKSwgJnB3bV9jZmdbMF0sIDEpOw0K Pj4gKwlpZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArCXB3bV9jZmdbMV0gJj0g fkFEVDc0NzBfUFdNX0FVVE9fTUFTSzsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd193cml0ZShkYXRh LT5yZWdtYXAsIEFEVDc0NzBfUkVHX1BXTV9DRkcoMiksICZwd21fY2ZnWzFdLCAxKTsNCj4+ICsJ aWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gICANCj4gQW55IHNwZWNpYWwgcmVh c29uIGZvciBub3QgdXNpbmcgcmVnbWFwX3VwZGF0ZV9iaXRzKCkgPyBBbHNvLCB3aHkNCj4gcmVn bWFwX3Jhd19yZWFkKCkgYW5kIHJlZ21hcF9yYXdfd3JpdGUoKSBpbnN0ZWFkIG9mIGp1c3QgcmVn bWFwX3JlYWQoKQ0KPiBhbmQgcmVnbWFwX3dyaXRlKCkgPw0KPg0KPiBUaGVyZSBpcyBhIGxvdCBv ZiBzaW1pbGFyIGNvZGUgYmVsb3cuIEkgZG9uJ3QgcmVhbGx5IHNlZSB0aGUgYmVuZWZpdCBvZg0K PiBzd2l0Y2hpbmcgdG8gcmVnbWFwIGlmIHdlIGRvbid0IHVzZSB0aGUgZnVuY3Rpb25zIGl0IHBy b3ZpZGVzLg0KTm8gc3BlY2lmaWMgcmVhc29uLiBQcm9iYWJseSBqdXN0IGEgdG9vIGxpdGVyYWwg dHJhbnNsYXRpb24gb2YgdGhlIA0KZXhpc3RpbmcgY29kZS4gSSdsbCBzd2l0Y2ggdG8gcmVnbWFw X3VwZGF0ZV9iaXRzKCkgaW4gdjIuDQo+PiAgIAkvKiB3cml0ZSBwd20gY29udHJvbCB0byB3aGF0 ZXZlciBpdCB3YXMgKi8NCj4+IC0JZm9yIChpID0gMDsgaSA8IEFEVDc0NzBfRkFOX0NPVU5UOyBp KyspDQo+PiAtCQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgQURUNzQ3MF9SRUdf UFdNKGkpLCBwd21baV0pOw0KPj4gKwllcnIgPSByZWdtYXBfYnVsa193cml0ZShkYXRhLT5yZWdt YXAsIEFEVDc0NzBfUkVHX1BXTSgwKSwgJnB3bVswXSwgQURUNzQ3MF9GQU5fQ09VTlQpOw0KPj4g KwlpZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiAgIA0KPj4gICAJLyogc3RhcnQg cmVhZGluZyB0ZW1wZXJhdHVyZSBzZW5zb3JzICovDQo+PiAtCWNmZyA9IGkyY19zbWJ1c19yZWFk X2J5dGVfZGF0YShjbGllbnQsIEFEVDc0NzBfUkVHX0NGRyk7DQo+PiArCWVyciA9IHJlZ21hcF9y YXdfcmVhZChkYXRhLT5yZWdtYXAsIEFEVDc0NzBfUkVHX0NGRywgJmNmZywgMSk7DQo+PiArCWlm IChlcnIgPCAwKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICAgCWNmZyB8PSAweDgwOw0KPj4gLQlp MmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgQURUNzQ3MF9SRUdfQ0ZHLCBjZmcpOw0K Pj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfQ0ZH LCAmY2ZnLCAxKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gICAN Cj4+ICAgCS8qIERlbGF5IGlzIDIwMG1zICogbnVtYmVyIG9mIHRlbXAgc2Vuc29ycy4gKi8NCj4+ ICAgCXJlcyA9IG1zbGVlcF9pbnRlcnJ1cHRpYmxlKChkYXRhLT5udW1fdGVtcF9zZW5zb3JzID49 IDAgPw0KPj4gQEAgLTIyMywxMyArMjQ2LDIxIEBAIHN0YXRpYyBpbnQgYWR0NzQ3MF9yZWFkX3Rl bXBlcmF0dXJlcyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPj4gICAJCQkJICAgIFRFTVBf Q09MTEVDVElPTl9USU1FKSk7DQo+PiAgIA0KPj4gICAJLyogZG9uZSByZWFkaW5nIHRlbXBlcmF0 dXJlIHNlbnNvcnMgKi8NCj4+IC0JY2ZnID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVu dCwgQURUNzQ3MF9SRUdfQ0ZHKTsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd19yZWFkKGRhdGEtPnJl Z21hcCwgQURUNzQ3MF9SRUdfQ0ZHLCAmY2ZnLCAxKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiAr CQlyZXR1cm4gZXJyOw0KPj4gICAJY2ZnICY9IH4weDgwOw0KPj4gLQlpMmNfc21idXNfd3JpdGVf Ynl0ZV9kYXRhKGNsaWVudCwgQURUNzQ3MF9SRUdfQ0ZHLCBjZmcpOw0KPj4gKwllcnIgPSByZWdt YXBfcmF3X3dyaXRlKGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfQ0ZHLCAmY2ZnLCAxKTsNCj4+ ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gICANCj4+ICAgCS8qIHJlc3Rv cmUgcHdtWzEtNF0gY29uZmlnIHJlZ2lzdGVycyAqLw0KPj4gLQlpMmNfc21idXNfd3JpdGVfYnl0 ZV9kYXRhKGNsaWVudCwgQURUNzQ3MF9SRUdfUFdNX0NGRygwKSwgcHdtX2NmZ1swXSk7DQo+PiAt CWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDcwX1JFR19QV01fQ0ZHKDIp LCBwd21fY2ZnWzFdKTsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd193cml0ZShkYXRhLT5yZWdtYXAs IEFEVDc0NzBfUkVHX1BXTV9DRkcoMCksICZwd21fY2ZnWzBdLCAxKTsNCj4+ICsJaWYgKGVyciA8 IDApDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGRhdGEt PnJlZ21hcCwgQURUNzQ3MF9SRUdfUFdNX0NGRygyKSwgJnB3bV9jZmdbMV0sIDEpOw0KPj4gKwlp ZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiAgIA0KPj4gICAJaWYgKHJlcykgew0K Pj4gICAJCXByX2VycigiaGEgaGEsIGludGVycnVwdGVkXG4iKTsNCj4+IEBAIC0yNDAsMTMgKzI3 MSwxNiBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVhZF90ZW1wZXJhdHVyZXMoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCwNCj4+ICAgCWlmIChkYXRhLT5udW1fdGVtcF9zZW5zb3JzID49IDApDQo+ PiAgIAkJcmV0dXJuIDA7DQo+PiAgIA0KPj4gKwllcnIgPSByZWdtYXBfYnVsa19yZWFkKGRhdGEt PnJlZ21hcCwgQURUNzQ3MF9URU1QX1JFRygwKSwgJmRhdGEtPnRlbXBbMF0sDQo+PiArCQkJICAg ICAgIEFEVDc0NzBfVEVNUF9DT1VOVCk7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJcmV0dXJu IGVycjsNCj4+ICAgCWZvciAoaSA9IDA7IGkgPCBBRFQ3NDcwX1RFTVBfQ09VTlQ7IGkrKykgew0K Pj4gLQkJZGF0YS0+dGVtcFtpXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsDQo+ PiAtCQkJCQkJQURUNzQ3MF9URU1QX1JFRyhpKSk7DQo+PiAgIAkJaWYgKGRhdGEtPnRlbXBbaV0p DQo+PiAgIAkJCWRhdGEtPm51bV90ZW1wX3NlbnNvcnMgPSBpICsgMTsNCj4+ICAgCX0NCj4+ICAg CWRhdGEtPnRlbXBlcmF0dXJlc19wcm9iZWQgPSAxOw0KPj4gKw0KPiB3aGl0ZXNwYWNlIGNoYW5n ZQ0KPg0KPj4gICAJcmV0dXJuIDA7DQo+PiAgIH0NCj4+ICAgDQo+PiBAQCAtMjU0LDEwICsyODgs MTEgQEAgc3RhdGljIGludCBhZHQ3NDcwX3VwZGF0ZV90aHJlYWQodm9pZCAqcCkNCj4+ICAgew0K Pj4gICAJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHA7DQo+PiAgIAlzdHJ1Y3QgYWR0NzQ3 MF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+PiArCWludCBlcnIg PSAwOw0KPj4gICANCj4+ICAgCXdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7DQo+PiAg IAkJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7DQo+PiAtCQlhZHQ3NDcwX3JlYWRfdGVtcGVyYXR1 cmVzKGNsaWVudCwgZGF0YSk7DQo+PiArCQllcnIgPSBhZHQ3NDcwX3JlYWRfdGVtcGVyYXR1cmVz KGRhdGEpOw0KPj4gICAJCW11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7DQo+PiAgIA0KPj4gICAJ CXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7DQo+PiBAQCAtMjY3LDk0ICsz MDIsMTI0IEBAIHN0YXRpYyBpbnQgYWR0NzQ3MF91cGRhdGVfdGhyZWFkKHZvaWQgKnApDQo+PiAg IAkJc2NoZWR1bGVfdGltZW91dChtc2Vjc190b19qaWZmaWVzKGRhdGEtPmF1dG9fdXBkYXRlX2lu dGVydmFsKSk7DQo+PiAgIAl9DQo+PiAgIA0KPj4gLQlyZXR1cm4gMDsNCj4+ICsJcmV0dXJuIGVy cjsNCj4gSSBkb24ndCBpbW1lZGlhdGVseSBzZWUgdGhlIGJlbmVmaXQgb2YgcmV0dXJuaW5nIGFu IGVycm9yIGhlcmUuDQo+IFRoYXQgc2VlbXMgdG8gYmUgcXVpdGUgcmFuZG9tIChpdCBvbmx5IHJl dHVybnMgYW4gZXJyb3IgaWYgdGhlDQo+IG1vc3QgcmVjZW50IG9wZXJhdGlvbiBmYWlsZWQpLg0K QWdyZWVkLiBJIGRvIHdvbmRlciBpZiB3ZSBzaG91bGQgYmUgc2V0dGluZyBkYXRhLT50ZW1wZXJh dHVyZXNfcHJvYmVkIHRvIA0KMCBvciB0YWtpbmcgc29tZSBvdGhlciBhY3Rpb24gaWYgYWR0NzQ3 MF9yZWFkX3RlbXBlcmF0dXJlcygpIGZhaWxzIGJ1dCANCkknbGwgZHJvcCB0aGlzIGNodW5rIGZy b20gdGhlIHBhdGNoLg0KPg0KPj4gICB9DQo+PiAgIA0KPj4gICBzdGF0aWMgaW50IGFkdDc0NzBf dXBkYXRlX3NlbnNvcnMoc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0YSkNCj4+ICAgew0KPj4gLQlz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gZGF0YS0+Y2xpZW50Ow0KPj4gKwlpbnQgYWxhcm1z X21hc2s7DQo+PiArCXU4IHZhbHNbMl07DQo+PiAgIAl1OCBjZmc7DQo+PiArCWludCBlcnI7DQo+ PiAgIAlpbnQgaTsNCj4+ICAgDQo+PiAgIAlpZiAoIWRhdGEtPnRlbXBlcmF0dXJlc19wcm9iZWQp DQo+PiAtCQlhZHQ3NDcwX3JlYWRfdGVtcGVyYXR1cmVzKGNsaWVudCwgZGF0YSk7DQo+PiArCQll cnIgPSBhZHQ3NDcwX3JlYWRfdGVtcGVyYXR1cmVzKGRhdGEpOw0KPj4gICAJZWxzZQ0KPj4gLQkJ Zm9yIChpID0gMDsgaSA8IEFEVDc0NzBfVEVNUF9DT1VOVDsgaSsrKQ0KPj4gLQkJCWRhdGEtPnRl bXBbaV0gPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LA0KPj4gLQkJCQkJCUFEVDc0 NzBfVEVNUF9SRUcoaSkpOw0KPj4gKwkJZXJyID0gcmVnbWFwX2J1bGtfcmVhZChkYXRhLT5yZWdt YXAsIEFEVDc0NzBfVEVNUF9SRUcoMCksICZkYXRhLT50ZW1wWzBdLA0KPj4gKwkJCQkgICAgICAg QURUNzQ3MF9URU1QX0NPVU5UKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4gZXJy Ow0KPj4gICANCj4+IC0JZm9yIChpID0gMDsgaSA8IEFEVDc0NzBfRkFOX0NPVU5UOyBpKyspDQo+ PiAtCQlkYXRhLT5mYW5baV0gPSBhZHQ3NDcwX3JlYWRfd29yZF9kYXRhKGNsaWVudCwNCj4+IC0J CQkJCQlBRFQ3NDcwX1JFR19GQU4oaSkpOw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgQURUNzQ3MF9G QU5fQ09VTlQ7IGkrKykgew0KPj4gKwkJaW50IHZhbCA9IGFkdDc0NzBfcmVhZF93b3JkX2RhdGEo ZGF0YSwgQURUNzQ3MF9SRUdfRkFOKGkpKTsNCj4+ICAgDQo+PiAtCWZvciAoaSA9IDA7IGkgPCBB RFQ3NDcwX1BXTV9DT1VOVDsgaSsrKSB7DQo+PiAtCQlpbnQgcmVnOw0KPj4gLQkJaW50IHJlZ19t YXNrOw0KPj4gKwkJaWYgKHZhbCA8IDApDQo+PiArCQkJcmV0dXJuIHZhbDsNCj4+ICsNCj4+ICsJ CWRhdGEtPmZhbltpXSA9CXZhbDsNCj4+ICsJfQ0KPj4gICANCj4+IC0JCWRhdGEtPnB3bVtpXSA9 IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsDQo+PiAtCQkJCQkJQURUNzQ3MF9SRUdf UFdNKGkpKTsNCj4+ICsJZXJyID0gcmVnbWFwX2J1bGtfcmVhZChkYXRhLT5yZWdtYXAsIEFEVDc0 NzBfUkVHX1BXTSgwKSwgJmRhdGEtPnB3bVswXSwgQURUNzQ3MF9QV01fQ09VTlQpOw0KPj4gKwlp ZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCWZvciAoaSA9IDA7IGkg PCBBRFQ3NDcwX1BXTV9DT1VOVDsgaSsrKSB7DQo+PiArCQl1OCBtYXNrOw0KPj4gKwkJdTggdmFs Ow0KPj4gICANCj4+ICAgCQlpZiAoaSAlIDIpDQo+PiAtCQkJcmVnX21hc2sgPSBBRFQ3NDcwX1BX TTJfQVVUT19NQVNLOw0KPj4gKwkJCW1hc2sgPSBBRFQ3NDcwX1BXTTJfQVVUT19NQVNLOw0KPj4g ICAJCWVsc2UNCj4+IC0JCQlyZWdfbWFzayA9IEFEVDc0NzBfUFdNMV9BVVRPX01BU0s7DQo+PiAr CQkJbWFzayA9IEFEVDc0NzBfUFdNMV9BVVRPX01BU0s7DQo+PiAgIA0KPj4gLQkJcmVnID0gQURU NzQ3MF9SRUdfUFdNX0NGRyhpKTsNCj4+IC0JCWlmIChpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEo Y2xpZW50LCByZWcpICYgcmVnX21hc2spDQo+PiArCQllcnIgPSByZWdtYXBfcmF3X3JlYWQoZGF0 YS0+cmVnbWFwLCBBRFQ3NDcwX1JFR19QV01fQ0ZHKGkpLCAmdmFsLCAxKTsNCj4+ICsJCWlmIChl cnIgPCAwKQ0KPj4gKwkJCXJldHVybiBlcnI7DQo+PiArCQlpZiAodmFsICYgbWFzaykNCj4+ICAg CQkJZGF0YS0+cHdtX2F1dG9tYXRpY1tpXSA9IDE7DQo+PiAgIAkJZWxzZQ0KPj4gICAJCQlkYXRh LT5wd21fYXV0b21hdGljW2ldID0gMDsNCj4+ICAgDQo+PiAtCQlyZWcgPSBBRFQ3NDcwX1JFR19Q V01fQVVUT19URU1QKGkpOw0KPj4gLQkJY2ZnID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNs aWVudCwgcmVnKTsNCj4+ICsJCWVyciA9IHJlZ21hcF9yYXdfcmVhZChkYXRhLT5yZWdtYXAsIEFE VDc0NzBfUkVHX1BXTV9BVVRPX1RFTVAoaSksICZ2YWwsIDEpOw0KPj4gKwkJaWYgKGVyciA8IDAp DQo+PiArCQkJcmV0dXJuIGVycjsNCj4+ICAgCQlpZiAoIShpICUgMikpDQo+PiAtCQkJZGF0YS0+ cHdtX2F1dG9fdGVtcFtpXSA9IGNmZyA+PiA0Ow0KPj4gKwkJCWRhdGEtPnB3bV9hdXRvX3RlbXBb aV0gPSB2YWwgPj4gNDsNCj4+ICAgCQllbHNlDQo+PiAtCQkJZGF0YS0+cHdtX2F1dG9fdGVtcFtp XSA9IGNmZyAmIDB4RjsNCj4+ICsJCQlkYXRhLT5wd21fYXV0b190ZW1wW2ldID0gdmFsICYgMHhG Ow0KPj4gICAJfQ0KPj4gICANCj4+IC0JaWYgKGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGll bnQsIEFEVDc0NzBfUkVHX0NGRykgJg0KPj4gLQkgICAgQURUNzQ3MF9GU1BEX01BU0spDQo+PiAr CWVyciA9IHJlZ21hcF9yYXdfcmVhZChkYXRhLT5yZWdtYXAsIEFEVDc0NzBfUkVHX0NGRywgJmNm ZywgMSk7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsJaWYgKGNm ZyAmIEFEVDc0NzBfRlNQRF9NQVNLKQ0KPj4gICAJCWRhdGEtPmZvcmNlX3B3bV9tYXggPSAxOw0K Pj4gICAJZWxzZQ0KPj4gICAJCWRhdGEtPmZvcmNlX3B3bV9tYXggPSAwOw0KPj4gICANCj4+IC0J ZGF0YS0+YWxhcm0gPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDcwX1JF R19BTEFSTTEpOw0KPj4gKwllcnIgPSByZWdtYXBfYnVsa19yZWFkKGRhdGEtPnJlZ21hcCwgQURU NzQ3MF9SRUdfQUxBUk0xLCAmdmFsc1swXSwgMik7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJ cmV0dXJuIGVycjsNCj4+ICsJZGF0YS0+YWxhcm0gPSB2YWxzWzBdOw0KPj4gICAJaWYgKGRhdGEt PmFsYXJtICYgQURUNzQ3MF9PT0xfQUxBUk0pDQo+PiAtCQlkYXRhLT5hbGFybSB8PSBBTEFSTTIo aTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwNCj4+IC0JCQkJCQkJQURUNzQ3MF9SRUdf QUxBUk0yKSk7DQo+PiAtCWRhdGEtPmFsYXJtc19tYXNrID0gYWR0NzQ3MF9yZWFkX3dvcmRfZGF0 YShjbGllbnQsDQo+PiAtCQkJCQkJICAgQURUNzQ3MF9SRUdfQUxBUk0xX01BU0spOw0KPj4gKwkJ ZGF0YS0+YWxhcm0gfD0gQUxBUk0yKHZhbHNbMV0pOw0KPj4gKw0KPj4gKwlhbGFybXNfbWFzayA9 IGFkdDc0NzBfcmVhZF93b3JkX2RhdGEoZGF0YSwgQURUNzQ3MF9SRUdfQUxBUk0xX01BU0spOw0K Pj4gKwlpZiAoYWxhcm1zX21hc2sgPCAwKQ0KPj4gKwkJcmV0dXJuIGFsYXJtc19tYXNrOw0KPj4g KwlkYXRhLT5hbGFybXNfbWFzayA9IGFsYXJtc19tYXNrOw0KPj4gICANCj4+ICAgCXJldHVybiAw Ow0KPj4gICB9DQo+PiAgIA0KPj4gICBzdGF0aWMgaW50IGFkdDc0NzBfdXBkYXRlX2xpbWl0cyhz dHJ1Y3QgYWR0NzQ3MF9kYXRhICpkYXRhKQ0KPj4gICB7DQo+PiAtCXN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7DQo+PiArCWludCBlcnI7DQo+PiAgIAlpbnQgaTsNCj4+ ICAgDQo+PiAgIAlmb3IgKGkgPSAwOyBpIDwgQURUNzQ3MF9URU1QX0NPVU5UOyBpKyspIHsNCj4+ IC0JCWRhdGEtPnRlbXBfbWluW2ldID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwN Cj4+IC0JCQkJCQlBRFQ3NDcwX1RFTVBfTUlOX1JFRyhpKSk7DQo+PiAtCQlkYXRhLT50ZW1wX21h eFtpXSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsDQo+PiAtCQkJCQkJQURUNzQ3 MF9URU1QX01BWF9SRUcoaSkpOw0KPj4gKwkJZXJyID0gcmVnbWFwX3Jhd19yZWFkKGRhdGEtPnJl Z21hcCwgQURUNzQ3MF9URU1QX01JTl9SRUcoaSksICZkYXRhLT50ZW1wX21pbltpXSwgMSk7DQo+ PiArCQlpZiAoZXJyIDwgMCkNCj4+ICsJCQlyZXR1cm4gZXJyOw0KPj4gKwkJZXJyID0gcmVnbWFw X3Jhd19yZWFkKGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9URU1QX01BWF9SRUcoaSksICZkYXRhLT50 ZW1wX21heFtpXSwgMSk7DQo+PiArCQlpZiAoZXJyIDwgMCkNCj4+ICsJCQlyZXR1cm4gZXJyOw0K Pj4gICAJfQ0KPj4gICANCj4+ICAgCWZvciAoaSA9IDA7IGkgPCBBRFQ3NDcwX0ZBTl9DT1VOVDsg aSsrKSB7DQo+PiAtCQlkYXRhLT5mYW5fbWluW2ldID0gYWR0NzQ3MF9yZWFkX3dvcmRfZGF0YShj bGllbnQsDQo+PiAtCQkJCQkJQURUNzQ3MF9SRUdfRkFOX01JTihpKSk7DQo+PiAtCQlkYXRhLT5m YW5fbWF4W2ldID0gYWR0NzQ3MF9yZWFkX3dvcmRfZGF0YShjbGllbnQsDQo+PiAtCQkJCQkJQURU NzQ3MF9SRUdfRkFOX01BWChpKSk7DQo+PiArCQlpbnQgdmFsOw0KPj4gKw0KPj4gKwkJdmFsID0g YWR0NzQ3MF9yZWFkX3dvcmRfZGF0YShkYXRhLCBBRFQ3NDcwX1JFR19GQU5fTUlOKGkpKTsNCj4+ ICsJCWlmICh2YWwgPCAwKQ0KPj4gKwkJCXJldHVybiB2YWw7DQo+PiArCQlkYXRhLT5mYW5fbWlu W2ldID0gdmFsOw0KPj4gKwkJdmFsID0gYWR0NzQ3MF9yZWFkX3dvcmRfZGF0YShkYXRhLCBBRFQ3 NDcwX1JFR19GQU5fTUFYKGkpKTsNCj4+ICsJCWlmICh2YWwgPCAwKQ0KPj4gKwkJCXJldHVybiB2 YWw7DQo+PiArCQlkYXRhLT5mYW5fbWF4W2ldID0gdmFsOw0KPj4gICAJfQ0KPj4gICANCj4+ICAg CWZvciAoaSA9IDA7IGkgPCBBRFQ3NDcwX1BXTV9DT1VOVDsgaSsrKSB7DQo+PiAtCQlkYXRhLT5w d21fbWF4W2ldID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwNCj4+IC0JCQkJCQlB RFQ3NDcwX1JFR19QV01fTUFYKGkpKTsNCj4+IC0JCWRhdGEtPnB3bV9taW5baV0gPSBpMmNfc21i dXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LA0KPj4gLQkJCQkJCUFEVDc0NzBfUkVHX1BXTV9NSU4o aSkpOw0KPj4gLQkJZGF0YS0+cHdtX3RtaW5baV0gPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEo Y2xpZW50LA0KPj4gLQkJCQkJCUFEVDc0NzBfUkVHX1BXTV9UTUlOKGkpKTsNCj4+ICsJCWVyciA9 IHJlZ21hcF9yYXdfcmVhZChkYXRhLT5yZWdtYXAsIEFEVDc0NzBfUkVHX1BXTV9NQVgoaSksICZk YXRhLT5wd21fbWF4W2ldLCAxKTsNCj4+ICsJCWlmIChlcnIgPCAwKQ0KPj4gKwkJCXJldHVybiBl cnI7DQo+PiArCQllcnIgPSByZWdtYXBfcmF3X3JlYWQoZGF0YS0+cmVnbWFwLCBBRFQ3NDcwX1JF R19QV01fTUlOKGkpLCAmZGF0YS0+cHdtX21pbltpXSwgMSk7DQo+PiArCQlpZiAoZXJyIDwgMCkN Cj4+ICsJCQlyZXR1cm4gZXJyOw0KPj4gKwkJZXJyID0gcmVnbWFwX3Jhd19yZWFkKGRhdGEtPnJl Z21hcCwgQURUNzQ3MF9SRUdfUFdNX1RNSU4oaSksICZkYXRhLT5wd21fdG1pbltpXSwgMSk7DQo+ PiArCQlpZiAoZXJyIDwgMCkNCj4+ICsJCQlyZXR1cm4gZXJyOw0KPj4gICAJfQ0KPj4gICANCj4+ ICAgCXJldHVybiAwOw0KPj4gQEAgLTQ5MCw4ICs1NTUsOCBAQCBzdGF0aWMgc3NpemVfdCB0ZW1w X21pbl9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgIHsNCj4+ICAgCXN0cnVjdCBzZW5z b3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkZXZhdHRyKTsN Cj4+ICAgCXN0cnVjdCBhZHQ3NDcwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsN Cj4+IC0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGRhdGEtPmNsaWVudDsNCj4+ICAgCWxv bmcgdGVtcDsNCj4+ICsJaW50IGVycjsNCj4+ICAgDQo+PiAgIAlpZiAoa3N0cnRvbChidWYsIDEw LCAmdGVtcCkpDQo+PiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+PiBAQCAtNTAxLDExICs1NjYsMTEg QEAgc3RhdGljIHNzaXplX3QgdGVtcF9taW5fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPj4g ICANCj4+ICAgCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOw0KPj4gICAJZGF0YS0+dGVtcF9taW5b YXR0ci0+aW5kZXhdID0gdGVtcDsNCj4+IC0JaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGll bnQsIEFEVDc0NzBfVEVNUF9NSU5fUkVHKGF0dHItPmluZGV4KSwNCj4+IC0JCQkJICB0ZW1wKTsN Cj4+ICsJZXJyID0gcmVnbWFwX3Jhd193cml0ZShkYXRhLT5yZWdtYXAsIEFEVDc0NzBfVEVNUF9N SU5fUkVHKGF0dHItPmluZGV4KSwNCj4+ICsJCQkgICAgICAgJmRhdGEtPnRlbXBfbWluW2F0dHIt PmluZGV4XSwgMSk7DQo+PiAgIAltdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPj4gICANCj4+ IC0JcmV0dXJuIGNvdW50Ow0KPj4gKwlyZXR1cm4gZXJyIDwgMCA/IGVyciA6IGNvdW50Ow0KPj4g ICB9DQo+PiAgIA0KPj4gICBzdGF0aWMgc3NpemVfdCB0ZW1wX21heF9zaG93KHN0cnVjdCBkZXZp Y2UgKmRldiwNCj4+IEBAIC01MjYsOCArNTkxLDggQEAgc3RhdGljIHNzaXplX3QgdGVtcF9tYXhf c3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPj4gICB7DQo+PiAgIAlzdHJ1Y3Qgc2Vuc29yX2Rl dmljZV9hdHRyaWJ1dGUgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoZGV2YXR0cik7DQo+PiAg IAlzdHJ1Y3QgYWR0NzQ3MF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiAt CXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7DQo+PiAgIAlsb25nIHRl bXA7DQo+PiArCWludCBlcnI7DQo+PiAgIA0KPj4gICAJaWYgKGtzdHJ0b2woYnVmLCAxMCwgJnRl bXApKQ0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4gQEAgLTUzNywxMSArNjAyLDExIEBAIHN0 YXRpYyBzc2l6ZV90IHRlbXBfbWF4X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+ICAgDQo+ PiAgIAltdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgCWRhdGEtPnRlbXBfbWF4W2F0dHIt PmluZGV4XSA9IHRlbXA7DQo+PiAtCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBB RFQ3NDcwX1RFTVBfTUFYX1JFRyhhdHRyLT5pbmRleCksDQo+PiAtCQkJCSAgdGVtcCk7DQo+PiAr CWVyciA9IHJlZ21hcF9yYXdfd3JpdGUoZGF0YS0+cmVnbWFwLCBBRFQ3NDcwX1RFTVBfTUFYX1JF RyhhdHRyLT5pbmRleCksDQo+PiArCQkJICAgICAgICZkYXRhLT50ZW1wX21heFthdHRyLT5pbmRl eF0sIDEpOw0KPj4gICAJbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgDQo+PiAtCXJl dHVybiBjb3VudDsNCj4+ICsJcmV0dXJuIGVyciA8IDAgPyBlcnIgOiBjb3VudDsNCj4+ICAgfQ0K Pj4gICANCj4+ICAgc3RhdGljIHNzaXplX3QgdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIsDQo+PiBAQCAtNTc0LDYgKzYzOSw3IEBA IHN0YXRpYyBzc2l6ZV90IGFsYXJtX21hc2tfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPj4g ICB7DQo+PiAgIAlzdHJ1Y3QgYWR0NzQ3MF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRl dik7DQo+PiAgIAlsb25nIG1hc2s7DQo+PiArCWludCBlcnI7DQo+PiAgIA0KPj4gICAJaWYgKGtz dHJ0b3VsKGJ1ZiwgMCwgJm1hc2spKQ0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4gQEAgLTU4 MywxMCArNjQ5LDEwIEBAIHN0YXRpYyBzc2l6ZV90IGFsYXJtX21hc2tfc3RvcmUoc3RydWN0IGRl dmljZSAqZGV2LA0KPj4gICANCj4+ICAgCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOw0KPj4gICAJ ZGF0YS0+YWxhcm1zX21hc2sgPSBtYXNrOw0KPj4gLQlhZHQ3NDcwX3dyaXRlX3dvcmRfZGF0YShk YXRhLT5jbGllbnQsIEFEVDc0NzBfUkVHX0FMQVJNMV9NQVNLLCBtYXNrKTsNCj4+ICsJZXJyID0g YWR0NzQ3MF93cml0ZV93b3JkX2RhdGEoZGF0YSwgQURUNzQ3MF9SRUdfQUxBUk0xX01BU0ssIG1h c2spOw0KPj4gICAJbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgDQo+PiAtCXJldHVy biBjb3VudDsNCj4+ICsJcmV0dXJuIGVyciA8IDAgPyBlcnIgOiBjb3VudDsNCj4+ICAgfQ0KPj4g ICANCj4+ICAgc3RhdGljIHNzaXplX3QgZmFuX21heF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwN Cj4+IEBAIC02MTEsNyArNjc3LDYgQEAgc3RhdGljIHNzaXplX3QgZmFuX21heF9zdG9yZShzdHJ1 Y3QgZGV2aWNlICpkZXYsDQo+PiAgIHsNCj4+ICAgCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkZXZhdHRyKTsNCj4+ICAgCXN0cnVjdCBh ZHQ3NDcwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+IC0Jc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCA9IGRhdGEtPmNsaWVudDsNCj4+ICAgCWxvbmcgdGVtcDsNCj4+ICAg DQo+PiAgIAlpZiAoa3N0cnRvbChidWYsIDEwLCAmdGVtcCkgfHwgIXRlbXApDQo+PiBAQCAtNjIy LDcgKzY4Nyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZhbl9tYXhfc3RvcmUoc3RydWN0IGRldmljZSAq ZGV2LA0KPj4gICANCj4+ICAgCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOw0KPj4gICAJZGF0YS0+ ZmFuX21heFthdHRyLT5pbmRleF0gPSB0ZW1wOw0KPj4gLQlhZHQ3NDcwX3dyaXRlX3dvcmRfZGF0 YShjbGllbnQsIEFEVDc0NzBfUkVHX0ZBTl9NQVgoYXR0ci0+aW5kZXgpLCB0ZW1wKTsNCj4+ICsJ YWR0NzQ3MF93cml0ZV93b3JkX2RhdGEoZGF0YSwgQURUNzQ3MF9SRUdfRkFOX01BWChhdHRyLT5p bmRleCksIHRlbXApOw0KPiBXaHkgbm8gZXJyb3IgaGFuZGxpbmcgaGVyZSAoYW5kIGluIHNvbWUg b3RoZXIgcGxhY2VzKSA/DQpNaXNzZWQgdGhhdC4gV2lsbCBmaXguDQo+DQo+PiAgIAltdXRleF91 bmxvY2soJmRhdGEtPmxvY2spOw0KPj4gICANCj4+ICAgCXJldHVybiBjb3VudDsNCj4+IEBAIC02 NTAsNyArNzE1LDYgQEAgc3RhdGljIHNzaXplX3QgZmFuX21pbl9zdG9yZShzdHJ1Y3QgZGV2aWNl ICpkZXYsDQo+PiAgIHsNCj4+ICAgCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0 ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkZXZhdHRyKTsNCj4+ICAgCXN0cnVjdCBhZHQ3NDcwX2Rh dGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+IC0Jc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCA9IGRhdGEtPmNsaWVudDsNCj4+ICAgCWxvbmcgdGVtcDsNCj4+ICAgDQo+PiAgIAlp ZiAoa3N0cnRvbChidWYsIDEwLCAmdGVtcCkgfHwgIXRlbXApDQo+PiBAQCAtNjYxLDcgKzcyNSw3 IEBAIHN0YXRpYyBzc2l6ZV90IGZhbl9taW5fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPj4g ICANCj4+ICAgCW11dGV4X2xvY2soJmRhdGEtPmxvY2spOw0KPj4gICAJZGF0YS0+ZmFuX21pblth dHRyLT5pbmRleF0gPSB0ZW1wOw0KPj4gLQlhZHQ3NDcwX3dyaXRlX3dvcmRfZGF0YShjbGllbnQs IEFEVDc0NzBfUkVHX0ZBTl9NSU4oYXR0ci0+aW5kZXgpLCB0ZW1wKTsNCj4+ICsJYWR0NzQ3MF93 cml0ZV93b3JkX2RhdGEoZGF0YSwgQURUNzQ3MF9SRUdfRkFOX01JTihhdHRyLT5pbmRleCksIHRl bXApOw0KPj4gICAJbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgDQo+PiAgIAlyZXR1 cm4gY291bnQ7DQo+PiBAQCAtNjk5LDggKzc2Myw4IEBAIHN0YXRpYyBzc2l6ZV90IGZvcmNlX3B3 bV9tYXhfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPj4gICAJCQkJICAgY29uc3QgY2hhciAq YnVmLCBzaXplX3QgY291bnQpDQo+PiAgIHsNCj4+ICAgCXN0cnVjdCBhZHQ3NDcwX2RhdGEgKmRh dGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+IC0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCA9IGRhdGEtPmNsaWVudDsNCj4+ICAgCWxvbmcgdGVtcDsNCj4+ICsJaW50IGVycjsNCj4+ICAg CXU4IHJlZzsNCj4+ICAgDQo+PiAgIAlpZiAoa3N0cnRvbChidWYsIDEwLCAmdGVtcCkpDQo+PiBA QCAtNzA4LDE1ICs3NzIsMTggQEAgc3RhdGljIHNzaXplX3QgZm9yY2VfcHdtX21heF9zdG9yZShz dHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgIA0KPj4gICAJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7 DQo+PiAgIAlkYXRhLT5mb3JjZV9wd21fbWF4ID0gdGVtcDsNCj4+IC0JcmVnID0gaTJjX3NtYnVz X3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgQURUNzQ3MF9SRUdfQ0ZHKTsNCj4+ICsJZXJyID0gcmVn bWFwX3Jhd19yZWFkKGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfQ0ZHLCAmcmVnLCAxKTsNCj4+ ICsJaWYgKGVyciA8IDApDQo+PiArCQlnb3RvIG91dDsNCj4+ICAgCWlmICh0ZW1wKQ0KPj4gICAJ CXJlZyB8PSBBRFQ3NDcwX0ZTUERfTUFTSzsNCj4+ICAgCWVsc2UNCj4+ICAgCQlyZWcgJj0gfkFE VDc0NzBfRlNQRF9NQVNLOw0KPj4gLQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwg QURUNzQ3MF9SRUdfQ0ZHLCByZWcpOw0KPj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGRhdGEt PnJlZ21hcCwgQURUNzQ3MF9SRUdfQ0ZHLCAmcmVnLCAxKTsNCj4+ICtvdXQ6DQo+PiAgIAltdXRl eF91bmxvY2soJmRhdGEtPmxvY2spOw0KPj4gICANCj4+IC0JcmV0dXJuIGNvdW50Ow0KPj4gKwly ZXR1cm4gZXJyIDwgMCA/IGVyciA6IGNvdW50Ow0KPj4gICB9DQo+PiAgIA0KPj4gICBzdGF0aWMg c3NpemVfdCBwd21fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICpkZXZhdHRyLA0KPj4gQEAgLTczNiw4ICs4MDMsOCBAQCBzdGF0aWMgc3NpemVfdCBwd21f c3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0 ciwNCj4+ICAgew0KPj4gICAJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0g dG9fc2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOw0KPj4gICAJc3RydWN0IGFkdDc0NzBfZGF0YSAq ZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50ID0gZGF0YS0+Y2xpZW50Ow0KPj4gICAJbG9uZyB0ZW1wOw0KPj4gKwlpbnQgZXJyOw0KPj4g ICANCj4+ICAgCWlmIChrc3RydG9sKGJ1ZiwgMTAsICZ0ZW1wKSkNCj4+ICAgCQlyZXR1cm4gLUVJ TlZBTDsNCj4+IEBAIC03NDYsMTAgKzgxMywxMSBAQCBzdGF0aWMgc3NpemVfdCBwd21fc3RvcmUo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2YXR0ciwNCj4+ ICAgDQo+PiAgIAltdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgCWRhdGEtPnB3bVthdHRy LT5pbmRleF0gPSB0ZW1wOw0KPj4gLQlpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwg QURUNzQ3MF9SRUdfUFdNKGF0dHItPmluZGV4KSwgdGVtcCk7DQo+PiArCWVyciA9IHJlZ21hcF9y YXdfd3JpdGUoZGF0YS0+cmVnbWFwLCBBRFQ3NDcwX1JFR19QV00oYXR0ci0+aW5kZXgpLA0KPj4g KwkJCSAgICAgICAmZGF0YS0+cHdtW2F0dHItPmluZGV4XSwgMSk7DQo+PiAgIAltdXRleF91bmxv Y2soJmRhdGEtPmxvY2spOw0KPj4gICANCj4+IC0JcmV0dXJuIGNvdW50Ow0KPj4gKwlyZXR1cm4g ZXJyIDwgMCA/IGVyciA6IGNvdW50Ow0KPj4gICB9DQo+PiAgIA0KPj4gICAvKiBUaGVzZSBhcmUg dGhlIHZhbGlkIFBXTSBmcmVxdWVuY2llcyB0byB0aGUgbmVhcmVzdCBIeiAqLw0KPj4gQEAgLTc2 MSwxMyArODI5LDIxIEBAIHN0YXRpYyBzc2l6ZV90IHB3bTFfZnJlcV9zaG93KHN0cnVjdCBkZXZp Y2UgKmRldiwNCj4+ICAgCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRldmF0dHIs IGNoYXIgKmJ1ZikNCj4+ICAgew0KPj4gICAJc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0YSA9IGFk dDc0NzBfdXBkYXRlX2RldmljZShkZXYpOw0KPj4gLQl1bnNpZ25lZCBjaGFyIGNmZ19yZWdfMTsN Cj4+IC0JdW5zaWduZWQgY2hhciBjZmdfcmVnXzI7DQo+PiArCXU4IGNmZ19yZWdfMTsNCj4+ICsJ dTggY2ZnX3JlZ18yOw0KPj4gICAJaW50IGluZGV4Ow0KPj4gKwlpbnQgZXJyOw0KPj4gKw0KPj4g KwlpZiAoSVNfRVJSKGRhdGEpKQ0KPj4gKwkJcmV0dXJuIFBUUl9FUlIoZGF0YSk7DQo+PiAgIA0K Pj4gICAJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7DQo+PiAtCWNmZ19yZWdfMSA9IGkyY19zbWJ1 c19yZWFkX2J5dGVfZGF0YShkYXRhLT5jbGllbnQsIEFEVDc0NzBfUkVHX0NGRyk7DQo+PiAtCWNm Z19yZWdfMiA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShkYXRhLT5jbGllbnQsIEFEVDc0NzBf UkVHX0NGR18yKTsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd19yZWFkKGRhdGEtPnJlZ21hcCwgQURU NzQ3MF9SRUdfQ0ZHLCAmY2ZnX3JlZ18xLCAxKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQln b3RvIG91dDsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd19yZWFkKGRhdGEtPnJlZ21hcCwgQURUNzQ3 MF9SRUdfQ0ZHXzIsICZjZmdfcmVnXzIsIDEpOw0KPj4gKwlpZiAoZXJyIDwgMCkNCj4+ICsJCWdv dG8gb3V0Ow0KPj4gICAJbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgDQo+PiAgIAlp bmRleCA9IChjZmdfcmVnXzIgJiBBRFQ3NDcwX0ZSRVFfTUFTSykgPj4gQURUNzQ3MF9GUkVRX1NI SUZUOw0KPj4gQEAgLTc3Nyw2ICs4NTMsMTAgQEAgc3RhdGljIHNzaXplX3QgcHdtMV9mcmVxX3No b3coc3RydWN0IGRldmljZSAqZGV2LA0KPj4gICAJCWluZGV4ID0gQVJSQVlfU0laRShhZHQ3NDcw X2ZyZXFfbWFwKSAtIDE7DQo+PiAgIA0KPj4gICAJcmV0dXJuIHNjbnByaW50ZihidWYsIFBBR0Vf U0laRSwgIiVkXG4iLCBhZHQ3NDcwX2ZyZXFfbWFwW2luZGV4XSk7DQo+PiArDQo+PiArb3V0Og0K Pj4gKwltdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPj4gKwlyZXR1cm4gZXJyOw0KPj4gICB9 DQo+PiAgIA0KPj4gICBzdGF0aWMgc3NpemVfdCBwd20xX2ZyZXFfc3RvcmUoc3RydWN0IGRldmlj ZSAqZGV2LA0KPj4gQEAgLTc4NCwxMSArODY0LDExIEBAIHN0YXRpYyBzc2l6ZV90IHB3bTFfZnJl cV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgIAkJCSAgICAgICBjb25zdCBjaGFyICpi dWYsIHNpemVfdCBjb3VudCkNCj4+ICAgew0KPj4gICAJc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0 YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 ID0gZGF0YS0+Y2xpZW50Ow0KPj4gICAJbG9uZyBmcmVxOw0KPj4gICAJaW50IGluZGV4Ow0KPj4g ICAJaW50IGxvd19mcmVxID0gQURUNzQ3MF9DRkdfTEY7DQo+PiAtCXVuc2lnbmVkIGNoYXIgdmFs Ow0KPj4gKwlpbnQgZXJyOw0KPj4gKwl1OCB2YWw7DQo+PiAgIA0KPj4gICAJaWYgKGtzdHJ0b2wo YnVmLCAxMCwgJmZyZXEpKQ0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4gQEAgLTgwNCwxNiAr ODg0LDI2IEBAIHN0YXRpYyBzc2l6ZV90IHB3bTFfZnJlcV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpk ZXYsDQo+PiAgIA0KPj4gICAJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7DQo+PiAgIAkvKiBDb25m aWd1cmF0aW9uIFJlZ2lzdGVyIDEgKi8NCj4+IC0JdmFsID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9k YXRhKGNsaWVudCwgQURUNzQ3MF9SRUdfQ0ZHKTsNCj4+IC0JaTJjX3NtYnVzX3dyaXRlX2J5dGVf ZGF0YShjbGllbnQsIEFEVDc0NzBfUkVHX0NGRywNCj4+IC0JCQkJICAodmFsICYgfkFEVDc0NzBf Q0ZHX0xGKSB8IGxvd19mcmVxKTsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd19yZWFkKGRhdGEtPnJl Z21hcCwgQURUNzQ3MF9SRUdfQ0ZHLCAmdmFsLCAxKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiAr CQlnb3RvIG91dDsNCj4+ICsJdmFsICY9IH5BRFQ3NDcwX0NGR19MRjsNCj4+ICsJdmFsIHw9IGxv d19mcmVxOw0KPj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGRhdGEtPnJlZ21hcCwgQURUNzQ3 MF9SRUdfQ0ZHLCAmdmFsLCAxKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlnb3RvIG91dDsN Cj4+ICsNCj4+ICAgCS8qIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMiAqLw0KPj4gLQl2YWwgPSBp MmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDcwX1JFR19DRkdfMik7DQo+PiAt CWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDcwX1JFR19DRkdfMiwNCj4+ IC0JCSh2YWwgJiB+QURUNzQ3MF9GUkVRX01BU0spIHwgKGluZGV4IDw8IEFEVDc0NzBfRlJFUV9T SElGVCkpOw0KPj4gKwllcnIgPSByZWdtYXBfcmF3X3JlYWQoZGF0YS0+cmVnbWFwLCBBRFQ3NDcw X1JFR19DRkdfMiwgJnZhbCwgMSk7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJZ290byBvdXQ7 DQo+PiArCXZhbCAmPSB+QURUNzQ3MF9GUkVRX01BU0s7DQo+PiArCXZhbCB8PSBpbmRleCA8PCBB RFQ3NDcwX0ZSRVFfU0hJRlQ7DQo+PiArCWVyciA9IHJlZ21hcF9yYXdfd3JpdGUoZGF0YS0+cmVn bWFwLCBBRFQ3NDcwX1JFR19DRkdfMiwgJnZhbCwgMSk7DQo+PiArb3V0Og0KPj4gICAJbXV0ZXhf dW5sb2NrKCZkYXRhLT5sb2NrKTsNCj4+ICAgDQo+PiAtCXJldHVybiBjb3VudDsNCj4+ICsJcmV0 dXJuIGVyciA8IDAgPyBlcnIgOiBjb3VudDsNCj4+ICAgfQ0KPj4gICANCj4+ICAgc3RhdGljIHNz aXplX3QgcHdtX21heF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+IEBAIC04MzQsOCArOTI0 LDggQEAgc3RhdGljIHNzaXplX3QgcHdtX21heF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ PiAgIHsNCj4+ICAgCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3Nl bnNvcl9kZXZfYXR0cihkZXZhdHRyKTsNCj4+ICAgCXN0cnVjdCBhZHQ3NDcwX2RhdGEgKmRhdGEg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+IC0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9 IGRhdGEtPmNsaWVudDsNCj4+ICAgCWxvbmcgdGVtcDsNCj4+ICsJaW50IGVycjsNCj4+ICAgDQo+ PiAgIAlpZiAoa3N0cnRvbChidWYsIDEwLCAmdGVtcCkpDQo+PiAgIAkJcmV0dXJuIC1FSU5WQUw7 DQo+PiBAQCAtODQ0LDExICs5MzQsMTEgQEAgc3RhdGljIHNzaXplX3QgcHdtX21heF9zdG9yZShz dHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgIA0KPj4gICAJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7 DQo+PiAgIAlkYXRhLT5wd21fbWF4W2F0dHItPmluZGV4XSA9IHRlbXA7DQo+PiAtCWkyY19zbWJ1 c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDcwX1JFR19QV01fTUFYKGF0dHItPmluZGV4 KSwNCj4+IC0JCQkJICB0ZW1wKTsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd193cml0ZShkYXRhLT5y ZWdtYXAsIEFEVDc0NzBfUkVHX1BXTV9NQVgoYXR0ci0+aW5kZXgpLA0KPj4gKwkJCSAgICAgICAm ZGF0YS0+cHdtX21heFthdHRyLT5pbmRleF0sIDEpOw0KPj4gICAJbXV0ZXhfdW5sb2NrKCZkYXRh LT5sb2NrKTsNCj4+ICAgDQo+PiAtCXJldHVybiBjb3VudDsNCj4+ICsJcmV0dXJuIGVyciA8IDAg PyBlcnIgOiBjb3VudDsNCj4+ICAgfQ0KPj4gICANCj4+ICAgc3RhdGljIHNzaXplX3QgcHdtX21p bl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+IEBAIC04NjksOCArOTU5LDggQEAgc3RhdGlj IHNzaXplX3QgcHdtX21pbl9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgIHsNCj4+ICAg CXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0 cihkZXZhdHRyKTsNCj4+ICAgCXN0cnVjdCBhZHQ3NDcwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCj4+IC0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGRhdGEtPmNsaWVu dDsNCj4+ICAgCWxvbmcgdGVtcDsNCj4+ICsJaW50IGVycjsNCj4+ICAgDQo+PiAgIAlpZiAoa3N0 cnRvbChidWYsIDEwLCAmdGVtcCkpDQo+PiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+PiBAQCAtODc4 LDEyICs5NjgsMTEgQEAgc3RhdGljIHNzaXplX3QgcHdtX21pbl9zdG9yZShzdHJ1Y3QgZGV2aWNl ICpkZXYsDQo+PiAgIAl0ZW1wID0gY2xhbXBfdmFsKHRlbXAsIDAsIDI1NSk7DQo+PiAgIA0KPj4g ICAJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7DQo+PiAtCWRhdGEtPnB3bV9taW5bYXR0ci0+aW5k ZXhdID0gdGVtcDsNCj4+IC0JaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0 NzBfUkVHX1BXTV9NSU4oYXR0ci0+aW5kZXgpLA0KPj4gLQkJCQkgIHRlbXApOw0KPj4gKwllcnIg PSByZWdtYXBfcmF3X3dyaXRlKGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfUFdNX01JTihhdHRy LT5pbmRleCksDQo+PiArCQkJICAgICAgICZkYXRhLT5wd21fbWluW2F0dHItPmluZGV4XSwgMSk7 DQo+PiAgIAltdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPj4gICANCj4+IC0JcmV0dXJuIGNv dW50Ow0KPj4gKwlyZXR1cm4gZXJyIDwgMCA/IGVyciA6IGNvdW50Ow0KPj4gICB9DQo+PiAgIA0K Pj4gICBzdGF0aWMgc3NpemVfdCBwd21fdG1heF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+ IEBAIC05MTcsOCArMTAwNiw4IEBAIHN0YXRpYyBzc2l6ZV90IHB3bV90bWluX3N0b3JlKHN0cnVj dCBkZXZpY2UgKmRldiwNCj4+ICAgew0KPj4gICAJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmli dXRlICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOw0KPj4gICAJc3RydWN0IGFk dDc0NzBfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gLQlzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50ID0gZGF0YS0+Y2xpZW50Ow0KPj4gICAJbG9uZyB0ZW1wOw0KPj4gKwlp bnQgZXJyOw0KPj4gICANCj4+ICAgCWlmIChrc3RydG9sKGJ1ZiwgMTAsICZ0ZW1wKSkNCj4+ICAg CQlyZXR1cm4gLUVJTlZBTDsNCj4+IEBAIC05MjgsMTEgKzEwMTcsMTEgQEAgc3RhdGljIHNzaXpl X3QgcHdtX3RtaW5fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LA0KPj4gICANCj4+ICAgCW11dGV4 X2xvY2soJmRhdGEtPmxvY2spOw0KPj4gICAJZGF0YS0+cHdtX3RtaW5bYXR0ci0+aW5kZXhdID0g dGVtcDsNCj4+IC0JaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0NzBfUkVH X1BXTV9UTUlOKGF0dHItPmluZGV4KSwNCj4+IC0JCQkJICB0ZW1wKTsNCj4+ICsJZXJyID0gcmVn bWFwX3Jhd193cml0ZShkYXRhLT5yZWdtYXAsIEFEVDc0NzBfUkVHX1BXTV9UTUlOKGF0dHItPmlu ZGV4KSwNCj4+ICsJCQkgICAgICAgJmRhdGEtPnB3bV90bWluW2F0dHItPmluZGV4XSwgMSk7DQo+ PiAgIAltdXRleF91bmxvY2soJmRhdGEtPmxvY2spOw0KPj4gICANCj4+IC0JcmV0dXJuIGNvdW50 Ow0KPj4gKwlyZXR1cm4gZXJyIDwgMCA/IGVyciA6IGNvdW50Ow0KPj4gICB9DQo+PiAgIA0KPj4g ICBzdGF0aWMgc3NpemVfdCBwd21fYXV0b19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+IEBA IC05NTMsMTAgKzEwNDIsMTAgQEAgc3RhdGljIHNzaXplX3QgcHdtX2F1dG9fc3RvcmUoc3RydWN0 IGRldmljZSAqZGV2LA0KPj4gICB7DQo+PiAgIAlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1 dGUgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoZGV2YXR0cik7DQo+PiAgIAlzdHJ1Y3QgYWR0 NzQ3MF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiAtCXN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQgPSBkYXRhLT5jbGllbnQ7DQo+PiAgIAlpbnQgcHdtX2F1dG9fcmVnID0g QURUNzQ3MF9SRUdfUFdNX0NGRyhhdHRyLT5pbmRleCk7DQo+PiAgIAlpbnQgcHdtX2F1dG9fcmVn X21hc2s7DQo+PiAgIAlsb25nIHRlbXA7DQo+PiArCWludCBlcnI7DQo+PiAgIAl1OCByZWc7DQo+ PiAgIA0KPj4gICAJaWYgKGtzdHJ0b2woYnVmLCAxMCwgJnRlbXApKQ0KPj4gQEAgLTk3MywxNSAr MTA2MiwxOCBAQCBzdGF0aWMgc3NpemVfdCBwd21fYXV0b19zdG9yZShzdHJ1Y3QgZGV2aWNlICpk ZXYsDQo+PiAgIA0KPj4gICAJbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7DQo+PiAgIAlkYXRhLT5w d21fYXV0b21hdGljW2F0dHItPmluZGV4XSA9IHRlbXA7DQo+PiAtCXJlZyA9IGkyY19zbWJ1c19y ZWFkX2J5dGVfZGF0YShjbGllbnQsIHB3bV9hdXRvX3JlZyk7DQo+PiArCWVyciA9IHJlZ21hcF9y YXdfcmVhZChkYXRhLT5yZWdtYXAsIHB3bV9hdXRvX3JlZywgJnJlZywgMSk7DQo+PiArCWlmIChl cnIgPCAwKQ0KPj4gKwkJZ290byBvdXQ7DQo+PiAgIAlpZiAodGVtcCkNCj4+ICAgCQlyZWcgfD0g cHdtX2F1dG9fcmVnX21hc2s7DQo+PiAgIAllbHNlDQo+PiAgIAkJcmVnICY9IH5wd21fYXV0b19y ZWdfbWFzazsNCj4+IC0JaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIHB3bV9hdXRv X3JlZywgcmVnKTsNCj4+ICsJZXJyID0gcmVnbWFwX3Jhd193cml0ZShkYXRhLT5yZWdtYXAsIHB3 bV9hdXRvX3JlZywgJnJlZywgMSk7DQo+PiArb3V0Og0KPj4gICAJbXV0ZXhfdW5sb2NrKCZkYXRh LT5sb2NrKTsNCj4+ICAgDQo+PiAtCXJldHVybiBjb3VudDsNCj4+ICsJcmV0dXJuIGVyciA8IDAg PyBlcnIgOiBjb3VudDsNCj4+ICAgfQ0KPj4gICANCj4+ICAgc3RhdGljIHNzaXplX3QgcHdtX2F1 dG9fdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+IEBAIC0xMDE2LDkgKzExMDgsOSBA QCBzdGF0aWMgc3NpemVfdCBwd21fYXV0b190ZW1wX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwN Cj4+ICAgew0KPj4gICAJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9f c2Vuc29yX2Rldl9hdHRyKGRldmF0dHIpOw0KPj4gICAJc3RydWN0IGFkdDc0NzBfZGF0YSAqZGF0 YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 ID0gZGF0YS0+Y2xpZW50Ow0KPj4gICAJaW50IHB3bV9hdXRvX3JlZyA9IEFEVDc0NzBfUkVHX1BX TV9BVVRPX1RFTVAoYXR0ci0+aW5kZXgpOw0KPj4gICAJbG9uZyB0ZW1wOw0KPj4gKwlpbnQgZXJy Ow0KPj4gICAJdTggcmVnOw0KPj4gICANCj4+ICAgCWlmIChrc3RydG9sKGJ1ZiwgMTAsICZ0ZW1w KSkNCj4+IEBAIC0xMDMwLDcgKzExMjIsMTAgQEAgc3RhdGljIHNzaXplX3QgcHdtX2F1dG9fdGVt cF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgIA0KPj4gICAJbXV0ZXhfbG9jaygmZGF0 YS0+bG9jayk7DQo+PiAgIAlkYXRhLT5wd21fYXV0b21hdGljW2F0dHItPmluZGV4XSA9IHRlbXA7 DQo+PiAtCXJlZyA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGllbnQsIHB3bV9hdXRvX3Jl Zyk7DQo+PiArDQo+PiArCWVyciA9IHJlZ21hcF9yYXdfcmVhZChkYXRhLT5yZWdtYXAsIHB3bV9h dXRvX3JlZywgJnJlZywgMSk7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJZ290byBvdXQ7DQo+ PiAgIA0KPj4gICAJaWYgKCEoYXR0ci0+aW5kZXggJSAyKSkgew0KPj4gICAJCXJlZyAmPSAweEY7 DQo+PiBAQCAtMTA0MCwxMCArMTEzNSwxMSBAQCBzdGF0aWMgc3NpemVfdCBwd21fYXV0b190ZW1w X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+ICAgCQlyZWcgfD0gdGVtcCAmIDB4RjsNCj4+ ICAgCX0NCj4+ICAgDQo+PiAtCWkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBwd21f YXV0b19yZWcsIHJlZyk7DQo+PiArCWVyciA9IHJlZ21hcF9yYXdfd3JpdGUoZGF0YS0+cmVnbWFw LCBwd21fYXV0b19yZWcsICZyZWcsIDEpOw0KPj4gK291dDoNCj4+ICAgCW11dGV4X3VubG9jaygm ZGF0YS0+bG9jayk7DQo+PiAgIA0KPj4gLQlyZXR1cm4gY291bnQ7DQo+PiArCXJldHVybiBlcnIg PCAwID8gZXJyIDogY291bnQ7DQo+PiAgIH0NCj4+ICAgDQo+PiAgIHN0YXRpYyBzc2l6ZV90IGFs YXJtX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KPj4gQEAgLTEyODcsMjMgKzEzODMsMzUgQEAg c3RhdGljIGludCBhZHQ3NDcwX2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPj4g ICAJcmV0dXJuIDA7DQo+PiAgIH0NCj4+ICAgDQo+PiAtc3RhdGljIHZvaWQgYWR0NzQ3MF9pbml0 X2NsaWVudChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPj4gK3N0YXRpYyBpbnQgYWR0NzQ3 MF9pbml0X2NsaWVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBhZHQ3NDcwX2RhdGEgKmRh dGEpDQo+PiAgIHsNCj4+IC0JaW50IHJlZyA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGll bnQsIEFEVDc0NzBfUkVHX0NGRyk7DQo+PiArCWludCBlcnI7DQo+PiArCXU4IHZhbDsNCj4+ICAg DQo+PiAtCWlmIChyZWcgPCAwKSB7DQo+PiAtCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImNhbm5v dCByZWFkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJcbiIpOw0KPj4gLQl9IGVsc2Ugew0KPj4gLQkJ Lyogc3RhcnQgbW9uaXRvcmluZyAoYW5kIGRvIGEgc2VsZi10ZXN0KSAqLw0KPj4gLQkJaTJjX3Nt YnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0NzBfUkVHX0NGRywgcmVnIHwgMyk7DQo+ PiArCWVyciA9IHJlZ21hcF9yYXdfcmVhZChkYXRhLT5yZWdtYXAsIEFEVDc0NzBfUkVHX0NGRywg JnZhbCwgMSk7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQlkZXZfZXJyKGRldiwgImNhbm5v dCByZWFkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJcbiIpOw0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ ICAgCX0NCj4+ICsNCj4+ICsJdmFsIHw9IDM7DQo+PiArDQo+PiArCXJldHVybiByZWdtYXBfcmF3 X3dyaXRlKGRhdGEtPnJlZ21hcCwgQURUNzQ3MF9SRUdfQ0ZHLCAmdmFsLCAxKTsNCj4+ICAgfQ0K Pj4gICANCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgYWR0NzQ3MF9yZWdt YXBfY29uZmlnID0gew0KPj4gKwkucmVnX2JpdHMgPSA4LA0KPj4gKwkudmFsX2JpdHMgPSA4LA0K Pj4gKwkudXNlX3NpbmdsZV9yZWFkID0gdHJ1ZSwNCj4+ICsJLnVzZV9zaW5nbGVfd3JpdGUgPSB0 cnVlLA0KPj4gK307DQo+PiArDQo+PiAgIHN0YXRpYyBpbnQgYWR0NzQ3MF9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KQ0KPj4gICB7DQo+PiAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm Y2xpZW50LT5kZXY7DQo+PiAgIAlzdHJ1Y3QgYWR0NzQ3MF9kYXRhICpkYXRhOw0KPj4gICAJc3Ry dWN0IGRldmljZSAqaHdtb25fZGV2Ow0KPj4gKwlpbnQgZXJyOw0KPj4gICANCj4+ICAgCWRhdGEg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yoc3RydWN0IGFkdDc0NzBfZGF0YSksIEdGUF9LRVJO RUwpOw0KPj4gICAJaWYgKCFkYXRhKQ0KPj4gQEAgLTEzMTEsMTUgKzE0MTksMTkgQEAgc3RhdGlj IGludCBhZHQ3NDcwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpDQo+PiAgIA0KPj4g ICAJZGF0YS0+bnVtX3RlbXBfc2Vuc29ycyA9IC0xOw0KPj4gICAJZGF0YS0+YXV0b191cGRhdGVf aW50ZXJ2YWwgPSBBVVRPX1VQREFURV9JTlRFUlZBTDsNCj4+ICsJZGF0YS0+cmVnbWFwID0gZGV2 bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmYWR0NzQ3MF9yZWdtYXBfY29uZmlnKTsNCj4+ICsJ aWYgKElTX0VSUihkYXRhLT5yZWdtYXApKQ0KPj4gKwkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+cmVn bWFwKTsNCj4+ICAgDQo+PiAgIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBkYXRhKTsNCj4+ IC0JZGF0YS0+Y2xpZW50ID0gY2xpZW50Ow0KPj4gICAJbXV0ZXhfaW5pdCgmZGF0YS0+bG9jayk7 DQo+PiAgIA0KPj4gICAJZGV2X2luZm8oJmNsaWVudC0+ZGV2LCAiJXMgY2hpcCBmb3VuZFxuIiwg Y2xpZW50LT5uYW1lKTsNCj4+ICAgDQo+PiAgIAkvKiBJbml0aWFsaXplIHRoZSBBRFQ3NDcwIGNo aXAgKi8NCj4+IC0JYWR0NzQ3MF9pbml0X2NsaWVudChjbGllbnQpOw0KPj4gKwllcnIgPSBhZHQ3 NDcwX2luaXRfY2xpZW50KGRldiwgZGF0YSk7DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJcmV0 dXJuIGVycjsNCj4+ICAgDQo+PiAgIAkvKiBSZWdpc3RlciBzeXNmcyBob29rcyAqLw0KPj4gICAJ aHdtb25fZGV2ID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoZGV2LCBj bGllbnQtPm5hbWUs