From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 614D5C4338F for ; Mon, 2 Aug 2021 03:34:52 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0A56660E97 for ; Mon, 2 Aug 2021 03:34:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0A56660E97 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5FE9A6E3CE; Mon, 2 Aug 2021 03:34:51 +0000 (UTC) Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2011D6E3C1 for ; Mon, 2 Aug 2021 03:34:48 +0000 (UTC) X-UUID: 17ac77ad196143be8567ace9ab06585e-20210802 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=UpfEaLGXWwDvxkBt/ER6jVYgEdEuWnDagKMHKa99T00=; b=GCSa5AubDISxcg1ou5EXhOiqMUjwFRj1LflgalW3tNCO+RE+cqJBHKV4psB/TrM9EkiCSA7RyD1JYCRZo3pbu0jrNfwTXj7qsWAI5acGAOqgaga9TxOLeEs6QZzh0HHTOcn4P2J/c/x5tUiBIqamr3snjtwBvAEYN/DLGFKryHg=; X-UUID: 17ac77ad196143be8567ace9ab06585e-20210802 Received: from mtkexhb02.mediatek.inc [(172.21.101.103)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1037126082; Mon, 02 Aug 2021 11:34:43 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs05n2.mediatek.inc (172.21.101.140) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 2 Aug 2021 11:34:41 +0800 Received: from [172.21.77.4] (172.21.77.4) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 2 Aug 2021 11:34:41 +0800 Message-ID: <1627875280.15536.4.camel@mtksdaap41> Subject: Re: [PATCH v2 14/14] drm/mediatek: add mediatek-drm of vdosys1 support for MT8195 From: CK Hu To: Nancy.Lin CC: Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Rob Herring , Matthias Brugger , "jason-jh . lin" , Yongqiang Niu , , , , , , , Date: Mon, 2 Aug 2021 11:34:40 +0800 In-Reply-To: <20210722094551.15255-15-nancy.lin@mediatek.com> References: <20210722094551.15255-1-nancy.lin@mediatek.com> <20210722094551.15255-15-nancy.lin@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SGksIE5hbmN5Og0KDQpPbiBUaHUsIDIwMjEtMDctMjIgYXQgMTc6NDUgKzA4MDAsIE5hbmN5Lkxp biB3cm90ZToNCj4gQWRkIGRyaXZlciBkYXRhIG9mIG10ODE5NSB2ZG9zeXMxIHRvIG1lZGlhdGVr LWRybSBhbmQgbW9kaWZ5IGRybSBmb3INCj4gbXVsdGktbW1zeXMgc3VwcG9ydC4gVGhlIHR3byBt bXN5cyAodmRvc3lzMCBhbmQgdmRvc3lzMSkgd2lsbCBicmluZw0KPiB1cCB0d28gZHJtIGRyaXZl cnMsIG9ubHkgb25lIGRybSBkcml2ZXIgcmVnaXN0ZXIgYXMgdGhlIGRybSBkZXZpY2UuDQo+IEVh Y2ggZHJtIGRyaXZlciBiaW5kcyBpdHMgb3duIGNvbXBvbmVudC4gVGhlIGZpcnN0IGJpbmQgZHJt IGRyaXZlcg0KPiB3aWxsIGFsbG9jYXRlIHRoZSBkcm0gZGV2aWNlLCBhbmQgdGhlIGxhc3QgYmlu ZCBkcm0gZHJpdmVyIHJlZ2lzdGVycw0KPiB0aGUgZHJtIGRldmljZSB0byBkcm0gY29yZS4gRWFj aCBjcnRjIHBhdGggaXMgY3JlYXRlZCB3aXRoIHRoZQ0KPiBjb3JyZXNwb25kaW5nIGRybSBkcml2 ZXIgZGF0YS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE5hbmN5LkxpbiA8bmFuY3kubGluQG1lZGlh dGVrLmNvbT4NCj4gLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfbWVy Z2UuYyAgIHwgICA0ICsNCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMu YyAgICAgfCAgMTggKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMu aCAgICAgfCAgIDMgKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9j b21wLmMgfCAgMTUgKw0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2Nv bXAuaCB8ICAgMSArDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAg ICAgIHwgMzc4ICsrKysrKysrKysrKysrKystLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9kcnYuaCAgICAgIHwgICA4ICstDQo+ICA3IGZpbGVzIGNoYW5nZWQsIDM1NiBp bnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfbWVyZ2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZGlzcF9tZXJnZS5jDQo+IGluZGV4IDc2OGMyODJkMmQ2My4uODI5NTcwMzA4NzYx IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfbWVyZ2Uu Yw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfbWVyZ2UuYw0KPiBA QCAtNCw2ICs0LDcgQEANCj4gICAqLw0KPiAgDQo+ICAjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQu aD4NCj4gICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9v Zl9pcnEuaD4NCj4gQEAgLTEwNiw2ICsxMDcsOSBAQCB2b2lkIG10a19tZXJnZV9zdG9wKHN0cnVj dCBkZXZpY2UgKmRldikNCj4gIAlzdHJ1Y3QgbXRrX2Rpc3BfbWVyZ2UgKnByaXYgPSBkZXZfZ2V0 X2RydmRhdGEoZGV2KTsNCj4gIA0KPiAgCW10a19kZHBfd3JpdGUoTlVMTCwgMHgwLCAmcHJpdi0+ Y21kcV9yZWcsIHByaXYtPnJlZ3MsIERJU1BfUkVHX01FUkdFX0NUUkwpOw0KPiArDQo+ICsJaWYg KHByaXYtPmFzeW5jX2NsaykNCj4gKwkJZGV2aWNlX3Jlc2V0X29wdGlvbmFsKGRldik7DQoNCk1v dmUgdGhpcyB0byB0aGUgbWVyZ2UgcGF0Y2ggWzFdLg0KDQpbMV0NCmh0dHBzOi8vcGF0Y2h3b3Jr Lmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1tZWRpYXRlay9wYXRjaC8yMDIxMDcyOTE3MDczNy4y MTQyNC03LWphc29uLWpoLmxpbkBtZWRpYXRlay5jb20vDQoNCj4gIH0NCj4gIA0KPiAgc3RhdGlj IGludCBtdGtfbWVyZ2VfY2hlY2tfcGFyYW1zKHN0cnVjdCBtdGtfbWVyZ2VfY29uZmlnX3N0cnVj dCAqbWVyZ2VfY29uZmlnKQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5j DQo+IGluZGV4IDQwZGYyYzgyMzE4Ny4uMzMyNGZhMWE5ZThjIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jDQo+IEBAIC03MzcsMjEgKzczNywyOCBAQCBzdGF0 aWMgaW50IG10a19kcm1fY3J0Y19pbml0X2NvbXBfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpk cm1fZGV2LA0KPiAgfQ0KPiAgDQo+ICBpbnQgbXRrX2RybV9jcnRjX2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZHJtX2RldiwNCj4gLQkJCWNvbnN0IGVudW0gbXRrX2RkcF9jb21wX2lkICpwYXRo LCB1bnNpZ25lZCBpbnQgcGF0aF9sZW4pDQo+ICsJCQljb25zdCBlbnVtIG10a19kZHBfY29tcF9p ZCAqcGF0aCwgdW5zaWduZWQgaW50IHBhdGhfbGVuLA0KPiArCQkJaW50IHByaXZfZGF0YV9pbmRl eCkNCj4gIHsNCj4gIAlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2ID0gZHJtX2Rldi0+ZGV2 X3ByaXZhdGU7DQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gZHJtX2Rldi0+ZGV2Ow0KPiAgCXN0 cnVjdCBtdGtfZHJtX2NydGMgKm10a19jcnRjOw0KPiAgCXVuc2lnbmVkIGludCBudW1fY29tcF9w bGFuZXMgPSAwOw0KPiAtCWludCBwaXBlID0gcHJpdi0+bnVtX3BpcGVzOw0KPiAgCWludCByZXQ7 DQo+ICAJaW50IGk7DQo+ICAJYm9vbCBoYXNfY3RtID0gZmFsc2U7DQo+ICAJdWludCBnYW1tYV9s dXRfc2l6ZSA9IDA7DQo+ICsJc3RydWN0IGRybV9jcnRjICp0bXA7DQo+ICsJaW50IGNydGNfaSA9 IDA7DQo+ICANCj4gIAlpZiAoIXBhdGgpDQo+ICAJCXJldHVybiAwOw0KPiAgDQo+ICsJcHJpdiA9 IHByaXYtPmFsbF9kcm1fcHJpdmF0ZVtwcml2X2RhdGFfaW5kZXhdOw0KPiArDQo+ICsJZHJtX2Zv cl9lYWNoX2NydGModG1wLCBkcm1fZGV2KQ0KPiArCQljcnRjX2krKzsNCj4gKw0KPiAgCWZvciAo aSA9IDA7IGkgPCBwYXRoX2xlbjsgaSsrKSB7DQo+ICAJCWVudW0gbXRrX2RkcF9jb21wX2lkIGNv bXBfaWQgPSBwYXRoW2ldOw0KPiAgCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQo+IEBAIC03 NjAsNyArNzY3LDcgQEAgaW50IG10a19kcm1fY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRybV9kZXYsDQo+ICAJCWlmICghbm9kZSkgew0KPiAgCQkJZGV2X2luZm8oZGV2LA0KPiAgCQkJ CSAiTm90IGNyZWF0aW5nIGNydGMgJWQgYmVjYXVzZSBjb21wb25lbnQgJWQgaXMgZGlzYWJsZWQg b3IgbWlzc2luZ1xuIiwNCj4gLQkJCQkgcGlwZSwgY29tcF9pZCk7DQo+ICsJCQkJIGNydGNfaSwg Y29tcF9pZCk7DQo+ICAJCQlyZXR1cm4gMDsNCj4gIAkJfQ0KPiAgCX0NCj4gQEAgLTgxNiwxOSAr ODIzLDE4IEBAIGludCBtdGtfZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1f ZGV2LA0KPiAgDQo+ICAJZm9yIChpID0gMDsgaSA8IG10a19jcnRjLT5kZHBfY29tcF9ucjsgaSsr KSB7DQo+ICAJCXJldCA9IG10a19kcm1fY3J0Y19pbml0X2NvbXBfcGxhbmVzKGRybV9kZXYsIG10 a19jcnRjLCBpLA0KPiAtCQkJCQkJICAgIHBpcGUpOw0KPiArCQkJCQkJICAgIGNydGNfaSk7DQo+ ICAJCWlmIChyZXQpDQo+ICAJCQlyZXR1cm4gcmV0Ow0KPiAgCX0NCj4gIA0KPiAtCXJldCA9IG10 a19kcm1fY3J0Y19pbml0KGRybV9kZXYsIG10a19jcnRjLCBwaXBlKTsNCj4gKwlyZXQgPSBtdGtf ZHJtX2NydGNfaW5pdChkcm1fZGV2LCBtdGtfY3J0YywgY3J0Y19pKTsNCj4gIAlpZiAocmV0IDwg MCkNCj4gIAkJcmV0dXJuIHJldDsNCj4gIA0KPiAgCWlmIChnYW1tYV9sdXRfc2l6ZSkNCj4gIAkJ ZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZSgmbXRrX2NydGMtPmJhc2UsIGdhbW1hX2x1dF9z aXplKTsNCj4gIAlkcm1fY3J0Y19lbmFibGVfY29sb3JfbWdtdCgmbXRrX2NydGMtPmJhc2UsIDAs IGhhc19jdG0sIGdhbW1hX2x1dF9zaXplKTsNCj4gLQlwcml2LT5udW1fcGlwZXMrKzsNCj4gIAlt dXRleF9pbml0KCZtdGtfY3J0Yy0+aHdfbG9jayk7DQo+ICANCj4gICNpZiBJU19SRUFDSEFCTEUo Q09ORklHX01US19DTURRKQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5o DQo+IGluZGV4IDY2ZDFjZjAzZGZlOC4uMDY0NmZhZmZmZDhiIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmgNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5oDQo+IEBAIC0zMSw3ICszMSw4IEBADQo+ICB2b2lk IG10a19kcm1fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsNCj4gIGludCBtdGtf ZHJtX2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LA0KPiAgCQkJY29uc3Qg ZW51bSBtdGtfZGRwX2NvbXBfaWQgKnBhdGgsDQo+IC0JCQl1bnNpZ25lZCBpbnQgcGF0aF9sZW4p Ow0KPiArCQkJdW5zaWduZWQgaW50IHBhdGhfbGVuLA0KPiArCQkJaW50IHByaXZfZGF0YV9pbmRl eCk7DQo+ICBpbnQgbXRrX2RybV9jcnRjX3BsYW5lX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yywgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ICAJCQkgICAgIHN0cnVjdCBtdGtfcGxhbmVf c3RhdGUgKnN0YXRlKTsNCj4gIHZvaWQgbXRrX2RybV9jcnRjX2FzeW5jX3VwZGF0ZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmMNCj4gaW5kZXggOTEyNWQwZjYzNTJmLi4y NWYyOTM1NDJmNzkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2RkcF9jb21wLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZGRwX2NvbXAuYw0KPiBAQCAtMzU1LDYgKzM1NSwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10 a19kZHBfY29tcF9mdW5jcyBkZHBfdWZvZSA9IHsNCj4gIAkuc3RhcnQgPSBtdGtfdWZvZV9zdGFy dCwNCj4gIH07DQo+ICANCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2RkcF9jb21wX2Z1bmNz IGRkcF9wc2V1ZG9fb3ZsID0gew0KPiArCS5jbGtfZW5hYmxlID0gbXRrX2V0aGRyX2Nsa19lbmFi bGUsDQo+ICsJLmNsa19kaXNhYmxlID0gbXRrX2V0aGRyX2Nsa19kaXNhYmxlLA0KPiArCS5jb25m aWcgPSBtdGtfZXRoZHJfY29uZmlnLA0KPiArCS5zdGFydCA9IG10a19ldGhkcl9zdGFydCwNCj4g Kwkuc3RvcCA9IG10a19ldGhkcl9zdG9wLA0KPiArCS5sYXllcl9uciA9IG10a19ldGhkcl9sYXll cl9uciwNCj4gKwkubGF5ZXJfY29uZmlnID0gbXRrX2V0aGRyX2xheWVyX2NvbmZpZywNCj4gKwku ZW5hYmxlX3ZibGFuayA9IG10a19ldGhkcl9lbmFibGVfdmJsYW5rLA0KPiArCS5kaXNhYmxlX3Zi bGFuayA9IG10a19ldGhkcl9kaXNhYmxlX3ZibGFuaywNCj4gK307DQoNCk1vdmUgdGhpcyB0byB0 aGUgcHNldWRvIG92bCBwYXRjaC4NCg0KPiArDQo+ICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IG10a19kZHBfY29tcF9zdGVtW01US19ERFBfQ09NUF9UWVBFX01BWF0gPSB7DQo+ICAJW01US19E SVNQX09WTF0gPSAib3ZsIiwNCj4gIAlbTVRLX0RJU1BfT1ZMXzJMXSA9ICJvdmwtMmwiLA0KPiBA QCAtMzY4LDYgKzM4MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbXRrX2RkcF9jb21w X3N0ZW1bTVRLX0REUF9DT01QX1RZUEVfTUFYXSA9IHsNCj4gIAlbTVRLX0RJU1BfVUZPRV0gPSAi dWZvZSIsDQo+ICAJW01US19EU0ldID0gImRzaSIsDQo+ICAJW01US19EUEldID0gImRwaSIsDQo+ ICsJW01US19ESVNQX1BTRVVET19PVkxdID0gInBzZXVkb19vdmwiLA0KDQpkaXR0by4NCg0KPiAg CVtNVEtfRElTUF9QV01dID0gInB3bSIsDQo+ICAJW01US19ESVNQX01VVEVYXSA9ICJtdXRleCIs DQo+ICAJW01US19ESVNQX09EXSA9ICJvZCIsDQo+IEBAIC00MTIsNiArNDI1LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfZGRwX2NvbXBfbWF0Y2ggbXRrX2RkcF9tYXRjaGVzW0REUF9DT01Q T05FTlRfSURfTUFYXSA9IHsNCj4gIAlbRERQX0NPTVBPTkVOVF9PVkwxXQk9IHsgTVRLX0RJU1Bf T1ZMLAkxLCAmZGRwX292bCB9LA0KPiAgCVtERFBfQ09NUE9ORU5UX09WTF8yTDBdCT0geyBNVEtf RElTUF9PVkxfMkwsCTAsICZkZHBfb3ZsIH0sDQo+ICAJW0REUF9DT01QT05FTlRfT1ZMXzJMMV0J PSB7IE1US19ESVNQX09WTF8yTCwJMSwgJmRkcF9vdmwgfSwNCj4gKwlbRERQX0NPTVBPTkVOVF9Q U0VVRE9fT1ZMXSA9IHsgTVRLX0RJU1BfUFNFVURPX09WTCwJMCwgJmRkcF9wc2V1ZG9fb3ZsIH0s DQoNCmRpdHRvLg0KDQo+ICAJW0REUF9DT01QT05FTlRfUFdNMF0JPSB7IE1US19ESVNQX1BXTSwJ MCwgTlVMTCB9LA0KPiAgCVtERFBfQ09NUE9ORU5UX1BXTTFdCT0geyBNVEtfRElTUF9QV00sCTEs IE5VTEwgfSwNCj4gIAlbRERQX0NPTVBPTkVOVF9QV00yXQk9IHsgTVRLX0RJU1BfUFdNLAkyLCBO VUxMIH0sDQo+IEBAIC01NDAsNiArNTU0LDcgQEAgaW50IG10a19kZHBfY29tcF9pbml0KHN0cnVj dCBkZXZpY2Vfbm9kZSAqbm9kZSwgc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwNCj4gIAkgICAg dHlwZSA9PSBNVEtfRElTUF9NRVJHRSB8fA0KPiAgCSAgICB0eXBlID09IE1US19ESVNQX09WTCB8 fA0KPiAgCSAgICB0eXBlID09IE1US19ESVNQX09WTF8yTCB8fA0KPiArCSAgICB0eXBlID09IE1U S19ESVNQX1BTRVVET19PVkwgfHwNCg0KZGl0dG8uDQoNCj4gIAkgICAgdHlwZSA9PSBNVEtfRElT UF9QV00gfHwNCj4gIAkgICAgdHlwZSA9PSBNVEtfRElTUF9SRE1BIHx8DQo+ICAJICAgIHR5cGUg PT0gTVRLX0RQSSB8fA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fZGRwX2NvbXAuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9j b21wLmgNCj4gaW5kZXggMGFmZDc4YzBiYzkyLi5mMmExODRiMWVjZWIgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmgNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaA0KPiBAQCAtMzYsNiArMzYs NyBAQCBlbnVtIG10a19kZHBfY29tcF90eXBlIHsNCj4gIAlNVEtfRElTUF9CTFMsDQo+ICAJTVRL X0RJU1BfRFNDLA0KPiAgCU1US19ESVNQX01FUkdFLA0KPiArCU1US19ESVNQX1BTRVVET19PVkws DQoNCmRpdHRvLg0KDQo+ICAJTVRLX0REUF9DT01QX1RZUEVfTUFYLA0KPiAgfTsNCj4gIA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYw0KPiBpbmRleCA1OGY5ZjlmMDZlOTQu Ljk0NTI3ZmIwNDBiZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fZHJ2LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2 LmMNCj4gQEAgLTExLDYgKzExLDcgQEANCj4gICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5o Pg0KPiAgI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9k bWEtbWFwcGluZy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0LWNvbnRyb2xsZXIuaD4NCj4g IA0KPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+ICAjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWNfaGVscGVyLmg+DQo+IEBAIC0zNSw2ICszNiwxNiBAQA0KPiAgI2RlZmluZSBEUklWRVJf TUFKT1IgMQ0KPiAgI2RlZmluZSBEUklWRVJfTUlOT1IgMA0KPiAgDQo+ICsvKiBkdXBsaWNhdGUg d2l0aCBtbXN5cyBwcml2YXRlIGRhdGEgKi8NCj4gK3N0cnVjdCBtdGtfbW1zeXNfcHJpdmF0ZSB7 DQo+ICsJdm9pZCBfX2lvbWVtICpyZWdzX3Jlc2VydmVkOw0KPiArCXN0cnVjdCBjbWRxX2NsaWVu dF9yZWcgY21kcV9iYXNlX3Jlc2VydmVkOw0KPiArCXZvaWQgKmRhdGFfcmVzZXJ2ZWQ7DQo+ICsJ c3BpbmxvY2tfdCBsb2NrX3Jlc2VydmVkOyAvKiBwcm90ZWN0cyBtbXN5c19zd19yc3RfYiByZWcg Ki8NCj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbGxlcl9kZXYgcmNkZXZfcmVzZXJ2ZWQ7DQo+ICsJ dm9pZCAqZHJtX3ByaXZhdGU7DQo+ICt9Ow0KPiArDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3MgbXRrX2RybV9tb2RlX2NvbmZpZ19oZWxwZXJzID0g ew0KPiAgCS5hdG9taWNfY29tbWl0X3RhaWwgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfdGFp bF9ycG0sDQo+ICB9Ow0KPiBAQCAtMTYwLDEyICsxNzEsMjAgQEAgc3RhdGljIGNvbnN0IGVudW0g bXRrX2RkcF9jb21wX2lkIG10ODE5NV9tdGtfZGRwX21haW5bXSA9IHsNCj4gIAlERFBfQ09NUE9O RU5UX0RQX0lOVEYwLA0KPiAgfTsNCj4gIA0KPiArc3RhdGljIGNvbnN0IGVudW0gbXRrX2RkcF9j b21wX2lkIG10ODE5NV9tdGtfZGRwX2V4dFtdID0gew0KPiArCUREUF9DT01QT05FTlRfUFNFVURP X09WTCwNCj4gKwlERFBfQ09NUE9ORU5UX01FUkdFNSwNCj4gKwlERFBfQ09NUE9ORU5UX0RQX0lO VEYxLA0KPiArfTsNCj4gKw0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVy X2RhdGEgbXQyNzAxX21tc3lzX2RyaXZlcl9kYXRhID0gew0KPiAgCS5tYWluX3BhdGggPSBtdDI3 MDFfbXRrX2RkcF9tYWluLA0KPiAgCS5tYWluX2xlbiA9IEFSUkFZX1NJWkUobXQyNzAxX210a19k ZHBfbWFpbiksDQo+ICAJLmV4dF9wYXRoID0gbXQyNzAxX210a19kZHBfZXh0LA0KPiAgCS5leHRf bGVuID0gQVJSQVlfU0laRShtdDI3MDFfbXRrX2RkcF9leHQpLA0KPiAgCS5zaGFkb3dfcmVnaXN0 ZXIgPSB0cnVlLA0KPiArCS5tbXN5c19pZCA9IDAsDQo+ICsJLm1tc3lzX2Rldl9udW0gPSAxLA0K PiAgfTsNCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEg bXQ3NjIzX21tc3lzX2RyaXZlcl9kYXRhID0gew0KPiBAQCAtMTc0LDYgKzE5Myw4IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIG10NzYyM19tbXN5c19kcml2ZXJf ZGF0YSA9IHsNCj4gIAkuZXh0X3BhdGggPSBtdDc2MjNfbXRrX2RkcF9leHQsDQo+ICAJLmV4dF9s ZW4gPSBBUlJBWV9TSVpFKG10NzYyM19tdGtfZGRwX2V4dCksDQo+ICAJLnNoYWRvd19yZWdpc3Rl ciA9IHRydWUsDQo+ICsJLm1tc3lzX2lkID0gMCwNCj4gKwkubW1zeXNfZGV2X251bSA9IDEsDQo+ ICB9Ow0KPiAgDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBt dDI3MTJfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQo+IEBAIC0xODMsNiArMjA0LDggQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgbXQyNzEyX21tc3lzX2RyaXZlcl9k YXRhID0gew0KPiAgCS5leHRfbGVuID0gQVJSQVlfU0laRShtdDI3MTJfbXRrX2RkcF9leHQpLA0K PiAgCS50aGlyZF9wYXRoID0gbXQyNzEyX210a19kZHBfdGhpcmQsDQo+ICAJLnRoaXJkX2xlbiA9 IEFSUkFZX1NJWkUobXQyNzEyX210a19kZHBfdGhpcmQpLA0KPiArCS5tbXN5c19pZCA9IDAsDQo+ ICsJLm1tc3lzX2Rldl9udW0gPSAxLA0KPiAgfTsNCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVj dCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgbXQ4MTczX21tc3lzX2RyaXZlcl9kYXRhID0gew0KPiBA QCAtMTkwLDYgKzIxMyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9k YXRhIG10ODE3M19tbXN5c19kcml2ZXJfZGF0YSA9IHsNCj4gIAkubWFpbl9sZW4gPSBBUlJBWV9T SVpFKG10ODE3M19tdGtfZGRwX21haW4pLA0KPiAgCS5leHRfcGF0aCA9IG10ODE3M19tdGtfZGRw X2V4dCwNCj4gIAkuZXh0X2xlbiA9IEFSUkFZX1NJWkUobXQ4MTczX210a19kZHBfZXh0KSwNCj4g KwkubW1zeXNfaWQgPSAwLA0KPiArCS5tbXN5c19kZXZfbnVtID0gMSwNCj4gIH07DQo+ICANCj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIG10ODE4M19tbXN5c19k cml2ZXJfZGF0YSA9IHsNCj4gQEAgLTE5NywzMiArMjIyLDIxOSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDgxODNfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQo+ ICAJLm1haW5fbGVuID0gQVJSQVlfU0laRShtdDgxODNfbXRrX2RkcF9tYWluKSwNCj4gIAkuZXh0 X3BhdGggPSBtdDgxODNfbXRrX2RkcF9leHQsDQo+ICAJLmV4dF9sZW4gPSBBUlJBWV9TSVpFKG10 ODE4M19tdGtfZGRwX2V4dCksDQo+ICsJLm1tc3lzX2lkID0gMCwNCj4gKwkubW1zeXNfZGV2X251 bSA9IDEsDQo+ICB9Ow0KPiAgDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2 ZXJfZGF0YSBtdDgxOTVfdmRvc3lzMF9kcml2ZXJfZGF0YSA9IHsNCj4gIAkubWFpbl9wYXRoID0g bXQ4MTk1X210a19kZHBfbWFpbiwNCj4gIAkubWFpbl9sZW4gPSBBUlJBWV9TSVpFKG10ODE5NV9t dGtfZGRwX21haW4pLA0KPiArCS5tbXN5c19pZCA9IDAsDQo+ICsJLm1tc3lzX2Rldl9udW0gPSAy LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2Rh dGEgbXQ4MTk1X3Zkb3N5czFfZHJpdmVyX2RhdGEgPSB7DQo+ICsJLmV4dF9wYXRoID0gbXQ4MTk1 X210a19kZHBfZXh0LA0KPiArCS5leHRfbGVuID0gQVJSQVlfU0laRShtdDgxOTVfbXRrX2RkcF9l eHQpLA0KPiArCS5tbXN5c19pZCA9IDEsDQo+ICsJLm1tc3lzX2Rldl9udW0gPSAyLA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2RybV9vZl9pZHNb XSA9IHsNCj4gKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1tbXN5cyIsDQo+ICsJ ICAuZGF0YSA9ICZtdDI3MDFfbW1zeXNfZHJpdmVyX2RhdGF9LA0KPiArCXsgLmNvbXBhdGlibGUg PSAibWVkaWF0ZWssbXQ3NjIzLW1tc3lzIiwNCj4gKwkgIC5kYXRhID0gJm10NzYyM19tbXN5c19k cml2ZXJfZGF0YX0sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MTItbW1zeXMi LA0KPiArCSAgLmRhdGEgPSAmbXQyNzEyX21tc3lzX2RyaXZlcl9kYXRhfSwNCj4gKwl7IC5jb21w YXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1tbXN5cyIsDQo+ICsJICAuZGF0YSA9ICZtdDgxNzNf bW1zeXNfZHJpdmVyX2RhdGF9LA0KPiArCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTgz LW1tc3lzIiwNCj4gKwkgIC5kYXRhID0gJm10ODE4M19tbXN5c19kcml2ZXJfZGF0YX0sDQo+ICsJ eyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxOTUtdmRvc3lzMCIsDQo+ICsJICAuZGF0YSA9 ICZtdDgxOTVfdmRvc3lzMF9kcml2ZXJfZGF0YX0sDQo+ICsJeyAuY29tcGF0aWJsZSA9ICJtZWRp YXRlayxtdDgxOTUtdmRvc3lzMSIsDQo+ICsJICAuZGF0YSA9ICZtdDgxOTVfdmRvc3lzMV9kcml2 ZXJfZGF0YX0sDQo+ICsJeyB9DQo+ICB9Ow0KPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXRr X2RybV9vZl9pZHMpOw0KPiArDQo+ICtzdGF0aWMgaW50IG10a19kcm1fZ2V0X21tc3lzX3ByaXYo c3RydWN0IGRldmljZSAqZGV2LA0KPiArCQkJCSAgc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqKmFs bF9kcm1fcHJpdiwNCj4gKwkJCQkgIGludCBudW0pDQo+ICt7DQo+ICsJc3RydWN0IG10a19kcm1f cHJpdmF0ZSAqZHJtX3ByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKnBoYW5kbGUgPSBkZXYtPnBhcmVudC0+b2Zfbm9kZTsNCj4gKwljb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkICpvZl9pZDsNCj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQo+ ICsJaW50IGNudCA9IDA7DQo+ICsNCj4gKwlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKHBoYW5kbGUt PnBhcmVudCwgbm9kZSkgew0KPiArCQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Ow0KPiAr CQlzdHJ1Y3QgbXRrX21tc3lzX3ByaXZhdGUgKm1tc3lzX3ByaXY7DQo+ICsNCj4gKwkJb2ZfaWQg PSBvZl9tYXRjaF9ub2RlKG10a19kcm1fb2ZfaWRzLCBub2RlKTsNCj4gKwkJaWYgKCFvZl9pZCkN Cj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICsJCXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9ub2Rl KG5vZGUpOw0KPiArCQlpZiAoIXBkZXYpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQltbXN5 c19wcml2ID0gZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOw0KPiArCQlpZiAoIW1tc3lzX3By aXYgfHwgIW1tc3lzX3ByaXYtPmRybV9wcml2YXRlKQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4g KwkJYWxsX2RybV9wcml2W2NudCsrXSA9IG1tc3lzX3ByaXYtPmRybV9wcml2YXRlOw0KPiArCQlp ZiAoY250ID09IG51bSkNCj4gKwkJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0K PiArfQ0KDQpNb3ZlICJzdXBwb3J0IG11bHRpcGxlIG1tc3lzIiByZWxhdGVkIGNvZGUgdG8gYW5v dGhlciBwYXRjaCwgYW5kIGxlZnQNCm9ubHkgbXQ4MTk1IHBhcnQgaW4gdGhpcyBwYXRjaC4NCg0K UmVnYXJkcywNCkNLDQoNCj4gKw0KPiArc3RhdGljIGJvb2wgbXRrX2RybV9jaGVja19sYXN0X2Ry bV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX2RybV9wcml2 YXRlICpkcm1fcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBtdGtfZHJt X3ByaXZhdGUgKmFsbF9kcm1fcHJpdltNQVhfQ1JUQ107DQo+ICsJaW50IGNudCA9IDA7DQo+ICsJ aW50IGk7DQo+ICsNCj4gKwltdGtfZHJtX2dldF9tbXN5c19wcml2KGRldiwgYWxsX2RybV9wcml2 LCBkcm1fcHJpdi0+ZGF0YS0+bW1zeXNfZGV2X251bSk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBp IDwgTUFYX0NSVEM7IGkrKykNCj4gKwkJaWYgKGFsbF9kcm1fcHJpdltpXSAmJiBhbGxfZHJtX3By aXZbaV0tPm10a19kcm1fYm91bmQpDQo+ICsJCQljbnQrKzsNCj4gKw0KPiArCXJldHVybiAoZHJt X3ByaXYtPmRhdGEtPm1tc3lzX2Rldl9udW0gPT0gY250KTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGJvb2wgbXRrX2RybV9maW5kX2RybV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2RldmljZSAqKmRybSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoYW5kbGUgPSBk ZXYtPnBhcmVudC0+b2Zfbm9kZTsNCj4gKwlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpkcm1fcHJp diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKmFs bF9kcm1fcHJpdltNQVhfQ1JUQ107DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlpZiAoIWRybV9wcml2 LT5kYXRhLT5tbXN5c19kZXZfbnVtKQ0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsNCj4gKwltdGtf ZHJtX2dldF9tbXN5c19wcml2KGRldiwgYWxsX2RybV9wcml2LCBkcm1fcHJpdi0+ZGF0YS0+bW1z eXNfZGV2X251bSk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0NSVEM7IGkrKykgew0K PiArCQlpZiAoYWxsX2RybV9wcml2W2ldICYmIGFsbF9kcm1fcHJpdltpXS0+bXRrX2RybV9ib3Vu ZCkgew0KPiArCQkJKmRybSA9IGFsbF9kcm1fcHJpdltpXS0+ZHJtOw0KPiArCQkJcmV0dXJuIHRy dWU7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgbXRrX2RybV9zZXR1cF9hbGxfZHJtX3ByaXZhdGUoc3RydWN0IGRldmljZSAq ZGV2KQ0KPiArew0KPiArCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKmRybV9wcml2ID0gZGV2X2dl dF9kcnZkYXRhKGRldik7DQo+ICsJc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqYWxsX2RybV9wcml2 W01BWF9DUlRDXTsNCj4gKwlpbnQgbW1zeXNfZGV2X251bSA9IGRybV9wcml2LT5kYXRhLT5tbXN5 c19kZXZfbnVtOw0KPiArCWludCBpOw0KPiArCWludCBqOw0KPiArDQo+ICsJbXRrX2RybV9nZXRf bW1zeXNfcHJpdihkZXYsIGFsbF9kcm1fcHJpdiwgbW1zeXNfZGV2X251bSk7DQo+ICsNCj4gKwlm b3IgKGkgPSAwOyBpIDwgbW1zeXNfZGV2X251bTsgaSsrKQ0KPiArCQlmb3IgKGogPSAwOyBqIDwg bW1zeXNfZGV2X251bTsgaisrKQ0KPiArCQkJYWxsX2RybV9wcml2W2pdLT5hbGxfZHJtX3ByaXZh dGVbaV0gPSBhbGxfZHJtX3ByaXZbaV07DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0K PiArc3RhdGljIGJvb2wgbXRrX2RybV9maW5kX21tc3lzX2NvbXAoc3RydWN0IG10a19kcm1fcHJp dmF0ZSAqcHJpdmF0ZSwgaW50IGNvbXBfaWQpDQo+ICt7DQo+ICsJY29uc3Qgc3RydWN0IG10a19t bXN5c19kcml2ZXJfZGF0YSAqZHJ2X2RhdGEgPSBwcml2YXRlLT5kYXRhOw0KPiArCWludCByZXQg PSBmYWxzZTsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlmIChkcnZfZGF0YS0+bW1zeXNfZGV2X251 bSA9PSAxKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKw0KPiArCWlmIChkcnZfZGF0YS0+bWFpbl9w YXRoKSB7DQo+ICsJCWZvciAoaSA9IDA7IGkgPCBkcnZfZGF0YS0+bWFpbl9sZW47IGkrKykNCj4g KwkJCWlmIChkcnZfZGF0YS0+bWFpbl9wYXRoW2ldID09IGNvbXBfaWQpDQo+ICsJCQkJcmV0IHw9 IHRydWU7DQo+ICsNCj4gKwkJaWYgKGkgPT0gZHJ2X2RhdGEtPm1haW5fbGVuKQ0KPiArCQkJcmV0 IHw9IGZhbHNlOw0KPiArCX0NCj4gKw0KPiArCWlmIChkcnZfZGF0YS0+ZXh0X3BhdGgpIHsNCj4g KwkJZm9yIChpID0gMDsgaSA8IGRydl9kYXRhLT5leHRfbGVuOyBpKyspDQo+ICsJCQlpZiAoZHJ2 X2RhdGEtPmV4dF9wYXRoW2ldID09IGNvbXBfaWQpDQo+ICsJCQkJcmV0IHw9IHRydWU7DQo+ICsN Cj4gKwkJaWYgKGkgPT0gZHJ2X2RhdGEtPmV4dF9sZW4pDQo+ICsJCQlyZXQgfD0gZmFsc2U7DQo+ ICsJfQ0KPiArDQo+ICsJaWYgKGRydl9kYXRhLT50aGlyZF9wYXRoKSB7DQo+ICsJCWZvciAoaSA9 IDA7IGkgPCBkcnZfZGF0YS0+dGhpcmRfbGVuOyBpKyspDQo+ICsJCQlpZiAoZHJ2X2RhdGEtPnRo aXJkX3BhdGhbaV0gPT0gY29tcF9pZCkNCj4gKwkJCQlyZXQgfD0gdHJ1ZTsNCj4gKw0KPiArCQlp ZiAoaSA9PSBkcnZfZGF0YS0+dGhpcmRfbGVuKQ0KPiArCQkJcmV0IHw9IGZhbHNlOw0KPiArCX0N Cj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRrX2RybV9j aGVja19tdXRleF9kZXYoc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdmF0ZSkNCj4gK3sNCj4g KwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Ow0KPiArCXN0cnVjdCBtdGtfZHJtX3ByaXZh dGUgKnByaXZfaTsNCj4gKwlpbnQgcmV0Ow0KPiArCWludCBpOw0KPiArDQo+ICsJZm9yIChpID0g MDsgaSA8IHByaXZhdGUtPmRhdGEtPm1tc3lzX2Rldl9udW07IGkrKykgew0KPiArCQlwcml2X2kg PSBwcml2YXRlLT5hbGxfZHJtX3ByaXZhdGVbaV07DQo+ICsNCj4gKwkJcGRldiA9IG9mX2ZpbmRf ZGV2aWNlX2J5X25vZGUocHJpdl9pLT5tdXRleF9ub2RlKTsNCj4gKwkJaWYgKCFwZGV2KSB7DQo+ ICsJCQlkZXZfZXJyKHByaXZfaS0+ZGV2LCAiV2FpdGluZyBmb3IgZGlzcC1tdXRleCBkZXZpY2Ug JXBPRlxuIiwNCj4gKwkJCQlwcml2X2ktPm11dGV4X25vZGUpOw0KPiArCQkJcmV0ID0gLUVQUk9C RV9ERUZFUjsNCj4gKwkJCWdvdG8gZXJyX3B1dF9tdXRleDsNCj4gKwkJfQ0KPiArCQlwcml2X2kt Pm11dGV4X2RldiA9ICZwZGV2LT5kZXY7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICsN Cj4gK2Vycl9wdXRfbXV0ZXg6DQo+ICsJZm9yIChpID0gMDsgaSA8IHByaXZhdGUtPmRhdGEtPm1t c3lzX2Rldl9udW07IGkrKykgew0KPiArCQlwcml2X2kgPSBwcml2YXRlLT5hbGxfZHJtX3ByaXZh dGVbaV07DQo+ICsJCW9mX25vZGVfcHV0KHByaXZfaS0+bXV0ZXhfbm9kZSk7DQo+ICsJfQ0KPiAr DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gIA0KPiAgc3RhdGljIGludCBtdGtfZHJtX2ttc19p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pDQo+ICB7DQo+ICAJc3RydWN0IG10a19kcm1fcHJp dmF0ZSAqcHJpdmF0ZSA9IGRybS0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IG10a19kcm1fcHJp dmF0ZSAqcHJpdl9uOw0KPiAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7DQo+IC0Jc3Ry dWN0IGRldmljZV9ub2RlICpucDsNCj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gTlVMTDsN Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2Ow0KPiAgCWludCByZXQ7DQo+ICsJaW50IGk7DQo+ ICsJaW50IGo7DQo+ICANCj4gIAlpZiAoIWlvbW11X3ByZXNlbnQoJnBsYXRmb3JtX2J1c190eXBl KSkNCj4gIAkJcmV0dXJuIC1FUFJPQkVfREVGRVI7DQo+ICANCj4gLQlwZGV2ID0gb2ZfZmluZF9k ZXZpY2VfYnlfbm9kZShwcml2YXRlLT5tdXRleF9ub2RlKTsNCj4gLQlpZiAoIXBkZXYpIHsNCj4g LQkJZGV2X2Vycihkcm0tPmRldiwgIldhaXRpbmcgZm9yIGRpc3AtbXV0ZXggZGV2aWNlICVwT0Zc biIsDQo+IC0JCQlwcml2YXRlLT5tdXRleF9ub2RlKTsNCj4gLQkJb2Zfbm9kZV9wdXQocHJpdmF0 ZS0+bXV0ZXhfbm9kZSk7DQo+IC0JCXJldHVybiAtRVBST0JFX0RFRkVSOw0KPiAtCX0NCj4gLQlw cml2YXRlLT5tdXRleF9kZXYgPSAmcGRldi0+ZGV2Ow0KPiArCXJldCA9IG10a19kcm1fY2hlY2tf bXV0ZXhfZGV2KHByaXZhdGUpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICAN Cj4gIAlyZXQgPSBkcm1tX21vZGVfY29uZmlnX2luaXQoZHJtKTsNCj4gIAlpZiAocmV0KQ0KPiBA QCAtMjQxLDMzICs0NTMsNTcgQEAgc3RhdGljIGludCBtdGtfZHJtX2ttc19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkcm0pDQo+ICAJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZtdGtfZHJtX21v ZGVfY29uZmlnX2Z1bmNzOw0KPiAgCWRybS0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUgPSAm bXRrX2RybV9tb2RlX2NvbmZpZ19oZWxwZXJzOw0KPiAgDQo+IC0JcmV0ID0gY29tcG9uZW50X2Jp bmRfYWxsKGRybS0+ZGV2LCBkcm0pOw0KPiArCWZvciAoaSA9IDA7IGkgPCBwcml2YXRlLT5kYXRh LT5tbXN5c19kZXZfbnVtOyBpKyspIHsNCj4gKwkJZHJtLT5kZXZfcHJpdmF0ZSA9IHByaXZhdGUt PmFsbF9kcm1fcHJpdmF0ZVtpXTsNCj4gKwkJcmV0ID0gY29tcG9uZW50X2JpbmRfYWxsKHByaXZh dGUtPmFsbF9kcm1fcHJpdmF0ZVtpXS0+ZGV2LCBkcm0pOw0KPiAgCWlmIChyZXQpDQo+ICAJCWdv dG8gcHV0X211dGV4X2RldjsNCj4gKwl9DQo+ICANCj4gIAkvKg0KPiAgCSAqIFdlIGN1cnJlbnRs eSBzdXBwb3J0IHR3byBmaXhlZCBkYXRhIHN0cmVhbXMsIGVhY2ggb3B0aW9uYWwsDQo+ICAJICog YW5kIGVhY2ggc3RhdGljYWxseSBhc3NpZ25lZCB0byBhIGNydGM6DQo+ICAJICogT1ZMMCAtPiBD T0xPUjAgLT4gQUFMIC0+IE9EIC0+IFJETUEwIC0+IFVGT0UgLT4gRFNJMCAuLi4NCj4gIAkgKi8N Cj4gLQlyZXQgPSBtdGtfZHJtX2NydGNfY3JlYXRlKGRybSwgcHJpdmF0ZS0+ZGF0YS0+bWFpbl9w YXRoLA0KPiAtCQkJCSAgcHJpdmF0ZS0+ZGF0YS0+bWFpbl9sZW4pOw0KPiAtCWlmIChyZXQgPCAw KQ0KPiAtCQlnb3RvIGVycl9jb21wb25lbnRfdW5iaW5kOw0KPiAtCS8qIC4uLiBhbmQgT1ZMMSAt PiBDT0xPUjEgLT4gR0FNTUEgLT4gUkRNQTEgLT4gRFBJMC4gKi8NCj4gLQlyZXQgPSBtdGtfZHJt X2NydGNfY3JlYXRlKGRybSwgcHJpdmF0ZS0+ZGF0YS0+ZXh0X3BhdGgsDQo+IC0JCQkJICBwcml2 YXRlLT5kYXRhLT5leHRfbGVuKTsNCj4gLQlpZiAocmV0IDwgMCkNCj4gLQkJZ290byBlcnJfY29t cG9uZW50X3VuYmluZDsNCj4gLQ0KPiAtCXJldCA9IG10a19kcm1fY3J0Y19jcmVhdGUoZHJtLCBw cml2YXRlLT5kYXRhLT50aGlyZF9wYXRoLA0KPiAtCQkJCSAgcHJpdmF0ZS0+ZGF0YS0+dGhpcmRf bGVuKTsNCj4gLQlpZiAocmV0IDwgMCkNCj4gLQkJZ290byBlcnJfY29tcG9uZW50X3VuYmluZDsN Cj4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0NSVEM7IGkrKykgew0KPiArCQlmb3IgKGogPSAwOyBq IDwgcHJpdmF0ZS0+ZGF0YS0+bW1zeXNfZGV2X251bTsgaisrKSB7DQo+ICsJCQlwcml2X24gPSBw cml2YXRlLT5hbGxfZHJtX3ByaXZhdGVbal07DQo+ICsNCj4gKwkJCWlmIChpID09IDAgJiYgcHJp dl9uLT5kYXRhLT5tYWluX2xlbikgew0KPiArCQkJCXJldCA9IG10a19kcm1fY3J0Y19jcmVhdGUo ZHJtLCBwcml2X24tPmRhdGEtPm1haW5fcGF0aCwNCj4gKwkJCQkJCQkgIHByaXZfbi0+ZGF0YS0+ bWFpbl9sZW4sIGopOw0KPiArCQkJCWlmIChyZXQpDQo+ICsJCQkJCWdvdG8gZXJyX2NvbXBvbmVu dF91bmJpbmQ7DQo+ICsNCj4gKwkJCQlpZiAoIW5wKQ0KPiArCQkJCQlucCA9IHByaXZfbi0+Y29t cF9ub2RlW3ByaXZfbi0+ZGF0YS0+bWFpbl9wYXRoWzBdXTsNCj4gKw0KPiArCQkJCWNvbnRpbnVl Ow0KPiArCQkJfSBlbHNlIGlmIChpID09IDEgJiYgcHJpdl9uLT5kYXRhLT5leHRfbGVuKSB7DQo+ ICsJCQkJcmV0ID0gbXRrX2RybV9jcnRjX2NyZWF0ZShkcm0sIHByaXZfbi0+ZGF0YS0+ZXh0X3Bh dGgsDQo+ICsJCQkJCQkJICBwcml2X24tPmRhdGEtPmV4dF9sZW4sIGopOw0KPiArCQkJCWlmIChy ZXQpDQo+ICsJCQkJCWdvdG8gZXJyX2NvbXBvbmVudF91bmJpbmQ7DQo+ICsNCj4gKwkJCQlpZiAo IW5wKQ0KPiArCQkJCQlucCA9IHByaXZfbi0+Y29tcF9ub2RlW3ByaXZfbi0+ZGF0YS0+ZXh0X3Bh dGhbMF1dOw0KPiArDQo+ICsJCQkJY29udGludWU7DQo+ICsJCQl9IGVsc2UgaWYgKGkgPT0gMiAm JiBwcml2X24tPmRhdGEtPnRoaXJkX2xlbikgew0KPiArCQkJCXJldCA9IG10a19kcm1fY3J0Y19j cmVhdGUoZHJtLCBwcml2X24tPmRhdGEtPnRoaXJkX3BhdGgsDQo+ICsJCQkJCQkJICBwcml2X24t PmRhdGEtPnRoaXJkX2xlbiwgaik7DQo+ICsJCQkJaWYgKHJldCkNCj4gKwkJCQkJZ290byBlcnJf Y29tcG9uZW50X3VuYmluZDsNCj4gKw0KPiArCQkJCWlmICghbnApDQo+ICsJCQkJCW5wID0gcHJp dl9uLT5jb21wX25vZGVbcHJpdl9uLT5kYXRhLT50aGlyZF9wYXRoWzBdXTsNCj4gKw0KPiArCQkJ CWNvbnRpbnVlOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsJfQ0KPiAgDQo+ICAJLyogVXNlIE9WTCBk ZXZpY2UgZm9yIGFsbCBETUEgbWVtb3J5IGFsbG9jYXRpb25zICovDQo+IC0JbnAgPSBwcml2YXRl LT5jb21wX25vZGVbcHJpdmF0ZS0+ZGF0YS0+bWFpbl9wYXRoWzBdXSA/Og0KPiAtCSAgICAgcHJp dmF0ZS0+Y29tcF9ub2RlW3ByaXZhdGUtPmRhdGEtPmV4dF9wYXRoWzBdXTsNCj4gIAlwZGV2ID0g b2ZfZmluZF9kZXZpY2VfYnlfbm9kZShucCk7DQo+ICAJaWYgKCFwZGV2KSB7DQo+ICAJCXJldCA9 IC1FTk9ERVY7DQo+IEBAIC0yNzYsMTMgKzUxMiwxNSBAQCBzdGF0aWMgaW50IG10a19kcm1fa21z X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkNCj4gIAl9DQo+ICANCj4gIAlkbWFfZGV2ID0g JnBkZXYtPmRldjsNCj4gLQlwcml2YXRlLT5kbWFfZGV2ID0gZG1hX2RldjsNCj4gKwlmb3IgKGkg PSAwOyBpIDwgcHJpdmF0ZS0+ZGF0YS0+bW1zeXNfZGV2X251bTsgaSsrKQ0KPiArCQlwcml2YXRl LT5hbGxfZHJtX3ByaXZhdGVbaV0tPmRtYV9kZXYgPSBkbWFfZGV2Ow0KPiAgDQo+ICAJLyoNCj4g IAkgKiBDb25maWd1cmUgdGhlIERNQSBzZWdtZW50IHNpemUgdG8gbWFrZSBzdXJlIHdlIGdldCBj b250aWd1b3VzIElPVkENCj4gIAkgKiB3aGVuIGltcG9ydGluZyBQUklNRSBidWZmZXJzLg0KPiAg CSAqLw0KPiAgCXJldCA9IGRtYV9zZXRfbWF4X3NlZ19zaXplKGRtYV9kZXYsIFVJTlRfTUFYKTsN Cj4gKw0KPiAgCWlmIChyZXQpIHsNCj4gIAkJZGV2X2VycihkbWFfZGV2LCAiRmFpbGVkIHRvIHNl dCBETUEgc2VnbWVudCBzaXplXG4iKTsNCj4gIAkJZ290byBlcnJfY29tcG9uZW50X3VuYmluZDsN Cj4gQEAgLTMwNCw5ICs1NDIsMTIgQEAgc3RhdGljIGludCBtdGtfZHJtX2ttc19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkcm0pDQo+ICAJcmV0dXJuIDA7DQo+ICANCj4gIGVycl9jb21wb25lbnRf dW5iaW5kOg0KPiAtCWNvbXBvbmVudF91bmJpbmRfYWxsKGRybS0+ZGV2LCBkcm0pOw0KPiArCWZv ciAoaSA9IDA7IGkgPCBwcml2YXRlLT5kYXRhLT5tbXN5c19kZXZfbnVtOyBpKyspDQo+ICsJCWNv bXBvbmVudF91bmJpbmRfYWxsKHByaXZhdGUtPmFsbF9kcm1fcHJpdmF0ZVtpXS0+ZGV2LCBkcm0p Ow0KPiAgcHV0X211dGV4X2RldjoNCj4gLQlwdXRfZGV2aWNlKHByaXZhdGUtPm11dGV4X2Rldik7 DQo+ICsJZm9yIChpID0gMDsgaSA8IHByaXZhdGUtPmRhdGEtPm1tc3lzX2Rldl9udW07IGkrKykN Cj4gKwkJcHV0X2RldmljZShwcml2YXRlLT5hbGxfZHJtX3ByaXZhdGVbaV0tPm11dGV4X2Rldik7 DQo+ICsNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiAgDQo+IEBAIC0zNzEsMTIgKzYxMiwyMSBA QCBzdGF0aWMgaW50IG10a19kcm1fYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRybTsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+IC0JZHJtID0gZHJtX2Rldl9h bGxvYygmbXRrX2RybV9kcml2ZXIsIGRldik7DQo+IC0JaWYgKElTX0VSUihkcm0pKQ0KPiAtCQly ZXR1cm4gUFRSX0VSUihkcm0pOw0KPiArCWlmICghbXRrX2RybV9maW5kX2RybV9kZXYoZGV2LCAm ZHJtKSkgew0KPiArCQlkcm0gPSBkcm1fZGV2X2FsbG9jKCZtdGtfZHJtX2RyaXZlciwgZGV2KTsN Cj4gKwkJaWYgKElTX0VSUihkcm0pKQ0KPiArCQkJcmV0dXJuIFBUUl9FUlIoZHJtKTsNCj4gKwkJ ZHJtLT5kZXZfcHJpdmF0ZSA9IHByaXZhdGU7DQo+ICsJfQ0KPiAgDQo+IC0JZHJtLT5kZXZfcHJp dmF0ZSA9IHByaXZhdGU7DQo+ICsJcHJpdmF0ZS0+ZGV2ID0gZGV2Ow0KPiAgCXByaXZhdGUtPmRy bSA9IGRybTsNCj4gKwlwcml2YXRlLT5tdGtfZHJtX2JvdW5kID0gdHJ1ZTsNCj4gKw0KPiArCWlm ICghbXRrX2RybV9jaGVja19sYXN0X2RybV9iaW5kKGRldikpDQo+ICsJCXJldHVybiAwOw0KPiAr DQo+ICsJbXRrX2RybV9zZXR1cF9hbGxfZHJtX3ByaXZhdGUoZGV2KTsNCj4gIA0KPiAgCXJldCA9 IG10a19kcm1fa21zX2luaXQoZHJtKTsNCj4gIAlpZiAocmV0IDwgMCkNCj4gQEAgLTQwMSwxMCAr NjUxLDEzIEBAIHN0YXRpYyB2b2lkIG10a19kcm1fdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikN Cj4gIHsNCj4gIAlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2YXRlID0gZGV2X2dldF9kcnZk YXRhKGRldik7DQo+ICANCj4gLQlkcm1fZGV2X3VucmVnaXN0ZXIocHJpdmF0ZS0+ZHJtKTsNCj4g LQltdGtfZHJtX2ttc19kZWluaXQocHJpdmF0ZS0+ZHJtKTsNCj4gLQlkcm1fZGV2X3B1dChwcml2 YXRlLT5kcm0pOw0KPiAtCXByaXZhdGUtPm51bV9waXBlcyA9IDA7DQo+ICsJLyogZm9yIG11bHRp IG1tc3lzIGRldiwgdW5yZWdpc3RlciBkcm0gZGV2IGluIG1tc3lzIG1hc3RlciAqLw0KPiArCWlm IChwcml2YXRlLT5kYXRhLT5tbXN5c19pZCA9PSAwKSB7DQo+ICsJCWRybV9kZXZfdW5yZWdpc3Rl cihwcml2YXRlLT5kcm0pOw0KPiArCQltdGtfZHJtX2ttc19kZWluaXQocHJpdmF0ZS0+ZHJtKTsN Cj4gKwkJZHJtX2Rldl9wdXQocHJpdmF0ZS0+ZHJtKTsNCj4gKwl9DQo+ICsJcHJpdmF0ZS0+bXRr X2RybV9ib3VuZCA9IGZhbHNlOw0KPiAgCXByaXZhdGUtPmRybSA9IE5VTEw7DQo+ICB9DQo+ICAN Cj4gQEAgLTQ4NSw0OSArNzM4LDQyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IG10a19kZHBfY29tcF9kdF9pZHNbXSA9IHsNCj4gIAl7IH0NCj4gIH07DQo+ICANCj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19kcm1fb2ZfaWRzW10gPSB7DQo+IC0JeyAu Y29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtbW1zeXMiLA0KPiAtCSAgLmRhdGEgPSAmbXQy NzAxX21tc3lzX2RyaXZlcl9kYXRhfSwNCj4gLQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10 NzYyMy1tbXN5cyIsDQo+IC0JICAuZGF0YSA9ICZtdDc2MjNfbW1zeXNfZHJpdmVyX2RhdGF9LA0K PiAtCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQyNzEyLW1tc3lzIiwNCj4gLQkgIC5kYXRh ID0gJm10MjcxMl9tbXN5c19kcml2ZXJfZGF0YX0sDQo+IC0JeyAuY29tcGF0aWJsZSA9ICJtZWRp YXRlayxtdDgxNzMtbW1zeXMiLA0KPiAtCSAgLmRhdGEgPSAmbXQ4MTczX21tc3lzX2RyaXZlcl9k YXRhfSwNCj4gLQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE4My1tbXN5cyIsDQo+IC0J ICAuZGF0YSA9ICZtdDgxODNfbW1zeXNfZHJpdmVyX2RhdGF9LA0KPiAtCXsuY29tcGF0aWJsZSA9 ICJtZWRpYXRlayxtdDgxOTUtdmRvc3lzMCIsDQo+IC0JICAuZGF0YSA9ICZtdDgxOTVfdmRvc3lz MF9kcml2ZXJfZGF0YX0sDQo+IC0JeyB9DQo+IC19Ow0KPiAtTU9EVUxFX0RFVklDRV9UQUJMRShv ZiwgbXRrX2RybV9vZl9pZHMpOw0KPiAtDQo+ICBzdGF0aWMgaW50IG10a19kcm1fcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmcGRldi0+ZGV2Ow0KPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGhhbmRsZSA9IGRldi0+cGFy ZW50LT5vZl9ub2RlOw0KPiAgCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkOw0KPiAr CWNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgKmRydl9kYXRhOw0KPiAgCXN0cnVj dCBtdGtfZHJtX3ByaXZhdGUgKnByaXZhdGU7DQo+ICAJc3RydWN0IGRldmljZV9ub2RlICpub2Rl Ow0KPiAgCXN0cnVjdCBjb21wb25lbnRfbWF0Y2ggKm1hdGNoID0gTlVMTDsNCj4gKwlzdHJ1Y3Qg bXRrX21tc3lzX3ByaXZhdGUgKm1tc3lzX3ByaXY7DQo+ICAJaW50IHJldDsNCj4gIAlpbnQgaTsN Cj4gIA0KPiArCW9mX2lkID0gb2ZfbWF0Y2hfbm9kZShtdGtfZHJtX29mX2lkcywgcGhhbmRsZSk7 DQo+ICsJaWYgKCFvZl9pZCkNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsNCj4gKwlkcnZfZGF0 YSA9IG9mX2lkLT5kYXRhOw0KPiAgCXByaXZhdGUgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo KnByaXZhdGUpLCBHRlBfS0VSTkVMKTsNCj4gIAlpZiAoIXByaXZhdGUpDQo+ICAJCXJldHVybiAt RU5PTUVNOw0KPiAgDQo+ICsJcHJpdmF0ZS0+YWxsX2RybV9wcml2YXRlID0gZGV2bV9rbWFsbG9j X2FycmF5KGRldiwgZHJ2X2RhdGEtPm1tc3lzX2Rldl9udW0sDQo+ICsJCQkJCQkgICAgICBzaXpl b2YoKnByaXZhdGUtPmFsbF9kcm1fcHJpdmF0ZSksDQo+ICsJCQkJCQkgICAgICBHRlBfS0VSTkVM KTsNCj4gKwlpZiAoIXByaXZhdGUtPmFsbF9kcm1fcHJpdmF0ZSkNCj4gKwkJcmV0dXJuIC1FTk9N RU07DQo+ICsNCj4gKwlwcml2YXRlLT5kYXRhID0gZHJ2X2RhdGE7DQo+ICAJcHJpdmF0ZS0+bW1z eXNfZGV2ID0gZGV2LT5wYXJlbnQ7DQo+ICAJaWYgKCFwcml2YXRlLT5tbXN5c19kZXYpIHsNCj4g IAkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IE1NU1lTIGRldmljZVxuIik7DQo+ICAJCXJl dHVybiAtRU5PREVWOw0KPiAgCX0NCj4gLQ0KPiAtCW9mX2lkID0gb2ZfbWF0Y2hfbm9kZShtdGtf ZHJtX29mX2lkcywgcGhhbmRsZSk7DQo+IC0JaWYgKCFvZl9pZCkNCj4gLQkJcmV0dXJuIC1FTk9E RVY7DQo+IC0NCj4gLQlwcml2YXRlLT5kYXRhID0gb2ZfaWQtPmRhdGE7DQo+ICsJbW1zeXNfcHJp diA9IGRldl9nZXRfZHJ2ZGF0YShwcml2YXRlLT5tbXN5c19kZXYpOw0KPiArCW1tc3lzX3ByaXYt PmRybV9wcml2YXRlID0gcHJpdmF0ZTsNCj4gIA0KPiAgCS8qIEl0ZXJhdGUgb3ZlciBzaWJsaW5n IERJU1AgZnVuY3Rpb24gYmxvY2tzICovDQo+ICAJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShwaGFu ZGxlLT5wYXJlbnQsIG5vZGUpIHsNCj4gQEAgLTU0OCw3ICs3OTQsMTMgQEAgc3RhdGljIGludCBt dGtfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJCWNvbXBfdHlw ZSA9IChlbnVtIG10a19kZHBfY29tcF90eXBlKW9mX2lkLT5kYXRhOw0KPiAgDQo+ICAJCWlmIChj b21wX3R5cGUgPT0gTVRLX0RJU1BfTVVURVgpIHsNCj4gLQkJCXByaXZhdGUtPm11dGV4X25vZGUg PSBvZl9ub2RlX2dldChub2RlKTsNCj4gKwkJCWludCBpZDsNCj4gKw0KPiArCQkJaWQgPSBvZl9h bGlhc19nZXRfaWQobm9kZSwgIm11dGV4Iik7DQo+ICsJCQlpZiAoaWQgPCAwIHx8IGlkID09IGRy dl9kYXRhLT5tbXN5c19pZCkgew0KPiArCQkJCXByaXZhdGUtPm11dGV4X25vZGUgPSBvZl9ub2Rl X2dldChub2RlKTsNCj4gKwkJCQlkZXZfZGJnKGRldiwgImdldCBtdXRleCBmb3IgbW1zeXMgJWQi LCBkcnZfZGF0YS0+bW1zeXNfaWQpOw0KPiArCQkJfQ0KPiAgCQkJY29udGludWU7DQo+ICAJCX0N Cj4gIA0KPiBAQCAtNTU5LDYgKzgxMSw5IEBAIHN0YXRpYyBpbnQgbXRrX2RybV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCQkJY29udGludWU7DQo+ICAJCX0NCj4gIA0K PiArCQlpZiAoIW10a19kcm1fZmluZF9tbXN5c19jb21wKHByaXZhdGUsIGNvbXBfaWQpKQ0KPiAr CQkJY29udGludWU7DQo+ICsNCj4gIAkJcHJpdmF0ZS0+Y29tcF9ub2RlW2NvbXBfaWRdID0gb2Zf bm9kZV9nZXQobm9kZSk7DQo+ICANCj4gIAkJLyoNCj4gQEAgLTU3Myw2ICs4MjgsNyBAQCBzdGF0 aWMgaW50IG10a19kcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAkJ ICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9NRVJHRSB8fA0KPiAgCQkgICAgY29tcF90eXBlID09 IE1US19ESVNQX09WTCB8fA0KPiAgCQkgICAgY29tcF90eXBlID09IE1US19ESVNQX09WTF8yTCB8 fA0KPiArCQkgICAgY29tcF90eXBlID09IE1US19ESVNQX1BTRVVET19PVkwgfHwNCj4gIAkJICAg IGNvbXBfdHlwZSA9PSBNVEtfRElTUF9SRE1BIHx8DQo+ICAJCSAgICBjb21wX3R5cGUgPT0gTVRL X0RQSSB8fA0KPiAgCQkgICAgY29tcF90eXBlID09IE1US19EU0kpIHsNCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZHJ2LmgNCj4gaW5kZXggYzg3ZWJiNTMwOWQwLi4yMTJlNGY4N2Mz NWMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5o DQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+IEBAIC0y OSwxNCArMjksMTUgQEAgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSB7DQo+ICAJdW5zaWdu ZWQgaW50IHRoaXJkX2xlbjsNCj4gIA0KPiAgCWJvb2wgc2hhZG93X3JlZ2lzdGVyOw0KPiArCXVu c2lnbmVkIGludCBtbXN5c19pZDsNCj4gKwl1bnNpZ25lZCBpbnQgbW1zeXNfZGV2X251bTsNCj4g IH07DQo+ICANCj4gIHN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgew0KPiAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm07DQo+ICAJc3RydWN0IGRldmljZSAqZG1hX2RldjsNCj4gLQ0KPiAtCXVuc2lnbmVk IGludCBudW1fcGlwZXM7DQo+IC0NCj4gKwlib29sIG10a19kcm1fYm91bmQ7DQo+ICsJc3RydWN0 IGRldmljZSAqZGV2Ow0KPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbXV0ZXhfbm9kZTsNCj4gIAlz dHJ1Y3QgZGV2aWNlICptdXRleF9kZXY7DQo+ICAJc3RydWN0IGRldmljZSAqbW1zeXNfZGV2Ow0K PiBAQCAtNDQsNiArNDUsNyBAQCBzdHJ1Y3QgbXRrX2RybV9wcml2YXRlIHsNCj4gIAlzdHJ1Y3Qg bXRrX2RkcF9jb21wIGRkcF9jb21wW0REUF9DT01QT05FTlRfSURfTUFYXTsNCj4gIAljb25zdCBz dHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhICpkYXRhOw0KPiAgCXN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdXNwZW5kX3N0YXRlOw0KPiArCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKiphbGxf ZHJtX3ByaXZhdGU7DQo+ICB9Ow0KPiAgDQo+ICBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBtdGtfZGlzcF9jY29ycl9kcml2ZXI7DQoNCg==