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=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,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 EB30DC2D0BF for ; Fri, 6 Dec 2019 02:05:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A40FA2245C for ; Fri, 6 Dec 2019 02:05:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="p6dG73h6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726365AbfLFCFP (ORCPT ); Thu, 5 Dec 2019 21:05:15 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:23423 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726076AbfLFCFO (ORCPT ); Thu, 5 Dec 2019 21:05:14 -0500 X-UUID: bd255d03f89c4ae5963db2eb6cb522ac-20191206 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=o8VpX4ZFEXeccpf9eA6JtXcIfAJw1TNvC92tkZfZa4E=; b=p6dG73h6MrW3yFigyC4d/z2DBH5ooe371IcI55lu2UHRZBH1KL9WO7j4YgVL9qnnbTnP5UJ2jsBEYp9U58Es08gyfNOqX/hESoRKuVi6jO6fyb2hZdj/L/+Cu6t2Yt8Qjm1/WJ+PUzq2jzK4AS5Wk8X/x/VOftSNL1azouHrZbY=; X-UUID: bd255d03f89c4ae5963db2eb6cb522ac-20191206 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 33523773; Fri, 06 Dec 2019 10:05:03 +0800 Received: from mtkcas09.mediatek.inc (172.21.101.178) by mtkmbs05n2.mediatek.inc (172.21.101.140) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Fri, 6 Dec 2019 10:04:45 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas09.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Fri, 6 Dec 2019 10:04:48 +0800 Message-ID: <1575597902.6328.5.camel@mtksdaap41> Subject: Re: [PATCH v4 6/7] drm/mediatek: support CMDQ interface in ddp component From: CK Hu To: Bibby Hsieh CC: David Airlie , Matthias Brugger , Daniel Vetter , , , Philipp Zabel , YT Shen , Thierry Reding , , , , , , Yongqiang Niu Date: Fri, 6 Dec 2019 10:05:02 +0800 In-Reply-To: <20191205092749.4021-7-bibby.hsieh@mediatek.com> References: <20191205092749.4021-1-bibby.hsieh@mediatek.com> <20191205092749.4021-7-bibby.hsieh@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 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIEJpYmJ5Og0KDQpPbiBUaHUsIDIwMTktMTItMDUgYXQgMTc6MjcgKzA4MDAsIEJpYmJ5IEhz aWVoIHdyb3RlOg0KPiBUaGUgQ01EUSAoQ29tbWFuZCBRdWV1ZSkgaW4gTVQ4MTgzIGlzIHVzZWQg dG8gaGVscA0KPiB1cGRhdGUgYWxsIHJlbGV2YW50IGRpc3BsYXkgY29udHJvbGxlciByZWdpc3Rl cnMNCj4gd2l0aCBjcml0aWNhbCB0aW1lIGxpbWF0aW9uLg0KPiBUaGlzIHBhdGNoIGFkZCBjbWRx IGludGVyZmFjZSBpbiBkZHBfY29tcCBpbnRlcmZhY2UsDQo+IGxldCBhbGwgZGRwX2NvbXAgaW50 ZXJmYWNlIGNhbiBzdXBwb3J0IGNwdS9jbWRxIGZ1bmN0aW9uDQo+IGF0IHRoZSBzYW1lIHRpbWUu DQoNClJldmlld2VkLWJ5OiBDSyBIdSA8Y2suaHVAbWVkaWF0ZWsuY29tPg0KDQo+IA0KPiBTaWdu ZWQtb2ZmLWJ5OiBZVCBTaGVuIDx5dC5zaGVuQG1lZGlhdGVrLmNvbT4NCj4gU2lnbmVkLW9mZi1i eTogQ0sgSHUgPGNrLmh1QG1lZGlhdGVrLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogUGhpbGlwcCBa YWJlbCA8cC56YWJlbEBwZW5ndXRyb25peC5kZT4NCj4gU2lnbmVkLW9mZi1ieTogQmliYnkgSHNp ZWggPGJpYmJ5LmhzaWVoQG1lZGlhdGVrLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogWW9uZ3FpYW5n IE5pdSA8eW9uZ3FpYW5nLm5pdUBtZWRpYXRlay5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX2NvbG9yLmMgICB8ICAgNyArLQ0KPiAgZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX292bC5jICAgICB8ICA2NSArKysrKy0tLS0tDQo+ICBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcmRtYS5jICAgIHwgIDQzICsrKystLS0NCj4g IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYyAgICAgfCAgMTAgKy0NCj4g IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmMgfCAxMzIgKysrKysr KysrKysrKysrLS0tLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9j b21wLmggfCAgMzEgKysrLS0NCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTk0IGluc2VydGlvbnMoKyks IDk0IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZGlzcF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNw X2NvbG9yLmMNCj4gaW5kZXggNTlkZTJhNDZhYTQ5Li42ZmIwZDY5ODNhNGEgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9jb2xvci5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9jb2xvci5jDQo+IEBAIC05LDYgKzksNyBA QA0KPiAgI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L29m X2lycS5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9tdGstY21kcS5oPg0KPiAgDQo+ICAjaW5jbHVkZSAibXRr X2RybV9jcnRjLmgiDQo+ICAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIg0KPiBAQCAtNDUs MTIgKzQ2LDEyIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10a19kaXNwX2NvbG9yICpjb21wX3Rv X2NvbG9yKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApDQo+ICANCj4gIHN0YXRpYyB2b2lkIG10 a19jb2xvcl9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHcs DQo+ICAJCQkgICAgIHVuc2lnbmVkIGludCBoLCB1bnNpZ25lZCBpbnQgdnJlZnJlc2gsDQo+IC0J CQkgICAgIHVuc2lnbmVkIGludCBicGMpDQo+ICsJCQkgICAgIHVuc2lnbmVkIGludCBicGMsIHN0 cnVjdCBjbWRxX3BrdCAqY21kcV9wa3QpDQo+ICB7DQo+ICAJc3RydWN0IG10a19kaXNwX2NvbG9y ICpjb2xvciA9IGNvbXBfdG9fY29sb3IoY29tcCk7DQo+ICANCj4gLQl3cml0ZWwodywgY29tcC0+ cmVncyArIERJU1BfQ09MT1JfV0lEVEgoY29sb3IpKTsNCj4gLQl3cml0ZWwoaCwgY29tcC0+cmVn cyArIERJU1BfQ09MT1JfSEVJR0hUKGNvbG9yKSk7DQo+ICsJbXRrX2RkcF93cml0ZShjbWRxX3Br dCwgdywgY29tcCwgRElTUF9DT0xPUl9XSURUSChjb2xvcikpOw0KPiArCW10a19kZHBfd3JpdGUo Y21kcV9wa3QsIGgsIGNvbXAsIERJU1BfQ09MT1JfSEVJR0hUKGNvbG9yKSk7DQo+ICB9DQo+ICAN Cj4gIHN0YXRpYyB2b2lkIG10a19jb2xvcl9zdGFydChzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21w KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX292bC5j IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX292bC5jDQo+IGluZGV4IDhhMzIy NDg2NzFjMy4uNjQ5ZTM3MWRkOWI3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2Rpc3Bfb3ZsLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kaXNwX292bC5jDQo+IEBAIC0xMiw2ICsxMiw3IEBADQo+ICAjaW5jbHVkZSA8bGludXgvb2Zf aXJxLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ICAjaW5jbHVk ZSA8bGludXgvcG1fcnVudGltZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9t dGstY21kcS5oPg0KPiAgDQo+ICAjaW5jbHVkZSAibXRrX2RybV9jcnRjLmgiDQo+ICAjaW5jbHVk ZSAibXRrX2RybV9kZHBfY29tcC5oIg0KPiBAQCAtMTI1LDE0ICsxMjYsMTUgQEAgc3RhdGljIHZv aWQgbXRrX292bF9zdG9wKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApDQo+ICANCj4gIHN0YXRp YyB2b2lkIG10a19vdmxfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVk IGludCB3LA0KPiAgCQkJICAgdW5zaWduZWQgaW50IGgsIHVuc2lnbmVkIGludCB2cmVmcmVzaCwN Cj4gLQkJCSAgIHVuc2lnbmVkIGludCBicGMpDQo+ICsJCQkgICB1bnNpZ25lZCBpbnQgYnBjLCBz dHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiAgew0KPiAgCWlmICh3ICE9IDAgJiYgaCAhPSAw KQ0KPiAtCQl3cml0ZWxfcmVsYXhlZChoIDw8IDE2IHwgdywgY29tcC0+cmVncyArIERJU1BfUkVH X09WTF9ST0lfU0laRSk7DQo+IC0Jd3JpdGVsX3JlbGF4ZWQoMHgwLCBjb21wLT5yZWdzICsgRElT UF9SRUdfT1ZMX1JPSV9CR0NMUik7DQo+ICsJCW10a19kZHBfd3JpdGVfcmVsYXhlZChjbWRxX3Br dCwgaCA8PCAxNiB8IHcsIGNvbXAsDQo+ICsJCQkJICAgICAgRElTUF9SRUdfT1ZMX1JPSV9TSVpF KTsNCj4gKwltdGtfZGRwX3dyaXRlX3JlbGF4ZWQoY21kcV9wa3QsIDB4MCwgY29tcCwgRElTUF9S RUdfT1ZMX1JPSV9CR0NMUik7DQo+ICANCj4gLQl3cml0ZWwoMHgxLCBjb21wLT5yZWdzICsgRElT UF9SRUdfT1ZMX1JTVCk7DQo+IC0Jd3JpdGVsKDB4MCwgY29tcC0+cmVncyArIERJU1BfUkVHX09W TF9SU1QpOw0KPiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIDB4MSwgY29tcCwgRElTUF9SRUdf T1ZMX1JTVCk7DQo+ICsJbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgMHgwLCBjb21wLCBESVNQX1JF R19PVkxfUlNUKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHVuc2lnbmVkIGludCBtdGtfb3ZsX2xh eWVyX25yKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApDQo+IEBAIC0xNzYsMTYgKzE3OCwxNiBA QCBzdGF0aWMgaW50IG10a19vdmxfbGF5ZXJfY2hlY2soc3RydWN0IG10a19kZHBfY29tcCAqY29t cCwgdW5zaWduZWQgaW50IGlkeCwNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gIA0KPiAtc3RhdGlj IHZvaWQgbXRrX292bF9sYXllcl9vbihzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25l ZCBpbnQgaWR4KQ0KPiArc3RhdGljIHZvaWQgbXRrX292bF9sYXllcl9vbihzdHJ1Y3QgbXRrX2Rk cF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgaWR4LA0KPiArCQkJICAgICBzdHJ1Y3QgY21kcV9w a3QgKmNtZHFfcGt0KQ0KPiAgew0KPiAtCXVuc2lnbmVkIGludCByZWc7DQo+ICAJdW5zaWduZWQg aW50IGdtY190aHJzaGRfbDsNCj4gIAl1bnNpZ25lZCBpbnQgZ21jX3RocnNoZF9oOw0KPiAgCXVu c2lnbmVkIGludCBnbWNfdmFsdWU7DQo+ICAJc3RydWN0IG10a19kaXNwX292bCAqb3ZsID0gY29t cF90b19vdmwoY29tcCk7DQo+ICANCj4gLQl3cml0ZWwoMHgxLCBjb21wLT5yZWdzICsgRElTUF9S RUdfT1ZMX1JETUFfQ1RSTChpZHgpKTsNCj4gLQ0KPiArCW10a19kZHBfd3JpdGUoY21kcV9wa3Qs IDB4MSwgY29tcCwNCj4gKwkJICAgICAgRElTUF9SRUdfT1ZMX1JETUFfQ1RSTChpZHgpKTsNCj4g IAlnbWNfdGhyc2hkX2wgPSBHTUNfVEhSRVNIT0xEX0xPVyA+Pg0KPiAgCQkgICAgICAoR01DX1RI UkVTSE9MRF9CSVRTIC0gb3ZsLT5kYXRhLT5nbWNfYml0cyk7DQo+ICAJZ21jX3RocnNoZF9oID0g R01DX1RIUkVTSE9MRF9ISUdIID4+DQo+IEBAIC0xOTUsMjIgKzE5NywxOSBAQCBzdGF0aWMgdm9p ZCBtdGtfb3ZsX2xheWVyX29uKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGlu dCBpZHgpDQo+ICAJZWxzZQ0KPiAgCQlnbWNfdmFsdWUgPSBnbWNfdGhyc2hkX2wgfCBnbWNfdGhy c2hkX2wgPDwgOCB8DQo+ICAJCQkgICAgZ21jX3RocnNoZF9oIDw8IDE2IHwgZ21jX3RocnNoZF9o IDw8IDI0Ow0KPiAtCXdyaXRlbChnbWNfdmFsdWUsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19PVkxf UkRNQV9HTUMoaWR4KSk7DQo+IC0NCj4gLQlyZWcgPSByZWFkbChjb21wLT5yZWdzICsgRElTUF9S RUdfT1ZMX1NSQ19DT04pOw0KPiAtCXJlZyA9IHJlZyB8IEJJVChpZHgpOw0KPiAtCXdyaXRlbChy ZWcsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19PVkxfU1JDX0NPTik7DQo+ICsJbXRrX2RkcF93cml0 ZShjbWRxX3BrdCwgZ21jX3ZhbHVlLA0KPiArCQkgICAgICBjb21wLCBESVNQX1JFR19PVkxfUkRN QV9HTUMoaWR4KSk7DQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBCSVQoaWR4KSwg Y29tcCwNCj4gKwkJCSAgIERJU1BfUkVHX09WTF9TUkNfQ09OLCBCSVQoaWR4KSk7DQo+ICB9DQo+ ICANCj4gLXN0YXRpYyB2b2lkIG10a19vdmxfbGF5ZXJfb2ZmKHN0cnVjdCBtdGtfZGRwX2NvbXAg KmNvbXAsIHVuc2lnbmVkIGludCBpZHgpDQo+ICtzdGF0aWMgdm9pZCBtdGtfb3ZsX2xheWVyX29m ZihzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgaWR4LA0KPiArCQkJICAg ICAgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCkNCj4gIHsNCj4gLQl1bnNpZ25lZCBpbnQgcmVn Ow0KPiAtDQo+IC0JcmVnID0gcmVhZGwoY29tcC0+cmVncyArIERJU1BfUkVHX09WTF9TUkNfQ09O KTsNCj4gLQlyZWcgPSByZWcgJiB+QklUKGlkeCk7DQo+IC0Jd3JpdGVsKHJlZywgY29tcC0+cmVn cyArIERJU1BfUkVHX09WTF9TUkNfQ09OKTsNCj4gLQ0KPiAtCXdyaXRlbCgweDAsIGNvbXAtPnJl Z3MgKyBESVNQX1JFR19PVkxfUkRNQV9DVFJMKGlkeCkpOw0KPiArCW10a19kZHBfd3JpdGVfbWFz ayhjbWRxX3BrdCwgMCwgY29tcCwNCj4gKwkJCSAgIERJU1BfUkVHX09WTF9TUkNfQ09OLCBCSVQo aWR4KSk7DQo+ICsJbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgMCwgY29tcCwNCj4gKwkJICAgICAg RElTUF9SRUdfT1ZMX1JETUFfQ1RSTChpZHgpKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHVuc2ln bmVkIGludCBvdmxfZm10X2NvbnZlcnQoc3RydWN0IG10a19kaXNwX292bCAqb3ZsLCB1bnNpZ25l ZCBpbnQgZm10KQ0KPiBAQCAtMjUwLDcgKzI0OSw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgb3Zs X2ZtdF9jb252ZXJ0KHN0cnVjdCBtdGtfZGlzcF9vdmwgKm92bCwgdW5zaWduZWQgaW50IGZtdCkN Cj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgbXRrX292bF9sYXllcl9jb25maWcoc3RydWN0IG10 a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IGlkeCwNCj4gLQkJCQkgc3RydWN0IG10a19w bGFuZV9zdGF0ZSAqc3RhdGUpDQo+ICsJCQkJIHN0cnVjdCBtdGtfcGxhbmVfc3RhdGUgKnN0YXRl LA0KPiArCQkJCSBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiAgew0KPiAgCXN0cnVjdCBt dGtfZGlzcF9vdmwgKm92bCA9IGNvbXBfdG9fb3ZsKGNvbXApOw0KPiAgCXN0cnVjdCBtdGtfcGxh bmVfcGVuZGluZ19zdGF0ZSAqcGVuZGluZyA9ICZzdGF0ZS0+cGVuZGluZzsNCj4gQEAgLTI2Miw3 ICsyNjIsNyBAQCBzdGF0aWMgdm9pZCBtdGtfb3ZsX2xheWVyX2NvbmZpZyhzdHJ1Y3QgbXRrX2Rk cF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgaWR4LA0KPiAgCXVuc2lnbmVkIGludCBjb247DQo+ ICANCj4gIAlpZiAoIXBlbmRpbmctPmVuYWJsZSkNCj4gLQkJbXRrX292bF9sYXllcl9vZmYoY29t cCwgaWR4KTsNCj4gKwkJbXRrX292bF9sYXllcl9vZmYoY29tcCwgaWR4LCBjbWRxX3BrdCk7DQo+ ICANCj4gIAljb24gPSBvdmxfZm10X2NvbnZlcnQob3ZsLCBmbXQpOw0KPiAgCWlmIChpZHggIT0g MCkNCj4gQEAgLTI3OCwxNCArMjc4LDE5IEBAIHN0YXRpYyB2b2lkIG10a19vdmxfbGF5ZXJfY29u ZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCBpZHgsDQo+ICAJCWFk ZHIgKz0gcGVuZGluZy0+cGl0Y2ggLSAxOw0KPiAgCX0NCj4gIA0KPiAtCXdyaXRlbF9yZWxheGVk KGNvbiwgY29tcC0+cmVncyArIERJU1BfUkVHX09WTF9DT04oaWR4KSk7DQo+IC0Jd3JpdGVsX3Jl bGF4ZWQocGl0Y2gsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19PVkxfUElUQ0goaWR4KSk7DQo+IC0J d3JpdGVsX3JlbGF4ZWQoc3JjX3NpemUsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19PVkxfU1JDX1NJ WkUoaWR4KSk7DQo+IC0Jd3JpdGVsX3JlbGF4ZWQob2Zmc2V0LCBjb21wLT5yZWdzICsgRElTUF9S RUdfT1ZMX09GRlNFVChpZHgpKTsNCj4gLQl3cml0ZWxfcmVsYXhlZChhZGRyLCBjb21wLT5yZWdz ICsgRElTUF9SRUdfT1ZMX0FERFIob3ZsLCBpZHgpKTsNCj4gKwltdGtfZGRwX3dyaXRlX3JlbGF4 ZWQoY21kcV9wa3QsIGNvbiwgY29tcCwNCj4gKwkJCSAgICAgIERJU1BfUkVHX09WTF9DT04oaWR4 KSk7DQo+ICsJbXRrX2RkcF93cml0ZV9yZWxheGVkKGNtZHFfcGt0LCBwaXRjaCwgY29tcCwNCj4g KwkJCSAgICAgIERJU1BfUkVHX09WTF9QSVRDSChpZHgpKTsNCj4gKwltdGtfZGRwX3dyaXRlX3Jl bGF4ZWQoY21kcV9wa3QsIHNyY19zaXplLCBjb21wLA0KPiArCQkJICAgICAgRElTUF9SRUdfT1ZM X1NSQ19TSVpFKGlkeCkpOw0KPiArCW10a19kZHBfd3JpdGVfcmVsYXhlZChjbWRxX3BrdCwgb2Zm c2V0LCBjb21wLA0KPiArCQkJICAgICAgRElTUF9SRUdfT1ZMX09GRlNFVChpZHgpKTsNCj4gKwlt dGtfZGRwX3dyaXRlX3JlbGF4ZWQoY21kcV9wa3QsIGFkZHIsIGNvbXAsDQo+ICsJCQkgICAgICBE SVNQX1JFR19PVkxfQUREUihvdmwsIGlkeCkpOw0KPiAgDQo+ICAJaWYgKHBlbmRpbmctPmVuYWJs ZSkNCj4gLQkJbXRrX292bF9sYXllcl9vbihjb21wLCBpZHgpOw0KPiArCQltdGtfb3ZsX2xheWVy X29uKGNvbXAsIGlkeCwgY21kcV9wa3QpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBtdGtf b3ZsX2JnY2xyX2luX29uKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcmRtYS5jIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX3JkbWEuYw0KPiBpbmRleCAxNWNjNGFlODRhZWUuLmMxYWJk ZTM3NDNiZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNw X3JkbWEuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcmRtYS5j DQo+IEBAIC0xMCw2ICsxMCw3IEBADQo+ICAjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQo+ICAj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvcG1f cnVudGltZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9tdGstY21kcS5oPg0K PiAgDQo+ICAjaW5jbHVkZSAibXRrX2RybV9jcnRjLmgiDQo+ICAjaW5jbHVkZSAibXRrX2RybV9k ZHBfY29tcC5oIg0KPiBAQCAtMTI3LDE1ICsxMjgsMTcgQEAgc3RhdGljIHZvaWQgbXRrX3JkbWFf c3RvcChzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBtdGtf cmRtYV9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHdpZHRo LA0KPiAgCQkJICAgIHVuc2lnbmVkIGludCBoZWlnaHQsIHVuc2lnbmVkIGludCB2cmVmcmVzaCwN Cj4gLQkJCSAgICB1bnNpZ25lZCBpbnQgYnBjKQ0KPiArCQkJICAgIHVuc2lnbmVkIGludCBicGMs IHN0cnVjdCBjbWRxX3BrdCAqY21kcV9wa3QpDQo+ICB7DQo+ICAJdW5zaWduZWQgaW50IHRocmVz aG9sZDsNCj4gIAl1bnNpZ25lZCBpbnQgcmVnOw0KPiAgCXN0cnVjdCBtdGtfZGlzcF9yZG1hICpy ZG1hID0gY29tcF90b19yZG1hKGNvbXApOw0KPiAgCXUzMiByZG1hX2ZpZm9fc2l6ZTsNCj4gIA0K PiAtCXJkbWFfdXBkYXRlX2JpdHMoY29tcCwgRElTUF9SRUdfUkRNQV9TSVpFX0NPTl8wLCAweGZm Ziwgd2lkdGgpOw0KPiAtCXJkbWFfdXBkYXRlX2JpdHMoY29tcCwgRElTUF9SRUdfUkRNQV9TSVpF X0NPTl8xLCAweGZmZmZmLCBoZWlnaHQpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3Br dCwgd2lkdGgsIGNvbXAsDQo+ICsJCQkgICBESVNQX1JFR19SRE1BX1NJWkVfQ09OXzAsIDB4ZmZm KTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIGhlaWdodCwgY29tcCwNCj4gKwkJ CSAgIERJU1BfUkVHX1JETUFfU0laRV9DT05fMSwgMHhmZmZmZik7DQo+ICANCj4gIAlpZiAocmRt YS0+Zmlmb19zaXplKQ0KPiAgCQlyZG1hX2ZpZm9fc2l6ZSA9IHJkbWEtPmZpZm9fc2l6ZTsNCj4g QEAgLTE1Miw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBtdGtfcmRtYV9jb25maWcoc3RydWN0IG10 a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHdpZHRoLA0KPiAgCXJlZyA9IFJETUFfRklG T19VTkRFUkZMT1dfRU4gfA0KPiAgCSAgICAgIFJETUFfRklGT19QU0VVRE9fU0laRShyZG1hX2Zp Zm9fc2l6ZSkgfA0KPiAgCSAgICAgIFJETUFfT1VUUFVUX1ZBTElEX0ZJRk9fVEhSRVNIT0xEKHRo cmVzaG9sZCk7DQo+IC0Jd3JpdGVsKHJlZywgY29tcC0+cmVncyArIERJU1BfUkVHX1JETUFfRklG T19DT04pOw0KPiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIHJlZywgY29tcCwgRElTUF9SRUdf UkRNQV9GSUZPX0NPTik7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgcmRtYV9m bXRfY29udmVydChzdHJ1Y3QgbXRrX2Rpc3BfcmRtYSAqcmRtYSwNCj4gQEAgLTE5OCw3ICsyMDEs OCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG10a19yZG1hX2xheWVyX25yKHN0cnVjdCBtdGtfZGRw X2NvbXAgKmNvbXApDQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIG10a19yZG1hX2xheWVyX2Nv bmZpZyhzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgaWR4LA0KPiAtCQkJ CSAgc3RydWN0IG10a19wbGFuZV9zdGF0ZSAqc3RhdGUpDQo+ICsJCQkJICBzdHJ1Y3QgbXRrX3Bs YW5lX3N0YXRlICpzdGF0ZSwNCj4gKwkJCQkgIHN0cnVjdCBjbWRxX3BrdCAqY21kcV9wa3QpDQo+ ICB7DQo+ICAJc3RydWN0IG10a19kaXNwX3JkbWEgKnJkbWEgPSBjb21wX3RvX3JkbWEoY29tcCk7 DQo+ICAJc3RydWN0IG10a19wbGFuZV9wZW5kaW5nX3N0YXRlICpwZW5kaW5nID0gJnN0YXRlLT5w ZW5kaW5nOw0KPiBAQCAtMjA4LDI0ICsyMTIsMjcgQEAgc3RhdGljIHZvaWQgbXRrX3JkbWFfbGF5 ZXJfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCBpZHgsDQo+ ICAJdW5zaWduZWQgaW50IGNvbjsNCj4gIA0KPiAgCWNvbiA9IHJkbWFfZm10X2NvbnZlcnQocmRt YSwgZm10KTsNCj4gLQl3cml0ZWxfcmVsYXhlZChjb24sIGNvbXAtPnJlZ3MgKyBESVNQX1JETUFf TUVNX0NPTik7DQo+ICsJbXRrX2RkcF93cml0ZV9yZWxheGVkKGNtZHFfcGt0LCBjb24sIGNvbXAs IERJU1BfUkRNQV9NRU1fQ09OKTsNCj4gIA0KPiAgCWlmIChmbXQgPT0gRFJNX0ZPUk1BVF9VWVZZ IHx8IGZtdCA9PSBEUk1fRk9STUFUX1lVWVYpIHsNCj4gLQkJcmRtYV91cGRhdGVfYml0cyhjb21w LCBESVNQX1JFR19SRE1BX1NJWkVfQ09OXzAsDQo+IC0JCQkJIFJETUFfTUFUUklYX0VOQUJMRSwg UkRNQV9NQVRSSVhfRU5BQkxFKTsNCj4gLQkJcmRtYV91cGRhdGVfYml0cyhjb21wLCBESVNQX1JF R19SRE1BX1NJWkVfQ09OXzAsDQo+IC0JCQkJIFJETUFfTUFUUklYX0lOVF9NVFhfU0VMLA0KPiAt CQkJCSBSRE1BX01BVFJJWF9JTlRfTVRYX0JUNjAxX3RvX1JHQik7DQo+ICsJCW10a19kZHBfd3Jp dGVfbWFzayhjbWRxX3BrdCwgUkRNQV9NQVRSSVhfRU5BQkxFLCBjb21wLA0KPiArCQkJCSAgIERJ U1BfUkVHX1JETUFfU0laRV9DT05fMCwNCj4gKwkJCQkgICBSRE1BX01BVFJJWF9FTkFCTEUpOw0K PiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJETUFfTUFUUklYX0lOVF9NVFhfQlQ2 MDFfdG9fUkdCLA0KPiArCQkJCSAgIGNvbXAsIERJU1BfUkVHX1JETUFfU0laRV9DT05fMCwNCj4g KwkJCQkgICBSRE1BX01BVFJJWF9JTlRfTVRYX1NFTCk7DQo+ICAJfSBlbHNlIHsNCj4gLQkJcmRt YV91cGRhdGVfYml0cyhjb21wLCBESVNQX1JFR19SRE1BX1NJWkVfQ09OXzAsDQo+IC0JCQkJIFJE TUFfTUFUUklYX0VOQUJMRSwgMCk7DQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwg MCwgY29tcCwNCj4gKwkJCQkgICBESVNQX1JFR19SRE1BX1NJWkVfQ09OXzAsDQo+ICsJCQkJICAg UkRNQV9NQVRSSVhfRU5BQkxFKTsNCj4gIAl9DQo+ICsJbXRrX2RkcF93cml0ZV9yZWxheGVkKGNt ZHFfcGt0LCBhZGRyLCBjb21wLCBESVNQX1JETUFfTUVNX1NUQVJUX0FERFIpOw0KPiArCW10a19k ZHBfd3JpdGVfcmVsYXhlZChjbWRxX3BrdCwgcGl0Y2gsIGNvbXAsIERJU1BfUkRNQV9NRU1fU1JD X1BJVENIKTsNCj4gKwltdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBSRE1BX01FTV9HTUMsIGNvbXAs DQo+ICsJCSAgICAgIERJU1BfUkRNQV9NRU1fR01DX1NFVFRJTkdfMCk7DQo+ICsJbXRrX2RkcF93 cml0ZV9tYXNrKGNtZHFfcGt0LCBSRE1BX01PREVfTUVNT1JZLCBjb21wLA0KPiArCQkJICAgRElT UF9SRUdfUkRNQV9HTE9CQUxfQ09OLCBSRE1BX01PREVfTUVNT1JZKTsNCj4gIA0KPiAtCXdyaXRl bF9yZWxheGVkKGFkZHIsIGNvbXAtPnJlZ3MgKyBESVNQX1JETUFfTUVNX1NUQVJUX0FERFIpOw0K PiAtCXdyaXRlbF9yZWxheGVkKHBpdGNoLCBjb21wLT5yZWdzICsgRElTUF9SRE1BX01FTV9TUkNf UElUQ0gpOw0KPiAtCXdyaXRlbChSRE1BX01FTV9HTUMsIGNvbXAtPnJlZ3MgKyBESVNQX1JETUFf TUVNX0dNQ19TRVRUSU5HXzApOw0KPiAtCXJkbWFfdXBkYXRlX2JpdHMoY29tcCwgRElTUF9SRUdf UkRNQV9HTE9CQUxfQ09OLA0KPiAtCQkJIFJETUFfTU9ERV9NRU1PUlksIFJETUFfTU9ERV9NRU1P UlkpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9mdW5j cyBtdGtfZGlzcF9yZG1hX2Z1bmNzID0gew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fY3J0Yy5jDQo+IGluZGV4IGU0MGM4Y2Y3ZDc0Zi4uOGM2MjMxZWQ2ZjU1IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jDQo+IEBAIC0zMTIsNyArMzEyLDcg QEAgc3RhdGljIGludCBtdGtfY3J0Y19kZHBfaHdfaW5pdChzdHJ1Y3QgbXRrX2RybV9jcnRjICpt dGtfY3J0YykNCj4gIAkJaWYgKHByZXYgPT0gRERQX0NPTVBPTkVOVF9PVkwwKQ0KPiAgCQkJbXRr X2RkcF9jb21wX2JnY2xyX2luX29uKGNvbXApOw0KPiAgDQo+IC0JCW10a19kZHBfY29tcF9jb25m aWcoY29tcCwgd2lkdGgsIGhlaWdodCwgdnJlZnJlc2gsIGJwYyk7DQo+ICsJCW10a19kZHBfY29t cF9jb25maWcoY29tcCwgd2lkdGgsIGhlaWdodCwgdnJlZnJlc2gsIGJwYywgTlVMTCk7DQo+ICAJ CW10a19kZHBfY29tcF9zdGFydChjb21wKTsNCj4gIAl9DQo+ICANCj4gQEAgLTMyNyw3ICszMjcs NyBAQCBzdGF0aWMgaW50IG10a19jcnRjX2RkcF9od19pbml0KHN0cnVjdCBtdGtfZHJtX2NydGMg Km10a19jcnRjKQ0KPiAgCQljb21wID0gbXRrX2RybV9kZHBfY29tcF9mb3JfcGxhbmUoY3J0Yywg cGxhbmUsICZsb2NhbF9sYXllcik7DQo+ICAJCWlmIChjb21wKQ0KPiAgCQkJbXRrX2RkcF9jb21w X2xheWVyX2NvbmZpZyhjb21wLCBsb2NhbF9sYXllciwNCj4gLQkJCQkJCSAgcGxhbmVfc3RhdGUp Ow0KPiArCQkJCQkJICBwbGFuZV9zdGF0ZSwgTlVMTCk7DQo+ICAJfQ0KPiAgDQo+ICAJcmV0dXJu IDA7DQo+IEBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIHZvaWQgbXRrX2NydGNfZGRwX2NvbmZp ZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ICAJaWYgKHN0YXRlLT5wZW5kaW5nX2NvbmZpZykg ew0KPiAgCQltdGtfZGRwX2NvbXBfY29uZmlnKGNvbXAsIHN0YXRlLT5wZW5kaW5nX3dpZHRoLA0K PiAgCQkJCSAgICBzdGF0ZS0+cGVuZGluZ19oZWlnaHQsDQo+IC0JCQkJICAgIHN0YXRlLT5wZW5k aW5nX3ZyZWZyZXNoLCAwKTsNCj4gKwkJCQkgICAgc3RhdGUtPnBlbmRpbmdfdnJlZnJlc2gsIDAs IE5VTEwpOw0KPiAgDQo+ICAJCXN0YXRlLT5wZW5kaW5nX2NvbmZpZyA9IGZhbHNlOw0KPiAgCX0N Cj4gQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgdm9pZCBtdGtfY3J0Y19kZHBfY29uZmlnKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4gIA0KPiAgCQkJaWYgKGNvbXApDQo+ICAJCQkJbXRrX2Rk cF9jb21wX2xheWVyX2NvbmZpZyhjb21wLCBsb2NhbF9sYXllciwNCj4gLQkJCQkJCQkgIHBsYW5l X3N0YXRlKTsNCj4gKwkJCQkJCQkgIHBsYW5lX3N0YXRlLCBOVUxMKTsNCj4gIAkJCXBsYW5lX3N0 YXRlLT5wZW5kaW5nLmNvbmZpZyA9IGZhbHNlOw0KPiAgCQl9DQo+ICAJCW10a19jcnRjLT5wZW5k aW5nX3BsYW5lcyA9IGZhbHNlOw0KPiBAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YXRpYyB2b2lkIG10 a19jcnRjX2RkcF9jb25maWcoc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiAgDQo+ICAJCQlpZiAo Y29tcCkNCj4gIAkJCQltdGtfZGRwX2NvbXBfbGF5ZXJfY29uZmlnKGNvbXAsIGxvY2FsX2xheWVy LA0KPiAtCQkJCQkJCSAgcGxhbmVfc3RhdGUpOw0KPiArCQkJCQkJCSAgcGxhbmVfc3RhdGUsIE5V TEwpOw0KPiAgCQkJcGxhbmVfc3RhdGUtPnBlbmRpbmcuYXN5bmNfY29uZmlnID0gZmFsc2U7DQo+ ICAJCX0NCj4gIAkJbXRrX2NydGMtPnBlbmRpbmdfYXN5bmNfcGxhbmVzID0gZmFsc2U7DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5jIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuYw0KPiBpbmRleCAzNDA3 ZDM4YWZmOGYuLmY5NjdiNzQ5ZTFhMyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZGRwX2NvbXAuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9kZHBfY29tcC5jDQo+IEBAIC0xMiw3ICsxMiw4IEBADQo+ICAjaW5jbHVkZSA8 bGludXgvb2ZfaXJxLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCj4gICNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gLQ0KPiArI2luY2x1ZGUgPGRybS9k cm1QLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1jbWRxLmg+DQo+ICAj aW5jbHVkZSAibXRrX2RybV9kcnYuaCINCj4gICNpbmNsdWRlICJtdGtfZHJtX3BsYW5lLmgiDQo+ ICAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5oIg0KPiBAQCAtNzYsMzYgKzc3LDg0IEBADQo+ ICAjZGVmaW5lIERJVEhFUl9BRERfTFNISUZUX0coeCkJCQkoKCh4KSAmIDB4NykgPDwgNCkNCj4g ICNkZWZpbmUgRElUSEVSX0FERF9SU0hJRlRfRyh4KQkJCSgoKHgpICYgMHg3KSA8PCAwKQ0KPiAg DQo+ICt2b2lkIG10a19kZHBfd3JpdGUoc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCwgdW5zaWdu ZWQgaW50IHZhbHVlLA0KPiArCQkgICBzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25l ZCBpbnQgb2Zmc2V0KQ0KPiArew0KPiArI2lmZGVmIENPTkZJR19NVEtfQ01EUQ0KPiArCWlmIChj bWRxX3BrdCkNCj4gKwkJY21kcV9wa3Rfd3JpdGUoY21kcV9wa3QsIGNvbXAtPnN1YnN5cywNCj4g KwkJCSAgICAgICBjb21wLT5yZWdzX3BhICsgb2Zmc2V0LCB2YWx1ZSk7DQo+ICsJZWxzZQ0KPiAr I2VuZGlmDQo+ICsJCXdyaXRlbCh2YWx1ZSwgY29tcC0+cmVncyArIG9mZnNldCk7DQo+ICt9DQo+ ICsNCj4gK3ZvaWQgbXRrX2RkcF93cml0ZV9yZWxheGVkKHN0cnVjdCBjbWRxX3BrdCAqY21kcV9w a3QsIHVuc2lnbmVkIGludCB2YWx1ZSwNCj4gKwkJCSAgIHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNv bXAsDQo+ICsJCQkgICB1bnNpZ25lZCBpbnQgb2Zmc2V0KQ0KPiArew0KPiArI2lmZGVmIENPTkZJ R19NVEtfQ01EUQ0KPiArCWlmIChjbWRxX3BrdCkNCj4gKwkJY21kcV9wa3Rfd3JpdGUoY21kcV9w a3QsIGNvbXAtPnN1YnN5cywNCj4gKwkJCSAgICAgICBjb21wLT5yZWdzX3BhICsgb2Zmc2V0LCB2 YWx1ZSk7DQo+ICsJZWxzZQ0KPiArI2VuZGlmDQo+ICsJCXdyaXRlbF9yZWxheGVkKHZhbHVlLCBj b21wLT5yZWdzICsgb2Zmc2V0KTsNCj4gK30NCj4gKw0KPiArdm9pZCBtdGtfZGRwX3dyaXRlX21h c2soc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCwNCj4gKwkJCXVuc2lnbmVkIGludCB2YWx1ZSwN Cj4gKwkJCXN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsDQo+ICsJCQl1bnNpZ25lZCBpbnQgb2Zm c2V0LA0KPiArCQkJdW5zaWduZWQgaW50IG1hc2spDQo+ICt7DQo+ICsjaWZkZWYgQ09ORklHX01U S19DTURRDQo+ICsJaWYgKGNtZHFfcGt0KSB7DQo+ICsJCWNtZHFfcGt0X3dyaXRlX21hc2soY21k cV9wa3QsIGNvbXAtPnN1YnN5cywNCj4gKwkJCQkgICAgY29tcC0+cmVnc19wYSArIG9mZnNldCwg dmFsdWUsIG1hc2spOw0KPiArCX0gZWxzZSB7DQo+ICsjZW5kaWYNCj4gKwkJdTMyIHRtcCA9IHJl YWRsKGNvbXAtPnJlZ3MgKyBvZmZzZXQpOw0KPiArDQo+ICsJCXRtcCA9ICh0bXAgJiB+bWFzaykg fCAodmFsdWUgJiBtYXNrKTsNCj4gKwkJd3JpdGVsKHRtcCwgY29tcC0+cmVncyArIG9mZnNldCk7 DQo+ICsjaWZkZWYgQ09ORklHX01US19DTURRDQo+ICsJfQ0KPiArI2VuZGlmDQo+ICt9DQo+ICsN Cj4gIHZvaWQgbXRrX2RpdGhlcl9zZXQoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWdu ZWQgaW50IGJwYywNCj4gLQkJICAgIHVuc2lnbmVkIGludCBDRkcpDQo+ICsJCSAgICB1bnNpZ25l ZCBpbnQgQ0ZHLCBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiAgew0KPiAgCS8qIElmIGJw YyBlcXVhbCB0byAwLCB0aGUgZGl0aGVyaW5nIGZ1bmN0aW9uIGRpZG4ndCBiZSBlbmFibGVkICov DQo+ICAJaWYgKGJwYyA9PSAwKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gIAlpZiAoYnBjID49IE1U S19NSU5fQlBDKSB7DQo+IC0JCXdyaXRlbCgwLCBjb21wLT5yZWdzICsgRElTUF9ESVRIRVJfNSk7 DQo+IC0JCXdyaXRlbCgwLCBjb21wLT5yZWdzICsgRElTUF9ESVRIRVJfNyk7DQo+IC0JCXdyaXRl bChESVRIRVJfTFNCX0VSUl9TSElGVF9SKE1US19NQVhfQlBDIC0gYnBjKSB8DQo+IC0JCSAgICAg ICBESVRIRVJfQUREX0xTSElGVF9SKE1US19NQVhfQlBDIC0gYnBjKSB8DQo+IC0JCSAgICAgICBE SVRIRVJfTkVXX0JJVF9NT0RFLA0KPiAtCQkgICAgICAgY29tcC0+cmVncyArIERJU1BfRElUSEVS XzE1KTsNCj4gLQkJd3JpdGVsKERJVEhFUl9MU0JfRVJSX1NISUZUX0IoTVRLX01BWF9CUEMgLSBi cGMpIHwNCj4gLQkJICAgICAgIERJVEhFUl9BRERfTFNISUZUX0IoTVRLX01BWF9CUEMgLSBicGMp IHwNCj4gLQkJICAgICAgIERJVEhFUl9MU0JfRVJSX1NISUZUX0coTVRLX01BWF9CUEMgLSBicGMp IHwNCj4gLQkJICAgICAgIERJVEhFUl9BRERfTFNISUZUX0coTVRLX01BWF9CUEMgLSBicGMpLA0K PiAtCQkgICAgICAgY29tcC0+cmVncyArIERJU1BfRElUSEVSXzE2KTsNCj4gLQkJd3JpdGVsKERJ U1BfRElUSEVSSU5HLCBjb21wLT5yZWdzICsgQ0ZHKTsNCj4gKwkJbXRrX2RkcF93cml0ZShjbWRx X3BrdCwgMCwgY29tcCwgRElTUF9ESVRIRVJfNSk7DQo+ICsJCW10a19kZHBfd3JpdGUoY21kcV9w a3QsIDAsIGNvbXAsIERJU1BfRElUSEVSXzcpOw0KPiArCQltdGtfZGRwX3dyaXRlKGNtZHFfcGt0 LA0KPiArCQkJICAgICAgRElUSEVSX0xTQl9FUlJfU0hJRlRfUihNVEtfTUFYX0JQQyAtIGJwYykg fA0KPiArCQkJICAgICAgRElUSEVSX0FERF9MU0hJRlRfUihNVEtfTUFYX0JQQyAtIGJwYykgfA0K PiArCQkJICAgICAgRElUSEVSX05FV19CSVRfTU9ERSwNCj4gKwkJCSAgICAgIGNvbXAsIERJU1Bf RElUSEVSXzE1KTsNCj4gKwkJbXRrX2RkcF93cml0ZShjbWRxX3BrdCwNCj4gKwkJCSAgICAgIERJ VEhFUl9MU0JfRVJSX1NISUZUX0IoTVRLX01BWF9CUEMgLSBicGMpIHwNCj4gKwkJCSAgICAgIERJ VEhFUl9BRERfTFNISUZUX0IoTVRLX01BWF9CUEMgLSBicGMpIHwNCj4gKwkJCSAgICAgIERJVEhF Ul9MU0JfRVJSX1NISUZUX0coTVRLX01BWF9CUEMgLSBicGMpIHwNCj4gKwkJCSAgICAgIERJVEhF Ul9BRERfTFNISUZUX0coTVRLX01BWF9CUEMgLSBicGMpLA0KPiArCQkJICAgICAgY29tcCwgRElT UF9ESVRIRVJfMTYpOw0KPiArCQltdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBESVNQX0RJVEhFUklO RywgY29tcCwgQ0ZHKTsNCj4gIAl9DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIG10a19vZF9j b25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHcsDQo+ICAJCQkg IHVuc2lnbmVkIGludCBoLCB1bnNpZ25lZCBpbnQgdnJlZnJlc2gsDQo+IC0JCQkgIHVuc2lnbmVk IGludCBicGMpDQo+ICsJCQkgIHVuc2lnbmVkIGludCBicGMsIHN0cnVjdCBjbWRxX3BrdCAqY21k cV9wa3QpDQo+ICB7DQo+IC0Jd3JpdGVsKHcgPDwgMTYgfCBoLCBjb21wLT5yZWdzICsgRElTUF9P RF9TSVpFKTsNCj4gLQl3cml0ZWwoT0RfUkVMQVlNT0RFLCBjb21wLT5yZWdzICsgRElTUF9PRF9D RkcpOw0KPiAtCW10a19kaXRoZXJfc2V0KGNvbXAsIGJwYywgRElTUF9PRF9DRkcpOw0KPiArCW10 a19kZHBfd3JpdGUoY21kcV9wa3QsIHcgPDwgMTYgfCBoLCBjb21wLCBESVNQX09EX1NJWkUpOw0K PiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIE9EX1JFTEFZTU9ERSwgY29tcCwgRElTUF9PRF9D RkcpOw0KPiArCW10a19kaXRoZXJfc2V0KGNvbXAsIGJwYywgRElTUF9PRF9DRkcsIGNtZHFfcGt0 KTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgbXRrX29kX3N0YXJ0KHN0cnVjdCBtdGtfZGRw X2NvbXAgKmNvbXApDQo+IEBAIC0xMjAsOSArMTY5LDkgQEAgc3RhdGljIHZvaWQgbXRrX3Vmb2Vf c3RhcnQoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkNCj4gIA0KPiAgc3RhdGljIHZvaWQgbXRr X2FhbF9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHcsDQo+ ICAJCQkgICB1bnNpZ25lZCBpbnQgaCwgdW5zaWduZWQgaW50IHZyZWZyZXNoLA0KPiAtCQkJICAg dW5zaWduZWQgaW50IGJwYykNCj4gKwkJCSAgIHVuc2lnbmVkIGludCBicGMsIHN0cnVjdCBjbWRx X3BrdCAqY21kcV9wa3QpDQo+ICB7DQo+IC0Jd3JpdGVsKGggPDwgMTYgfCB3LCBjb21wLT5yZWdz ICsgRElTUF9BQUxfU0laRSk7DQo+ICsJbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgaCA8PCAxNiB8 IHcsIGNvbXAsIERJU1BfQUFMX1NJWkUpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBtdGtf YWFsX3N0YXJ0KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApDQo+IEBAIC0xMzcsMTAgKzE4Niwx MCBAQCBzdGF0aWMgdm9pZCBtdGtfYWFsX3N0b3Aoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkN Cj4gIA0KPiAgc3RhdGljIHZvaWQgbXRrX2Njb3JyX2NvbmZpZyhzdHJ1Y3QgbXRrX2RkcF9jb21w ICpjb21wLCB1bnNpZ25lZCBpbnQgdywNCj4gIAkJCSAgICAgdW5zaWduZWQgaW50IGgsIHVuc2ln bmVkIGludCB2cmVmcmVzaCwNCj4gLQkJCSAgICAgdW5zaWduZWQgaW50IGJwYykNCj4gKwkJCSAg ICAgdW5zaWduZWQgaW50IGJwYywgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCkNCj4gIHsNCj4g LQl3cml0ZWwoaCA8PCAxNiB8IHcsIGNvbXAtPnJlZ3MgKyBESVNQX0NDT1JSX1NJWkUpOw0KPiAt CXdyaXRlbChDQ09SUl9SRUxBWV9NT0RFLCBjb21wLT5yZWdzICsgRElTUF9DQ09SUl9DRkcpOw0K PiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIGggPDwgMTYgfCB3LCBjb21wLCBESVNQX0NDT1JS X1NJWkUpOw0KPiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIENDT1JSX1JFTEFZX01PREUsIGNv bXAsIERJU1BfQ0NPUlJfQ0ZHKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgbXRrX2Njb3Jy X3N0YXJ0KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApDQo+IEBAIC0xNTUsMTAgKzIwNCwxMCBA QCBzdGF0aWMgdm9pZCBtdGtfY2NvcnJfc3RvcChzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQ0K PiAgDQo+ICBzdGF0aWMgdm9pZCBtdGtfZGl0aGVyX2NvbmZpZyhzdHJ1Y3QgbXRrX2RkcF9jb21w ICpjb21wLCB1bnNpZ25lZCBpbnQgdywNCj4gIAkJCSAgICAgIHVuc2lnbmVkIGludCBoLCB1bnNp Z25lZCBpbnQgdnJlZnJlc2gsDQo+IC0JCQkgICAgICB1bnNpZ25lZCBpbnQgYnBjKQ0KPiArCQkJ ICAgICAgdW5zaWduZWQgaW50IGJwYywgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCkNCj4gIHsN Cj4gLQl3cml0ZWwoaCA8PCAxNiB8IHcsIGNvbXAtPnJlZ3MgKyBESVNQX0RJVEhFUl9TSVpFKTsN Cj4gLQl3cml0ZWwoRElUSEVSX1JFTEFZX01PREUsIGNvbXAtPnJlZ3MgKyBESVNQX0RJVEhFUl9D RkcpOw0KPiArCW10a19kZHBfd3JpdGUoY21kcV9wa3QsIGggPDwgMTYgfCB3LCBjb21wLCBESVNQ X0RJVEhFUl9TSVpFKTsNCj4gKwltdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBESVRIRVJfUkVMQVlf TU9ERSwgY29tcCwgRElTUF9ESVRIRVJfQ0ZHKTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQg bXRrX2RpdGhlcl9zdGFydChzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQ0KPiBAQCAtMTczLDEw ICsyMjIsMTAgQEAgc3RhdGljIHZvaWQgbXRrX2RpdGhlcl9zdG9wKHN0cnVjdCBtdGtfZGRwX2Nv bXAgKmNvbXApDQo+ICANCj4gIHN0YXRpYyB2b2lkIG10a19nYW1tYV9jb25maWcoc3RydWN0IG10 a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHcsDQo+ICAJCQkgICAgIHVuc2lnbmVkIGlu dCBoLCB1bnNpZ25lZCBpbnQgdnJlZnJlc2gsDQo+IC0JCQkgICAgIHVuc2lnbmVkIGludCBicGMp DQo+ICsJCQkgICAgIHVuc2lnbmVkIGludCBicGMsIHN0cnVjdCBjbWRxX3BrdCAqY21kcV9wa3Qp DQo+ICB7DQo+IC0Jd3JpdGVsKGggPDwgMTYgfCB3LCBjb21wLT5yZWdzICsgRElTUF9HQU1NQV9T SVpFKTsNCj4gLQltdGtfZGl0aGVyX3NldChjb21wLCBicGMsIERJU1BfR0FNTUFfQ0ZHKTsNCj4g KwltdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBoIDw8IDE2IHwgdywgY29tcCwgRElTUF9HQU1NQV9T SVpFKTsNCj4gKwltdGtfZGl0aGVyX3NldChjb21wLCBicGMsIERJU1BfR0FNTUFfQ0ZHLCBjbWRx X3BrdCk7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIG10a19nYW1tYV9zdGFydChzdHJ1Y3Qg bXRrX2RkcF9jb21wICpjb21wKQ0KPiBAQCAtMzI0LDYgKzM3Myw5IEBAIGludCBtdGtfZGRwX2Nv bXBfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwNCj4g IAkJICAgICAgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9mdW5jcyAqZnVuY3MpDQo+ICB7DQo+ ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqY29tcF9wZGV2Ow0KPiArCXN0cnVjdCByZXNvdXJj ZSByZXM7DQo+ICsJc3RydWN0IGNtZHFfY2xpZW50X3JlZyBjbWRxX3JlZzsNCj4gKwlpbnQgcmV0 ID0gMDsNCj4gIA0KPiAgCWlmIChjb21wX2lkIDwgMCB8fCBjb21wX2lkID49IEREUF9DT01QT05F TlRfSURfTUFYKQ0KPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gQEAgLTM1OCw2ICs0MTAsMjggQEAg aW50IG10a19kZHBfY29tcF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9u b2RlICpub2RlLA0KPiAgCX0NCj4gIAljb21wLT5kZXYgPSAmY29tcF9wZGV2LT5kZXY7DQo+ICAN Cj4gKyNpZmRlZiBDT05GSUdfTVRLX0NNRFENCj4gKwlpZiAob2ZfYWRkcmVzc190b19yZXNvdXJj ZShub2RlLCAwLCAmcmVzKSAhPSAwKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiTWlzc2luZyByZWcg aW4gJXMgbm9kZVxuIiwNCj4gKwkJCW5vZGUtPmZ1bGxfbmFtZSk7DQo+ICsJCXJldHVybiAtRUlO VkFMOw0KPiArCX0NCj4gKwljb21wLT5yZWdzX3BhID0gcmVzLnN0YXJ0Ow0KPiArDQo+ICsJY29t cF9wZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShub2RlKTsNCj4gKwlpZiAoIWNvbXBfcGRl dikgew0KPiArCQlkZXZfd2FybihkZXYsICJXYWl0aW5nIGZvciBjb21wb25lbnQgZGV2aWNlICVz XG4iLA0KPiArCQkJIG5vZGUtPmZ1bGxfbmFtZSk7DQo+ICsJCXJldHVybiAtRVBST0JFX0RFRkVS Ow0KPiArCX0NCj4gKw0KPiArCXJldCA9IGNtZHFfZGV2X2dldF9jbGllbnRfcmVnKCZjb21wX3Bk ZXYtPmRldiwgJmNtZHFfcmVnLCAwKTsNCj4gKwlpZiAocmV0ICE9IDApDQo+ICsJCWRldl9kYmco JmNvbXBfcGRldi0+ZGV2LA0KPiArCQkJImdldCBtZWRpYXRlayxnY2UtY2xpZW50LXJlZyBmYWls IVxuIik7DQo+ICsJZWxzZQ0KPiArCQljb21wLT5zdWJzeXMgPSBjbWRxX3JlZy5zdWJzeXM7DQo+ ICsjZW5kaWYNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaCBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmgNCj4gaW5kZXggZGJmYjkwZTliOWNmLi4zODRhYmFl NWE4YzggMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rk cF9jb21wLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2Nv bXAuaA0KPiBAQCAtNjksMTAgKzY5LDExIEBAIGVudW0gbXRrX2RkcF9jb21wX2lkIHsNCj4gIH07 DQo+ICANCj4gIHN0cnVjdCBtdGtfZGRwX2NvbXA7DQo+IC0NCj4gK3N0cnVjdCBjbWRxX3BrdDsN Cj4gIHN0cnVjdCBtdGtfZGRwX2NvbXBfZnVuY3Mgew0KPiAgCXZvaWQgKCpjb25maWcpKHN0cnVj dCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCB3LA0KPiAtCQkgICAgICAgdW5zaWdu ZWQgaW50IGgsIHVuc2lnbmVkIGludCB2cmVmcmVzaCwgdW5zaWduZWQgaW50IGJwYyk7DQo+ICsJ CSAgICAgICB1bnNpZ25lZCBpbnQgaCwgdW5zaWduZWQgaW50IHZyZWZyZXNoLA0KPiArCQkgICAg ICAgdW5zaWduZWQgaW50IGJwYywgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCk7DQo+ICAJdm9p ZCAoKnN0YXJ0KShzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKTsNCj4gIAl2b2lkICgqc3RvcCko c3RydWN0IG10a19kZHBfY29tcCAqY29tcCk7DQo+ICAJdm9pZCAoKmVuYWJsZV92YmxhbmspKHN0 cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7DQo+IEBAIC04 NSw3ICs4Niw4IEBAIHN0cnVjdCBtdGtfZGRwX2NvbXBfZnVuY3Mgew0KPiAgCQkJICAgdW5zaWdu ZWQgaW50IGlkeCwNCj4gIAkJCSAgIHN0cnVjdCBtdGtfcGxhbmVfc3RhdGUgKnN0YXRlKTsNCj4g IAl2b2lkICgqbGF5ZXJfY29uZmlnKShzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25l ZCBpbnQgaWR4LA0KPiAtCQkJICAgICBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpzdGF0ZSk7DQo+ ICsJCQkgICAgIHN0cnVjdCBtdGtfcGxhbmVfc3RhdGUgKnN0YXRlLA0KPiArCQkJICAgICBzdHJ1 Y3QgY21kcV9wa3QgKmNtZHFfcGt0KTsNCj4gIAl2b2lkICgqZ2FtbWFfc2V0KShzdHJ1Y3QgbXRr X2RkcF9jb21wICpjb21wLA0KPiAgCQkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKTsN Cj4gIAl2b2lkICgqYmdjbHJfaW5fb24pKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApOw0KPiBA QCAtOTksMTQgKzEwMSwxNyBAQCBzdHJ1Y3QgbXRrX2RkcF9jb21wIHsNCj4gIAlzdHJ1Y3QgZGV2 aWNlICpkZXY7DQo+ICAJZW51bSBtdGtfZGRwX2NvbXBfaWQgaWQ7DQo+ICAJY29uc3Qgc3RydWN0 IG10a19kZHBfY29tcF9mdW5jcyAqZnVuY3M7DQo+ICsJcmVzb3VyY2Vfc2l6ZV90IHJlZ3NfcGE7 DQo+ICsJdTggc3Vic3lzOw0KPiAgfTsNCj4gIA0KPiAgc3RhdGljIGlubGluZSB2b2lkIG10a19k ZHBfY29tcF9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwNCj4gIAkJCQkgICAgICAg dW5zaWduZWQgaW50IHcsIHVuc2lnbmVkIGludCBoLA0KPiAtCQkJCSAgICAgICB1bnNpZ25lZCBp bnQgdnJlZnJlc2gsIHVuc2lnbmVkIGludCBicGMpDQo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGlu dCB2cmVmcmVzaCwgdW5zaWduZWQgaW50IGJwYywNCj4gKwkJCQkgICAgICAgc3RydWN0IGNtZHFf cGt0ICpjbWRxX3BrdCkNCj4gIHsNCj4gIAlpZiAoY29tcC0+ZnVuY3MgJiYgY29tcC0+ZnVuY3Mt PmNvbmZpZykNCj4gLQkJY29tcC0+ZnVuY3MtPmNvbmZpZyhjb21wLCB3LCBoLCB2cmVmcmVzaCwg YnBjKTsNCj4gKwkJY29tcC0+ZnVuY3MtPmNvbmZpZyhjb21wLCB3LCBoLCB2cmVmcmVzaCwgYnBj LCBjbWRxX3BrdCk7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBtdGtfZGRwX2Nv bXBfcHJlcGFyZShzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQ0KPiBAQCAtMTc0LDEwICsxNzks MTEgQEAgc3RhdGljIGlubGluZSBpbnQgbXRrX2RkcF9jb21wX2xheWVyX2NoZWNrKHN0cnVjdCBt dGtfZGRwX2NvbXAgKmNvbXAsDQo+ICANCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBtdGtfZGRwX2Nv bXBfbGF5ZXJfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsDQo+ICAJCQkJCSAgICAg dW5zaWduZWQgaW50IGlkeCwNCj4gLQkJCQkJICAgICBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpz dGF0ZSkNCj4gKwkJCQkJICAgICBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpzdGF0ZSwNCj4gKwkJ CQkJICAgICBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiAgew0KPiAgCWlmIChjb21wLT5m dW5jcyAmJiBjb21wLT5mdW5jcy0+bGF5ZXJfY29uZmlnKQ0KPiAtCQljb21wLT5mdW5jcy0+bGF5 ZXJfY29uZmlnKGNvbXAsIGlkeCwgc3RhdGUpOw0KPiArCQljb21wLT5mdW5jcy0+bGF5ZXJfY29u ZmlnKGNvbXAsIGlkeCwgc3RhdGUsIGNtZHFfcGt0KTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIGlu bGluZSB2b2lkIG10a19kZHBfZ2FtbWFfc2V0KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsDQo+ IEBAIC0yMDcsNiArMjEzLDEzIEBAIGludCBtdGtfZGRwX2NvbXBfaW5pdChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29tcF9ub2RlLA0KPiAgaW50IG10a19kZHBfY29t cF9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXRrX2RkcF9jb21wICpj b21wKTsNCj4gIHZvaWQgbXRrX2RkcF9jb21wX3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRybSwgc3RydWN0IG10a19kZHBfY29tcCAqY29tcCk7DQo+ICB2b2lkIG10a19kaXRoZXJfc2V0 KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCBicGMsDQo+IC0JCSAgICB1 bnNpZ25lZCBpbnQgQ0ZHKTsNCj4gLQ0KPiArCQkgICAgdW5zaWduZWQgaW50IENGRywgc3RydWN0 IGNtZHFfcGt0ICpjbWRxX3BrdCk7DQo+ICtlbnVtIG10a19kZHBfY29tcF90eXBlIG10a19kZHBf Y29tcF9nZXRfdHlwZShlbnVtIG10a19kZHBfY29tcF9pZCBjb21wX2lkKTsNCj4gK3ZvaWQgbXRr X2RkcF93cml0ZShzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0LCB1bnNpZ25lZCBpbnQgdmFsdWUs DQo+ICsJCSAgIHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCBvZmZzZXQp Ow0KPiArdm9pZCBtdGtfZGRwX3dyaXRlX3JlbGF4ZWQoc3RydWN0IGNtZHFfcGt0ICpjbWRxX3Br dCwgdW5zaWduZWQgaW50IHZhbHVlLA0KPiArCQkJICAgc3RydWN0IG10a19kZHBfY29tcCAqY29t cCwgdW5zaWduZWQgaW50IG9mZnNldCk7DQo+ICt2b2lkIG10a19kZHBfd3JpdGVfbWFzayhzdHJ1 Y3QgY21kcV9wa3QgKmNtZHFfcGt0LCB1bnNpZ25lZCBpbnQgdmFsdWUsDQo+ICsJCQlzdHJ1Y3Qg bXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LA0KPiArCQkJdW5zaWduZWQg aW50IG1hc2spOw0KPiAgI2VuZGlmIC8qIE1US19EUk1fRERQX0NPTVBfSCAqLw0KDQo=