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 3C46BCDB474 for ; Fri, 20 Oct 2023 17:12:59 +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:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xPwlPNSFzviqoSHSIm4CQfr1YEAA4IfBHLDWy1uPHm8=; b=Rs712i2ndi+uvH AqtVLGcmhBEBAVGWa1WRh+shGHzCQffIluk4uOslFO/XuD93w1nd7vLpsuTxlCwKNQxc9qSITmRJR 6IBDde+o9AYgKxsEkoApu+Eh3gD4xYkKVKuYPjjKHLxWtrvBDJlf7tdkpgfb5s0Ipv6YewQsG48mD VsKIB7OoWHxPv0vX3IBBphNzxEla0S5mWBFd2MTP5nbGzlkozBhCp52bDnUNB/p57UDIN65a3VPlh Gh5UzSxJ6MWZR/HGIPIPNbB9fmgXpSXn+WM5BZQgeNpUMydkIxuFXmedrX0dD+S1Ykh5TXBBzs9tN kR0wh9bQqVQKCFuZmI2Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtt32-002kQS-2S; Fri, 20 Oct 2023 17:12:32 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qtt2y-002kPY-1e for linux-arm-kernel@lists.infradead.org; Fri, 20 Oct 2023 17:12:31 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 72A056228F; Fri, 20 Oct 2023 17:12:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D000EC433C8; Fri, 20 Oct 2023 17:12:20 +0000 (UTC) Date: Fri, 20 Oct 2023 22:42:15 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: Manivannan Sadhasivam , aisheng.dong@nxp.com, bhelgaas@google.com, devicetree@vger.kernel.org, festevam@gmail.com, imx@lists.linux.dev, jdmason@kudzu.us, kernel@pengutronix.de, kishon@kernel.org, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lorenzo.pieralisi@arm.com, lpieralisi@kernel.org, maz@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org, tglx@linutronix.de Subject: Re: [PATCH v2 1/5] PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controllery Message-ID: <20231020171215.GA46191@thinkpad> References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> <20231017183722.GB137137@thinkpad> <20231019150441.GA7254@thinkpad> <20231019172347.GC7254@thinkpad> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231020_101228_659505_E6F90899 X-CRM114-Status: GOOD ( 62.74 ) 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 T24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMDI6MTE6MjJQTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gT24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMTA6NTM6NDdQTSArMDUzMCwgTWFuaXZhbm5hbiBT YWRoYXNpdmFtIHdyb3RlOgo+ID4gT24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMTI6MDA6MjJQTSAt MDQwMCwgRnJhbmsgTGkgd3JvdGU6Cj4gPiA+IE9uIFRodSwgT2N0IDE5LCAyMDIzIGF0IDA4OjM0 OjQxUE0gKzA1MzAsIE1hbml2YW5uYW4gU2FkaGFzaXZhbSB3cm90ZToKPiA+ID4gPiBPbiBUdWUs IE9jdCAxNywgMjAyMyBhdCAwMjo1NTo1N1BNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4g PiA+IE9uIFdlZCwgT2N0IDE4LCAyMDIzIGF0IDEyOjA3OjIyQU0gKzA1MzAsIE1hbml2YW5uYW4g U2FkaGFzaXZhbSB3cm90ZToKPiA+ID4gPiA+ID4gT24gTW9uLCBTZXAgMTEsIDIwMjMgYXQgMDY6 MDk6MTZQTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gVGhpcyBjb21taXQg aW50cm9kdWNlcyBhIGNvbW1vbiBtZXRob2QgZm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0aGUg Um9vdAo+ID4gPiA+ID4gPiA+IENvbXBsZXggKFJDKSB0byB0aGUgRW5kcG9pbnQgKEVQKSBieSB1 dGlsaXppbmcgdGhlIHBsYXRmb3JtIE1TSSBpbnRlcnJ1cHQKPiA+ID4gPiA+ID4gPiBjb250cm9s bGVyLCBzdWNoIGFzIEFSTSBHSUMsIGFzIGFuIEVQIGRvb3JiZWxsLiBNYXBzIHRoZSBtZW1vcnkg YXNzaWduZWQKPiA+ID4gPiA+ID4gPiBmb3IgdGhlIEJBUiByZWdpb24gYnkgdGhlIFBDSSBob3N0 IHRvIHRoZSBtZXNzYWdlIGFkZHJlc3Mgb2YgdGhlIHBsYXRmb3JtCj4gPiA+ID4gPiA+ID4gTVNJ IGludGVycnVwdCBjb250cm9sbGVyIGluIHRoZSBQQ0kgRVAuIEFzIGEgcmVzdWx0LCB3aGVuIHRo ZSBQQ0kgUkMgd3JpdGVzCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAiRG9vcmJlbGwgZmVhdHVy ZSBpcyBpbXBsZW1lbnRlZCBieSBtYXBwaW5nIHRoZSBFUCdzIE1TSSBpbnRlcnJ1cHQgY29udHJv bGxlcgo+ID4gPiA+ID4gPiBtZXNzYWdlIGFkZHJlc3MgdG8gYSBkZWRpY2F0ZWQgQkFSIGluIHRo ZSBFUEMgY29yZS4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5Cj4gPiA+ID4gPiA+IG9mIHRoZSBF UEYgZHJpdmVyIHRvIHBhc3MgdGhlIGFjdHVhbCBtZXNzYWdlIGRhdGEgdG8gYmUgd3JpdHRlbiBi eSB0aGUgaG9zdCB0bwo+ID4gPiA+ID4gPiB0aGUgZG9vcmJlbGwgQkFSIHJlZ2lvbiB0aHJvdWdo IGl0cyBvd24gbG9naWMuIgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiB0byB0aGUgQkFSIHJl Z2lvbiwgaXQgdHJpZ2dlcnMgYW4gSVJRIGF0IHRoZSBFUC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBz ZXJ2ZXMKPiA+ID4gPiA+ID4gPiBhcyBhIGNvbW1vbiBtZXRob2QgZm9yIGFsbCBlbmRwb2ludCBm dW5jdGlvbiBkcml2ZXJzLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IEhvd2V2ZXIsIGl0 IGN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IG9uZSBFUCBwaHlzaWNhbCBmdW5jdGlvbiBkdWUgdG8K PiA+ID4gPiA+ID4gPiBsaW1pdGF0aW9ucyBpbiBBUk0gTVNJL0lNUyByZWFkaW5lc3MuCj4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRnJhbmsgTGkgPEZyYW5rLkxp QG54cC5jb20+Cj4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvcGNpL2Vu ZHBvaW50L3BjaS1lcGMtY29yZS5jIHwgMTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ID4gPiA+ID4gPiAgZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwZi1jb3JlLmMgfCAgNDQg KysrKysrKwo+ID4gPiA+ID4gPiA+ICBpbmNsdWRlL2xpbnV4L3BjaS1lcGMuaCAgICAgICAgICAg ICB8ICAgNiArCj4gPiA+ID4gPiA+ID4gIGluY2x1ZGUvbGludXgvcGNpLWVwZi5oICAgICAgICAg ICAgIHwgICA3ICsKPiA+ID4gPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9u cygrKQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYyBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMt Y29yZS5jCj4gPiA+ID4gPiA+ID4gaW5kZXggNWE0YThiMGJlNjI2Mi4uZDMzNmE5OWM2YTk0ZiAx MDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNv cmUuYwo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29y ZS5jCj4gPiA+ID4gPiA+ID4gQEAgLTEwLDYgKzEwLDcgQEAKPiA+ID4gPiA+ID4gPiAgI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o Pgo+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+ ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwYy5oPgo+ID4gPiA+ID4gPiA+ICAj aW5jbHVkZSA8bGludXgvcGNpLWVwZi5oPgo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgv cGNpLWVwLWNmcy5oPgo+ID4gPiA+ID4gPiA+IEBAIC03ODMsNiArNzg0LDE5NyBAQCB2b2lkIHBj aV9lcGNfYm1lX25vdGlmeShzdHJ1Y3QgcGNpX2VwYyAqZXBjKQo+ID4gPiA+ID4gPiA+ICB9Cj4g PiA+ID4gPiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfYm1lX25vdGlmeSk7Cj4gPiA+ ID4gPiA+ID4gIAo+ID4gPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ID4gPiArICogcGNpX2VwY19h bGxvY19kb29yYmVsbCgpIC0gYWxsb2MgYW4gYWRkcmVzcyBzcGFjZSB0byBsZXQgUkMgdHJpZ2dl ciBFUCBzaWRlIElSUSBieSB3cml0ZSBkYXRhIHRvCj4gPiA+ID4gPiA+ID4gKyAqCQkJICAgICAg dGhlIHNwYWNlLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gIkFsbG9jYXRlIHBsYXRmb3JtIHNw ZWNpZmljIGRvb3JiZWxsIElSUXMgdG8gYmUgdXNlZCBieSB0aGUgaG9zdCB0byB0cmlnZ2VyCj4g PiA+ID4gPiA+IGRvb3JiZWxscyBvbiBFUC4iCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ICsg Kgo+ID4gPiA+ID4gPiA+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSB0aGF0IG5lZWQgZG9vcmJl bGwgYWRkcmVzcyBhbmQgZGF0YSBmcm9tIFJDLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gRVBD IGRldmljZSBmb3Igd2hpY2ggdGhlIGRvb3JiZWxsIG5lZWRzIHRvIGJlIGFsbG9jYXRlZAo+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiArICogQGZ1bmNfbm86IHRoZSBwaHlzaWNhbCBlbmRwb2lu dCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIEVQQyBkZXZpY2UuCj4gPiA+ID4gPiA+ID4gKyAqIEB2 ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBwaHlz aWNhbCBmdW5jdGlvbi4KPiA+ID4gPiA+ID4gPiArICogQG51bV9tc2dzOiB0aGUgdG90YWwgbnVt YmVyIG9mIGRvb3JiZWxsIG1lc3NhZ2VzCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBzL251bV9t c2dzL251bV9kYgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiAr ICogUmV0dXJuOiAwIHN1Y2Nlc3MsIG90aGVyIGlzIGZhaWx1cmUKPiA+ID4gPiA+ID4gPiArICov Cj4gPiA+ID4gPiA+ID4gK2ludCBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBj ICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLCBpbnQgbnVtX21zZ3MpCj4gPiA+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5j dGlvbnMpCj4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVu Y19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJaWYgKCFlcGMtPm9wcy0+YWxs b2NfZG9vcmJlbGwpCj4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiBZb3UgbWVudGlvbmVkIDAgaXMgYSBzdWNjZXNzLiBTbyBpZiB0aGVyZSBpcyBubyBj YWxsYmFjaywgeW91IHdhbnQgdG8gcmV0dXJuCj4gPiA+ID4gPiA+IHN1Y2Nlc3M/Cj4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCW11dGV4X2xvY2soJmVwYy0+bG9j ayk7Cj4gPiA+ID4gPiA+ID4gKwlyZXQgPSBlcGMtPm9wcy0+YWxsb2NfZG9vcmJlbGwoZXBjLCBm dW5jX25vLCB2ZnVuY19ubywgbnVtX21zZ3MpOwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gV2h5 IGNhbid0IHlvdSBqdXN0IGNhbGwgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaGVyZSBhbmQgaW4gb3Ro ZXIgcGxhY2VzIGluc3RlYWQgb2YKPiA+ID4gPiA+ID4gaW1wbGVtZW50aW5nIGNhbGxiYWNrcz8g SSBkbyBub3Qgc2VlIGEgbmVjZXNzaXR5IGZvciBFUEMgc3BlY2lmaWMgY2FsbGJhY2tzLiBJZgo+ ID4gPiA+ID4gPiB0aGVyZSBpcyBvbmUsIHBsZWFzZSBzcGVjaWZ5Lgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiAxLiBSZWZlciB2MSB5b3VyIGNvbW1lbnRzLgo+ID4gPiA+ID4gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvaW14LzIwMjMwOTA2MTQ1MjI3LkdDNTkzMEB0aGlua3BhZC8KPiA+ID4gPiAKPiA+ ID4gPiBJIGRvIG5vdCBmaW5kIHdoZXJlIEkgc3VnZ2VzdGVkIHRoZSBjYWxsYmFjayBhcHByb2Fj aC4KPiA+ID4gCj4gPiA+IAk+ID4gPiBJZiB0aGF0LCBFYWNoIEVQRiBkcml2ZXIgbmVlZCBkbyBk dXBsaWNhdGUgd29yay4gCj4gPiA+IAk+ID4gPiAKPiA+ID4gCT4gPiAKPiA+ID4gCT4gPiBZZXMs IGFuZCB0aGF0J3MgaG93IGl0IHNob3VsZCBiZS4gRVBGIGNvcmUgaGFzIG5vIGpvYiBpbiBzdXBw bHlpbmcgdGhlIG9mX25vZGUuCj4gPiA+IAk+ID4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9m IHRoZSBFUEYgZHJpdmVycyBhcyB0aGV5IGRlcGVuZCBvbiBPRiBmb3IgcGxhdGZvcm0KPiA+ID4g CT4gPiBzdXBwb3J0Lgo+ID4gPiAJPiAKPiA+ID4gCT4gRVBGIGRyaXZlciBzdGlsbCBub3QgZGVw ZW5kIG9uIE9GLiBzdWNoIHBjaS1lcGYtdGVzdCwgd2hpY2ggd2FzIHByb2JlZCBieQo+ID4gPiAJ PiBjb25maWdmcy4KPiA+ID4gCT4gCj4gPiA+IAo+ID4gPiAJSG1tLCB5ZWFoLiBUaGVuIGl0IHNo b3VsZCBiZSBwYXJ0IG9mIHRoZSBFUEMgZHJpdmVyLgo+ID4gPiAKPiA+ID4gCVNvcnJ5IGZvciB0 aGUgY29uZnVzaW9uLgo+ID4gPiAKPiA+ID4gSGVyZSwgYWxsICJFUEYiIHNob3VsZCBiZSAiRVBD Ii4gVGhlIGtleSBwcm9ibGVtIGlzIG9mX25vZGUuIEVQQyBjb3JlIGhhdmUKPiA+ID4gbm90IG9m X25vZGUsIEVQQyBjb3JlJ3MgcGFyZW50IGRyaXZlciAobGlrZSBkd2MtZXAgZHJpdmVyKSBoYXZl IG9mX25vZGUuIAo+ID4gPiAKPiA+ID4gcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKGRl diksIGRldiBpcyBwcm9iZWQgYnkgcGxhdGZvcm0gZHJpdmVyLCBzdWNoCj4gPiA+IGFzIGR3Yy1l cCwgd2hpY2ggaGF2ZSBvZl9ub2RlLCAgRVBDIGNvcmUgd2lsbCBjcmVhdGUgY2hpbGQgZGV2aWNl Lgo+ID4gPiAKPiA+ID4gZHdjLWVwIGRldmljZQo+ID4gPiAgfC0gZXBjIGNvcmUgZGV2aWNlCj4g PiA+IAo+ID4gPiB3ZSBjYW4gZGlyZWN0IGNhbGwgcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3Ji ZWxsKGVwYy0+cGFyZW50KSBoZXJlLgo+ID4gPiAKPiA+ID4gSSBtYXkgbWlzcyB1bmRlcnN0YW5k IHdoYXQgeW91ciBtZWFucy4gSSB0aGluayB5b3Ugd2FudCB0byBkd2MtZXAKPiA+ID4gKHdpdGgg b2Zfbm9kZSkgaGFuZGxlIHRoZXNlIGFsbG9jIGZ1bmN0aW9ucy4gCj4gPiA+IAo+ID4gCj4gPiBN eSBjb21tZW50IHdhcyB0byBoYXZlIGp1c3Qgb25lIGZ1bmN0aW9uIGRlZmluaXRpb24uIEJ1dCBs b29raW5nIGF0IGl0IGFnYWluLCBJCj4gPiB0aGluayBpdCBpcyBiZXR0ZXIgdG8gbW92ZSBhbGwg dGhlIChhbGxvYywgZnJlZSwgd3JpdGVfbXNnKSBkZWZpbml0aW9ucyB0bwo+ID4gZHdjLWVwLCBz aW5jZSB0aGUgY29udGVudHMgb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSBub3QgRVBDIGNvcmUgc3Bl Y2lmaWMuCj4gCj4gVGhlcmUgYXJlIHN0aWxsIHByb2JsZW0uIChhbGxvYywgZnJlZSwgd3JpdGVf bXNnKSBpcyBxdWl0ZSBjb21tb24gZm9yIGFsbAo+IGNvbnRyb2xsZXIgYW5kIHRoZSBzeXN0ZW0g d2l0aCBNU0kuCj4gCj4gSWYgbW92ZSB0aGVzZSBpbnRvIGR3Yy1lcCwgIGNkbnMgb3Igb3RoZXIg Y29udHJvbGxlciBoYXZlIHRvIGR1cGxpY2F0ZSAKPiB0aGVzZSBjb2Rlcy4KPiAKPiBJZiB5b3Ug dGhpbmsgaXQgaXMgbm90IEVQQyBjb3JlIHNwZWNpZmljLCBob3cgYWJvdXQgY3JlYXRlIG5ldyBo ZWxwIGZpbGVzPwo+IAoKSG1tLCB0aGF0IHNvdW5kcyBnb29kIHRvIG1lLiBJIHRoaW5rIHRoZSBi ZXN0IHBsYWNlIHdvdWxkIGJlOgpkcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXAtbXNpLmMKClJl YXNvbiBpcywgd2UgY2Fubm90IGhhdmUgdGhpcyBnZW5lcmljIGNvZGUgdW5kZXIgZHJpdmVycy9w Y2kvY29udHJvbGxlci8gYXMgaXQKaXMgbm90IGEgc3RhbmRhbG9uZSBQQ0kgY29udHJvbGxlciBi dXQgYSBwbGF0Zm9ybSBNU0kgY29udHJvbGxlci4gU28gaGF2aW5nIGl0CnVuZGVyIHBjaS9lbmRw b2ludC8gbWFrZXMgbXVjaCBzZW5zZSB0byBtZS4KCkFuZCB0aGlzIGlzIG5vdCBzcGVjaWZpYyB0 byBFUEYgZHJpdmVycyBhcyB3ZWxsLCBzbyB3ZSBjYW5ub3QgaGF2ZSBpdCB1bmRlcgpwY2kvZW5k cG9pbnQvZnVuY3Rpb25zLy4KCi0gTWFuaQoKPiBGcmFuawo+IAo+ID4gCj4gPiBJbiB0aGUgRVBD IGNvcmUsIHlvdSBjYW4gc3RpbGwgaGF2ZSB0aGUgY2FsbGJhY2tzIHNwZWNpZmljIHRvIGVhY2gg RVBDLiBUaGlzCj4gPiBhbHNvIHNvbHZlcyB5b3VyIG9mX25vZGUgcHJvYmxlbS4KPiA+IAo+ID4g LSBNYW5pCj4gPiAKPiA+ID4gPiAKPiA+ID4gPiA+IDIuIE1heWJlIHNvbWUgZXAgY29udHJvbGxl ciBoYXZlIGJ1aWx0LWluIGRvb3JiZWxsIHN1cHBvcnQuIFdyaXRlIHRvIHNvbWUKPiA+ID4gPiA+ IGFkZHJlc3MgdG8gdHJpZ2dlciBkb29yYmVsbCBpcnEuCj4gPiA+ID4gPiAKPiA+ID4gPiAKPiA+ ID4gPiBXZSB3aWxsIGhhbmRsZSBpdCB3aGVuZXZlciBzdWNoIEVQIGNvbnRyb2xsZXJzIGFycml2 ZS4gVW50aWwgdGhlbiwgbGV0J3Mga2VlcCBpdAo+ID4gPiA+IHNpbXBsZS4KPiA+ID4gPiAKPiA+ ID4gPiAtIE1hbmkKPiA+ID4gPiAKPiA+ID4gPiA+IEZyYW5rCj4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gKwltdXRleF91bmxvY2soJmVwYy0+bG9jayk7Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ ID4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKTsKPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gPiA+ICsgKiBwY2lfZXBjX2Zy ZWVfZG9vcmJlbGwoKSAtIGZyZWUgcmVzb3VyY2UgYWxsb2NhdGVkIGJ5IHBjaV9lcGNfYWxsb2Nf ZG9vcmJlbGwoKQo+ID4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiA+ICsgKiBAZXBjOiB0aGUg RVBDIGRldmljZSB0aGF0IG5lZWQgZG9vcmJlbGwgYWRkcmVzcyBhbmQgZGF0YSBmcm9tIFJDLgo+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gU2FtZSBhcyBhYm92ZS4KPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+ID4gKyAqIEBmdW5jX25vOiB0aGUgcGh5c2ljYWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVt YmVyIGluIHRoZSBFUEMgZGV2aWNlLgo+ID4gPiA+ID4gPiA+ICsgKiBAdmZ1bmNfbm86IHRoZSB2 aXJ0dWFsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgcGh5c2ljYWwgZnVuY3Rpb24u Cj4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBv dGhlciBpcyBmYWlsdXJlCj4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiA+ICt2b2lkIHBj aV9lcGNfZnJlZV9kb29yYmVsbChzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2 ZnVuY19ubykKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsJaWYgKElTX0VSUl9PUl9O VUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4gPiA+ID4gPiA+ID4g KwkJcmV0dXJuOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCWlmICh2ZnVuY19ubyA+ IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10p KQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g KwlpZiAoIWVwYy0+b3BzLT5mcmVlX2Rvb3JiZWxsKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybjsK PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwltdXRleF9sb2NrKCZlcGMtPmxvY2spOwo+ ID4gPiA+ID4gPiA+ICsJZXBjLT5vcHMtPmZyZWVfZG9vcmJlbGwoZXBjLCBmdW5jX25vLCB2ZnVu Y19ubyk7Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBTYW1lIGFzIHN1Z2dlc3RlZCBhYm92ZS4K PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gKwltdXRleF91bmxvY2soJmVwYy0+bG9jayk7Cj4g PiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwY19m cmVlX2Rvb3JiZWxsKTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpcnFy ZXR1cm5fdCBwY2lfZXBmX2dlbmVyaWNfZG9vcmJlbGxfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpk YXRhKQo+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBm ID0gZGF0YTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwlpZiAoZXBmLT5ldmVudF9v cHMgJiYgZXBmLT5ldmVudF9vcHMtPmRvb3JiZWxsKQo+ID4gPiA+ID4gPiA+ICsJCWVwZi0+ZXZl bnRfb3BzLT5kb29yYmVsbChlcGYsIGlycSAtIGVwZi0+dmlycV9iYXNlKTsKPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+IFNhbWUgYXMgc3VnZ2VzdGVkIGFib3ZlLgo+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gPiA+ID4gPiA+ ID4gK30KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHBjaV9lcGNf Z2VuZXJpY193cml0ZV9tc2lfbXNnKHN0cnVjdCBtc2lfZGVzYyAqZGVzYywgc3RydWN0IG1zaV9t c2cgKm1zZykKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGMg KmVwYyA9IE5VTEw7Cj4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgY2xhc3NfZGV2X2l0ZXIgaXRlcjsK PiA+ID4gPiA+ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGY7Cj4gPiA+ID4gPiA+ID4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXY7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJY2xhc3NfZGV2 X2l0ZXJfaW5pdCgmaXRlciwgcGNpX2VwY19jbGFzcywgTlVMTCwgTlVMTCk7Cj4gPiA+ID4gPiA+ ID4gKwl3aGlsZSAoKGRldiA9IGNsYXNzX2Rldl9pdGVyX25leHQoJml0ZXIpKSkgewo+ID4gPiA+ ID4gPiA+ICsJCWlmIChkZXYtPnBhcmVudCAhPSBkZXNjLT5kZXYpCj4gPiA+ID4gPiA+ID4gKwkJ CWNvbnRpbnVlOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCQllcGMgPSB0b19wY2lf ZXBjKGRldik7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJCWNsYXNzX2Rldl9pdGVy X2V4aXQoJml0ZXIpOwo+ID4gPiA+ID4gPiA+ICsJCWJyZWFrOwo+ID4gPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCWlmICghZXBjKQo+ID4gPiA+ID4gPiA+ICsJ CXJldHVybjsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwkvKiBPbmx5IHN1cHBvcnQg b25lIEVQRiBmb3IgZG9vcmJlbGwgKi8KPiA+ID4gPiA+ID4gPiArCWVwZiA9IGxpc3RfZmlyc3Rf ZW50cnlfb3JfbnVsbCgmZXBjLT5wY2lfZXBmLCBzdHJ1Y3QgcGNpX2VwZiwgbGlzdCk7Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gTm8gbmVlZCBvZiB0aGlzIG5ld2xp bmUKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gKwlpZiAoIWVwZikKPiA+ID4gPiA+ID4gPiAr CQlyZXR1cm47Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJaWYgKGVwZi0+bXNnICYm IGRlc2MtPm1zaV9pbmRleCA8IGVwZi0+bnVtX21zZ3MpCj4gPiA+ID4gPiA+ID4gKwkJZXBmLT5t c2dbZGVzYy0+bXNpX2luZGV4XSA9ICptc2c7Cj4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gUmVtb3ZlIGV4dHJh IG5ld2xpbmUKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gPiA+ICsg KiBwY2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwoKSAtIENvbW1vbiBoZWxwIGZ1bmN0aW9u LiBBbGxvY2F0ZSBhZGRyZXNzIHNwYWNlIGZyb20gTVNJCj4gPiA+ID4gPiA+ID4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcgo+ID4gPiA+ID4gPiA+ICsg Kgo+ID4gPiA+ID4gPiA+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSB0aGF0IG5lZWQgZG9vcmJl bGwgYWRkcmVzcyBhbmQgZGF0YSBmcm9tIFJDLgo+ID4gPiA+ID4gPiA+ICsgKiBAZnVuY19ubzog dGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgRVBDIGRldmljZS4K PiA+ID4gPiA+ID4gPiArICogQHZmdW5jX25vOiB0aGUgdmlydHVhbCBlbmRwb2ludCBmdW5jdGlv biBudW1iZXIgaW4gdGhlIHBoeXNpY2FsIGZ1bmN0aW9uLgo+ID4gPiA+ID4gPiA+ICsgKiBAbnVt X21zZ3M6IHRoZSB0b3RhbCBudW1iZXIgb2YgZG9vcmJlbGwgbWVzc2FnZXMKPiA+ID4gPiA+ID4g PiArICoKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNhbWUgY29tbWVudCBhcyBmb3IgcGNpX2Vw Y19hbGxvY19kb29yYmVsbCgpCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ICsgKiBSZW1hcms6 IHVzZSB0aGlzIGZ1bmN0aW9uIG9ubHkgaWYgRVBDIGRyaXZlciBqdXN0IHJlZ2lzdGVyIG9uZSBF UEMgZGV2aWNlLgo+ID4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiA+ICsgKiBSZXR1cm46IDAg c3VjY2Vzcywgb3RoZXIgaXMgZmFpbHVyZQo+ID4gPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ID4g PiAraW50IHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVsbChzdHJ1Y3QgcGNpX2VwYyAqZXBj LCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubywgaW50IG51bV9tc2dzKQo+ID4gPiA+ID4gPiA+ICt7 Cj4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBmOwo+ID4gPiA+ID4gPiA+ICsJc3Ry dWN0IGRldmljZSAqZGV2Owo+ID4gPiA+ID4gPiA+ICsJaW50IHZpcnEsIGxhc3Q7Cj4gPiA+ID4g PiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ID4gPiA+ICsJaW50IGk7Cj4gPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiA+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGVwYykpCj4gPiA+ID4gPiA+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJLyogQ3VycmVu dGx5IG9ubHkgc3VwcG9ydCBvbmUgZnVuYyBhbmQgb25lIHZmdW5jIGZvciBkb29yYmVsbCAqLwo+ ID4gPiA+ID4gPiA+ICsJaWYgKGZ1bmNfbm8gfHwgdmZ1bmNfbm8pCj4gPiA+ID4gPiA+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJZXBmID0gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKCZlcGMtPnBjaV9lcGYsIHN0cnVjdCBwY2lfZXBmLCBsaXN0 KTsKPiA+ID4gPiA+ID4gPiArCWlmICghZXBmKQo+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAtRUlO VkFMOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCWRldiA9IGVwYy0+ZGV2LnBhcmVu dDsKPiA+ID4gPiA+ID4gPiArCXJldCA9IHBsYXRmb3JtX21zaV9kb21haW5fYWxsb2NfaXJxcyhk ZXYsIG51bV9tc2dzLCBwY2lfZXBjX2dlbmVyaWNfd3JpdGVfbXNpX21zZyk7Cj4gPiA+ID4gPiA+ ID4gKwlpZiAocmV0KSB7Cj4gPiA+ID4gPiA+ID4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8g YWxsb2NhdGUgTVNJXG4iKTsKPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ID4g PiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwlsYXN0ID0gLTE7Cj4g PiA+ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX21zZ3M7IGkrKykgewo+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gWW91IHNob3VsZCBpdGVyYXRlIG92ZXIgbXNpX2Rlc2MgYXMgYmVsb3c6 Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAgICAgICAgIG1zaV9sb2NrX2Rlc2NzKGRldik7Cj4g PiA+ID4gPiA+ICAgICAgICAgbXNpX2Zvcl9lYWNoX2Rlc2MoZGVzYywgZGV2LCBNU0lfREVTQ19B TEwpIHsKPiA+ID4gPiA+ID4gCQkuLi4KPiA+ID4gPiA+ID4gCX0KPiA+ID4gPiA+ID4gCW1zaV91 bmxvY2tfZGVzY3MoZGV2KTsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gKwkJdmlycSA9IG1z aV9nZXRfdmlycShkZXYsIGkpOwo+ID4gPiA+ID4gPiA+ICsJCWlmIChpID09IDApCj4gPiA+ID4g PiA+ID4gKwkJCWVwZi0+dmlycV9iYXNlID0gdmlycTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gKwkJcmV0ID0gcmVxdWVzdF9pcnEodmlycSwgcGNpX2VwZl9nZW5lcmljX2Rvb3JiZWxs X2hhbmRsZXIsIDAsCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAJcmVxdWVzdF9pcnEoZGVzYy0+ aXJxLCAuLi4pCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ICsJCQkJICBrYXNwcmludGYoR0ZQ X0tFUk5FTCwgInBjaS1lcGMtZG9vcmJlbGwlZCIsIGkpLCBlcGYpOwo+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiArCQlpZiAocmV0KSB7Cj4gPiA+ID4gPiA+ID4gKwkJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIHJlcXVlc3QgZG9vcmJlbGxcbiIpOwo+ID4gPiA+ID4gPiA+ICsJCQlnb3Rv IGVycl9mcmVlX2lycTsKPiA+ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiA+ID4gKwkJbGFzdCA9 IGk7Cj4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJcmV0 dXJuIDA7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICtlcnJfZnJlZV9pcnE6Cj4gPiA+ ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQo+ID4gPiA+ID4gPiA+ICsJCWtm cmVlKGZyZWVfaXJxKGVwZi0+dmlycV9iYXNlICsgaSwgZXBmKSk7Cj4gPiA+ID4gPiA+ID4gKwlw bGF0Zm9ybV9tc2lfZG9tYWluX2ZyZWVfaXJxcyhkZXYpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiArCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gCXJldHVy biByZXQ7Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ID4gK0VYUE9S VF9TWU1CT0xfR1BMKHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVsbCk7Cj4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gWy4uLl0KPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLWVwZi5oIGIvaW5jbHVkZS9saW51 eC9wY2ktZXBmLmgKPiA+ID4gPiA+ID4gPiBpbmRleCAzZjQ0YjZhZWM0NzcwLi40ODVjMTQ2YTVl ZmUyIDEwMDY0NAo+ID4gPiA+ID4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvcGNpLWVwZi5oCj4g PiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51eC9wY2ktZXBmLmgKPiA+ID4gPiA+ID4gPiBA QCAtNzksNiArNzksNyBAQCBzdHJ1Y3QgcGNpX2VwY19ldmVudF9vcHMgewo+ID4gPiA+ID4gPiA+ ICAJaW50ICgqbGlua191cCkoc3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gPiA+ID4gIAlp bnQgKCpsaW5rX2Rvd24pKHN0cnVjdCBwY2lfZXBmICplcGYpOwo+ID4gPiA+ID4gPiA+ICAJaW50 ICgqYm1lKShzdHJ1Y3QgcGNpX2VwZiAqZXBmKTsKPiA+ID4gPiA+ID4gPiArCWludCAoKmRvb3Ji ZWxsKShzdHJ1Y3QgcGNpX2VwZiAqZXBmLCBpbnQgaW5kZXgpOwo+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4ga2RvYyBtaXNzaW5nLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAgfTsKPiA+ID4g PiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gIC8qKgo+ID4gPiA+ID4gPiA+IEBAIC0xODAsNiArMTgx LDkgQEAgc3RydWN0IHBjaV9lcGYgewo+ID4gPiA+ID4gPiA+ICAJdW5zaWduZWQgbG9uZwkJdmZ1 bmN0aW9uX251bV9tYXA7Cj4gPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkCXBjaV92ZXBm Owo+ID4gPiA+ID4gPiA+ICAJY29uc3Qgc3RydWN0IHBjaV9lcGNfZXZlbnRfb3BzICpldmVudF9v cHM7Cj4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgbXNpX21zZyAqbXNnOwo+ID4gPiA+ID4gPiA+ICsJ dTE2IG51bV9tc2dzOwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gbnVtX2RiCj4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiBZb3UgYWxzbyBuZWVkIHRvIGFkZCBrZG9jIGZvciBlYWNoIG5ldyBtZW1i ZXIuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAtIE1hbmkKPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+IC0tIAo+ID4gPiA+ID4gPiDgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+ 4K6a4K6/4K614K6u4K+NCj4gPiA+ID4gCj4gPiA+ID4gLS0gCj4gPiA+ID4g4K6u4K6j4K6/4K61 4K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQo+ID4gCj4gPiAtLSAKPiA+ IOCuruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCi0t IArgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==