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=-16.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,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=unavailable 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 A0A21C4338F for ; Tue, 24 Aug 2021 05:01:25 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 5DEF76101A for ; Tue, 24 Aug 2021 05:01:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5DEF76101A 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.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=X5R/G5+QkowKdNZL5nA6cqOx1uUKaTr1rNBxsS2G50E=; b=y7Hkm924SaMcho jrFCaBvPOTa39hiV30fwaFycy6pu7csad5eaiKjGEBkQK6JSUCrfvPBrLKypIhmZf2fykvHBrwA6o gNcnur3Txz3sjhdELjow9FjF9oF6Ndo5OccVwiPCb0LpcddN8nKKBb3MYyCC/hZbbgM5U7x9G4upV Vu+KDoFS0Vrtx4Z/6YTEMQOrGordLrgXXiePNjYBYJLa1AFtmlZqdHvxEoxvMlFJd8EDFA4fmXd6P QI1IiqCd7zWMsVM9dMLABUOsOBZaokN58v2LX/K78oBjU6637fpjq4J8CCVY7OVqXuHqye6sDaweR uL+4q/dJEDNbhVptiByA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mIOWa-001blR-M6; Tue, 24 Aug 2021 04:59:00 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mIOWS-001bjr-Ct; Tue, 24 Aug 2021 04:58:56 +0000 X-UUID: 8328a85cca734296bd1530c1e231b689-20210823 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=flj2/UNiUvcqwKxztEfjVmtluuqsHylqURBB7GRDF0E=; b=hV21NCYgj+rI6Pv/PZ4qEq+W1teyjw1f4XgjAHhhgeEt1X+d/brBh0e2YyOAPc4jU4NquJDCIrkrPfeO9OfLw3Oseeb6HGsEiT29xu+67eMdYhylPkRZ+nOd8zvGiG3ThVgMfVVWsmIXZBjl6dGVwYGZqOhiHaXTEPnq2hru6TY=; X-UUID: 8328a85cca734296bd1530c1e231b689-20210823 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 992079838; Mon, 23 Aug 2021 21:58:50 -0700 Received: from mtkmbs05n2.mediatek.inc (172.21.101.140) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 23 Aug 2021 21:58:48 -0700 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs05n2.mediatek.inc (172.21.101.140) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 24 Aug 2021 12:58:47 +0800 Received: from mtksdccf07 (172.21.84.99) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 24 Aug 2021 12:58:46 +0800 Message-ID: Subject: Re: [PATCH v3 13/15] drm/mediatek: add ovl_adaptor support for MT8195 From: Nancy.Lin To: Chun-Kuang Hu CC: CK Hu , Philipp Zabel , "David Airlie" , Daniel Vetter , Rob Herring , Matthias Brugger , "jason-jh . lin" , Yongqiang Niu , DRI Development , "moderated list:ARM/Mediatek SoC support" , DTML , linux-kernel , Linux ARM , , srv_heupstream Date: Tue, 24 Aug 2021 12:58:46 +0800 In-Reply-To: References: <20210818091847.8060-1-nancy.lin@mediatek.com> <20210818091847.8060-14-nancy.lin@mediatek.com> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210823_215852_522520_CB533CE0 X-CRM114-Status: GOOD ( 27.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQ2h1bi1LdWFuZywNCg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3Lg0KDQpPbiBTdW4sIDIwMjEt MDgtMjIgYXQgMDc6NDcgKzA4MDAsIENodW4tS3VhbmcgSHUgd3JvdGU6DQo+IEhpLCBOYW5jeToN Cj4gDQo+IE5hbmN5LkxpbiA8bmFuY3kubGluQG1lZGlhdGVrLmNvbT4g5pa8IDIwMjHlubQ45pyI MTjml6Ug6YCx5LiJIOS4i+WNiDU6MTnlr6vpgZPvvJoNCj4gPiANCj4gPiBBZGQgb3ZsX2FkYXB0 b3IgZHJpdmVyIGZvciBNVDgxOTUuDQo+ID4gT3ZsX2FkYXB0b3IgaXMgYW4gZW5jYXBzdWxhdGVk IG1vZHVsZSBhbmQgZGVzaWduZWQgZm9yIHNpbXBsaWZpZWQNCj4gPiBEUk0gY29udHJvbCBmbG93 LiBUaGlzIG1vZHVsZSBpcyBjb21wb3NlZCBvZiA4IFJETUFzLCA0IE1FUkdFcyBhbmQNCj4gPiBh biBFVEhEUi4gVHdvIFJETUFzIG1lcmdlIGludG8gb25lIGxheWVyLCBzbyB0aGlzIG1vZHVsZSBz dXBwb3J0IDQNCj4gPiBsYXllcnMuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogTmFuY3kuTGlu IDxuYW5jeS5saW5AbWVkaWF0ZWsuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDMgKy0NCj4gPiAgLi4uL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IuYyAgIHwgNTI4DQo+ID4gKysrKysrKysrKysr KysrKysrDQo+ID4gIC4uLi9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX292bF9hZGFwdG9yLmgg ICB8ICAxOSArDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNTQ5IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZGlzcF9vdmxfYWRhcHRvci5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IuaA0KPiA+IA0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQ0KPiA+IGluZGV4IDM4ZWMyMzU0YTg5NC4uZjA0YWM4 NmM5NTkzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmls ZQ0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQ0KPiA+IEBAIC0x Myw3ICsxMyw4IEBAIG1lZGlhdGVrLWRybS15IDo9IG10a19kaXNwX2Njb3JyLm8gXA0KPiA+ICAg ICAgICAgICAgICAgICAgIG10a19kcm1fcGxhbmUubyBcDQo+ID4gICAgICAgICAgICAgICAgICAg bXRrX2RzaS5vIFwNCj4gPiAgICAgICAgICAgICAgICAgICBtdGtfZHBpLm8gXA0KPiA+IC0gICAg ICAgICAgICAgICAgIG10a19tZHBfcmRtYS5vDQo+ID4gKyAgICAgICAgICAgICAgICAgbXRrX21k cF9yZG1hLm8gXA0KPiA+ICsgICAgICAgICAgICAgICAgIG10a19kaXNwX292bF9hZGFwdG9yLm8N Cj4gDQo+IEFscGhhYmV0aWMgb3JkZXIuDQo+IA0KT0suDQo+ID4gDQo+ID4gIG9iai0kKENPTkZJ R19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9vdmxfYWRhcHRvci5jDQo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IuYw0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi44MjIyZWM1ZmY3OTkNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k aXNwX292bF9hZGFwdG9yLmMNCj4gPiBAQCAtMCwwICsxLDUyOCBAQA0KPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdo dCAoYykgMjAyMSBNZWRpYVRlayBJbmMuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUg PGRybS9kcm1fZm91cmNjLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4N Cj4gDQo+IEFscGhhYmV0aWMgb3JkZXIuDQoNCk9LLg0KPiANCj4gPiArI2luY2x1ZGUgPGxpbnV4 L29mX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9w bV9ydW50aW1lLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lz Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zb2MvbWVkaWF0ZWsvbXRrLWNtZHEuaD4NCj4gPiAr DQo+ID4gKyNpbmNsdWRlICJtdGtfZHJtX2Rydi5oIg0KPiA+ICsjaW5jbHVkZSAibXRrX2RybV9j cnRjLmgiDQo+ID4gKyNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiDQo+ID4gKyNpbmNsdWRl ICJtdGtfZGlzcF9kcnYuaCINCj4gPiArI2luY2x1ZGUgIm10a19kaXNwX292bF9hZGFwdG9yLmgi DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERJU1BfTUVSR0VfRU5BQkxFICAgICAgMHgwDQo+ID4gKyAg ICAgICAjZGVmaW5lIE1FUkdFX0VOQUJMRSBCSVQoMCkNCj4gDQo+IEkgd291bGQgbGlrZQ0KPiAN Cj4gI2RlZmluZSBESVNQX01FUkdFX0VOQUJMRSAgICAgIDB4MA0KPiAjZGVmaW5lIE1FUkdFX0VO QUJMRSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPiANCkkgd2lsbCB1c2UgbWVy Z2UgY29tbW9uIGRyaXZlciBpbnN0ZWFkIG9mIG92bCBtZXJnZSBkcml2ZXIuIFdpbGwgcmVtb3Zl DQptZXJnZSByZWxhdGVkIHBhcnQuDQoNCj4gPiArI2RlZmluZSBESVNQX01FUkdFX0NGR18wICAg ICAgIDB4MTANCj4gPiArI2RlZmluZSBESVNQX01FUkdFX0NGR18xICAgICAgIDB4MTQNCj4gPiAr I2RlZmluZSBESVNQX01FUkdFX0NGR180ICAgICAgIDB4MjANCj4gPiArI2RlZmluZSBESVNQX01F UkdFX0NGR181ICAgICAgIDB4MjQNCj4gPiArI2RlZmluZSBESVNQX01FUkdFX0NGR18xMCAgICAg IDB4MzgNCj4gPiArICAgICAgICNkZWZpbmUgQ0ZHXzEwX05PX1NXQVAgMA0KPiA+ICsjZGVmaW5l IERJU1BfTUVSR0VfQ0ZHXzEyICAgICAgMHg0MA0KPiA+ICsgICAgICAgI2RlZmluZSBDRkcxMl8x MF8xMF8xUElfMlBPX0JVRl9NT0RFIDYNCj4gPiArICAgICAgICNkZWZpbmUgQ0ZHMTJfMTFfMTBf MVBJXzJQT19NRVJHRSAxOA0KPiA+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZHXzI0ICAgICAgMHg3 MA0KPiA+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZHXzI1ICAgICAgMHg3NA0KPiA+ICsjZGVmaW5l IERJU1BfTUVSR0VfQ0ZHXzI2ICAgICAgMHg3OA0KPiA+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZH XzI3ICAgICAgMHg3Yw0KPiA+ICsjZGVmaW5lIERJU1BfTUVSR0VfTVVURV8wICAgICAgMHhmMDAN Cj4gPiArDQo+ID4gKyNkZWZpbmUgTVRLX09WTF9BREFQVE9SX1JETUFfTUFYX1dJRFRIIDE5MjAN Cj4gPiArI2RlZmluZSBNVEtfT1ZMX0FEQVBUT1JfTEFZRVJfTlVNIDQNCj4gPiArDQo+ID4gK2Vu dW0gbXRrX292bF9hZGFwdG9yX2NvbXBfdHlwZSB7DQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9U WVBFX1JETUEgPSAwLA0KPiA+ICsgICAgICAgT1ZMX0FEQVBUT1JfVFlQRV9NRVJHRSwNCj4gPiAr ICAgICAgIE9WTF9BREFQVE9SX1RZUEVfTlVNLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSBt dGtfb3ZsX2FkYXB0b3JfY29tcF9pZCB7DQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBfUkRN QTAsDQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBfUkRNQTEsDQo+ID4gKyAgICAgICBPVkxf QURBUFRPUl9NRFBfUkRNQTIsDQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBfUkRNQTMsDQo+ ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBfUkRNQTQsDQo+ID4gKyAgICAgICBPVkxfQURBUFRP Ul9NRFBfUkRNQTUsDQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRFBfUkRNQTYsDQo+ID4gKyAg ICAgICBPVkxfQURBUFRPUl9NRFBfUkRNQTcsDQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRVJH RTAsDQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRVJHRTEsDQo+ID4gKyAgICAgICBPVkxfQURB UFRPUl9NRVJHRTIsDQo+ID4gKyAgICAgICBPVkxfQURBUFRPUl9NRVJHRTMsDQo+ID4gKyAgICAg ICBPVkxfQURBUFRPUl9JRF9NQVgNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBvdmxfYWRh cHRvcl9jb21wX21hdGNoIHsNCj4gPiArICAgICAgIGVudW0gbXRrX292bF9hZGFwdG9yX2NvbXBf dHlwZSB0eXBlOw0KPiA+ICsgICAgICAgaW50IGFsaWFzX2lkOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RydWN0IG92bF9hZGFwdG9yX21lcmdlX2NvbmZpZyB7DQo+ID4gKyAgICAgICB1bnNpZ25l ZCBpbnQgZm10Ow0KPiA+ICsgICAgICAgdW5zaWduZWQgaW50IG1lcmdlX21vZGU7DQo+ID4gKyAg ICAgICB1bnNpZ25lZCBpbnQgaW5fd1syXTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBvdXRf d1syXTsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCBpbl9oOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RydWN0IG10a19vdmxfYWRhcHRvcl9jb21wIHsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRldjsNCj4gPiArICAgICAgIHN0cnVjdCBjbGsgKmNsa3NbMl07DQo+ID4gKyAgICAgICBz dHJ1Y3QgY21kcV9jbGllbnRfcmVnIGNtZHFfYmFzZTsNCj4gPiArICAgICAgIHZvaWQgX19pb21l bSAqcmVnczsNCj4gPiArfTsNCj4gDQo+IGtlZXAgb25seSBkZXYsIG90aGVyIHZhbHVlIHNob3Vs ZCBiZSBtb3ZlZCB0byBkZXYgcHJpdmF0ZSBkYXRhLg0KPiANCk9LLg0KPiA+ICsNCj4gPiArc3Ry dWN0IG10a19kaXNwX292bF9hZGFwdG9yIHsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfb3ZsX2Fk YXB0b3JfY29tcA0KPiA+IG92bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1JfSURfTUFYXTsNCj4g PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKm1tc3lzX2RldjsNCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgb3ZsX2FkYXB0b3JfY29tcF9zdHJbXSA9IHsNCj4g PiArICAgICAgICJPVkxfQURBUFRPUl9NRFBfUkRNQTAiLA0KPiA+ICsgICAgICAgIk9WTF9BREFQ VE9SX01EUF9SRE1BMSIsDQo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTURQX1JETUEyIiwNCj4g PiArICAgICAgICJPVkxfQURBUFRPUl9NRFBfUkRNQTMiLA0KPiA+ICsgICAgICAgIk9WTF9BREFQ VE9SX01EUF9SRE1BNCIsDQo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTURQX1JETUE1IiwNCj4g PiArICAgICAgICJPVkxfQURBUFRPUl9NRFBfUkRNQTYiLA0KPiA+ICsgICAgICAgIk9WTF9BREFQ VE9SX01EUF9SRE1BNyIsDQo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTUVSR0UwIiwNCj4gPiAr ICAgICAgICJPVkxfQURBUFRPUl9NRVJHRTEiLA0KPiA+ICsgICAgICAgIk9WTF9BREFQVE9SX01F UkdFMiIsDQo+ID4gKyAgICAgICAiT1ZMX0FEQVBUT1JfTUVSR0UzIiwNCj4gPiArICAgICAgICJP VkxfQURBUFRPUl9JRF9NQVgiDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgY2hh ciAqIGNvbnN0IHByaXZhdGVfY29tcF9zdGVtW09WTF9BREFQVE9SX1RZUEVfTlVNXQ0KPiA+ID0g ew0KPiA+ICsgICAgICAgW09WTF9BREFQVE9SX1RZUEVfUkRNQV0gPSAidmRvMV9yZG1hIiwNCj4g PiArICAgICAgIFtPVkxfQURBUFRPUl9UWVBFX01FUkdFXSA9ICJtZXJnZSIsDQo+ID4gK307DQo+ ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG92bF9hZGFwdG9yX2NvbXBfbWF0Y2gNCj4g PiBjb21wX21hdGNoZXNbT1ZMX0FEQVBUT1JfSURfTUFYXSA9IHsNCj4gPiArICAgICAgIFtPVkxf QURBUFRPUl9NRFBfUkRNQTBdID0gICAgICAgeyBPVkxfQURBUFRPUl9UWVBFX1JETUEsIDANCj4g PiB9LA0KPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1BMV0gPSAgICAgICB7IE9WTF9B REFQVE9SX1RZUEVfUkRNQSwgMQ0KPiA+IH0sDQo+ID4gKyAgICAgICBbT1ZMX0FEQVBUT1JfTURQ X1JETUEyXSA9ICAgICAgIHsgT1ZMX0FEQVBUT1JfVFlQRV9SRE1BLCAyDQo+ID4gfSwNCj4gPiAr ICAgICAgIFtPVkxfQURBUFRPUl9NRFBfUkRNQTNdID0gICAgICAgeyBPVkxfQURBUFRPUl9UWVBF X1JETUEsIDMNCj4gPiB9LA0KPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01EUF9SRE1BNF0gPSAg ICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgNA0KPiA+IH0sDQo+ID4gKyAgICAgICBbT1ZM X0FEQVBUT1JfTURQX1JETUE1XSA9ICAgICAgIHsgT1ZMX0FEQVBUT1JfVFlQRV9SRE1BLCA1DQo+ ID4gfSwNCj4gPiArICAgICAgIFtPVkxfQURBUFRPUl9NRFBfUkRNQTZdID0gICAgICAgeyBPVkxf QURBUFRPUl9UWVBFX1JETUEsIDYNCj4gPiB9LA0KPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01E UF9SRE1BN10gPSAgICAgICB7IE9WTF9BREFQVE9SX1RZUEVfUkRNQSwgNw0KPiA+IH0sDQo+ID4g KyAgICAgICBbT1ZMX0FEQVBUT1JfTUVSR0UwXSA9ICB7IE9WTF9BREFQVE9SX1RZUEVfTUVSR0Us IDEgfSwNCj4gPiArICAgICAgIFtPVkxfQURBUFRPUl9NRVJHRTFdID0gIHsgT1ZMX0FEQVBUT1Jf VFlQRV9NRVJHRSwgMiB9LA0KPiA+ICsgICAgICAgW09WTF9BREFQVE9SX01FUkdFMl0gPSAgeyBP VkxfQURBUFRPUl9UWVBFX01FUkdFLCAzIH0sDQo+ID4gKyAgICAgICBbT1ZMX0FEQVBUT1JfTUVS R0UzXSA9ICB7IE9WTF9BREFQVE9SX1RZUEVfTUVSR0UsIDQgfSwNCj4gPiArfTsNCj4gPiArDQo+ ID4gK3N0YXRpYyB2b2lkIG10a19vdmxfYWRhcHRvcl9tZXJnZV9jb25maWcoc3RydWN0DQo+ID4g bXRrX292bF9hZGFwdG9yX2NvbXAgKmNvbXAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QNCj4gPiBvdmxfYWRhcHRvcl9tZXJnZV9jb25maWcgKm1l cmdlX2NmZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBjbWRxX3BrdCAqY21kcV9wa3QpDQo+ID4gK3sNCj4gPiArICAgICAgIHN3aXRjaCAobWVy Z2VfY2ZnLT5tZXJnZV9tb2RlKSB7DQo+ID4gKyAgICAgICBjYXNlIDY6DQo+ID4gKyAgICAgICAg ICAgICAgIG10a19kZHBfd3JpdGUoY21kcV9wa3QsIChtZXJnZV9jZmctPmluX2ggPDwgMTYgfA0K PiA+IG1lcmdlX2NmZy0+aW5fd1swXSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywNCj4gPiBESVNQX01FUkdFX0NGR18wKTsN Cj4gPiArICAgICAgICAgICAgICAgbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgKG1lcmdlX2NmZy0+ aW5faCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2ZnLT5vdXRfd1swXSksDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywNCj4gPiBESVNQ X01FUkdFX0NGR180KTsNCj4gPiArICAgICAgICAgICAgICAgbXRrX2RkcF93cml0ZShjbWRxX3Br dCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2ZnLT5pbl93WzBdKSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcC0+Y21kcV9iYXNlLCBjb21wLT5y ZWdzLA0KPiA+IERJU1BfTUVSR0VfQ0ZHXzI0KTsNCj4gPiArICAgICAgICAgICAgICAgbXRrX2Rk cF93cml0ZShjbWRxX3BrdCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2Zn LT5pbl93WzBdKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcC0+Y21k cV9iYXNlLCBjb21wLT5yZWdzLA0KPiA+IERJU1BfTUVSR0VfQ0ZHXzI1KTsNCj4gPiArICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIDE4Og0KPiA+ICsgICAgICAgICAgICAg ICBtdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCAobWVyZ2VfY2ZnLT5pbl9oIDw8IDE2IHwNCj4gPiBt ZXJnZV9jZmctPmluX3dbMF0pLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZj b21wLT5jbWRxX2Jhc2UsIGNvbXAtPnJlZ3MsDQo+ID4gRElTUF9NRVJHRV9DRkdfMCk7DQo+ID4g KyAgICAgICAgICAgICAgIG10a19kZHBfd3JpdGUoY21kcV9wa3QsIChtZXJnZV9jZmctPmluX2gg PDwgMTYgfA0KPiA+IG1lcmdlX2NmZy0+aW5fd1sxXSksDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywNCj4gPiBESVNQX01FUkdF X0NGR18xKTsNCj4gPiArICAgICAgICAgICAgICAgbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgKG1l cmdlX2NmZy0+aW5faCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2ZnLT5vdXRfd1swXSksDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywN Cj4gPiBESVNQX01FUkdFX0NGR180KTsNCj4gPiArICAgICAgICAgICAgICAgbXRrX2RkcF93cml0 ZShjbWRxX3BrdCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2ZnLT5pbl93 WzBdKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcC0+Y21kcV9iYXNl LCBjb21wLT5yZWdzLA0KPiA+IERJU1BfTUVSR0VfQ0ZHXzI0KTsNCj4gPiArICAgICAgICAgICAg ICAgbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8DQo+ID4g bWVyZ2VfY2ZnLT5pbl93WzFdKSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Y29tcC0+Y21kcV9iYXNlLCBjb21wLT5yZWdzLA0KPiA+IERJU1BfTUVSR0VfQ0ZHXzI1KTsNCj4g PiArICAgICAgICAgICAgICAgbXRrX2RkcF93cml0ZShjbWRxX3BrdCwgKG1lcmdlX2NmZy0+aW5f aCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2ZnLT5pbl93WzBdKSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY29tcC0+Y21kcV9iYXNlLCBjb21wLT5yZWdzLA0KPiA+IERJU1BfTUVS R0VfQ0ZHXzI2KTsNCj4gPiArICAgICAgICAgICAgICAgbXRrX2RkcF93cml0ZShjbWRxX3BrdCwg KG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8DQo+ID4gbWVyZ2VfY2ZnLT5pbl93WzFdKSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcC0+Y21kcV9iYXNlLCBjb21wLT5yZWdz LA0KPiA+IERJU1BfTUVSR0VfQ0ZHXzI3KTsNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBtdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBtZXJnZV9j ZmctPm1lcmdlX21vZGUsICZjb21wLQ0KPiA+ID5jbWRxX2Jhc2UsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGNvbXAtPnJlZ3MsIERJU1BfTUVSR0VfQ0ZHXzEyKTsNCj4gPiArICAgICAgIG10 a19kZHBfd3JpdGUoY21kcV9wa3QsIENGR18xMF9OT19TV0FQLCAmY29tcC0+Y21kcV9iYXNlLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICBjb21wLT5yZWdzLCBESVNQX01FUkdFX0NGR18xMCk7 DQo+ID4gKyAgICAgICBtdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIDEsICZjb21wLT5jbWRx X2Jhc2UsIGNvbXAtDQo+ID4gPnJlZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg RElTUF9NRVJHRV9FTkFCTEUsIE1FUkdFX0VOQUJMRSk7DQo+IA0KPiBNb3ZlIHRoaXMgZnVuY3Rp b24gdG8gbWVyZ2UgZHJpdmVyLg0KPiANCk9LLg0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIG10 a19vdmxfYWRhcHRvcl9sYXllcl9jb25maWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBp bnQNCj4gPiBpZHgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBtdGtfcGxhbmVfc3RhdGUgKnN0YXRlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBz dHJ1Y3QgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IgKm92bF9hZGFwdG9yID0NCj4gPiBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfcGxhbmVfcGVuZGluZ19zdGF0ZSAq cGVuZGluZyA9ICZzdGF0ZS0+cGVuZGluZzsNCj4gPiArICAgICAgIHN0cnVjdCBvdmxfYWRhcHRv cl9tZXJnZV9jb25maWcgbWVyZ2VfY2ZnID0gezB9Ow0KPiA+ICsgICAgICAgc3RydWN0IG10a19t ZHBfcmRtYV9jZmcgcmRtYV9jb25maWcgPSB7MH07DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX292 bF9hZGFwdG9yX2NvbXAgKnJkbWFfbDsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfb3ZsX2FkYXB0 b3JfY29tcCAqcmRtYV9yOw0KPiA+ICsgICAgICAgc3RydWN0IG10a19vdmxfYWRhcHRvcl9jb21w ICptZXJnZTsNCj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZtdF9p bmZvID0NCj4gPiBkcm1fZm9ybWF0X2luZm8ocGVuZGluZy0+Zm9ybWF0KTsNCj4gPiArICAgICAg IGJvb2wgdXNlX2R1YWxfcGlwZSA9IGZhbHNlOw0KPiA+ICsNCj4gPiArICAgICAgIGRldl9kYmco ZGV2LCAiJXMrIGlkeDolZCwgZW5hYmxlOiVkLCBmbXQ6MHgleFxuIiwgX19mdW5jX18sDQo+ID4g aWR4LA0KPiA+ICsgICAgICAgICAgICAgICBwZW5kaW5nLT5lbmFibGUsIHBlbmRpbmctPmZvcm1h dCk7DQo+ID4gKyAgICAgICBkZXZfZGJnKGRldiwgImFkZHIgMHglbHgsIGZiIHc6JWQsIHslZCwl ZCwlZCwlZH1cbiIsDQo+ID4gKyAgICAgICAgICAgICAgIHBlbmRpbmctPmFkZHIsIChwZW5kaW5n LT5waXRjaCAvIGZtdF9pbmZvLT5jcHBbMF0pLA0KPiA+ICsgICAgICAgICAgICAgICBwZW5kaW5n LT54LCBwZW5kaW5nLT55LCBwZW5kaW5nLT53aWR0aCwgcGVuZGluZy0NCj4gPiA+aGVpZ2h0KTsN Cj4gPiArDQo+ID4gKyAgICAgICByZG1hX2wgPSAmb3ZsX2FkYXB0b3ItDQo+ID4gPm92bF9hZGFw dG9yX2NvbXBbT1ZMX0FEQVBUT1JfTURQX1JETUEwICsgMiAqIGlkeF07DQo+ID4gKyAgICAgICBy ZG1hX3IgPSAmb3ZsX2FkYXB0b3ItDQo+ID4gPm92bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1Jf TURQX1JETUEwICsgMiAqIGlkeCArIDFdOw0KPiA+ICsgICAgICAgbWVyZ2UgPSAmb3ZsX2FkYXB0 b3ItPm92bF9hZGFwdG9yX2NvbXBbT1ZMX0FEQVBUT1JfTUVSR0UwICsNCj4gPiBpZHhdOw0KPiA+ ICsNCj4gPiArICAgICAgIGlmICghcGVuZGluZy0+ZW5hYmxlKSB7DQo+ID4gKyAgICAgICAgICAg ICAgIG10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgMHgwLCAmbWVyZ2UtDQo+ID4gPmNtZHFf YmFzZSwgbWVyZ2UtPnJlZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBESVNQX01FUkdFX0VOQUJMRSwNCj4gPiBNRVJHRV9FTkFCTEUpOw0KPiANCj4gRGl0dG8uDQoN Ck9LLg0KPiANCj4gPiArICAgICAgICAgICAgICAgbXRrX21kcF9yZG1hX3N0b3AocmRtYV9sLT5y ZWdzLCBjbWRxX3BrdCwgJnJkbWFfbC0NCj4gPiA+Y21kcV9iYXNlKTsNCj4gPiArICAgICAgICAg ICAgICAgbXRrX21kcF9yZG1hX3N0b3AocmRtYV9yLT5yZWdzLCBjbWRxX3BrdCwgJnJkbWFfci0N Cj4gPiA+Y21kcV9iYXNlKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGlmIChwZW5kaW5nLT53aWR0aCA+IE1US19PVkxfQURB UFRPUl9SRE1BX01BWF9XSURUSCkNCj4gPiArICAgICAgICAgICAgICAgdXNlX2R1YWxfcGlwZSA9 IHRydWU7DQo+ID4gKw0KPiA+ICsgICAgICAgbWVyZ2VfY2ZnLm91dF93WzBdID0gcGVuZGluZy0+ d2lkdGg7DQo+ID4gKyAgICAgICBtZXJnZV9jZmcuaW5faCA9IHBlbmRpbmctPmhlaWdodDsNCj4g PiArICAgICAgIG1lcmdlX2NmZy5mbXQgPSBwZW5kaW5nLT5mb3JtYXQ7DQo+ID4gKyAgICAgICBp ZiAodXNlX2R1YWxfcGlwZSkgew0KPiA+ICsgICAgICAgICAgICAgICBtZXJnZV9jZmcubWVyZ2Vf bW9kZSA9IENGRzEyXzExXzEwXzFQSV8yUE9fTUVSR0U7DQo+ID4gKyAgICAgICAgICAgICAgIG1l cmdlX2NmZy5pbl93WzBdID0gKHBlbmRpbmctPndpZHRoIC8gMikgKw0KPiA+ICgocGVuZGluZy0+ d2lkdGggLyAyKSAlIDIpOw0KPiA+ICsgICAgICAgICAgICAgICBtZXJnZV9jZmcuaW5fd1sxXSA9 IChwZW5kaW5nLT53aWR0aCAvIDIpIC0NCj4gPiAoKHBlbmRpbmctPndpZHRoIC8gMikgJSAyKTsN Cj4gDQo+IG1lcmdlX2NmZy5pbl93WzFdID0gcGVuZGluZy0+d2lkdGggLSBtZXJnZV9jZmcuaW5f d1swXTsNCj4gDQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICBtZXJn ZV9jZmcubWVyZ2VfbW9kZSA9DQo+ID4gQ0ZHMTJfMTBfMTBfMVBJXzJQT19CVUZfTU9ERTsNCj4g PiArICAgICAgICAgICAgICAgbWVyZ2VfY2ZnLmluX3dbMF0gPSBwZW5kaW5nLT53aWR0aDsNCj4g PiArICAgICAgIH0NCj4gPiArICAgICAgIG10a19vdmxfYWRhcHRvcl9tZXJnZV9jb25maWcobWVy Z2UsICZtZXJnZV9jZmcsIGNtZHFfcGt0KTsNCj4gPiArDQo+ID4gKyAgICAgICBtdGtfbW1zeXNf ZGRwX2NvbmZpZyhvdmxfYWRhcHRvci0+bW1zeXNfZGV2LA0KPiA+IE1NU1lTX0NPTkZJR19NRVJH RV9BU1lOQ19XSURUSCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCwgcGVu ZGluZy0+d2lkdGggLyAyLCBjbWRxX3BrdCk7DQo+ID4gKyAgICAgICBtdGtfbW1zeXNfZGRwX2Nv bmZpZyhvdmxfYWRhcHRvci0+bW1zeXNfZGV2LA0KPiA+IE1NU1lTX0NPTkZJR19NRVJHRV9BU1lO Q19IRUlHSFQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgsIHBlbmRpbmct PmhlaWdodCwgY21kcV9wa3QpOw0KPiA+ICsNCj4gPiArICAgICAgIHJkbWFfY29uZmlnLnNvdXJj ZV93aWR0aCA9IHBlbmRpbmctPnBpdGNoIC8gZm10X2luZm8tDQo+ID4gPmNwcFswXTsNCj4gPiAr ICAgICAgIHJkbWFfY29uZmlnLmNzY19lbmFibGUgPSBmbXRfaW5mby0+aXNfeXV2ID8gdHJ1ZSA6 IGZhbHNlOw0KPiA+ICsgICAgICAgcmRtYV9jb25maWcucHJvZmlsZSA9IFJETUFfQ1NDX0ZVTEw3 MDlfVE9fUkdCOw0KPiA+ICsgICAgICAgcmRtYV9jb25maWcud2lkdGggPSBtZXJnZV9jZmcuaW5f d1swXTsNCj4gPiArICAgICAgIHJkbWFfY29uZmlnLmhlaWdodCA9IHBlbmRpbmctPmhlaWdodDsN Cj4gPiArICAgICAgIHJkbWFfY29uZmlnLmFkZHIwID0gcGVuZGluZy0+YWRkcjsNCj4gPiArICAg ICAgIHJkbWFfY29uZmlnLnBpdGNoID0gcGVuZGluZy0+cGl0Y2g7DQo+ID4gKyAgICAgICByZG1h X2NvbmZpZy5mbXQgPSBwZW5kaW5nLT5mb3JtYXQ7DQo+ID4gKyAgICAgICBtdGtfbWRwX3JkbWFf Y29uZmlnKHJkbWFfbC0+cmVncywgJnJkbWFfY29uZmlnLCBjbWRxX3BrdCwNCj4gPiAmcmRtYV9s LT5jbWRxX2Jhc2UpOw0KPiA+ICsNCj4gPiArICAgICAgIHJkbWFfY29uZmlnLnhfbGVmdCA9IG1l cmdlX2NmZy5pbl93WzBdOw0KPiA+ICsgICAgICAgcmRtYV9jb25maWcud2lkdGggPSBtZXJnZV9j ZmcuaW5fd1sxXTsNCj4gPiArICAgICAgIG10a19tZHBfcmRtYV9jb25maWcocmRtYV9yLT5yZWdz LCAmcmRtYV9jb25maWcsIGNtZHFfcGt0LA0KPiA+ICZyZG1hX3ItPmNtZHFfYmFzZSk7DQo+ID4g Kw0KPiA+ICsgICAgICAgbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCAweDEsICZtZXJnZS0+ Y21kcV9iYXNlLCBtZXJnZS0NCj4gPiA+cmVncywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICBESVNQX01FUkdFX0VOQUJMRSwgTUVSR0VfRU5BQkxFKTsNCj4gPiArICAgICAgIG10a19k ZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgMHgwLCAmbWVyZ2UtPmNtZHFfYmFzZSwgbWVyZ2UtDQo+ ID4gPnJlZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElTUF9NRVJHRV9NVVRF XzAsIDB4MSk7DQo+IA0KPiBNb3ZlIHRoaXMgdG8gbWVyZ2UgZHJpdmVyLg0KT0suDQo+IA0KPiA+ ICsNCj4gPiArICAgICAgIG10a19tZHBfcmRtYV9zdGFydChyZG1hX2wtPnJlZ3MsIGNtZHFfcGt0 LCAmcmRtYV9sLQ0KPiA+ID5jbWRxX2Jhc2UpOw0KPiA+ICsgICAgICAgaWYgKHVzZV9kdWFsX3Bp cGUpDQo+ID4gKyAgICAgICAgICAgICAgIG10a19tZHBfcmRtYV9zdGFydChyZG1hX3ItPnJlZ3Ms IGNtZHFfcGt0LCAmcmRtYV9yLQ0KPiA+ID5jbWRxX2Jhc2UpOw0KPiA+ICsgICAgICAgZWxzZQ0K PiA+ICsgICAgICAgICAgICAgICBtdGtfbWRwX3JkbWFfc3RvcChyZG1hX3ItPnJlZ3MsIGNtZHFf cGt0LCAmcmRtYV9yLQ0KPiA+ID5jbWRxX2Jhc2UpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lk IG10a19vdmxfYWRhcHRvcl9zdG9wKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsg ICAgICAgc3RydWN0IG10a19kaXNwX292bF9hZGFwdG9yICpvdmxfYWRhcHRvciA9DQo+ID4gZGV2 X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX292bF9hZGFwdG9yX2Nv bXAgKnJkbWFfbDsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfb3ZsX2FkYXB0b3JfY29tcCAqcmRt YV9yOw0KPiA+ICsgICAgICAgc3RydWN0IG10a19vdmxfYWRhcHRvcl9jb21wICptZXJnZTsNCj4g PiArICAgICAgIHVuc2lnbmVkIGludCByZWc7DQo+ID4gKyAgICAgICB1MzIgaTsNCj4gPiArDQo+ ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgTVRLX09WTF9BREFQVE9SX0xBWUVSX05VTTsgaSsr KSB7DQo+ID4gKyAgICAgICAgICAgICAgIHJkbWFfbCA9ICZvdmxfYWRhcHRvci0NCj4gPiA+b3Zs X2FkYXB0b3JfY29tcFtPVkxfQURBUFRPUl9NRFBfUkRNQTAgKyAyICogaV07DQo+ID4gKyAgICAg ICAgICAgICAgIHJkbWFfciA9ICZvdmxfYWRhcHRvci0NCj4gPiA+b3ZsX2FkYXB0b3JfY29tcFtP VkxfQURBUFRPUl9NRFBfUkRNQTAgKyAyICogaSArIDFdOw0KPiA+ICsgICAgICAgICAgICAgICBt ZXJnZSA9ICZvdmxfYWRhcHRvci0NCj4gPiA+b3ZsX2FkYXB0b3JfY29tcFtPVkxfQURBUFRPUl9N RVJHRTAgKyBpXTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIG10a19tZHBfcmRtYV9zdG9w KHJkbWFfbC0+cmVncywgTlVMTCwgJnJkbWFfbC0NCj4gPiA+Y21kcV9iYXNlKTsNCj4gPiArICAg ICAgICAgICAgICAgbXRrX21kcF9yZG1hX3N0b3AocmRtYV9yLT5yZWdzLCBOVUxMLCAmcmRtYV9y LQ0KPiA+ID5jbWRxX2Jhc2UpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgcmVnID0gcmVh ZGwobWVyZ2UtPnJlZ3MgKyBESVNQX01FUkdFX0VOQUJMRSk7DQo+ID4gKyAgICAgICAgICAgICAg IHJlZyA9IHJlZyAmIH5NRVJHRV9FTkFCTEU7DQo+ID4gKyAgICAgICAgICAgICAgIHdyaXRlbF9y ZWxheGVkKHJlZywgbWVyZ2UtPnJlZ3MgKw0KPiA+IERJU1BfTUVSR0VfRU5BQkxFKTsNCj4gDQo+ IERpdHRvLg0KT0suDQo+IA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgZGV2aWNlX3Jlc2V0 X29wdGlvbmFsKG1lcmdlLT5kZXYpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtpbnQgbXRrX292bF9hZGFwdG9yX2Nsa19lbmFibGUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IgKm92bF9hZGFwdG9y ID0NCj4gPiBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfb3Zs X2FkYXB0b3JfY29tcCAqY29tcDsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAgICBp bnQgaTsNCj4gPiArICAgICAgIGludCBqOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IE9W TF9BREFQVE9SX01EUF9SRE1BMDsgaSA8IE9WTF9BREFQVE9SX0lEX01BWDsNCj4gPiBpKyspIHsN Cj4gPiArICAgICAgICAgICAgICAgY29tcCA9ICZvdmxfYWRhcHRvci0+b3ZsX2FkYXB0b3JfY29t cFtpXTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKCFjb21wLT5kZXYpDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAvKiBO ZWVkIHRvIHBvd2VyIG9uIGZvciBwcml2YXRlIHJkbWEgZGV2aWNlcyAqLw0KPiA+ICsgICAgICAg ICAgICAgICBpZiAoaSA8IE9WTF9BREFQVE9SX01FUkdFMCkgew0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoY29tcC0+ZGV2KTsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRldl9lcnIoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiRmFpbGVkIHRvIHBvd2VyIG9uLCBlcnINCj4gPiAlZC0lc1xuIiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LA0KPiA+IG92bF9h ZGFwdG9yX2NvbXBfc3RyW2ldKTsNCj4gDQo+IHVuZG8gcHJldmlvcyBwbV9ydW50aW1lX2dldF9z eW5jKCkgYW5kIHJldHVybiBlcnJvci4NCg0KT0ssIEkgd2lsbCBhZGQgZXJyb3IgaGFuZGxpbmcu DQo+IA0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBm b3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShjb21wLT5jbGtzKTsgaisrKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKElTX0VSUihjb21wLT5jbGtzW2pdKSkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY29tcC0+Y2xrc1tqXSk7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRldl9lcnIoZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiRmFpbGVkIHRvIGVuYWJsZSBjbG9jayAlZCwNCj4gPiBlcnIgJWQtJXNc biIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIHJldCwN Cj4gPiBvdmxfYWRhcHRvcl9jb21wX3N0cltpXSk7DQo+IA0KPiB1bmRvIGFuZCBwcmV2aW91cyBq b2IgYW5kIHJldHVybiBlcnJvci4NCg0KT0ssIEkgd2lsbCBhZGQgZXJyb3IgaGFuZGxpbmcuDQo+ IA0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0b3Jf Y2xrX2Rpc2FibGUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3IgKm92bF9hZGFwdG9yID0NCj4gPiBkZXZfZ2V0X2RydmRh dGEoZGV2KTsNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfb3ZsX2FkYXB0b3JfY29tcCAqY29tcDsN Cj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAgICBpbnQgaTsNCj4gPiArICAgICAgIGlu dCBqOw0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IE9WTF9BREFQVE9SX01EUF9SRE1BMDsg aSA8IE9WTF9BREFQVE9SX0lEX01BWDsNCj4gPiBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAg Y29tcCA9ICZvdmxfYWRhcHRvci0+b3ZsX2FkYXB0b3JfY29tcFtpXTsNCj4gPiArICAgICAgICAg ICAgICAgaWYgKCFjb21wLT5kZXYpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBpIDwgQVJSQVlfU0la RShjb21wLT5jbGtzKTsgaisrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKElT X0VSUihjb21wLT5jbGtzW2pdKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFy ZShjb21wLT5jbGtzW2pdKTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgICAgICAgICAgLyogTmVlZCB0byBwb3dlciBvZmYgZm9yIHByaXZhdGUgcmRtYSBkZXZpY2Vz ICovDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChpIDwgT1ZMX0FEQVBUT1JfTUVSR0UwKSB7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcG1fcnVudGltZV9wdXQoY29tcC0+ZGV2 KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHBvd2VyIG9mZiwgZXJyLQ0KPiA+ ICVzXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQs DQo+ID4gb3ZsX2FkYXB0b3JfY29tcF9zdHJbaV0pOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgb3ZsX2FkYXB0b3Jf Y29tcF9nZXRfaWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QNCj4gPiBkZXZpY2Vfbm9kZSAq bm9kZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbXRrX292 bF9hZGFwdG9yX2NvbXBfdHlwZQ0KPiA+IHR5cGUpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCBh bGlhc19pZCA9IG9mX2FsaWFzX2dldF9pZChub2RlLA0KPiA+IHByaXZhdGVfY29tcF9zdGVtW3R5 cGVdKTsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAgICBpbnQgaTsNCj4gPiArDQo+ ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21wX21hdGNoZXMpOyBpKysp DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChjb21wX21hdGNoZXNbaV0udHlwZSA9PSB0eXBlICYm DQo+ID4gKyAgICAgICAgICAgICAgICAgICBjb21wX21hdGNoZXNbaV0uYWxpYXNfaWQgPT0gYWxp YXNfaWQpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7DQo+ID4gKw0KPiA+ ICsgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGlkLiB0eXBlOiAlZCwgYWxpYXM6 ICVkXG4iLA0KPiA+IHR5cGUsIGFsaWFzX2lkKTsNCj4gPiArICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHByaXZhdGVfY29tcF9pbml0KHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0DQo+ID4gZGV2aWNlX25vZGUgKm5vZGUsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRrX292bF9hZGFwdG9yX2NvbXAgKmNvbXAs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG10a19vdmxfYWRhcHRvcl9j b21wX2lkIGlkKQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpj b21wX3BkZXY7DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgICAgaW50IGk7DQo+ID4g Kw0KPiA+ICsgICAgICAgaWYgKGlkIDwgMCB8fCBpZCA+PSBPVkxfQURBUFRPUl9JRF9NQVgpIHsN Cj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJJbnZhbGlkIGNvbXBvbmVudCBpZCAl ZFxuIiwgaWQpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBjb21wX3BkZXYgPSBvZl9maW5kX2RldmljZV9ieV9u b2RlKG5vZGUpOw0KPiA+ICsgICAgICAgaWYgKCFjb21wX3BkZXYpIHsNCj4gPiArICAgICAgICAg ICAgICAgZGV2X3dhcm4oZGV2LCAiY2FuJ3QgZmluZCBwbGF0Zm9ybSBkZXZpY2Ugb2YNCj4gPiBu b2RlOiVzXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5uYW1lKTsNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7DQo+ID4gKyAgICAgICB9DQo+ID4gKyAg ICAgICBjb21wLT5kZXYgPSAmY29tcF9wZGV2LT5kZXY7DQo+ID4gKyAgICAgICBjb21wLT5yZWdz ID0gb2ZfaW9tYXAobm9kZSwgMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoY29tcC0+Y2xrcyk7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICBjb21w LT5jbGtzW2ldID0gb2ZfY2xrX2dldChub2RlLCBpKTsNCj4gPiArICAgICAgICAgICAgICAgaWYg KElTX0VSUihjb21wLT5jbGtzW2ldKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBicmVh azsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyNpZiBJU19SRUFDSEFCTEUoQ09ORklHX01U S19DTURRKQ0KPiA+ICsgICAgICAgcmV0ID0gY21kcV9kZXZfZ2V0X2NsaWVudF9yZWcoY29tcC0+ ZGV2LCAmY29tcC0+Y21kcV9iYXNlLA0KPiA+IDApOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4g PiArICAgICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAiZ2V0IG1lZGlhdGVrLGdjZS1jbGllbnQt cmVnDQo+ID4gZmFpbCFcbiIpOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyAgICAgICBpZiAo aWQgPCBPVkxfQURBUFRPUl9NRVJHRTApDQo+ID4gKyAgICAgICAgICAgICAgIHBtX3J1bnRpbWVf ZW5hYmxlKGNvbXAtPmRldik7DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2X2luZm8oZGV2LCAiW0RS TV1yZWdzOjB4JXAsIG5vZGU6JXNcbiIsIGNvbXAtPnJlZ3MsDQo+ID4gb3ZsX2FkYXB0b3JfY29t cF9zdHJbaWRdKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBtdGtfZGlzcF9vdmxfYWRhcHRvcl9jb21wX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UNCj4gPiAqcGRldikNCj4gPiArew0KPiA+ICsgICAgICAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfY29t cF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZQ0KPiA+ICpwZGV2KQ0KPiA+ICt7DQo+ID4g KyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgbXRrX292bF9hZGFwdG9yX2NvbXBfZHRfaWRzW10gPSB7DQo+ID4gKyAg ICAgICB7DQo+ID4gKyAgICAgICAgICAgICAgIC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE5 NS12ZG8xLXJkbWEiLA0KPiA+ICsgICAgICAgICAgICAgICAuZGF0YSA9ICh2b2lkICopT1ZMX0FE QVBUT1JfVFlQRV9SRE1BLA0KPiA+ICsgICAgICAgfSwgew0KPiA+ICsgICAgICAgICAgICAgICAu Y29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxOTUtdmRvMS1tZXJnZSIsDQo+ID4gKyAgICAgICAg ICAgICAgIC5kYXRhID0gKHZvaWQgKilPVkxfQURBUFRPUl9UWVBFX01FUkdFLA0KPiA+ICsgICAg ICAgfSwNCj4gPiArICAgICAgIHt9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfY29tcF9kcml2ZXIgPSB7DQo+ ID4gKyAgICAgICAucHJvYmUgICAgICAgICAgPSBtdGtfZGlzcF9vdmxfYWRhcHRvcl9jb21wX3By b2JlLA0KPiA+ICsgICAgICAgLnJlbW92ZSAgICAgICAgID0gbXRrX2Rpc3Bfb3ZsX2FkYXB0b3Jf Y29tcF9yZW1vdmUsDQo+ID4gKyAgICAgICAuZHJpdmVyID0gew0KPiA+ICsgICAgICAgICAgICAg ICAubmFtZSAgID0gIm1lZGlhdGVrLWRpc3Atb3ZsLWFkYXB0b3ItY29tcCIsDQo+ID4gKyAgICAg ICAgICAgICAgIC5vd25lciAgPSBUSElTX01PRFVMRSwNCj4gPiArICAgICAgICAgICAgICAgLm9m X21hdGNoX3RhYmxlID0gbXRrX292bF9hZGFwdG9yX2NvbXBfZHRfaWRzLA0KPiA+ICsgICAgICAg fSwNCj4gPiArfTsNCj4gPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfZGlzcF9vdmxfYWRh cHRvcl9jb21wX2RyaXZlcik7DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG92bF9hZGFwdG9yX2Nv bXBfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBt dGtfZGlzcF9vdmxfYWRhcHRvciAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsg ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCAqcGFyZW50Ow0KPiA+ICsgICAgICAgaW50 IGksIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICBwYXJlbnQgPSBkZXYtPnBhcmVudC0+b2Zfbm9k ZS0+cGFyZW50Ow0KPiA+ICsNCj4gPiArICAgICAgIGZvcl9lYWNoX2NoaWxkX29mX25vZGUocGFy ZW50LCBub2RlKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgKm9mX2lkOw0KPiA+ICsgICAgICAgICAgICAgICBlbnVtIG10a19vdmxfYWRhcHRvcl9jb21w X3R5cGUgdHlwZTsNCj4gPiArICAgICAgICAgICAgICAgc3RydWN0IG10a19vdmxfYWRhcHRvcl9j b21wICpjb21wOw0KPiA+ICsgICAgICAgICAgICAgICBpbnQgaWQ7DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICBvZl9pZCA9IG9mX21hdGNoX25vZGUobXRrX292bF9hZGFwdG9yX2NvbXBfZHRf aWRzLA0KPiA+IG5vZGUpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoIW9mX2lkKQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKCFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKG5vZGUpKSB7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZGV2X2luZm8oZGV2LCAiU2tpcHBpbmcgZGlzYWJsZWQgY29tcG9uZW50DQo+ ID4gJXBPRlxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlKTsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgdHlwZSA9IChlbnVtIG10a19vdmxfYWRh cHRvcl9jb21wX3R5cGUpb2ZfaWQtPmRhdGE7DQo+ID4gKyAgICAgICAgICAgICAgIGlkID0gb3Zs X2FkYXB0b3JfY29tcF9nZXRfaWQoZGV2LCBub2RlLCB0eXBlKTsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKGlkIDwgMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKGRl diwgIlNraXBwaW5nIHVua25vd24gY29tcG9uZW50DQo+ID4gJXBPRlxuIiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgcmV0ID0gcHJpdmF0ZV9jb21wX2luaXQoZGV2LCBub2RlLCAmcHJpdi0NCj4gPiA+ b3ZsX2FkYXB0b3JfY29tcFtpZF0sIGlkKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgfQ0K PiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvdmxfYWRhcHRvcl9kcml2ZXJfZHRfbWF0Y2hbXSA9 IHsNCj4gPiArICAgICAgIHsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTk1LWRpc3AtZXRo ZHIifSwNCj4gPiArICAgICAgIHt9LA0KPiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxF KG9mLCBtdGtfZGlzcF9vdmxfYWRhcHRvcl9kcml2ZXJfZHRfbWF0Y2gpOw0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBtdGtfZGlzcF9vdmxfYWRhcHRvcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlDQo+ID4gKnBkZXYpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0cnVjdCBtdGtfZGlzcF9vdmxf YWRhcHRvciAqcHJpdjsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5k ZXY7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoYW5kbGUgPSBkZXYtPnBhcmVu dC0+b2Zfbm9kZTsNCj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lk Ow0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArICAgICAgIGludCBpOw0KPiA+ICsNCj4gPiAr ICAgICAgIGRldl9pbmZvKGRldiwgIiVzK1xuIiwgX19mdW5jX18pOw0KPiA+ICsNCj4gPiArICAg ICAgIG9mX2lkID0gb2ZfbWF0Y2hfbm9kZShvdmxfYWRhcHRvcl9kcml2ZXJfZHRfbWF0Y2gsDQo+ ID4gcGhhbmRsZSk7DQo+ID4gKyAgICAgICBpZiAoIW9mX2lkKQ0KPiA+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVOT0RFVjsNCj4gPiArDQo+ID4gKyAgICAgICBwcml2ID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgICBpZiAoIXByaXYp DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArICAgICAg IHByaXYtPm1tc3lzX2RldiA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOw0KPiA+ICsNCj4gPiAr ICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpOw0KPiA+ICsNCj4gPiArICAg ICAgIHJldCA9IG92bF9hZGFwdG9yX2NvbXBfaW5pdChkZXYpOw0KPiA+ICsgICAgICAgaWYgKHJl dCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfbm90aWNlKGRldiwgIm92bF9hZGFwdG9yIGNv bXAgaW5pdCBmYWlsXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAr ICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBkZXZfaW5mbyhkZXYsICIlcy1cbiIsIF9fZnVu Y19fKTsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UN Cj4gPiAqcGRldikNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IG10a19kaXNwX292bF9hZGFw dG9yICpvdmxfYWRhcHRvciA9DQo+ID4gZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOw0KPiA+ ICsgICAgICAgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgZm9yIChpID0gT1ZMX0FEQVBUT1Jf TURQX1JETUEwOyBpIDwgT1ZMX0FEQVBUT1JfTUVSR0UwOw0KPiA+IGkrKykNCj4gPiArICAgICAg ICAgICAgICAgcG1fcnVudGltZV9kaXNhYmxlKG92bF9hZGFwdG9yLQ0KPiA+ID5vdmxfYWRhcHRv cl9jb21wW2ldLmRldik7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfZHJp dmVyID0gew0KPiA+ICsgICAgICAgLnByb2JlID0gbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfcHJvYmUs DQo+ID4gKyAgICAgICAucmVtb3ZlID0gbXRrX2Rpc3Bfb3ZsX2FkYXB0b3JfcmVtb3ZlLA0KPiA+ ICsgICAgICAgLmRyaXZlciA9IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAubmFtZSA9 ICJtZWRpYXRlay1kaXNwLW92bC1hZGFwdG9yIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAub3duZXIgPSBUSElTX01PRFVMRSwNCj4gPiArICAgICAgICAgICAgICAgfSwNCj4gPiArfTsN Cj4gPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfZGlzcF9vdmxfYWRhcHRvcl9kcml2ZXIp Ow0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bfb3Zs X2FkYXB0b3IuaA0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX292bF9h ZGFwdG9yLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uN2Q3NTdiZTFmNDkxDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZGlzcF9vdmxfYWRhcHRvci5oDQo+ID4gQEAgLTAsMCArMSwxOSBA QA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQo+ID4g Ky8qDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAyMSBNZWRpYVRlayBJbmMuDQo+ID4gKyAqLw0K PiA+ICsNCj4gPiArI2lmbmRlZiBfX01US19ESVNQX09WTF9BREFQVE9SX0hfXw0KPiA+ICsjZGVm aW5lIF9fTVRLX0RJU1BfT1ZMX0FEQVBUT1JfSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8ZHJt L21lZGlhdGVrX2RybS5oPg0KPiA+ICsNCj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0b3Jfc3RvcChz dHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiA+ICtpbnQgbXRrX292bF9hZGFwdG9yX2Nsa19lbmFibGUo c3RydWN0IGRldmljZSAqZGV2KTsNCj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0b3JfY2xrX2Rpc2Fi bGUoc3RydWN0IGRldmljZSAqZGV2KTsNCj4gPiArdm9pZCBtdGtfb3ZsX2FkYXB0b3JfbGF5ZXJf Y29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50DQo+ID4gaWR4LA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpz dGF0ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtZHFf cGt0ICpjbWRxX3BrdCk7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gLS0NCj4gPiAy LjE4LjANCj4gPiANCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFybS1rZXJuZWwK