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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 9E841C54EE9 for ; Tue, 13 Sep 2022 11:41:40 +0000 (UTC) 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:In-Reply-To:From:References:CC:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=I3JTVnCmJd5o3P58QKHpeuwH8dcnm4T2isx7YsZ5ve8=; b=UQuVoLRERUcnMQ lt8gDxkKQl5AGjrElXcOAhZZUI9OIMk6DDKsvjrrjskIVx5LDYHtsawV5N6/lDDBOhRS686JkUR4l vJ4mtOpX4xTqvdormsOVsVD7zoGXZIKQy7nhZMOhnfxwZGnnzMz7mb0t3eIfudiq6EcU6gf8zhicR EI7GKrChKN9PmwfPSqut2qOsjTvMAPACP1sqDG6pVq7Gizzc0AnkONmoixnR1EW6W1QW6XbUuhvWB nUD1Cn5nkbnWIVnAbF9Prdbyeu99spaSWcCbb+dXZhex4vtR5XXMdHQTDz7h28L8+xss4K8jWk/WP oGo0BAPMO77NxjUCrzTg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oY4HG-0090Vz-VS; Tue, 13 Sep 2022 11:40:31 +0000 Received: from lelv0142.ext.ti.com ([198.47.23.249]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oY4HC-00908x-Q6 for linux-arm-kernel@lists.infradead.org; Tue, 13 Sep 2022 11:40:29 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 28DBeCiG038296; Tue, 13 Sep 2022 06:40:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1663069212; bh=fXARiK6wGKvW8sY3vDzoHZ4G+5IwmQoqrjhmSgP16u4=; h=Date:Subject:To:CC:References:From:In-Reply-To; b=OI7HShRc/wpynWQEdzRIQQM1dVXLYING5tfhFJx+2bCVQDT08GZdBlSrl+E/UEGMU ENgwUzD7ENEAUadv1H04wMOgjMG2VoxxJHNvXFPuFI4MYQTL+/51u9ImXLrqq9RfsZ +wm5Xc0imvu5lZ41vnYcQFTW2cKf0Bx4H8CwVCZY= Received: from DLEE107.ent.ti.com (dlee107.ent.ti.com [157.170.170.37]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 28DBeC6j012329 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 13 Sep 2022 06:40:12 -0500 Received: from DLEE110.ent.ti.com (157.170.170.21) by DLEE107.ent.ti.com (157.170.170.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.6; Tue, 13 Sep 2022 06:40:11 -0500 Received: from fllv0039.itg.ti.com (10.64.41.19) by DLEE110.ent.ti.com (157.170.170.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.6 via Frontend Transport; Tue, 13 Sep 2022 06:40:11 -0500 Received: from [10.24.69.114] (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id 28DBe6Fi077583; Tue, 13 Sep 2022 06:40:07 -0500 Message-ID: Date: Tue, 13 Sep 2022 17:10:06 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH v5 2/6] remoteproc: pru: Add APIs to get and put the PRU cores Content-Language: en-US To: Romain Naour , Mathieu Poirier CC: Kishon Vijay Abraham I , Md Danish Anwar , , , , , , , , , , , , , References: <20220607045650.4999-1-p-mohan@ti.com> <20220607045650.4999-3-p-mohan@ti.com> <20220712175949.GB2945984@p14s> <20220714172015.GA3106020@p14s> <20c544ef-40b3-dcbc-1f29-aac140725b57@ti.com> <7e7ed572-93fe-a9c8-f11e-d555e5113fd1@ti.com> <20220906192827.GA65147@p14s> <694da03a-e34d-1939-8b01-a75bc25495e0@ti.com> <992019ad-5c58-d420-8a18-a82228f8e086@smile.fr> From: Md Danish Anwar In-Reply-To: <992019ad-5c58-d420-8a18-a82228f8e086@smile.fr> X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220913_044027_053428_D8EC8196 X-CRM114-Status: GOOD ( 50.16 ) 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 SGkgTWF0aGlldSwKCk9uIDEyLzA5LzIyIDE4OjU0LCBSb21haW4gTmFvdXIgd3JvdGU6Cj4gSGkg RGFuaXNoLCBBbGwsCj4gCj4gTGUgMDcvMDkvMjAyMiDDoCAxMToyNCwgTWQgRGFuaXNoIEFud2Fy IGEgw6ljcml0wqA6Cj4+IEhpIE1hdGhpZXUsCj4+Cj4+IE9uIDA3LzA5LzIyIDAwOjU4LCBNYXRo aWV1IFBvaXJpZXIgd3JvdGU6Cj4+PiBPbiBGcmksIFNlcCAwMiwgMjAyMiBhdCAwMzowOTowNFBN ICswNTMwLCBNZCBEYW5pc2ggQW53YXIgd3JvdGU6Cj4+Pj4gSGkgTWF0aGlldSwKPj4+Pgo+Pj4+ Cj4+Pj4gT24gMTUvMDcvMjIgMTE6NTIsIEtpc2hvbiBWaWpheSBBYnJhaGFtIEkgd3JvdGU6Cj4+ Pj4+ICtEYW5pc2gKPj4+Pj4KPj4+Pj4gSGkgTWF0aGlldSwKPj4+Pj4KPj4+Pj4gT24gMTQvMDcv MjIgMjI6NTAsIE1hdGhpZXUgUG9pcmllciB3cm90ZToKPj4+Pj4+IE9uIFR1ZSwgSnVsIDEyLCAy MDIyIGF0IDExOjU5OjQ5QU0gLTA2MDAsIE1hdGhpZXUgUG9pcmllciB3cm90ZToKPj4+Pj4+PiBI aSBQdXJhbmpheSwKPj4+Pj4KPj4+Pj4gUmVtb3ZlZCBQdXJhbmpheSAoYXMgaGUgaXMgbm8gbG9u Z2VyIHdpdGggVEkpIGFuZCBhZGRpbmcgRGFuaXNoLgo+Pj4+Pgo+Pj4+PiBSZWdhcmRzLAo+Pj4+ PiBLaXNob24KPj4+Pj4+Pgo+Pj4+Pj4+IE9uIFR1ZSwgSnVuIDA3LCAyMDIyIGF0IDEwOjI2OjQ2 QU0gKzA1MzAsIFB1cmFuamF5IE1vaGFuIHdyb3RlOgo+Pj4+Pj4+PiBGcm9tOiBUZXJvIEtyaXN0 byA8dC1rcmlzdG9AdGkuY29tPgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBBZGQgdHdvIG5ldyBBUElzLCBw cnVfcnByb2NfZ2V0KCkgYW5kIHBydV9ycHJvY19wdXQoKSwgdG8gdGhlIFBSVQo+Pj4+Pj4+PiBk cml2ZXIgdG8gYWxsb3cgY2xpZW50IGRyaXZlcnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUg cmVtb3RlcHJvYwo+Pj4+Pj4+PiBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIGEgUFJVIGNvcmUuIFRo ZSBQUlUgY29yZXMgYXJlIHRyZWF0ZWQgYXMKPj4+Pj4+Pj4gcmVzb3VyY2VzIHdpdGggb25seSBv bmUgY2xpZW50IG93bmluZyBpdCBhdCBhIHRpbWUuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoZSBwcnVf cnByb2NfZ2V0KCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgcnByb2MgaGFuZGxlIGNvcnJlc3BvbmRp bmcKPj4+Pj4+Pj4gdG8gYSBQUlUgY29yZSBpZGVudGlmaWVkIGJ5IHRoZSBkZXZpY2UgdHJlZSAi dGkscHJ1cyIgcHJvcGVydHkgdW5kZXIKPj4+Pj4+Pj4gdGhlIGNsaWVudCBub2RlLiBUaGUgcHJ1 X3Jwcm9jX3B1dCgpIGlzIHRoZSBjb21wbGVtZW50YXJ5IGZ1bmN0aW9uCj4+Pj4+Pj4+IHRvIHBy dV9ycHJvY19nZXQoKS4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gQ28tZGV2ZWxvcGVkLWJ5OiBTdW1hbiBB bm5hIDxzLWFubmFAdGkuY29tPgo+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBTdW1hbiBBbm5hIDxz LWFubmFAdGkuY29tPgo+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBUZXJvIEtyaXN0byA8dC1rcmlz dG9AdGkuY29tPgo+Pj4+Pj4+PiBDby1kZXZlbG9wZWQtYnk6IEdyemVnb3J6IEphc3pjenlrIDxn cnplZ29yei5qYXN6Y3p5a0BsaW5hcm8ub3JnPgo+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBHcnpl Z29yeiBKYXN6Y3p5ayA8Z3J6ZWdvcnouamFzemN6eWtAbGluYXJvLm9yZz4KPj4+Pj4+Pj4gQ28t ZGV2ZWxvcGVkLWJ5OiBQdXJhbmpheSBNb2hhbiA8cC1tb2hhbkB0aS5jb20+Cj4+Pj4+Pj4+IFNp Z25lZC1vZmYtYnk6IFB1cmFuamF5IE1vaGFuIDxwLW1vaGFuQHRpLmNvbT4KPj4+Pj4+Pj4gLS0t Cj4+Pj4+Pj4+ICAgZHJpdmVycy9yZW1vdGVwcm9jL3BydV9ycHJvYy5jIHwgMTM4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQo+Pj4+Pj4+PiAgIGluY2x1ZGUvbGludXgvcHJ1c3Mu aCAgICAgICAgICB8ICA1NiArKysrKysrKysrKysrCj4+Pj4+Pj4+ICAgMiBmaWxlcyBjaGFuZ2Vk LCAxODkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPj4+Pj4+Pj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgaW5jbHVkZS9saW51eC9wcnVzcy5oCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3JlbW90ZXByb2MvcHJ1X3Jwcm9jLmMgYi9kcml2ZXJzL3JlbW90ZXByb2Mv cHJ1X3Jwcm9jLmMKPj4+Pj4+Pj4gaW5kZXggMTc3N2EwMWZhODRlLi43YTM1YjQwMDI4N2EgMTAw NjQ0Cj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvcmVtb3RlcHJvYy9wcnVfcnByb2MuYwo+Pj4+Pj4+ PiArKysgYi9kcml2ZXJzL3JlbW90ZXByb2MvcHJ1X3Jwcm9jLmMKPj4+Pj4+Pj4gQEAgLTIsMTIg KzIsMTMgQEAKPj4+Pj4+Pj4gICAvKgo+Pj4+Pj4+PiAgICAqIFBSVS1JQ1NTIHJlbW90ZXByb2Mg ZHJpdmVyIGZvciB2YXJpb3VzIFRJIFNvQ3MKPj4+Pj4+Pj4gICAgKgo+Pj4+Pj4+PiAtICogQ29w eXJpZ2h0IChDKSAyMDE0LTIwMjAgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0 cHM6Ly93d3cudGkuY29tLwo+Pj4+Pj4+PiArICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjIgVGV4 YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cHM6Ly93d3cudGkuY29tLwo+Pj4+Pj4+ PiAgICAqCj4+Pj4+Pj4+ICAgICogQXV0aG9yKHMpOgo+Pj4+Pj4+PiAgICAqCVN1bWFuIEFubmEg PHMtYW5uYUB0aS5jb20+Cj4+Pj4+Pj4+ICAgICoJQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29t Pgo+Pj4+Pj4+PiAgICAqCUdyemVnb3J6IEphc3pjenlrIDxncnplZ29yei5qYXN6Y3p5a0BsaW5h cm8ub3JnPiBmb3IgVGV4YXMgSW5zdHJ1bWVudHMKPj4+Pj4+Pj4gKyAqCVB1cmFuamF5IE1vaGFu IDxwLW1vaGFuQHRpLmNvbT4KPj4+Pj4+Pj4gICAgKi8KPj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGlu dXgvYml0b3BzLmg+Cj4+Pj4+Pj4+IEBAIC0xNiw2ICsxNyw3IEBACj4+Pj4+Pj4+ICAgI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4+Pj4+PiAgICNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2Uu aD4KPj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+Cj4+Pj4+Pj4+ICsjaW5jbHVk ZSA8bGludXgvcHJ1c3MuaD4KPj4+Pj4+Pj4gICAjaW5jbHVkZSA8bGludXgvcHJ1c3NfZHJpdmVy Lmg+Cj4+Pj4+Pj4+ICAgI2luY2x1ZGUgPGxpbnV4L3JlbW90ZXByb2MuaD4KPj4+Pj4+Pj4gQEAg LTExMSw2ICsxMTMsOCBAQCBzdHJ1Y3QgcHJ1X3ByaXZhdGVfZGF0YSB7Cj4+Pj4+Pj4+ICAgICog QHJwcm9jOiByZW1vdGVwcm9jIHBvaW50ZXIgZm9yIHRoaXMgUFJVIGNvcmUKPj4+Pj4+Pj4gICAg KiBAZGF0YTogUFJVIGNvcmUgc3BlY2lmaWMgZGF0YQo+Pj4+Pj4+PiAgICAqIEBtZW1fcmVnaW9u czogZGF0YSBmb3IgZWFjaCBvZiB0aGUgUFJVIG1lbW9yeSByZWdpb25zCj4+Pj4+Pj4+ICsgKiBA Y2xpZW50X25wOiBjbGllbnQgZGV2aWNlIG5vZGUKPj4+Pj4+Pj4gKyAqIEBsb2NrOiBtdXRleCB0 byBwcm90ZWN0IGNsaWVudCB1c2FnZQo+Pj4+Pj4+PiAgICAqIEBmd19uYW1lOiBuYW1lIG9mIGZp cm13YXJlIGltYWdlIHVzZWQgZHVyaW5nIGxvYWRpbmcKPj4+Pj4+Pj4gICAgKiBAbWFwcGVkX2ly cTogdmlydHVhbCBpbnRlcnJ1cHQgbnVtYmVycyBvZiBjcmVhdGVkIGZ3IHNwZWNpZmljIG1hcHBp bmcKPj4+Pj4+Pj4gICAgKiBAcHJ1X2ludGVycnVwdF9tYXA6IHBvaW50ZXIgdG8gaW50ZXJydXB0 IG1hcHBpbmcgZGVzY3JpcHRpb24gKGZpcm13YXJlKQo+Pj4+Pj4+PiBAQCAtMTI2LDYgKzEzMCw4 IEBAIHN0cnVjdCBwcnVfcnByb2Mgewo+Pj4+Pj4+PiAgIAlzdHJ1Y3QgcnByb2MgKnJwcm9jOwo+ Pj4+Pj4+PiAgIAljb25zdCBzdHJ1Y3QgcHJ1X3ByaXZhdGVfZGF0YSAqZGF0YTsKPj4+Pj4+Pj4g ICAJc3RydWN0IHBydXNzX21lbV9yZWdpb24gbWVtX3JlZ2lvbnNbUFJVX0lPTUVNX01BWF07Cj4+ Pj4+Pj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpjbGllbnRfbnA7Cj4+Pj4+Pj4+ICsJc3RydWN0 IG11dGV4IGxvY2s7IC8qIGNsaWVudCBhY2Nlc3MgbG9jayAqLwo+Pj4+Pj4+PiAgIAljb25zdCBj aGFyICpmd19uYW1lOwo+Pj4+Pj4+PiAgIAl1bnNpZ25lZCBpbnQgKm1hcHBlZF9pcnE7Cj4+Pj4+ Pj4+ICAgCXN0cnVjdCBwcnVfaXJxX3JzYyAqcHJ1X2ludGVycnVwdF9tYXA7Cj4+Pj4+Pj4+IEBA IC0xNDYsNiArMTUyLDEyNSBAQCB2b2lkIHBydV9jb250cm9sX3dyaXRlX3JlZyhzdHJ1Y3QgcHJ1 X3Jwcm9jICpwcnUsIHVuc2lnbmVkIGludCByZWcsIHUzMiB2YWwpCj4+Pj4+Pj4+ICAgCXdyaXRl bF9yZWxheGVkKHZhbCwgcHJ1LT5tZW1fcmVnaW9uc1tQUlVfSU9NRU1fQ1RSTF0udmEgKyByZWcp Owo+Pj4+Pj4+PiAgIH0KPj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcnByb2MgKl9fcHJ1X3Jwcm9j X2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBpbnQgaW5kZXgpCj4+Pj4+Pj4+ICt7Cj4+Pj4+ Pj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpycHJvY19ucCA9IE5VTEw7Cj4+Pj4+Pj4+ICsJc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPj4+Pj4+Pj4gKwlzdHJ1Y3QgcnByb2MgKnJwcm9j Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJcnByb2NfbnAgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCAi dGkscHJ1cyIsIGluZGV4KTsKPj4+Pj4+Pj4gKwlpZiAoIXJwcm9jX25wIHx8ICFvZl9kZXZpY2Vf aXNfYXZhaWxhYmxlKHJwcm9jX25wKSkKPj4+Pj4+Pj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RF Vik7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwlwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShy cHJvY19ucCk7Cj4+Pj4+Pj4+ICsJb2Zfbm9kZV9wdXQocnByb2NfbnApOwo+Pj4+Pj4+PiArCj4+ Pj4+Pj4+ICsJaWYgKCFwZGV2IHx8ICEoJnBkZXYtPmRldikgfHwgISgoJnBkZXYtPmRldiktPmRy aXZlcikpCj4+Pj4+Pj4+ICsJCS8qIHByb2JhYmx5IFBSVSBub3QgeWV0IHByb2JlZCAqLwo+Pj4+ Pj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+ PiArCS8qIG1ha2Ugc3VyZSBpdCBpcyBQUlUgcnByb2MgKi8KPj4+Pj4+Pj4gKwlpZiAoIWlzX3By dV9ycHJvYygmcGRldi0+ZGV2KSkgewo+Pj4+Pj4+PiArCQlwdXRfZGV2aWNlKCZwZGV2LT5kZXYp Owo+Pj4+Pj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPj4+Pj4+Pj4gKwl9Cj4+Pj4+ Pj4+ICsKPj4+Pj4+Pj4gKwlycHJvYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+Pj4+ Pj4+PiArCXB1dF9kZXZpY2UoJnBkZXYtPmRldik7Cj4+Pj4+Pj4+ICsJaWYgKCFycHJvYykKPj4+ Pj4+Pj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUik7Cj4+Pj4+Pj4+ICsKPj4+Pj4+ Pj4gKwlnZXRfZGV2aWNlKCZycHJvYy0+ZGV2KTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCXJldHVy biBycHJvYzsKPj4+Pj4+Pj4gK30KPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+ICsg KiBwcnVfcnByb2NfZ2V0KCkgLSBnZXQgdGhlIFBSVSBycHJvYyBpbnN0YW5jZSBmcm9tIGEgZGV2 aWNlIG5vZGUKPj4+Pj4+Pj4gKyAqIEBucDogdGhlIHVzZXIvY2xpZW50IGRldmljZSBub2RlCj4+ Pj4+Pj4+ICsgKiBAaW5kZXg6IGluZGV4IHRvIHVzZSBmb3IgdGhlIHRpLHBydXMgcHJvcGVydHkK Pj4+Pj4+Pj4gKyAqIEBwcnVfaWQ6IG9wdGlvbmFsIHBvaW50ZXIgdG8gcmV0dXJuIHRoZSBQUlUg cmVtb3RlcHJvYyBwcm9jZXNzb3IgaWQKPj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+ICsgKiBUaGlzIGZ1 bmN0aW9uIGxvb2tzIHRocm91Z2ggYSBjbGllbnQgZGV2aWNlIG5vZGUncyAidGkscHJ1cyIgcHJv cGVydHkgYXQKPj4+Pj4+Pj4gKyAqIGluZGV4IEBpbmRleCBhbmQgcmV0dXJucyB0aGUgcnByb2Mg aGFuZGxlIGZvciBhIHZhbGlkIFBSVSByZW1vdGUgcHJvY2Vzc29yIGlmCj4+Pj4+Pj4+ICsgKiBm b3VuZC4gVGhlIGZ1bmN0aW9uIGFsbG93cyBvbmx5IG9uZSB1c2VyIHRvIG93biB0aGUgUFJVIHJw cm9jIHJlc291cmNlIGF0IGEKPj4+Pj4+Pj4gKyAqIHRpbWUuIENhbGxlciBtdXN0IGNhbGwgcHJ1 X3Jwcm9jX3B1dCgpIHdoZW4gZG9uZSB3aXRoIHVzaW5nIHRoZSBycHJvYywgbm90Cj4+Pj4+Pj4+ ICsgKiByZXF1aXJlZCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGZhaWx1cmUuCj4+Pj4+Pj4+ ICsgKgo+Pj4+Pj4+PiArICogV2hlbiBvcHRpb25hbCBAcHJ1X2lkIHBvaW50ZXIgaXMgcGFzc2Vk IHRoZSBQUlUgcmVtb3RlcHJvYyBwcm9jZXNzb3IgaWQgaXMKPj4+Pj4+Pj4gKyAqIHJldHVybmVk Lgo+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4gKyAqIFJldHVybjogcnByb2MgaGFuZGxlIG9uIHN1Y2Nl c3MsIGFuZCBhbiBFUlJfUFRSIG9uIGZhaWx1cmUgdXNpbmcgb25lCj4+Pj4+Pj4+ICsgKiBvZiB0 aGUgZm9sbG93aW5nIGVycm9yIHZhbHVlcwo+Pj4+Pj4+PiArICogICAgLUVOT0RFViBpZiBkZXZp Y2UgaXMgbm90IGZvdW5kCj4+Pj4+Pj4+ICsgKiAgICAtRUJVU1kgaWYgUFJVIGlzIGFscmVhZHkg YWNxdWlyZWQgYnkgYW55b25lCj4+Pj4+Pj4+ICsgKiAgICAtRVBST0JFX0RFRkVSIGlzIFBSVSBk ZXZpY2UgaXMgbm90IHByb2JlZCB5ZXQKPj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+PiArc3RydWN0IHJw cm9jICpwcnVfcnByb2NfZ2V0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsIGludCBpbmRleCwKPj4+ Pj4+Pj4gKwkJCSAgICBlbnVtIHBydXNzX3BydV9pZCAqcHJ1X2lkKQo+Pj4+Pj4+PiArewo+Pj4+ Pj4+PiArCXN0cnVjdCBycHJvYyAqcnByb2M7Cj4+Pj4+Pj4+ICsJc3RydWN0IHBydV9ycHJvYyAq cHJ1Owo+Pj4+Pj4+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiAr CXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTsKPj4+Pj4+Pgo+Pj4+Pj4+IFRoZXJlIHNob3Vs ZCBiZSBhIG1vZHVsZV9wdXQoKSBpbiBwcnVfcnByb2NfcHV0KCkuLi4KPj4+Pj4+Cj4+Pj4+PiAu Li4gYW5kIGluIHRoZSBlcnJvciBwYXRoIG9mIHRoaXMgZnVuY3Rpb24uCj4+Pj4+Pgo+Pj4+Pj4+ Cj4+Pj4+Pj4gTW9yZSBjb21tZW50cyB0byBjb21lIHRvbW9ycm93LiAgSSdtIGVzcGVjaWFsbHkg d29ycmllZCBhYm91dCB0aGlzIEFQSSByYWNpbmcKPj4+Pj4+PiB3aXRoIGEgcmVtb3RlIHByb2Nl c3NvciBiZWluZyByZW1vdmVkIG9yIGRldGFjaGVkLgo+Pj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gTG9v a2luZyBhdCB3aGF0IGlzIGRvbmUgaW4gd2t1cF9tM19pcGNfcHJvYmUoKSwgaXQgc2hvdWxkIGJl IHBvc3NpYmxlIHRvIGNhbGwKPj4+Pj4+IHJwcm9jX2dldF9ieV9oYW5kbGUoKSBoZXJlIGFuZCB0 aGF0IHdvdWxkIG1ha2Ugc3VyZSB0aGUgcmVtb3RlIHByb2Nlc3NvciBkb2Vzbid0Cj4+Pj4+PiBn byBhd2F5IGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KPj4+Pj4+Cj4+Pj4+PiBNb3Jl IGNvbW1lbnRzIHRvIGNvbWUuLi4KPj4+Pgo+Pj4+IEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgcnBy b2NfZ2V0X2J5X2hhbmRsZSgpIGhlcmUgaW5zdGVhZCBvZgo+Pj4+IF9fcHJ1X2dldF9wcm9jKCks IGJ1dCB0aGF0IHdvdWxkIG5vdCBwcm92aWRlIG11bHRpcGxlIGZ1bmN0aW9uYWxpdHkuCj4+Pj4K Pj4+PiBUaGUgQVBJIHJwcm9jX2dldF9ieV9oYW5kbGUoKSByZXR1cm5zIHJwcm9jIGhhbmRsZSBv biBzdWNjZXNzLCBhbmQgTlVMTCBvbgo+Pj4+IGZhaWx1cmUgd2hlcmUgYXMgX19wcnVfZ2V0X3By b2MoKSByZXR1cm5zIEVSUl9QVFIgb24gZmFpbHVyZSB3aGljaCBwcm92aWRlcwo+Pj4+IG11bHRp cGxlIGZ1bmN0aW9uYWxpdHkgYW5kIG9wcG9ydHVuaXR5IGZvciB1cyB0byBkaXN0aW5ndWlzaCBi ZXR3ZWVuCj4+Pj4gbXVsdGlwbGUgZXJyb3JzLgo+Pj4+Cj4+Pj4gU28gd2UgaGF2ZSB0aGVzZSB0 aHJlZSBvcHRpb25zLgo+Pj4+Cj4+Pj4gMS4gSWYgd2UncmUgdXNpbmcgdGhlIEFQSSBycHJvY19n ZXRfYnlfaGFuZGxlKCkgYW5kIHdlIHdhbnQgdGhlIG11bHRpcGxlCj4+Pj4gRVJSX1BUUiBvbiBm YWlsdXJlIHRoZW4gd2Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgQVBJIHJwcm9jX2dldF9ieV9o YW5kbGUoKQo+Pj4+IGFuZCBhbHNvIGFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgdXNlcyBycHJvY19n ZXRfYnlfaGFuZGxlKCkuCj4+Pj4KPj4+Cj4+PiBOb3Qgb3B0aW1hbC4KPj4+Cj4+Pj4gMi4gS2Vl cCB0aGUgQVBJIHJwcm9jX2dldF9ieV9oYW5kbGUoKSBhcyBpdCBpcy4gVGhhdCB3aWxsIHJlc3Ry aWN0IHVzIGZyb20KPj4+PiB1c2luZyBtdWx0aXBsZSBFUlJfUFRSIG9uIGRpZmZlcmVudCBraW5k cyBvZiBlcnJvci4KPj4+Pgo+Pj4KPj4+IE5vdCBvcHRpbWFsLgo+Pj4KPj4+PiAzLiBJbnN0ZWFk IG9mIHVzaW5nIHJwcm9jX2dldF9ieV9oYW5kbGUoKSwga2VlcCB1c2luZyBfX3BydV9nZXRfcHJv YygpLiBUaGlzCj4+Pj4gd2lsbCBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcHJvcGVyIEVSUl9QVFIg dG8gcmV0cnVuIGZvciBkaWZmZXJlbnQga2luZHMgb2YKPj4+PiBlcnJvcnMuCj4+Pj4KPj4+Cj4+ PiBVbmFjY2VwdGFibGUgZm9yIHRoZSByZWFzb24gSSBhbHJlYWR5IHN0YXRlZC4gIAo+Pj4KPj4+ PiBQbGVhc2UgbGV0IG1lIGtub3cgd2hpY2ggb3B0aW9uIHRvIGNvbnRpbnVlIHdpdGguCj4+Pgo+ Pj4gSSBzdWdnZXN0IGJ1aWxkaW5nIGEgd3JhcHBlciB0aGF0IGRvZXMgZXZlcnl0aGluZyB5b3Ug d2FudCBhcm91bmQgcnByb2NfZ2V0X2J5X3BoYW5kbGUoKS4KCldlIGNhbiBpbnRyb2R1Y2UgYSBu ZXcgQVBJIF9fcnByb2NfZ2V0X2J5X3BoYW5kbGUoKSBzaW1pbGFyIHRvIHRoZSBBUEkKcnByb2Nf Z2V0X2J5X3BoYW5kbGUoKS4gVGhlIG5ldyBBUEkgX19ycHJvY19nZXRfYnlfcGhhbmRsZSgpIHdp bGwgZG8gYWxsIHRoZQpmdW5jdGlvbmFsaXR5IG9mIGdldHRpbmcgdGhlIHJwcm9jLiBPbiBzdWNj ZXNzIGl0IHdpbGwgcmV0dXJuIHJwcm9jIGFuZCBvbgpmYWlsdXJlIGl0IHdpbGwgcmV0dXJuIHRo ZSBkaWZmZXJlbnQgRVJSX1BUUi4KSWYgcnByb2MgaXMgbm90IHByb2JlZCB5ZXQsIGl0IHdpbGwg cmV0dXJuIEVSUl9QVFIoLUVQUk9CRV9ERUZFUikuCgpUaGlzIHdpbGwgbWFrZSBzdXJlIHRoYXQg d2UncmUgZ2V0dGluZyBkaWZmZXJlbnQgZXJyb3IgY29kZXMgZm9yIGRpZmZlcmVudAplcnJvcnMg ZnJvbSBwcnVfcnByb2NfZ2V0KCkuCgpUaGUgb2xkIEFQSSBycHJvY19nZXRfYnlfaGFuZGxlKCkg d2lsbCBpbnZva2UgdGhlIG5ldyBBUEkuIE9uIHN1Y2Nlc3MgdGhlIG5ldwpBUEkgd2lsbCByZXR1 cm4gcnByb2MgYW5kIHRoZSBvbGQgQVBJIHdpbGwgYWxzbyByZXR1cm4gcnByb2MuIE9uIGZhaWx1 cmUgdGhlCm5ldyBBUEkgd2lsbCByZXR1cm4gZGlmZmVyZW50IGVycm9yIGNvZGVzIHdoaWxlIHRo ZSBvbGQgQVBJIHdpbGwgcHJlc2VydmUgaXQncwpuYXR1cmUgYW5kIHJldHVybiBOVUxMLgoKVGhl IEFQSSBfX3Jwcm9jX2dldF9ieV9oYW5kbGUgd2lsbCBsb29rIGxpa2UgdGhpcy4KCnN0cnVjdCBy cHJvYyAqX19ycHJvY19nZXRfYnlfaGFuZGxlKHBoYW5kbGUgcGhhbmRsZSkKewoJc3RydWN0IHJw cm9jICpycHJvYyA9IE5VTEwsICpyOwoJc3RydWN0IGRldmljZV9ub2RlICpucDsKCglucCA9IG9m X2ZpbmRfbm9kZV9ieV9waGFuZGxlKHBoYW5kbGUpOwoJaWYgKCFucCkKCQlyZXR1cm4gTlVMTDsK CglyY3VfcmVhZF9sb2NrKCk7CglsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShyLCAmcnByb2NfbGlz dCwgbm9kZSkgewoJCWlmIChyLT5kZXYucGFyZW50ICYmIHItPmRldi5wYXJlbnQtPm9mX25vZGUg PT0gbnApIHsKCQkJLypwcmV2ZW50IHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gZnJvbSBiZWlu ZyByZW1vdmVkICovCgkJCWlmICghdHJ5X21vZHVsZV9nZXQoci0+ZGV2LnBhcmVudC0+ZHJpdmVy LT5vd25lcikpIHsKCQkJCWRldl9lcnIoJnItPmRldiwgImNhbid0IGdldCBvd25lclxuIik7CgkJ CQlicmVhazsKCQkJfQoKCQkJcnByb2MgPSByOwoJCQlnZXRfZGV2aWNlKCZycHJvYy0+ZGV2KTsK CQkJYnJlYWs7CgkJfQoJfQoJcmN1X3JlYWRfdW5sb2NrKCk7CgoJb2Zfbm9kZV9wdXQobnApOwoK CWlmKCFycHJvYykKCQlyZXR1cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKCglyZXR1cm4gcnBy b2M7Cn0KClRoZSBBUEkgcnByb2NfZ2V0X2J5X2hhbmRsZSgpIHdpbGwgbG9vayBsaWtlIHRoaXMu CgpzdHJ1Y3QgcnByb2MgKnJwcm9jX2dldF9ieV9waGFuZGxlKHBoYW5kbGUgcGhhbmRsZSkKewoJ c3RydWN0IHJwcm9jICpycHJvYyA9IE5VTEw7CgoJcnByb2MgPSBfX3Jwcm9jX2dldF9ieV9oYW5k bGUocGhhbmRsZSk7CgoJaWYoIXJwcm9jIHx8IElTX0VSUihycHJvYykpCgkJcmV0dXJuIE5VTEw7 CgoJcmV0dXJuIHJwcm9jOwp9CgpUaGlzIHdheSBpbiBwcnVfcnByb2NfZ2V0KCksIHdlJ2xsIGdl dCB0aGUgcnByb2MgYnkgcGhhbmRsZSBhbmQgd2UnbGwgc3RpbGwKcmV0dXJuIGRpZmZlcmVudCBl cnJvciBjb2RlcyBkZXBlbmRpbmcgdXBvbiBmYWlsdXJlIGNhc2VzLiBXZSdsbCBhbHNvIGJlIGFi bGUKdG8gcHJlc2VydmUgdGhlIGFjdHVhbCBmdW5jdGlvbmFsaXR5IG9mIHJwcm9jX2dldF9ieV9w aGFuZGxlKCkgc28gdGhhdCB0aGUKb3RoZXIgQVBJcyB1c2luZyBycHJvY19nZXRfYnlfcGhhbmRs ZSgpIHdvbid0IGdldCBhZmZlY3RlZC4KClBsZWFzZSBsZXQgbWUga25vdyBpZiB0aGlzIGxvb2tz IGdvb2QuCgo+Pj4KPj4KPj4gU3VyZSwgSSdsbCBkbyB0aGF0LiBJJ2xsIHNoYXJlIHRoaXMgY2hh bmdlIGluIHY2IG9mIHRoaXMgcGF0Y2ggc2VyaWVzLgo+IAo+IEknbSBhYmxlIHRvIHRlc3QgdGhl IFRJIHBydWV0aCBkcml2ZXIgZnJvbSB0aGUgdGktbGludXgtNS4xMC55IHRyZWUgWzFdIG9uIGEK PiBBTTU3NDkgY3B1IChjdXN0b20gYm9hcmQpLiBCdXQgSSBuZWVkIGEgbW9yZSByZWNlbnQga2Vy bmVsIChhdCBsZWFzdCA1LjE1KSB0bwo+IHN1cHBvcnQgb3RoZXIgZGV2aWNlcyByZWNlbnRseSBh ZGRlZCB0byB0aGUgTGludXgga2VybmVsICh3aWZpNiBtb2R1bGUgYW5kIGFuCj4gZXRoZXJuZXQg c3dpdGNoKS4gQWxzbyBpdCB3b3VsZCBiZSBuaWNlIGlmIHRoaXMgZHJpdmVyIGlzIGZpbmFsbHkg bWVyZ2VkIGluIHRoZQo+IExpbnV4IGtlcm5lbC4KPiAKPiBNYXliZSBJIGNhbiBoZWxwIHRvIHRl c3QgdGhpcyBzZXJpZXMgYnV0IEkgbm90aWNlZCBpdCBvbmx5IHByb3ZpZGUgdGhlIGRyaXZlcgo+ IGZvciBUSSBBTTY1NHggY3B1cyBbMl0uIENhbiB5b3UgYWxzbyBwcm92aWRlIHBhdGNoZXMgZm9y IGJhc2ljIEVNQUMgc3VwcG9ydCB3aXRoCj4gdGhlIFRJIEFNNTc0eCB0b28/IChJIGRvbid0IG5l ZWQgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBmcmFtZSB0aW1lc3RhbXBpbmcsIEhTUgo+IGV0Yyku Cj4gCj4gQWxzbywgd2hhdCBhYm91dCBwYXRjaGVzIHByZXNlbnQgaW4gdGhlIHRpLWxpbnV4LWtl cm5lbCB0cmVlIGFuZCBub3QgaW5jbHVkZWQKPiB0aGlzIHRoaXMgc2VyaWVzPyBFc3BlY2lhbGx5 IHBhdGNoZXMgdGhhdCBtb2RpZnkgdGhlIGtlcm5lbCBuZXR3b3JrIHN0YWNrIFszXQo+IChuZXQv cnBtc2c6IGFkZCBzdXBwb3J0IGZvciBuZXcgcnBtc2cgc29ja2V0cykuIElzIHRoaXMgbmV3IHNv Y2tldCBwcm90b2NvbAo+IHJlYWxseSBuZWVkZWQ/Cj4gCj4gTm90aWNlIHRoZSBwYXRjaCBhZGRp bmcgdGhlIHJwbXNnIHNvY2tldHMgWzNdIGFscmVhZHkgY29uZmxpY3Qgd2l0aCB0aGUgdXBzdHJl YW0KPiBrZXJuZWwgc2luY2UgdGhlIEFGX01DVFAgZGVmaW5pdGlvbiBub3cgdXNlIHRoZSB2YWx1 ZSB0ZW1wb3Jhcmx5IHVzZWQgYnkKPiBBRl9SUE1TRyBbNF0uCj4gCj4gQ2FuIHlvdSBzZW5kIGFu IHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgY29tcGxldGUgc2VyaWVzPwo+IAo+IFRoYW5rcyEKPiAK PiBbMV0gaHR0cHM6Ly9naXQudGkuY29tL2NnaXQvdGktbGludXgta2VybmVsL3RpLWxpbnV4LWtl cm5lbC9sb2cvP2g9dGktbGludXgtNS4xMC55Cj4gCj4gWzJdIGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2xpbnV4LXJlbW90ZXByb2MvMjAyMjA0MDYwOTQzNTguNzg5NS0xLXAtbW9oYW5AdGkuY29t Lwo+IAo+IFszXQo+IGh0dHBzOi8vZ2l0LnRpLmNvbS9jZ2l0L3RpLWxpbnV4LWtlcm5lbC90aS1s aW51eC1rZXJuZWwvY29tbWl0Lz9oPXRpLWxpbnV4LTUuMTAueSZpZD1mNGI5NzhhOTc4YzM4MTQ5 ZjcxMmRkZDEzN2YxMmVkNWZiOTE0MTYxCj4gCj4gWzRdCj4gaHR0cHM6Ly9naXQua2VybmVsLm9y Zy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LmdpdC9jb21taXQvP2lkPWJj NDlkODE2OWFhNzIyOTUxMDRmMTU1ODgzMGM1NjhlZmI5NDYzMTUKPiAKPiBCZXN0IHJlZ2FyZHMs Cj4gUm9tYWluCj4gCj4gCj4+Cj4+Pj4KPj4+PiBUaGFua3MsCj4+Pj4gRGFuaXNoCj4+Pj4KPj4+ Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pj4gVGhhbmtzLAo+Pj4+Pj4+IE1hdGhpZXUKPj4+Pj4+Pgo+ Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJcnByb2MgPSBfX3BydV9ycHJvY19nZXQobnAsIGluZGV4KTsK Pj4+Pj4+Pj4gKwlpZiAoSVNfRVJSKHJwcm9jKSkKPj4+Pj4+Pj4gKwkJcmV0dXJuIHJwcm9jOwo+ Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJcHJ1ID0gcnByb2MtPnByaXY7Cj4+Pj4+Pj4+ICsJZGV2ID0g JnJwcm9jLT5kZXY7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwltdXRleF9sb2NrKCZwcnUtPmxvY2sp Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJaWYgKHBydS0+Y2xpZW50X25wKSB7Cj4+Pj4+Pj4+ICsJ CW11dGV4X3VubG9jaygmcHJ1LT5sb2NrKTsKPj4+Pj4+Pj4gKwkJcHV0X2RldmljZShkZXYpOwo+ Pj4+Pj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRUJVU1kpOwo+Pj4+Pj4+PiArCX0KPj4+Pj4+Pj4g Kwo+Pj4+Pj4+PiArCXBydS0+Y2xpZW50X25wID0gbnA7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwlt dXRleF91bmxvY2soJnBydS0+bG9jayk7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKwlpZiAocHJ1X2lk KQo+Pj4+Pj4+PiArCQkqcHJ1X2lkID0gcHJ1LT5pZDsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCXJl dHVybiBycHJvYzsKPj4+Pj4+Pj4gK30KPj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKHBydV9y cHJvY19nZXQpOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsvKioKPj4+Pj4+Pj4gKyAqIHBydV9ycHJv Y19wdXQoKSAtIHJlbGVhc2UgdGhlIFBSVSBycHJvYyByZXNvdXJjZQo+Pj4+Pj4+PiArICogQHJw cm9jOiB0aGUgcnByb2MgcmVzb3VyY2UgdG8gcmVsZWFzZQo+Pj4+Pj4+PiArICoKPj4+Pj4+Pj4g KyAqIFJlbGVhc2VzIHRoZSBQUlUgcnByb2MgcmVzb3VyY2UgYW5kIG1ha2VzIGl0IGF2YWlsYWJs ZSB0byBvdGhlcgo+Pj4+Pj4+PiArICogdXNlcnMuCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gK3Zv aWQgcHJ1X3Jwcm9jX3B1dChzdHJ1Y3QgcnByb2MgKnJwcm9jKQo+Pj4+Pj4+PiArewo+Pj4+Pj4+ PiArCXN0cnVjdCBwcnVfcnByb2MgKnBydTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCWlmIChJU19F UlJfT1JfTlVMTChycHJvYykgfHwgIWlzX3BydV9ycHJvYyhycHJvYy0+ZGV2LnBhcmVudCkpCj4+ Pj4+Pj4+ICsJCXJldHVybjsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCXBydSA9IHJwcm9jLT5wcml2 Owo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJbXV0ZXhfbG9jaygmcHJ1LT5sb2NrKTsKPj4+Pj4+Pj4g Kwo+Pj4+Pj4+PiArCWlmICghcHJ1LT5jbGllbnRfbnApIHsKPj4+Pj4+Pj4gKwkJbXV0ZXhfdW5s b2NrKCZwcnUtPmxvY2spOwo+Pj4+Pj4+PiArCQlyZXR1cm47Cj4+Pj4+Pj4+ICsJfQo+Pj4+Pj4+ PiArCj4+Pj4+Pj4+ICsJcHJ1LT5jbGllbnRfbnAgPSBOVUxMOwo+Pj4+Pj4+PiArCW11dGV4X3Vu bG9jaygmcHJ1LT5sb2NrKTsKPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArCXB1dF9kZXZpY2UoJnJwcm9j LT5kZXYpOwo+Pj4+Pj4+PiArfQo+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwocHJ1X3Jwcm9j X3B1dCk7Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gICBzdGF0aWMgaW5saW5lIHUzMiBwcnVfZGVidWdf cmVhZF9yZWcoc3RydWN0IHBydV9ycHJvYyAqcHJ1LCB1bnNpZ25lZCBpbnQgcmVnKQo+Pj4+Pj4+ PiAgIHsKPj4+Pj4+Pj4gICAJcmV0dXJuIHJlYWRsX3JlbGF4ZWQocHJ1LT5tZW1fcmVnaW9uc1tQ UlVfSU9NRU1fREVCVUddLnZhICsgcmVnKTsKPj4+Pj4+Pj4gQEAgLTQzOCw3ICs1NjMsNyBAQCBz dGF0aWMgdm9pZCAqcHJ1X2RfZGFfdG9fdmEoc3RydWN0IHBydV9ycHJvYyAqcHJ1LCB1MzIgZGEs IHNpemVfdCBsZW4pCj4+Pj4+Pj4+ICAgCWRyYW0wID0gcHJ1c3MtPm1lbV9yZWdpb25zW1BSVVNT X01FTV9EUkFNMF07Cj4+Pj4+Pj4+ICAgCWRyYW0xID0gcHJ1c3MtPm1lbV9yZWdpb25zW1BSVVNT X01FTV9EUkFNMV07Cj4+Pj4+Pj4+ICAgCS8qIFBSVTEgaGFzIGl0cyBsb2NhbCBSQU0gYWRkcmVz c2VzIHJldmVyc2VkICovCj4+Pj4+Pj4+IC0JaWYgKHBydS0+aWQgPT0gMSkKPj4+Pj4+Pj4gKwlp ZiAocHJ1LT5pZCA9PSBQUlVTU19QUlUxKQo+Pj4+Pj4+PiAgIAkJc3dhcChkcmFtMCwgZHJhbTEp Owo+Pj4+Pj4+PiAgIAlzaHJkX3JhbSA9IHBydXNzLT5tZW1fcmVnaW9uc1tQUlVTU19NRU1fU0hS RF9SQU0yXTsKPj4+Pj4+Pj4gQEAgLTc0NywxNCArODcyLDE0IEBAIHN0YXRpYyBpbnQgcHJ1X3Jw cm9jX3NldF9pZChzdHJ1Y3QgcHJ1X3Jwcm9jICpwcnUpCj4+Pj4+Pj4+ICAgCWNhc2UgUlRVMF9J UkFNX0FERFJfTUFTSzoKPj4+Pj4+Pj4gICAJCWZhbGx0aHJvdWdoOwo+Pj4+Pj4+PiAgIAljYXNl IFBSVTBfSVJBTV9BRERSX01BU0s6Cj4+Pj4+Pj4+IC0JCXBydS0+aWQgPSAwOwo+Pj4+Pj4+PiAr CQlwcnUtPmlkID0gUFJVU1NfUFJVMDsKPj4+Pj4+Pj4gICAJCWJyZWFrOwo+Pj4+Pj4+PiAgIAlj YXNlIFRYX1BSVTFfSVJBTV9BRERSX01BU0s6Cj4+Pj4+Pj4+ICAgCQlmYWxsdGhyb3VnaDsKPj4+ Pj4+Pj4gICAJY2FzZSBSVFUxX0lSQU1fQUREUl9NQVNLOgo+Pj4+Pj4+PiAgIAkJZmFsbHRocm91 Z2g7Cj4+Pj4+Pj4+ICAgCWNhc2UgUFJVMV9JUkFNX0FERFJfTUFTSzoKPj4+Pj4+Pj4gLQkJcHJ1 LT5pZCA9IDE7Cj4+Pj4+Pj4+ICsJCXBydS0+aWQgPSBQUlVTU19QUlUxOwo+Pj4+Pj4+PiAgIAkJ YnJlYWs7Cj4+Pj4+Pj4+ICAgCWRlZmF1bHQ6Cj4+Pj4+Pj4+ICAgCQlyZXQgPSAtRUlOVkFMOwo+ Pj4+Pj4+PiBAQCAtODE2LDYgKzk0MSw4IEBAIHN0YXRpYyBpbnQgcHJ1X3Jwcm9jX3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+Pj4+Pj4+ICAgCXBydS0+cHJ1c3MgPSBwbGF0 Zm9ybV9nZXRfZHJ2ZGF0YShwcGRldik7Cj4+Pj4+Pj4+ICAgCXBydS0+cnByb2MgPSBycHJvYzsK Pj4+Pj4+Pj4gICAJcHJ1LT5md19uYW1lID0gZndfbmFtZTsKPj4+Pj4+Pj4gKwlwcnUtPmNsaWVu dF9ucCA9IE5VTEw7Cj4+Pj4+Pj4+ICsJbXV0ZXhfaW5pdCgmcHJ1LT5sb2NrKTsKPj4+Pj4+Pj4g ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobWVtX25hbWVzKTsgaSsrKSB7Cj4+Pj4+Pj4+ ICAgCQlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLAo+Pj4+Pj4+PiBAQCAtOTAzLDcgKzEwMzAsNyBAQCBNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCBwcnVfcnByb2NfbWF0Y2gpOwo+Pj4+Pj4+PiAgIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIHBydV9ycHJvY19kcml2ZXIgPSB7Cj4+Pj4+Pj4+ICAgCS5kcml2ZXIgPSB7Cj4+Pj4+Pj4+ IC0JCS5uYW1lICAgPSAicHJ1LXJwcm9jIiwKPj4+Pj4+Pj4gKwkJLm5hbWUgICA9IFBSVV9SUFJP Q19EUlZOQU1FLAo+Pj4+Pj4+PiAgIAkJLm9mX21hdGNoX3RhYmxlID0gcHJ1X3Jwcm9jX21hdGNo LAo+Pj4+Pj4+PiAgIAkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLAo+Pj4+Pj4+PiAgIAl9 LAo+Pj4+Pj4+PiBAQCAtOTE1LDUgKzEwNDIsNiBAQCBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHBy dV9ycHJvY19kcml2ZXIpOwo+Pj4+Pj4+PiAgIE1PRFVMRV9BVVRIT1IoIlN1bWFuIEFubmEgPHMt YW5uYUB0aS5jb20+Iik7Cj4+Pj4+Pj4+ICAgTU9EVUxFX0FVVEhPUigiQW5kcmV3IEYuIERhdmlz IDxhZmRAdGkuY29tPiIpOwo+Pj4+Pj4+PiAgIE1PRFVMRV9BVVRIT1IoIkdyemVnb3J6IEphc3pj enlrIDxncnplZ29yei5qYXN6Y3p5a0BsaW5hcm8ub3JnPiIpOwo+Pj4+Pj4+PiArTU9EVUxFX0FV VEhPUigiUHVyYW5qYXkgTW9oYW4gPHAtbW9oYW5AdGkuY29tPiIpOwo+Pj4+Pj4+PiAgIE1PRFVM RV9ERVNDUklQVElPTigiUFJVLUlDU1MgUmVtb3RlIFByb2Nlc3NvciBEcml2ZXIiKTsKPj4+Pj4+ Pj4gICBNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L3BydXNzLmggYi9pbmNsdWRlL2xpbnV4L3BydXNzLmgKPj4+Pj4+Pj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4+Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mZGM3MTliNDNkYjAK Pj4+Pj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+Pj4+PiArKysgYi9pbmNsdWRlL2xpbnV4L3BydXNz LmgKPj4+Pj4+Pj4gQEAgLTAsMCArMSw1NiBAQAo+Pj4+Pj4+PiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+Pj4+Pj4+PiArLyoqCj4+Pj4+Pj4+ICsgKiBQUlUt SUNTUyBTdWJzeXN0ZW0gdXNlciBpbnRlcmZhY2VzCj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+PiArICog Q29weXJpZ2h0IChDKSAyMDE1LTIwMjIgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0g aHR0cDovL3d3dy50aS5jb20KPj4+Pj4+Pj4gKyAqCVN1bWFuIEFubmEgPHMtYW5uYUB0aS5jb20+ Cj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArI2lmbmRlZiBfX0xJTlVYX1BSVVNT X0gKPj4+Pj4+Pj4gKyNkZWZpbmUgX19MSU5VWF9QUlVTU19ICj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4g KyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsjZGVmaW5lIFBSVV9SUFJPQ19EUlZOQU1FICJwcnUt cnByb2MiCj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKy8qCj4+Pj4+Pj4+ICsgKiBlbnVtIHBydXNzX3By dV9pZCAtIFBSVSBjb3JlIGlkZW50aWZpZXJzCj4+Pj4+Pj4+ICsgKi8KPj4+Pj4+Pj4gK2VudW0g cHJ1c3NfcHJ1X2lkIHsKPj4+Pj4+Pj4gKwlQUlVTU19QUlUwID0gMCwKPj4+Pj4+Pj4gKwlQUlVT U19QUlUxLAo+Pj4+Pj4+PiArCVBSVVNTX05VTV9QUlVTLAo+Pj4+Pj4+PiArfTsKPj4+Pj4+Pj4g Kwo+Pj4+Pj4+PiArc3RydWN0IGRldmljZV9ub2RlOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsjaWYg SVNfRU5BQkxFRChDT05GSUdfUFJVX1JFTU9URVBST0MpCj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gK3N0 cnVjdCBycHJvYyAqcHJ1X3Jwcm9jX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBpbnQgaW5k ZXgsCj4+Pj4+Pj4+ICsJCQkgICAgZW51bSBwcnVzc19wcnVfaWQgKnBydV9pZCk7Cj4+Pj4+Pj4+ ICt2b2lkIHBydV9ycHJvY19wdXQoc3RydWN0IHJwcm9jICpycHJvYyk7Cj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4gKyNlbHNlCj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHJw cm9jICoKPj4+Pj4+Pj4gK3BydV9ycHJvY19nZXQoc3RydWN0IGRldmljZV9ub2RlICpucCwgaW50 IGluZGV4LCBlbnVtIHBydXNzX3BydV9pZCAqcHJ1X2lkKQo+Pj4+Pj4+PiArewo+Pj4+Pj4+PiAr CXJldHVybiBFUlJfUFRSKC1FT1BOT1RTVVBQKTsKPj4+Pj4+Pj4gK30KPj4+Pj4+Pj4gKwo+Pj4+ Pj4+PiArc3RhdGljIGlubGluZSB2b2lkIHBydV9ycHJvY19wdXQoc3RydWN0IHJwcm9jICpycHJv YykgeyB9Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKyNlbmRpZiAvKiBDT05GSUdfUFJVX1JFTU9URVBS T0MgKi8KPj4+Pj4+Pj4gKwo+Pj4+Pj4+PiArc3RhdGljIGlubGluZSBib29sIGlzX3BydV9ycHJv YyhzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+ICsJY29uc3QgY2hhciAq ZHJ2X25hbWUgPSBkZXZfZHJpdmVyX3N0cmluZyhkZXYpOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsJ aWYgKHN0cm5jbXAoZHJ2X25hbWUsIFBSVV9SUFJPQ19EUlZOQU1FLCBzaXplb2YoUFJVX1JQUk9D X0RSVk5BTUUpKSkKPj4+Pj4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ ICsJcmV0dXJuIHRydWU7Cj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4gKyNlbmRpZiAv KiBfX0xJTlVYX1BSVVNTX0ggKi8KPj4+Pj4+Pj4gLS0gCj4+Pj4+Pj4+IDIuMTcuMQo+Pj4+Pj4+ Pgo+Pgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=