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.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,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 251F6C433E4 for ; Fri, 10 Jul 2020 21:02:00 +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 D47192068F for ; Fri, 10 Jul 2020 21:01:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="u4AjykBI"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="EnMxoAKL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D47192068F 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=9u4KETvZP+oK6+6l3p78kCjFj+hqy9OC+xnhvjoGe5U=; b=u4AjykBIauXDu+YdS601cOdRn VjgJ708SGvFwh0cgORwCavKug0DUxCFUW++8FVsReLUMV0et4hIbi9D+pp1ALvraLO9jMPFYBmwsb wsqmF2XAixgaaNkcrDbBC/otxsNV9hyJpIc+Zr4oAjRDYKbvYvS6Qs7IkU2HazlJf3xbpVS7r5P8o wb4ndgJMOeqY0gBeSr0e4LpGVcdlRws9ofXSoSuBOutrHQj+suBrUFw+9eI0tEa+o9rnhL2MrEX3Y 46mz29v++8UUgfYCdgux9Ym4eIxWO5ocbWSSup8/YsQZOwPxq0TvQLzek/R25okqAe7VfZ/j4xkug 8aV0jdGKg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju089-0004Rg-AO; Fri, 10 Jul 2020 21:00:25 +0000 Received: from fllv0016.ext.ti.com ([198.47.19.142]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ju085-0004RL-VO for linux-arm-kernel@lists.infradead.org; Fri, 10 Jul 2020 21:00:23 +0000 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 06AKxI2C051993; Fri, 10 Jul 2020 15:59:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1594414758; bh=tT1VHuhKTHIe/m651i8A9lbZsgn2+ODXje4UgLJIXoY=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=EnMxoAKLvpB22zy7s9sTK3BugDYI2eK3DyL5fgtF5gpacVcV9EuMjQr1GsmDl5ER9 6Fu8XeNBbO2E4k+h+Ww3eerWaZqI8uzvII8uqpD9xQAcqV2LAQtOoXB5sXPyWqducv vDxsR0W+ze1CXSizmoR/Pg9iY45jtIrQWngZR4kg= Received: from DLEE114.ent.ti.com (dlee114.ent.ti.com [157.170.170.25]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 06AKxIFj046058 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 10 Jul 2020 15:59:18 -0500 Received: from DLEE106.ent.ti.com (157.170.170.36) by DLEE114.ent.ti.com (157.170.170.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Fri, 10 Jul 2020 15:59:18 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DLEE106.ent.ti.com (157.170.170.36) 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; Fri, 10 Jul 2020 15:59:17 -0500 Received: from [10.250.34.57] (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 06AKxHtu027634; Fri, 10 Jul 2020 15:59:17 -0500 Subject: Re: [PATCHv3 3/6] irqchip/irq-pruss-intc: Add support for shared and invalid interrupts To: Marc Zyngier , Grzegorz Jaszczyk References: <1593699479-1445-1-git-send-email-grzegorz.jaszczyk@linaro.org> <1593699479-1445-4-git-send-email-grzegorz.jaszczyk@linaro.org> <2a6b0391f1395eb0aa15ffee6769184e@kernel.org> From: Suman Anna Message-ID: <3a73bb14-9f7b-970d-fbae-f9c7bb7bdf1e@ti.com> Date: Fri, 10 Jul 2020 15:59:17 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <2a6b0391f1395eb0aa15ffee6769184e@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-20200710_170022_709909_72E39F2D X-CRM114-Status: GOOD ( 32.05 ) 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, 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 SGkgTWFyYywKCk9uIDcvMi8yMCAxMjo0NCBQTSwgTWFyYyBaeW5naWVyIHdyb3RlOgo+IE9uIDIw MjAtMDctMDIgMTU6MTcsIEdyemVnb3J6IEphc3pjenlrIHdyb3RlOgo+PiBGcm9tOiBTdW1hbiBB bm5hIDxzLWFubmFAdGkuY29tPgo+Pgo+PiBUaGUgUFJVU1MgSU5UQyBoYXMgYSBmaXhlZCBudW1i ZXIgb2Ygb3V0cHV0IGludGVycnVwdCBsaW5lcyB0aGF0IGFyZQo+PiBjb25uZWN0ZWQgdG8gYSBu dW1iZXIgb2YgcHJvY2Vzc29ycyBvciBvdGhlciBQUlVTUyBpbnN0YW5jZXMgb3Igb3RoZXIKPj4g ZGV2aWNlcyAobGlrZSBETUEpIG9uIHRoZSBTb0MuIFRoZSBvdXRwdXQgaW50ZXJydXB0IGxpbmVz IDIgdGhyb3VnaCA5Cj4+IGFyZSB1c3VhbGx5IGNvbm5lY3RlZCB0byB0aGUgbWFpbiBBcm0gaG9z dCBwcm9jZXNzb3IgYW5kIGFyZSByZWZlcnJlZAo+PiB0byBhcyBob3N0IGludGVycnVwdHMgMCB0 aHJvdWdoIDcgZnJvbSBBUk0vTVBVIHBlcnNwZWN0aXZlLgo+Pgo+PiBBbGwgb2YgdGhlc2UgOCBo b3N0IGludGVycnVwdHMgYXJlIG5vdCBhbHdheXMgZXhjbHVzaXZlbHkgY29ubmVjdGVkCj4+IHRv IHRoZSBBcm0gaW50ZXJydXB0IGNvbnRyb2xsZXIuIFNvbWUgU29DcyBoYXZlIHNvbWUgaW50ZXJy dXB0IGxpbmVzCj4+IG5vdCBjb25uZWN0ZWQgdG8gdGhlIEFybSBpbnRlcnJ1cHQgY29udHJvbGxl ciBhdCBhbGwsIHdoaWxlIGEgZmV3IG90aGVycwo+PiBoYXZlIHRoZSBpbnRlcnJ1cHQgbGluZXMg Y29ubmVjdGVkIHRvIG11bHRpcGxlIHByb2Nlc3NvcnMgaW4gd2hpY2ggdGhleQo+PiBuZWVkIHRv IGJlIHBhcnRpdGlvbmVkIGFzIHBlciBTb0MgaW50ZWdyYXRpb24gbmVlZHMuIEZvciBleGFtcGxl LCBBTTQzN3gKPj4gYW5kIDY2QUsyRyBTb0NzIGhhdmUgMiBQUlVTUyBpbnN0YW5jZXMgZWFjaCBh bmQgaGF2ZSB0aGUgaG9zdCBpbnRlcnJ1cHQgNQo+PiBjb25uZWN0ZWQgdG8gdGhlIG90aGVyIFBS VVNTLCB3aGlsZSBBTTMzNXggaGFzIGhvc3QgaW50ZXJydXB0IDAgc2hhcmVkCj4+IGJldHdlZW4g TVBVIGFuZCBUU0NfQURDIGFuZCBob3N0IGludGVycnVwdHMgNiAmIDcgc2hhcmVkIGJldHdlZW4g TVBVIGFuZAo+PiBhIERNQSBjb250cm9sbGVyLgo+Pgo+PiBBZGQgc3VwcG9ydCB0byB0aGUgUFJV U1MgSU5UQyBkcml2ZXIgdG8gYWxsb3cgYm90aCB0aGVzZSBzaGFyZWQgYW5kCj4+IGludmFsaWQg aW50ZXJydXB0cyBieSBub3QgcmV0dXJuaW5nIGEgZmFpbHVyZSBpZiBhbnkgb2YgdGhlc2UgaW50 ZXJydXB0cwo+PiBhcmUgc2tpcHBlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIElOVEMgRFQgbm9k ZS4KPiAKPiBUaGF0J3Mgbm90IGV4YWN0bHkgImFkZGluZyBzdXBwb3J0IiwgaXMgaXQ/IEl0IHJl YWxseSBpcyAiaWdub3JlIHRoZXNlCj4gaW50ZXJydXB0cyBiZWNhdXNlIHRoZXkgYXJlIHVzZWxl c3MgZnJvbSB0aGUgbWFpbiBDUFUncyBwZXJzcGVjdGl2ZSIsCj4gcmlnaHQ/CgpDb3JyZWN0LiBX ZSBjYW4gcmVwaHJhc2UgdGhpcyB0byBzb21ldGhpbmcgbGlrZQoiQWRkIGxvZ2ljIHRvIHRoZSBQ UlVTUyBJTlRDIGRyaXZlciB0byBpZ25vcmUuLiIKCj4gCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFN1 bWFuIEFubmEgPHMtYW5uYUB0aS5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEphc3pj enlrIDxncnplZ29yei5qYXN6Y3p5a0BsaW5hcm8ub3JnPgo+PiAtLS0KPj4gdjItPnYzOgo+PiAt IEV4dHJhIGNoZWNrcyBmb3IgKGludGMtPmlycXNbaV0pIGluIGVycm9yL3JlbW92ZSBwYXRoIHdh cyBtb3ZlZCBmcm9tCj4+IMKgICJpcnFjaGlwL2lycS1wcnVzcy1pbnRjOiBBZGQgYSBQUlVTUyBp cnFjaGlwIGRyaXZlciBmb3IgUFJVU1MKPj4gwqAgaW50ZXJydXB0cyIgdG8gdGhpcyBwYXRjaAo+ PiB2MS0+djI6Cj4+IC0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTA2OTc1 Ny8KPj4gLS0tCj4+IMKgZHJpdmVycy9pcnFjaGlwL2lycS1wcnVzcy1pbnRjLmMgfCA3MyAKPj4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+PiDCoDEgZmlsZSBjaGFu Z2VkLCA2OCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pcnFjaGlwL2lycS1wcnVzcy1pbnRjLmMgCj4+IGIvZHJpdmVycy9pcnFjaGlwL2ly cS1wcnVzcy1pbnRjLmMKPj4gaW5kZXggZmIzZGRhMy4uNDljOTM2ZiAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9pcnFjaGlwL2lycS1wcnVzcy1pbnRjLmMKPj4gKysrIGIvZHJpdmVycy9pcnFjaGlw L2lycS1wcnVzcy1pbnRjLmMKPj4gQEAgLTY1LDExICs2NSwxNSBAQAo+PiDCoCAqIEBpcnFzOiBr ZXJuZWwgaXJxIG51bWJlcnMgY29ycmVzcG9uZGluZyB0byBQUlVTUyBob3N0IGludGVycnVwdHMK Pj4gwqAgKiBAYmFzZTogYmFzZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgSU5UQyByZWdpc3RlciBzcGFj ZQo+PiDCoCAqIEBkb21haW46IGlycSBkb21haW4gZm9yIHRoaXMgaW50ZXJydXB0IGNvbnRyb2xs ZXIKPj4gKyAqIEBzaGFyZWRfaW50cjogYml0LW1hcCBkZW5vdGluZyBpZiB0aGUgTVBVIGhvc3Qg aW50ZXJydXB0IGlzIHNoYXJlZAo+IAo+IG5pdDogYml0bWFwCgpvawoKPiAKPj4gKyAqIEBpbnZh bGlkX2ludHI6IGJpdC1tYXAgZGVub3RpbmcgaWYgaG9zdCBpbnRlcnJ1cHQgaXMgbm90IGNvbm5l Y3RlZCAKPj4gdG8gTVBVCj4+IMKgICovCj4+IMKgc3RydWN0IHBydXNzX2ludGMgewo+PiDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgaXJxc1tNQVhfTlVNX0hPU1RfSVJRU107Cj4+IMKgwqDCoMKgIHZv aWQgX19pb21lbSAqYmFzZTsKPj4gwqDCoMKgwqAgc3RydWN0IGlycV9kb21haW4gKmRvbWFpbjsK Pj4gK8KgwqDCoCB1MTYgc2hhcmVkX2ludHI7Cj4+ICvCoMKgwqAgdTE2IGludmFsaWRfaW50cjsK PiAKPiBQbGVhc2UgcmVwcmVzZW50IGJpdG1hcHMgYXMgYW4gdW5zaWduZWQgbG9uZy4KCm9rLiBX ZSBoYXZlIGF0bW9zdCA4IGludGVycnVwdHMgY29taW5nIGluLCBidXQgYWdyZWUgb24gdGhlIGNo YW5nZSBzaW5jZSAKd2UgYXJlIHVzaW5nIHRoZSBCSVQoKSBtYWNybyBiZWxvdy4KCj4gCj4+IMKg fTsKPj4KPj4gwqBzdGF0aWMgaW5saW5lIHUzMiBwcnVzc19pbnRjX3JlYWRfcmVnKHN0cnVjdCBw cnVzc19pbnRjICppbnRjLAo+PiB1bnNpZ25lZCBpbnQgcmVnKQo+PiBAQCAtMjIyLDcgKzIyNiw4 IEBAIHN0YXRpYyBpbnQgcHJ1c3NfaW50Y19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIAo+ PiAqcGRldikKPj4gwqDCoMKgwqDCoMKgwqDCoCAiaG9zdF9pbnRyNCIsICJob3N0X2ludHI1Iiwg Imhvc3RfaW50cjYiLCAiaG9zdF9pbnRyNyIsIH07Cj4+IMKgwqDCoMKgIHN0cnVjdCBkZXZpY2Ug KmRldiA9ICZwZGV2LT5kZXY7Cj4+IMKgwqDCoMKgIHN0cnVjdCBwcnVzc19pbnRjICppbnRjOwo+ PiAtwqDCoMKgIGludCBpLCBpcnE7Cj4+ICvCoMKgwqAgaW50IGksIGlycSwgY291bnQ7Cj4+ICvC oMKgwqAgdTggdGVtcF9pbnRyW01BWF9OVU1fSE9TVF9JUlFTXSA9IHsgMCB9Owo+Pgo+PiDCoMKg wqDCoCBpbnRjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbnRjKSwgR0ZQX0tFUk5FTCk7 Cj4+IMKgwqDCoMKgIGlmICghaW50YykKPj4gQEAgLTIzNSw2ICsyNDAsNTIgQEAgc3RhdGljIGlu dCBwcnVzc19pbnRjX3Byb2JlKHN0cnVjdCAKPj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKGludGMtPmJhc2UpOwo+PiDCoMKgwqDCoCB9 Cj4+Cj4+ICvCoMKgwqAgY291bnQgPSBvZl9wcm9wZXJ0eV9yZWFkX3ZhcmlhYmxlX3U4X2FycmF5 KGRldi0+b2Zfbm9kZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgInRpLGlycXMtcmVzZXJ2ZWQiLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0ZW1wX2ludHIsIDAsCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWF9OVU1f SE9TVF9JUlFTKTsKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBUaGUgaXJxcy1yZXNlcnZl ZCBpcyB1c2VkIG9ubHkgZm9yIHNvbWUgU29DJ3MgdGhlcmVmb3JlIG5vdCAKPj4gaGF2aW5nCj4+ ICvCoMKgwqDCoCAqIHRoaXMgcHJvcGVydHkgaXMgc3RpbGwgdmFsaWQKPj4gK8KgwqDCoMKgICov Cj4+ICvCoMKgwqAgaWYgKGNvdW50ID09IC1FSU5WQUwpCj4+ICvCoMKgwqDCoMKgwqDCoCBjb3Vu dCA9IDA7Cj4+ICvCoMKgwqAgaWYgKGNvdW50IDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biBjb3VudDsKPj4gKwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAodGVtcF9pbnRyW2ldID49IE1BWF9OVU1fSE9TVF9JUlFTKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl93YXJuKGRldiwgImlnbm9yaW5nIGludmFs aWQgcmVzZXJ2ZWQgaXJxICVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdGVtcF9pbnRyW2ldKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGludGMtPmludmFsaWRf aW50ciB8PSBCSVQodGVtcF9pbnRyW2ldKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBj b3VudCA9IG9mX3Byb3BlcnR5X3JlYWRfdmFyaWFibGVfdThfYXJyYXkoZGV2LT5vZl9ub2RlLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAi dGksaXJxcy1zaGFyZWQiLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0ZW1wX2ludHIsIDAsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWF9OVU1fSE9TVF9JUlFTKTsKPj4gK8Kg wqDCoCAvKgo+PiArwqDCoMKgwqAgKiBUaGUgaXJxcy1zaGFyZWQgaXMgdXNlZCBvbmx5IGZvciBz b21lIFNvQydzIHRoZXJlZm9yZSBub3QgaGF2aW5nCj4+ICvCoMKgwqDCoCAqIHRoaXMgcHJvcGVy dHkgaXMgc3RpbGwgdmFsaWQKPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgaWYgKGNvdW50ID09 IC1FSU5WQUwpCj4+ICvCoMKgwqDCoMKgwqDCoCBjb3VudCA9IDA7Cj4+ICvCoMKgwqAgaWYgKGNv dW50IDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBjb3VudDsKPj4gKwo+PiArwqDCoMKg IGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodGVt cF9pbnRyW2ldID49IE1BWF9OVU1fSE9TVF9JUlFTKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRldl93YXJuKGRldiwgImlnbm9yaW5nIGludmFsaWQgc2hhcmVkIGlycSAlZFxuIiwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRlbXBfaW50cltpXSk7Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoCBpbnRjLT5zaGFyZWRfaW50ciB8PSBCSVQodGVtcF9pbnRyW2ldKTsK Pj4gK8KgwqDCoCB9Cj4+ICsKPiAKPiBZb3UgcHJvYmFibHkgd2FudCB0byBtb3ZlIHRoaXMgaW4g YSBzZXBhcmF0ZSBmdW5jdGlvbiwgc2luY2UgeW91IHBvcHVsYXRlIGEKPiBjb21tb24gc3RydWN0 dXJlLgo+IAo+PiDCoMKgwqDCoCBwcnVzc19pbnRjX2luaXQoaW50Yyk7Cj4+Cj4+IMKgwqDCoMKg IC8qIGFsd2F5cyA2NCBldmVudHMgKi8KPj4gQEAgLTI0NCw4ICsyOTUsMTQgQEAgc3RhdGljIGlu dCBwcnVzc19pbnRjX3Byb2JlKHN0cnVjdCAKPj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+Pgo+PiDCoMKgwqDCoCBmb3IgKGkgPSAw OyBpIDwgTUFYX05VTV9IT1NUX0lSUVM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlu dGMtPmludmFsaWRfaW50ciAmIEJJVChpKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u dGludWU7Cj4+ICsKPj4gwqDCoMKgwqDCoMKgwqDCoCBpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5 bmFtZShwZGV2LCBpcnFfbmFtZXNbaV0pOwo+PiDCoMKgwqDCoMKgwqDCoMKgIGlmIChpcnEgPD0g MCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaW50Yy0+c2hhcmVkX2ludHIgJiBC SVQoaSkpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4gCj4g SSBkb24ndCByZWFsbHkgdW5kZXJzdGFuZCB3aHkgeW91IGFyZSB0cmVhdGluZyB0aGVzZSAic2hh cmVkIiBpbnRlcnJ1cHRzCj4gZGlmZmVyZW50bHkgZnJvbSB0aGUgaW52YWxpZCBvbmVzLiBJbiBh bGwgY2FzZXMsIHRoZXkgc2hvdWxkbid0IGJlIHVzZWQuCgpUaGUgYmVoYXZpb3IgaXMgdGhlIHNh bWUgaW4gaG93IHdlIGhhbmRsZSBpdCwgYnV0IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgCmFuICJp bnZhbGlkIiBvbmUgaXMgbmV2ZXIgZXZlbiBjb25uZWN0ZWQgdG8gdGhlIEFSTSBpbnRlcnJ1cHQg CmNvbnRyb2xsZXIsIHdoaWxlIHRoZSAic2hhcmVkIiBvbmUgaXMgYSBjaG9pY2UuIFNvLCB1bmxl c3MgdGhpcyAKaW50ZXJydXB0IGlzIGJlaW5nIHVzZWQvaGFuZGxlZCBieSBhIGRpZmZlcmVudCBw cm9jZXNzb3IvZW50aXR5LCB5b3UgCndvdWxkIG5vdCBzZWUgdGhpcyBza2lwcGVkIGZyb20gdGhl IGR0cyBub2RlLgoKcmVnYXJkcwpTdW1hbgoKCj4gCj4+ICsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRldl9lcnIoZGV2LCAicGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUgZmFpbGVkIGZvciAl cyA6ICVkXG4iLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpcnFfbmFtZXNb aV0sIGlycSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWxfaXJxOwo+PiBA QCAtMjU5LDggKzMxNiwxMSBAQCBzdGF0aWMgaW50IHBydXNzX2ludGNfcHJvYmUoc3RydWN0IAo+ PiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+IMKgwqDCoMKgIHJldHVybiAwOwo+Pgo+PiDCoGZh aWxfaXJxOgo+PiAtwqDCoMKgIHdoaWxlICgtLWkgPj0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgIGly cV9zZXRfY2hhaW5lZF9oYW5kbGVyX2FuZF9kYXRhKGludGMtPmlycXNbaV0sIE5VTEwsIE5VTEwp Owo+PiArwqDCoMKgIHdoaWxlICgtLWkgPj0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlu dGMtPmlycXNbaV0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlycV9zZXRfY2hhaW5lZF9o YW5kbGVyX2FuZF9kYXRhKGludGMtPmlycXNbaV0sIE5VTEwsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMKTsKPj4gK8KgwqDC oCB9Cj4+Cj4+IMKgwqDCoMKgIGlycV9kb21haW5fcmVtb3ZlKGludGMtPmRvbWFpbik7Cj4+Cj4+ IEBAIC0yNzMsOCArMzMzLDExIEBAIHN0YXRpYyBpbnQgcHJ1c3NfaW50Y19yZW1vdmUoc3RydWN0 IAo+PiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+IMKgwqDCoMKgIHVuc2lnbmVkIGludCBod2ly cTsKPj4gwqDCoMKgwqAgaW50IGk7Cj4+Cj4+IC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IE1BWF9O VU1fSE9TVF9JUlFTOyBpKyspCj4+IC3CoMKgwqDCoMKgwqDCoCBpcnFfc2V0X2NoYWluZWRfaGFu ZGxlcl9hbmRfZGF0YShpbnRjLT5pcnFzW2ldLCBOVUxMLCBOVUxMKTsKPj4gK8KgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgTUFYX05VTV9IT1NUX0lSUVM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAg aWYgKGludGMtPmlycXNbaV0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlycV9zZXRfY2hh aW5lZF9oYW5kbGVyX2FuZF9kYXRhKGludGMtPmlycXNbaV0sIE5VTEwsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMKTsKPj4g K8KgwqDCoCB9Cj4+Cj4+IMKgwqDCoMKgIGZvciAoaHdpcnEgPSAwOyBod2lycSA8IE1BWF9QUlVf U1lTX0VWRU5UUzsgaHdpcnErKykKPj4gwqDCoMKgwqDCoMKgwqDCoCBpcnFfZGlzcG9zZV9tYXBw aW5nKGlycV9maW5kX21hcHBpbmcoaW50Yy0+ZG9tYWluLCBod2lycSkpOwo+IAo+IFRoYW5rcywK PiAKPiAgwqDCoMKgwqDCoMKgwqAgTS4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==