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=-3.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 97C57C63697 for ; Wed, 18 Nov 2020 14:05:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4BC8321D40 for ; Wed, 18 Nov 2020 14:05:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726551AbgKROFu convert rfc822-to-8bit (ORCPT ); Wed, 18 Nov 2020 09:05:50 -0500 Received: from lonlinode-sdnproxy-1.icoremail.net ([139.162.193.133]:57650 "HELO lonlinode-sdnproxy-1.icoremail.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1726325AbgKROFu (ORCPT ); Wed, 18 Nov 2020 09:05:50 -0500 Received: from [192.168.0.104] (unknown [113.247.217.134]) by c1app7 (Coremail) with SMTP id BwINCgBXj5AqKrVfJQSyAA--.31695S2; Wed, 18 Nov 2020 22:05:30 +0800 (CST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Subject: Re: [RFC PATCH V2] acpi/irq: Add stacked IRQ domain support to PCI interrupt link From: Chen Baozi In-Reply-To: <20201118095129.GA20571@e121166-lin.cambridge.arm.com> Date: Wed, 18 Nov 2020 22:05:29 +0800 Cc: Marc Zyngier , Guohanjun , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org, Bjorn Helgaas , Ard Biesheuvel , linux-arm-kernel@lists.infradead.org Content-Transfer-Encoding: 8BIT Message-Id: <17EDC3AB-FF11-4624-912E-95832DB20804@phytium.com.cn> References: <20201117134214.970-1-chenbaozi@phytium.com.cn> <20201118095129.GA20571@e121166-lin.cambridge.arm.com> To: Lorenzo Pieralisi X-Mailer: Apple Mail (2.3608.120.23.2.4) X-CM-TRANSID: BwINCgBXj5AqKrVfJQSyAA--.31695S2 X-Coremail-Antispam: 1UD129KBjvJXoWxur13Wr4kWw45ur45JFykGrg_yoW5XF4rpF WUK393AFWDCF43Ga9rX3W8JryFvanxA398G3s3A3yjv343ZF10gFyIkF4rGFy3Cwsa9w12 vF4jy34rWasrAaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkIb7Iv0xC_KF4lb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I 8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI 64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8Jw Am72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lc2xSY4AK67AK6ry5MxAIw28I cxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2 IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI 42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42 IY6xAIw20EY4v20xvaj40_Wr1j6rW3Jr1lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2 z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU8fnY5UUUUU== X-CM-SenderInfo: hfkh0updr2xqxsk13x1xpou0fpof0/1tbiAQPgP17E3YHxogAAsI Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org Hi Lorenzo, > On Nov 18, 2020, at 5:51 PM, Lorenzo Pieralisi wrote: > > On Tue, Nov 17, 2020 at 09:42:14PM +0800, Chen Baozi wrote: >> Some PCIe designs require software to do extra acknowledgements for >> legacy INTx interrupts. If the driver is written only for device tree, >> things are simple. In that case, a new driver can be written under >> driver/pci/controller/ with a DT node of PCIe host written like: >> >> pcie { >> ... >> interrupt-map = <0 0 0 1 &pcie_intc 0>, >> <0 0 0 2 &pcie_intc 1>, >> <0 0 0 3 &pcie_intc 2>, >> <0 0 0 4 &pcie_intc 3>; >> >> pcie_intc: legacy-interrupt-controller { >> interrupt-controller; >> #interrupt-cells = <1>; >> interrupt-parent = <&gic>; >> interrupts = <0 226 4>; >> }; >> }; >> >> Similar designs can be found on Aardvark, MediaTek Gen2 and Socionext >> UniPhier PCIe controller at the moment. Essentially, those designs are >> supported by inserting an extra interrupt controller between PCIe host >> and GIC and parse the topology in a DT-based PCI controller driver. >> As we turn to ACPI, All the PCIe hosts are described the same ID of >> "PNP0A03" and share driver/acpi/pci_root.c. It comes to be a problem >> to make this kind of PCI INTx work under ACPI. > > In this respect this patch is a minor detail. The major detail is how > those host controllers are going to probe and initialize with ACPI and I > am against merging this patch stand alone with no user before > understanding what you really want to do with those host controller > drivers in the ACPI world. > > Side note, there is ongoing work for a generic interrupt MUX: > > https://bugzilla.tianocore.org/show_bug.cgi?id=2995 > > If we ever come to support those MUXes with ACPI that must be a > starting point, the binding above can be your first "user". > > I still have reservations about bootstrapping the host controllers > you mentioned in platforms with no firmware support whatsoever for > PCI initialization (eg address decoders, link bring-up, etc. - the > ACPI host bridge model relies on FW to carry out that initialization) > with ACPI - I would like to see the whole picture first. Frankly, I’m also waiting for my first “user” to be announced at the moment, so that I can make the whole picture clearer. And it is why I mark this patch as an RFC. Yes. I admit it is a little weird to add another interrupt controller between the GIC and INTx device. But if it is not only about initialization but also about hooking into the INTx processing (e.g., introduce an extra ack operation...), it seems we cannot only rely on FW. I have looked for a FW solution without introducing a new driver later but failed... I’m happy to be fixed if there is a pure FW solution. Thanks. Baozi. 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=-3.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 A364BC5519F for ; Wed, 18 Nov 2020 14:07:17 +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 A122321D40 for ; Wed, 18 Nov 2020 14:07:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hQQp/HJj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A122321D40 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=phytium.com.cn 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-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:References:Message-Id:Date:In-Reply-To:From: Subject:Mime-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kwVFC/W6cJ7Nqi1hyouDZIdqPU2PPHKZSf968+pmfn8=; b=hQQp/HJjw60TsSsSIJD1GeILv dyTp/1sIkiLhPJq3yz9Faw2DURdJU9wUw8phPGybrg6K5zCw1+4hfUTm1LB2A5yuPjb7FCseWzwSo R7Ai210aG2z3/43NwaO9P0SE6tiz7O/uQOu8CuxTFP5QDvEpeeUEi59Eh9CUb1wnF4xSrEVJ4KyUl CNRgk+AiKuR0GHFfdIJSPfpy+pWAiMDw1yRSxemuNRpFaVXE3uffl68OewmAi5CQBAbvD2g9u//Or MiDpL7wt+GBTSdxsPymXoidzw9Suc1mEEOZXWVj7ta0bJenPjLOUmcMesBbQo1Lqj3OTac5k0Ks6R /zvY+OWYw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfO5j-00043C-Kg; Wed, 18 Nov 2020 14:05:47 +0000 Received: from lonlinode-sdnproxy-1.icoremail.net ([139.162.193.133]) by merlin.infradead.org with smtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfO5g-00041p-B9 for linux-arm-kernel@lists.infradead.org; Wed, 18 Nov 2020 14:05:45 +0000 Received: from [192.168.0.104] (unknown [113.247.217.134]) by c1app7 (Coremail) with SMTP id BwINCgBXj5AqKrVfJQSyAA--.31695S2; Wed, 18 Nov 2020 22:05:30 +0800 (CST) Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Subject: Re: [RFC PATCH V2] acpi/irq: Add stacked IRQ domain support to PCI interrupt link From: Chen Baozi In-Reply-To: <20201118095129.GA20571@e121166-lin.cambridge.arm.com> Date: Wed, 18 Nov 2020 22:05:29 +0800 Message-Id: <17EDC3AB-FF11-4624-912E-95832DB20804@phytium.com.cn> References: <20201117134214.970-1-chenbaozi@phytium.com.cn> <20201118095129.GA20571@e121166-lin.cambridge.arm.com> To: Lorenzo Pieralisi X-Mailer: Apple Mail (2.3608.120.23.2.4) X-CM-TRANSID: BwINCgBXj5AqKrVfJQSyAA--.31695S2 X-Coremail-Antispam: 1UD129KBjvJXoWxur13Wr4kWw45ur45JFykGrg_yoW5XF4rpF WUK393AFWDCF43Ga9rX3W8JryFvanxA398G3s3A3yjv343ZF10gFyIkF4rGFy3Cwsa9w12 vF4jy34rWasrAaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkIb7Iv0xC_KF4lb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I 8E87Iv6xkF7I0E14v26rxl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI 64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8Jw Am72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lc2xSY4AK67AK6ry5MxAIw28I cxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2 IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI 42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42 IY6xAIw20EY4v20xvaj40_Wr1j6rW3Jr1lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2 z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU8fnY5UUUUU== X-CM-SenderInfo: hfkh0updr2xqxsk13x1xpou0fpof0/1tbiAQPgP17E3YHxogAAsI X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201118_090544_621115_6CF2F3EC X-CRM114-Status: GOOD ( 18.47 ) 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: linux-pci@vger.kernel.org, Guohanjun , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, Marc Zyngier , Bjorn Helgaas , Ard Biesheuvel , linux-arm-kernel@lists.infradead.org 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 SGkgTG9yZW56bywKCj4gT24gTm92IDE4LCAyMDIwLCBhdCA1OjUxIFBNLCBMb3JlbnpvIFBpZXJh bGlzaSA8bG9yZW56by5waWVyYWxpc2lAYXJtLmNvbT4gd3JvdGU6Cj4gCj4gT24gVHVlLCBOb3Yg MTcsIDIwMjAgYXQgMDk6NDI6MTRQTSArMDgwMCwgQ2hlbiBCYW96aSB3cm90ZToKPj4gU29tZSBQ Q0llIGRlc2lnbnMgcmVxdWlyZSBzb2Z0d2FyZSB0byBkbyBleHRyYSBhY2tub3dsZWRnZW1lbnRz IGZvcgo+PiBsZWdhY3kgSU5UeCBpbnRlcnJ1cHRzLiBJZiB0aGUgZHJpdmVyIGlzIHdyaXR0ZW4g b25seSBmb3IgZGV2aWNlIHRyZWUsCj4+IHRoaW5ncyBhcmUgc2ltcGxlLiBJbiB0aGF0IGNhc2Us IGEgbmV3IGRyaXZlciBjYW4gYmUgd3JpdHRlbiB1bmRlcgo+PiBkcml2ZXIvcGNpL2NvbnRyb2xs ZXIvIHdpdGggYSBEVCBub2RlIG9mIFBDSWUgaG9zdCB3cml0dGVuIGxpa2U6Cj4+IAo+PiAgcGNp ZSB7Cj4+ICAgIC4uLgo+PiAgICBpbnRlcnJ1cHQtbWFwID0gPDAgMCAwICAxICAmcGNpZV9pbnRj IDA+LAo+PiAgICAgICAgICAgICAgICAgICAgPDAgMCAwICAyICAmcGNpZV9pbnRjIDE+LAo+PiAg ICAgICAgICAgICAgICAgICAgPDAgMCAwICAzICAmcGNpZV9pbnRjIDI+LAo+PiAgICAgICAgICAg ICAgICAgICAgPDAgMCAwICA0ICAmcGNpZV9pbnRjIDM+Owo+PiAKPj4gICAgcGNpZV9pbnRjOiBs ZWdhY3ktaW50ZXJydXB0LWNvbnRyb2xsZXIgewo+PiAgICAgIGludGVycnVwdC1jb250cm9sbGVy Owo+PiAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47Cj4+ICAgICAgaW50ZXJydXB0LXBhcmVu dCA9IDwmZ2ljPjsKPj4gICAgICBpbnRlcnJ1cHRzID0gPDAgMjI2IDQ+Owo+PiAgICB9Owo+PiAg fTsKPj4gCj4+IFNpbWlsYXIgZGVzaWducyBjYW4gYmUgZm91bmQgb24gQWFyZHZhcmssIE1lZGlh VGVrIEdlbjIgYW5kIFNvY2lvbmV4dAo+PiBVbmlQaGllciBQQ0llIGNvbnRyb2xsZXIgYXQgdGhl IG1vbWVudC4gRXNzZW50aWFsbHksIHRob3NlIGRlc2lnbnMgYXJlCj4+IHN1cHBvcnRlZCBieSBp bnNlcnRpbmcgYW4gZXh0cmEgaW50ZXJydXB0IGNvbnRyb2xsZXIgYmV0d2VlbiBQQ0llIGhvc3QK Pj4gYW5kIEdJQyBhbmQgcGFyc2UgdGhlIHRvcG9sb2d5IGluIGEgRFQtYmFzZWQgUENJIGNvbnRy b2xsZXIgZHJpdmVyLgo+PiBBcyB3ZSB0dXJuIHRvIEFDUEksIEFsbCB0aGUgUENJZSBob3N0cyBh cmUgZGVzY3JpYmVkIHRoZSBzYW1lIElEIG9mCj4+ICJQTlAwQTAzIiBhbmQgc2hhcmUgZHJpdmVy L2FjcGkvcGNpX3Jvb3QuYy4gSXQgY29tZXMgdG8gYmUgYSBwcm9ibGVtCj4+IHRvIG1ha2UgdGhp cyBraW5kIG9mIFBDSSBJTlR4IHdvcmsgdW5kZXIgQUNQSS4KPiAKPiBJbiB0aGlzIHJlc3BlY3Qg dGhpcyBwYXRjaCBpcyBhIG1pbm9yIGRldGFpbC4gVGhlIG1ham9yIGRldGFpbCBpcyBob3cKPiB0 aG9zZSBob3N0IGNvbnRyb2xsZXJzIGFyZSBnb2luZyB0byBwcm9iZSBhbmQgaW5pdGlhbGl6ZSB3 aXRoIEFDUEkgYW5kIEkKPiBhbSBhZ2FpbnN0IG1lcmdpbmcgdGhpcyBwYXRjaCBzdGFuZCBhbG9u ZSB3aXRoIG5vIHVzZXIgYmVmb3JlCj4gdW5kZXJzdGFuZGluZyB3aGF0IHlvdSByZWFsbHkgd2Fu dCB0byBkbyB3aXRoIHRob3NlIGhvc3QgY29udHJvbGxlcgo+IGRyaXZlcnMgaW4gdGhlIEFDUEkg d29ybGQuCj4gCj4gU2lkZSBub3RlLCB0aGVyZSBpcyBvbmdvaW5nIHdvcmsgZm9yIGEgZ2VuZXJp YyBpbnRlcnJ1cHQgTVVYOgo+IAo+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9Mjk5NQo+IAo+IElmIHdlIGV2ZXIgY29tZSB0byBzdXBwb3J0IHRob3NlIE1V WGVzIHdpdGggQUNQSSB0aGF0IG11c3QgYmUgYQo+IHN0YXJ0aW5nIHBvaW50LCB0aGUgYmluZGlu ZyBhYm92ZSBjYW4gYmUgeW91ciBmaXJzdCAidXNlciIuCj4gCj4gSSBzdGlsbCBoYXZlIHJlc2Vy dmF0aW9ucyBhYm91dCBib290c3RyYXBwaW5nIHRoZSBob3N0IGNvbnRyb2xsZXJzCj4geW91IG1l bnRpb25lZCBpbiBwbGF0Zm9ybXMgd2l0aCBubyBmaXJtd2FyZSBzdXBwb3J0IHdoYXRzb2V2ZXIg Zm9yCj4gUENJIGluaXRpYWxpemF0aW9uIChlZyBhZGRyZXNzIGRlY29kZXJzLCBsaW5rIGJyaW5n LXVwLCBldGMuIC0gdGhlCj4gQUNQSSBob3N0IGJyaWRnZSBtb2RlbCByZWxpZXMgb24gRlcgdG8g Y2Fycnkgb3V0IHRoYXQgaW5pdGlhbGl6YXRpb24pCj4gd2l0aCBBQ1BJIC0gSSB3b3VsZCBsaWtl IHRvIHNlZSB0aGUgd2hvbGUgcGljdHVyZSBmaXJzdC4KCkZyYW5rbHksIEnigJltIGFsc28gd2Fp dGluZyBmb3IgbXkgZmlyc3Qg4oCcdXNlcuKAnSB0byBiZSBhbm5vdW5jZWQgYXQgdGhlIG1vbWVu dCwKc28gdGhhdCBJIGNhbiBtYWtlIHRoZSB3aG9sZSBwaWN0dXJlIGNsZWFyZXIuIEFuZCBpdCBp cyB3aHkgSSBtYXJrIHRoaXMKcGF0Y2ggYXMgYW4gUkZDLiAKClllcy4gSSBhZG1pdCBpdCBpcyBh IGxpdHRsZSB3ZWlyZCB0byBhZGQgYW5vdGhlciBpbnRlcnJ1cHQgY29udHJvbGxlcgpiZXR3ZWVu IHRoZSBHSUMgYW5kIElOVHggZGV2aWNlLiBCdXQgaWYgaXQgaXMgbm90IG9ubHkgYWJvdXQKaW5p dGlhbGl6YXRpb24gYnV0IGFsc28gYWJvdXQgaG9va2luZyBpbnRvIHRoZSBJTlR4IHByb2Nlc3Np bmcgKGUuZy4sCmludHJvZHVjZSBhbiBleHRyYSBhY2sgb3BlcmF0aW9uLi4uKSwgaXQgc2VlbXMg d2UgY2Fubm90IG9ubHkgcmVseQpvbiBGVy4gSSBoYXZlIGxvb2tlZCBmb3IgYSBGVyBzb2x1dGlv biB3aXRob3V0IGludHJvZHVjaW5nIGEgbmV3CmRyaXZlciBsYXRlciBidXQgZmFpbGVkLi4uIEni gJltIGhhcHB5IHRvIGJlIGZpeGVkIGlmIHRoZXJlIGlzIGEgcHVyZQpGVyBzb2x1dGlvbi4KClRo YW5rcy4KCkJhb3ppLgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK