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=-11.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 B9387C433E3 for ; Sat, 25 Jul 2020 15:59:40 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 78DCE2070C for ; Sat, 25 Jul 2020 15:59:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="DiVxvawo"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="KNjMmLzs" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 78DCE2070C Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=dW7OfJIyfYdgxCKoaIMIvs+2xNIfBhTGWYmjMVx0264=; b=DiVxvawo6cHOojkFhaCIXDejB TfNJzeWM9Xo7PuGP2dz2aFgaHiPO8Q9GXXwVo10azjeoTkdlhgNKqEs0zLNe0ET4b/zAfMDgLBDGX xrVhkEV0tee1efXhi79Ep+eIgk37phG0Y6ea/cLCgH57mErpKw6aiKgAchnjqO2CbaiVyVqUB+r6y 3X0Fwu+SitINAiDQvQf7KjQUl5YHFmav6CIrWcf8VogHKWbb9fV2k7b+yjdHMr9didLQVyKqAzzbX lrbfI094KdYZ1TJpAtWP7lT3EKdbpMJtLrAfK845M6viNnfwCv92HLnfa2Dh13OFXzIGoNZXjrQ61 uoFklN9yg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jzMYp-00064q-0c; Sat, 25 Jul 2020 15:58:07 +0000 Received: from lelv0143.ext.ti.com ([198.47.23.248]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jzMYl-00064L-Ea for linux-arm-kernel@lists.infradead.org; Sat, 25 Jul 2020 15:58:04 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 06PFv149053263; Sat, 25 Jul 2020 10:57:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1595692621; bh=YxpekE3gXfNAX81VoMrv6eipbPSY+oakSDGHFDphNvA=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=KNjMmLzspdkLNhxNbTqwuE/nfK5H5HkdejWUSFeBWzcxxfxdW0MZlp7larvXP8Y5X UQbDHF0lFSkuKl+8+1YFJR1qcXtCJUyWCreuPotGk5qepoAxany/YnoyUlvNvUryAA DSRWiqoHCSnIpcXDmi6IlhXS932C3irhp1/hhuoU= Received: from DFLE111.ent.ti.com (dfle111.ent.ti.com [10.64.6.32]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 06PFv13J104174 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Sat, 25 Jul 2020 10:57:01 -0500 Received: from DFLE101.ent.ti.com (10.64.6.22) by DFLE111.ent.ti.com (10.64.6.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Sat, 25 Jul 2020 10:57:00 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE101.ent.ti.com (10.64.6.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Sat, 25 Jul 2020 10:57:00 -0500 Received: from [10.250.34.248] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 06PFv0Xm055814; Sat, 25 Jul 2020 10:57:00 -0500 Subject: Re: [PATCHv3 3/6] irqchip/irq-pruss-intc: Add support for shared and invalid interrupts To: Marc Zyngier References: <1593699479-1445-1-git-send-email-grzegorz.jaszczyk@linaro.org> <1593699479-1445-4-git-send-email-grzegorz.jaszczyk@linaro.org> <2a6b0391f1395eb0aa15ffee6769184e@kernel.org> <3a73bb14-9f7b-970d-fbae-f9c7bb7bdf1e@ti.com> <87imemxv3l.wl-maz@kernel.org> From: Suman Anna Message-ID: <14a0978a-f38f-8cd7-3fee-b0e438513396@ti.com> Date: Sat, 25 Jul 2020 10:57:00 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <87imemxv3l.wl-maz@kernel.org> Content-Language: en-US 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-20200725_115803_625693_07D8368E X-CRM114-Status: GOOD ( 31.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Grzegorz Jaszczyk , jason@lakedaemon.net, linux-kernel@vger.kernel.org, robh+dt@kernel.org, tglx@linutronix.de, linux-omap@vger.kernel.org, lee.jones@linaro.org, wmills@ti.com, linux-arm-kernel@lists.infradead.org, david@lechnology.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWFyYywKCk9uIDcvMTcvMjAgNjowMiBBTSwgTWFyYyBaeW5naWVyIHdyb3RlOgo+IE9uIEZy aSwgMTAgSnVsIDIwMjAgMjE6NTk6MTcgKzAxMDAsCj4gU3VtYW4gQW5uYSA8cy1hbm5hQHRpLmNv bT4gd3JvdGU6Cj4gCj4gSGkgU3VtYW4sCj4gCj4gWy4uLl0KPiAKPj4KPj4gSGkgTWFyYywKPj4K Pj4gT24gNy8yLzIwIDEyOjQ0IFBNLCBNYXJjIFp5bmdpZXIgd3JvdGU6Cj4+PiBPbiAyMDIwLTA3 LTAyIDE1OjE3LCBHcnplZ29yeiBKYXN6Y3p5ayB3cm90ZToKPj4+PiBGcm9tOiBTdW1hbiBBbm5h IDxzLWFubmFAdGkuY29tPgo+Pj4+Cj4+Pj4gVGhlIFBSVVNTIElOVEMgaGFzIGEgZml4ZWQgbnVt YmVyIG9mIG91dHB1dCBpbnRlcnJ1cHQgbGluZXMgdGhhdCBhcmUKPj4+PiBjb25uZWN0ZWQgdG8g YSBudW1iZXIgb2YgcHJvY2Vzc29ycyBvciBvdGhlciBQUlVTUyBpbnN0YW5jZXMgb3Igb3RoZXIK Pj4+PiBkZXZpY2VzIChsaWtlIERNQSkgb24gdGhlIFNvQy4gVGhlIG91dHB1dCBpbnRlcnJ1cHQg bGluZXMgMiB0aHJvdWdoIDkKPj4+PiBhcmUgdXN1YWxseSBjb25uZWN0ZWQgdG8gdGhlIG1haW4g QXJtIGhvc3QgcHJvY2Vzc29yIGFuZCBhcmUgcmVmZXJyZWQKPj4+PiB0byBhcyBob3N0IGludGVy cnVwdHMgMCB0aHJvdWdoIDcgZnJvbSBBUk0vTVBVIHBlcnNwZWN0aXZlLgo+Pj4+Cj4+Pj4gQWxs IG9mIHRoZXNlIDggaG9zdCBpbnRlcnJ1cHRzIGFyZSBub3QgYWx3YXlzIGV4Y2x1c2l2ZWx5IGNv bm5lY3RlZAo+Pj4+IHRvIHRoZSBBcm0gaW50ZXJydXB0IGNvbnRyb2xsZXIuIFNvbWUgU29DcyBo YXZlIHNvbWUgaW50ZXJydXB0IGxpbmVzCj4+Pj4gbm90IGNvbm5lY3RlZCB0byB0aGUgQXJtIGlu dGVycnVwdCBjb250cm9sbGVyIGF0IGFsbCwgd2hpbGUgYSBmZXcgb3RoZXJzCj4+Pj4gaGF2ZSB0 aGUgaW50ZXJydXB0IGxpbmVzIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBwcm9jZXNzb3JzIGluIHdo aWNoIHRoZXkKPj4+PiBuZWVkIHRvIGJlIHBhcnRpdGlvbmVkIGFzIHBlciBTb0MgaW50ZWdyYXRp b24gbmVlZHMuIEZvciBleGFtcGxlLCBBTTQzN3gKPj4+PiBhbmQgNjZBSzJHIFNvQ3MgaGF2ZSAy IFBSVVNTIGluc3RhbmNlcyBlYWNoIGFuZCBoYXZlIHRoZSBob3N0IGludGVycnVwdCA1Cj4+Pj4g Y29ubmVjdGVkIHRvIHRoZSBvdGhlciBQUlVTUywgd2hpbGUgQU0zMzV4IGhhcyBob3N0IGludGVy cnVwdCAwIHNoYXJlZAo+Pj4+IGJldHdlZW4gTVBVIGFuZCBUU0NfQURDIGFuZCBob3N0IGludGVy cnVwdHMgNiAmIDcgc2hhcmVkIGJldHdlZW4gTVBVIGFuZAo+Pj4+IGEgRE1BIGNvbnRyb2xsZXIu Cj4+Pj4KPj4+PiBBZGQgc3VwcG9ydCB0byB0aGUgUFJVU1MgSU5UQyBkcml2ZXIgdG8gYWxsb3cg Ym90aCB0aGVzZSBzaGFyZWQgYW5kCj4+Pj4gaW52YWxpZCBpbnRlcnJ1cHRzIGJ5IG5vdCByZXR1 cm5pbmcgYSBmYWlsdXJlIGlmIGFueSBvZiB0aGVzZSBpbnRlcnJ1cHRzCj4+Pj4gYXJlIHNraXBw ZWQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBJTlRDIERUIG5vZGUuCj4+Pgo+Pj4gVGhhdCdzIG5v dCBleGFjdGx5ICJhZGRpbmcgc3VwcG9ydCIsIGlzIGl0PyBJdCByZWFsbHkgaXMgImlnbm9yZSB0 aGVzZQo+Pj4gaW50ZXJydXB0cyBiZWNhdXNlIHRoZXkgYXJlIHVzZWxlc3MgZnJvbSB0aGUgbWFp biBDUFUncyBwZXJzcGVjdGl2ZSIsCj4+PiByaWdodD8KPj4KPj4gQ29ycmVjdC4gV2UgY2FuIHJl cGhyYXNlIHRoaXMgdG8gc29tZXRoaW5nIGxpa2UKPj4gIkFkZCBsb2dpYyB0byB0aGUgUFJVU1Mg SU5UQyBkcml2ZXIgdG8gaWdub3JlLi4iCj4+Cj4+Pgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTog U3VtYW4gQW5uYSA8cy1hbm5hQHRpLmNvbT4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBK YXN6Y3p5ayA8Z3J6ZWdvcnouamFzemN6eWtAbGluYXJvLm9yZz4KPj4+PiAtLS0KPj4+PiB2Mi0+ djM6Cj4+Pj4gLSBFeHRyYSBjaGVja3MgZm9yIChpbnRjLT5pcnFzW2ldKSBpbiBlcnJvci9yZW1v dmUgcGF0aCB3YXMgbW92ZWQgZnJvbQo+Pj4+ICDCoCAiaXJxY2hpcC9pcnEtcHJ1c3MtaW50Yzog QWRkIGEgUFJVU1MgaXJxY2hpcCBkcml2ZXIgZm9yIFBSVVNTCj4+Pj4gIMKgIGludGVycnVwdHMi IHRvIHRoaXMgcGF0Y2gKPj4+PiB2MS0+djI6Cj4+Pj4gLSBodHRwczovL3BhdGNod29yay5rZXJu ZWwub3JnL3BhdGNoLzExMDY5NzU3Lwo+Pj4+IC0tLQo+Pj4+ICDCoGRyaXZlcnMvaXJxY2hpcC9p cnEtcHJ1c3MtaW50Yy5jIHwgNzMKPj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tCj4+Pj4gIMKgMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDUgZGVs ZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1wcnVz cy1pbnRjLmMKPj4+PiBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtcHJ1c3MtaW50Yy5jCj4+Pj4gaW5k ZXggZmIzZGRhMy4uNDljOTM2ZiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJx LXBydXNzLWludGMuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtcHJ1c3MtaW50Yy5j Cj4+Pj4gQEAgLTY1LDExICs2NSwxNSBAQAo+Pj4+ICDCoCAqIEBpcnFzOiBrZXJuZWwgaXJxIG51 bWJlcnMgY29ycmVzcG9uZGluZyB0byBQUlVTUyBob3N0IGludGVycnVwdHMKPj4+PiAgwqAgKiBA YmFzZTogYmFzZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgSU5UQyByZWdpc3RlciBzcGFjZQo+Pj4+ICDC oCAqIEBkb21haW46IGlycSBkb21haW4gZm9yIHRoaXMgaW50ZXJydXB0IGNvbnRyb2xsZXIKPj4+ PiArICogQHNoYXJlZF9pbnRyOiBiaXQtbWFwIGRlbm90aW5nIGlmIHRoZSBNUFUgaG9zdCBpbnRl cnJ1cHQgaXMgc2hhcmVkCj4+Pgo+Pj4gbml0OiBiaXRtYXAKPj4KPj4gb2sKPj4KPj4+Cj4+Pj4g KyAqIEBpbnZhbGlkX2ludHI6IGJpdC1tYXAgZGVub3RpbmcgaWYgaG9zdCBpbnRlcnJ1cHQgaXMg bm90Cj4+Pj4gY29ubmVjdGVkIHRvIE1QVQo+Pj4+ICDCoCAqLwo+Pj4+ICDCoHN0cnVjdCBwcnVz c19pbnRjIHsKPj4+PiAgwqDCoMKgwqAgdW5zaWduZWQgaW50IGlycXNbTUFYX05VTV9IT1NUX0lS UVNdOwo+Pj4+ICDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKmJhc2U7Cj4+Pj4gIMKgwqDCoMKgIHN0 cnVjdCBpcnFfZG9tYWluICpkb21haW47Cj4+Pj4gK8KgwqDCoCB1MTYgc2hhcmVkX2ludHI7Cj4+ Pj4gK8KgwqDCoCB1MTYgaW52YWxpZF9pbnRyOwo+Pj4KPj4+IFBsZWFzZSByZXByZXNlbnQgYml0 bWFwcyBhcyBhbiB1bnNpZ25lZCBsb25nLgo+Pgo+PiBvay4gV2UgaGF2ZSBhdG1vc3QgOCBpbnRl cnJ1cHRzIGNvbWluZyBpbiwgYnV0IGFncmVlIG9uIHRoZSBjaGFuZ2UKPj4gc2luY2Ugd2UgYXJl IHVzaW5nIHRoZSBCSVQoKSBtYWNybyBiZWxvdy4KPj4KPj4+Cj4+Pj4gIMKgfTsKPj4+Pgo+Pj4+ ICDCoHN0YXRpYyBpbmxpbmUgdTMyIHBydXNzX2ludGNfcmVhZF9yZWcoc3RydWN0IHBydXNzX2lu dGMgKmludGMsCj4+Pj4gdW5zaWduZWQgaW50IHJlZykKPj4+PiBAQCAtMjIyLDcgKzIyNiw4IEBA IHN0YXRpYyBpbnQgcHJ1c3NfaW50Y19wcm9iZShzdHJ1Y3QKPj4+PiBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqAgImhvc3RfaW50cjQiLCAiaG9zdF9pbnRyNSIs ICJob3N0X2ludHI2IiwgImhvc3RfaW50cjciLCB9Owo+Pj4+ICDCoMKgwqDCoCBzdHJ1Y3QgZGV2 aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+Pj4+ICDCoMKgwqDCoCBzdHJ1Y3QgcHJ1c3NfaW50YyAq aW50YzsKPj4+PiAtwqDCoMKgIGludCBpLCBpcnE7Cj4+Pj4gK8KgwqDCoCBpbnQgaSwgaXJxLCBj b3VudDsKPj4+PiArwqDCoMKgIHU4IHRlbXBfaW50cltNQVhfTlVNX0hPU1RfSVJRU10gPSB7IDAg fTsKPj4+Pgo+Pj4+ICDCoMKgwqDCoCBpbnRjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpp bnRjKSwgR0ZQX0tFUk5FTCk7Cj4+Pj4gIMKgwqDCoMKgIGlmICghaW50YykKPj4+PiBAQCAtMjM1 LDYgKzI0MCw1MiBAQCBzdGF0aWMgaW50IHBydXNzX2ludGNfcHJvYmUoc3RydWN0Cj4+Pj4gcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJS KGludGMtPmJhc2UpOwo+Pj4+ICDCoMKgwqDCoCB9Cj4+Pj4KPj4+PiArwqDCoMKgIGNvdW50ID0g b2ZfcHJvcGVydHlfcmVhZF92YXJpYWJsZV91OF9hcnJheShkZXYtPm9mX25vZGUsCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInRpLGly cXMtcmVzZXJ2ZWQiLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRlbXBfaW50ciwgMCwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNQVhfTlVNX0hPU1RfSVJRUyk7Cj4+Pj4g K8KgwqDCoCAvKgo+Pj4+ICvCoMKgwqDCoCAqIFRoZSBpcnFzLXJlc2VydmVkIGlzIHVzZWQgb25s eSBmb3Igc29tZSBTb0MncyB0aGVyZWZvcmUgbm90Cj4+Pj4gaGF2aW5nCj4+Pj4gK8KgwqDCoMKg ICogdGhpcyBwcm9wZXJ0eSBpcyBzdGlsbCB2YWxpZAo+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+ICvC oMKgwqAgaWYgKGNvdW50ID09IC1FSU5WQUwpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGNvdW50ID0g MDsKPj4+PiArwqDCoMKgIGlmIChjb3VudCA8IDApCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biBjb3VudDsKPj4+PiArCj4+Pj4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykg ewo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodGVtcF9pbnRyW2ldID49IE1BWF9OVU1fSE9TVF9J UlFTKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X3dhcm4oZGV2LCAiaWdub3Jp bmcgaW52YWxpZCByZXNlcnZlZCBpcnEgJWRcbiIsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHRlbXBfaW50cltpXSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29udGludWU7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+PiArCj4+Pj4gK8KgwqDCoMKgwqDC oMKgIGludGMtPmludmFsaWRfaW50ciB8PSBCSVQodGVtcF9pbnRyW2ldKTsKPj4+PiArwqDCoMKg IH0KPj4+PiArCj4+Pj4gK8KgwqDCoCBjb3VudCA9IG9mX3Byb3BlcnR5X3JlYWRfdmFyaWFibGVf dThfYXJyYXkoZGV2LT5vZl9ub2RlLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ0aSxpcnFzLXNoYXJlZCIsCj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGVtcF9pbnRyLCAw LAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIE1BWF9OVU1fSE9TVF9JUlFTKTsKPj4+PiArwqDCoMKgIC8qCj4+Pj4gK8KgwqDCoMKgICog VGhlIGlycXMtc2hhcmVkIGlzIHVzZWQgb25seSBmb3Igc29tZSBTb0MncyB0aGVyZWZvcmUgbm90 IGhhdmluZwo+Pj4+ICvCoMKgwqDCoCAqIHRoaXMgcHJvcGVydHkgaXMgc3RpbGwgdmFsaWQKPj4+ PiArwqDCoMKgwqAgKi8KPj4+PiArwqDCoMKgIGlmIChjb3VudCA9PSAtRUlOVkFMKQo+Pj4+ICvC oMKgwqDCoMKgwqDCoCBjb3VudCA9IDA7Cj4+Pj4gK8KgwqDCoCBpZiAoY291bnQgPCAwKQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gY291bnQ7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgZm9yIChp ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHRlbXBfaW50 cltpXSA+PSBNQVhfTlVNX0hPU1RfSVJRUykgewo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRldl93YXJuKGRldiwgImlnbm9yaW5nIGludmFsaWQgc2hhcmVkIGlycSAlZFxuIiwKPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGVtcF9pbnRyW2ldKTsKPj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4+PiArwqDCoMKgwqDCoMKgwqAgfQo+Pj4+ ICsKPj4+PiArwqDCoMKgwqDCoMKgwqAgaW50Yy0+c2hhcmVkX2ludHIgfD0gQklUKHRlbXBfaW50 cltpXSk7Cj4+Pj4gK8KgwqDCoCB9Cj4+Pj4gKwo+Pj4KPj4+IFlvdSBwcm9iYWJseSB3YW50IHRv IG1vdmUgdGhpcyBpbiBhIHNlcGFyYXRlIGZ1bmN0aW9uLCBzaW5jZSB5b3UgcG9wdWxhdGUgYQo+ Pj4gY29tbW9uIHN0cnVjdHVyZS4KPj4+Cj4+Pj4gIMKgwqDCoMKgIHBydXNzX2ludGNfaW5pdChp bnRjKTsKPj4+Pgo+Pj4+ICDCoMKgwqDCoCAvKiBhbHdheXMgNjQgZXZlbnRzICovCj4+Pj4gQEAg LTI0NCw4ICsyOTUsMTQgQEAgc3RhdGljIGludCBwcnVzc19pbnRjX3Byb2JlKHN0cnVjdAo+Pj4+ IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+PiAgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVO T01FTTsKPj4+Pgo+Pj4+ICDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgTUFYX05VTV9IT1NUX0lS UVM7IGkrKykgewo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW50Yy0+aW52YWxpZF9pbnRyICYg QklUKGkpKQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4+ICsKPj4+ PiAgwqDCoMKgwqDCoMKgwqDCoCBpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBp cnFfbmFtZXNbaV0pOwo+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgIGlmIChpcnEgPD0gMCkgewo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpbnRjLT5zaGFyZWRfaW50ciAmIEJJVChpKSkK Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4KPj4+IEkg ZG9uJ3QgcmVhbGx5IHVuZGVyc3RhbmQgd2h5IHlvdSBhcmUgdHJlYXRpbmcgdGhlc2UgInNoYXJl ZCIgaW50ZXJydXB0cwo+Pj4gZGlmZmVyZW50bHkgZnJvbSB0aGUgaW52YWxpZCBvbmVzLiBJbiBh bGwgY2FzZXMsIHRoZXkgc2hvdWxkbid0IGJlIHVzZWQuCj4+Cj4+IFRoZSBiZWhhdmlvciBpcyB0 aGUgc2FtZSBpbiBob3cgd2UgaGFuZGxlIGl0LCBidXQgdGhlIGRpZmZlcmVuY2UgaXMKPj4gdGhh dCBhbiAiaW52YWxpZCIgb25lIGlzIG5ldmVyIGV2ZW4gY29ubmVjdGVkIHRvIHRoZSBBUk0gaW50 ZXJydXB0Cj4+IGNvbnRyb2xsZXIsIHdoaWxlIHRoZSAic2hhcmVkIiBvbmUgaXMgYSBjaG9pY2Uu IFNvLCB1bmxlc3MgdGhpcwo+PiBpbnRlcnJ1cHQgaXMgYmVpbmcgdXNlZC9oYW5kbGVkIGJ5IGEg ZGlmZmVyZW50IHByb2Nlc3Nvci9lbnRpdHksIHlvdQo+PiB3b3VsZCBub3Qgc2VlIHRoaXMgc2tp cHBlZCBmcm9tIHRoZSBkdHMgbm9kZS4KPiAKPiBBbmQgSSdtIHNheWluZyB0aGF0IGFsbCB0aGF0 IG1hdHRlcnMgaXMgdGhhdCB5b3UgYXJlIGRpc2NhcmRpbmcgdGhlc2UKPiBpbnRlcnJ1cHRzLiBX aGV0aGVyIHRoZXkgYXJlIGZsYWdnZWQgaW52YWxpZCBvciBzaGFyZWQsIHRoZXkgYXJlIG5vdAo+ IGF2YWlsYWJsZSB0byBMaW51eC4gU28gdGhlIGRpZmZlcmVuY2UgaW4gaGFuZGxpbmcgaXMgcG9p bnRsZXNzIGFuZAo+IG9ubHkgbWFrZXMgaXQgaGFyZGVyIHRvIHVuZGVyc3RhbmQgd2hhdCB5b3Ug YXJlIGRvaW5nLgoKVGhlIHByaW1hcnkgcmVhc29uIGZvciB1c2luZyB0d28gcHJvcGVydGllcyBh bmQgdGhpcyBsb2dpYyB3YXMgdG8gCmFjY3VyYXRlbHkgZGVzY3JpYmUgdGhlIGgvdyBhbmQgdXNh Z2Ugb2YgdGhlc2UgaW4gdGhlIERUIGJpbmRpbmdzIHRvIApkaXN0aW5ndWlzaCB0aGUgIm5ldmVy IGNvbm5lY3RlZCIgdnMgdGhlICJvcHRpb25hbGx5IGNhbiBiZSBza2lwcGVkIiAKaW50ZXJydXB0 cyByYXRoZXIgdGhhbiBnbyBieSBob3cgdGhlc2UgYXJlIGhhbmRsZWQgaW4gdGhlIGRyaXZlci4g SSBmZWVsIAp3ZSB3aWxsIGxvb3NlIHRoaXMgZGVzY3JpcHRpb24gYW5kIG1ha2UgaXQgY29uZnVz aW5nIGZvciBTb0MgcHJvZHVjdCAKaW50ZWdyYXRpb24gZGV2ZWxvcGVycy4KCkdyZWcgaXMgcGxh bm5pbmcgdG8gY29uc29saWRhdGUgdGhlc2UgZm9yIHRoZSBuZXh0IHZlcnNpb24uIEl0IHdvdWxk IApoYXZlIGJlZW4gbmljZSBpZiB3ZSBjb3VsZCBoYXZlIHJldGFpbmVkIHRoZW0uCgpyZWdhcmRz ClN1bWFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg==