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=-4.0 required=3.0 tests=BAYES_00,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS 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 4BB7CC433E0 for ; Sat, 27 Mar 2021 21:47:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 23911619A9 for ; Sat, 27 Mar 2021 21:47:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231243AbhC0Vq1 convert rfc822-to-8bit (ORCPT ); Sat, 27 Mar 2021 17:46:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:34808 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230478AbhC0Vp7 (ORCPT ); Sat, 27 Mar 2021 17:45:59 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 50C7D601FE; Sat, 27 Mar 2021 21:45:57 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=wait-a-minute.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1lQGkl-004BpL-9c; Sat, 27 Mar 2021 21:45:55 +0000 Date: Sat, 27 Mar 2021 21:45:54 +0000 Message-ID: <87mtuofey5.wl-maz@kernel.org> From: Marc Zyngier To: Pali =?UTF-8?B?Um9ow6Fy?= Cc: Jianjun Wang , Bjorn Helgaas , Rob Herring , Lorenzo Pieralisi , Ryder Lee , Philipp Zabel , Matthias Brugger , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, Krzysztof Wilczyski Subject: Re: [v9,5/7] PCI: mediatek-gen3: Add MSI support In-Reply-To: <20210327202904.nvn7tfodmc2xw23l@pali> References: <20210324030510.29177-1-jianjun.wang@mediatek.com> <20210324030510.29177-6-jianjun.wang@mediatek.com> <20210327192837.4rr46oeiuokritlc@pali> <87o8f4fkkh.wl-maz@kernel.org> <20210327202904.nvn7tfodmc2xw23l@pali> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: pali@kernel.org, jianjun.wang@mediatek.com, bhelgaas@google.com, robh+dt@kernel.org, lorenzo.pieralisi@arm.com, ryder.lee@mediatek.com, p.zabel@pengutronix.de, matthias.bgg@gmail.com, linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, kw@linux.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 27 Mar 2021 20:29:04 +0000, Pali Rohár wrote: > > On Saturday 27 March 2021 19:44:30 Marc Zyngier wrote: > > On Sat, 27 Mar 2021 19:28:37 +0000, > > Pali Rohár wrote: > > > > > > On Wednesday 24 March 2021 11:05:08 Jianjun Wang wrote: > > > > +static void mtk_pcie_msi_handler(struct mtk_pcie_port *port, int set_idx) > > > > +{ > > > > + struct mtk_msi_set *msi_set = &port->msi_sets[set_idx]; > > > > + unsigned long msi_enable, msi_status; > > > > + unsigned int virq; > > > > + irq_hw_number_t bit, hwirq; > > > > + > > > > + msi_enable = readl_relaxed(msi_set->base + PCIE_MSI_SET_ENABLE_OFFSET); > > > > + > > > > + do { > > > > + msi_status = readl_relaxed(msi_set->base + > > > > + PCIE_MSI_SET_STATUS_OFFSET); > > > > + msi_status &= msi_enable; > > > > + if (!msi_status) > > > > + break; > > > > + > > > > + for_each_set_bit(bit, &msi_status, PCIE_MSI_IRQS_PER_SET) { > > > > + hwirq = bit + set_idx * PCIE_MSI_IRQS_PER_SET; > > > > + virq = irq_find_mapping(port->msi_bottom_domain, hwirq); > > > > + generic_handle_irq(virq); > > > > + } > > > > + } while (true); > > > > > > Hello! > > > > > > Just a question, cannot this while-loop cause block of processing other > > > interrupts? > > > > This is a level interrupt. You don't have much choice but to handle it > > immediately, although an alternative would be to mask it and deal with > > it in a thread. And since Linux doesn't deal with interrupt priority, > > a screaming interrupt is never a good thing. > > I see. Something like "interrupt priority" (which does not exist?) would > be needed to handle it. Interrupt priorities definitely exist, but Linux doesn't use them. Furthermore, This wouldn't be relevant here as you get a bunch of MSI multiplexed onto a single one. Where would you apply the priority? > > > > I have done tests with different HW (aardvark) but with same while(true) > > > loop logic. One XHCI PCIe controller was sending MSI interrupts too fast > > > and interrupt handler with this while(true) logic was in infinite loop. > > > During one IRQ it was calling infinite many times generic_handle_irq() > > > as HW was feeding new and new MSI hwirq into status register. > > > > Define "too fast". > > Fast - next interrupt comes prior checking if while(true)-loop should stop. That's definitely not something you can easily fix at the interrupt handling level. You need to prevent this from happening. That's usually the result of a misprogramming or a HW bug. > > If something in the system is able to program the > > XHCI device in such a way that it causes a screaming interrupt, that's > > the place to look for problems, and probably not in the interrupt > > handling itself, which does what it is supposed to do. > > > > > But this is different HW, so it can have different behavior and does not > > > have to cause above issue. > > > > > > I have just spotted same code pattern for processing MSI interrupts... > > > > This is a common pattern that you will find in pretty much any > > interrupt handling/demuxing, and is done this way when the cost of > > taking the exception is high compared to that of handling it. > > And would not help if while(true)-loop is replaced by loop with upper > limit of iterations? Or just call only one iteration? That wouldn't change much: you would still have the interrupt being pending, and it would fire again at the earliest opportunity. At best, the root interrupt controller is able to present you with another interrupt before forcing you to deal with the one you have ignored again. But you cannot rely on that either. And to be honest, other interrupts are only a part of the problem you are describing. With a screaming interrupt, you can't execute userspace. This is as bad as it gets. M. -- Without deviation from the norm, progress is not possible. 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=-4.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 ACB40C433C1 for ; Sat, 27 Mar 2021 21:46:24 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 56CF36198F for ; Sat, 27 Mar 2021 21:46:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 56CF36198F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Subject:Cc:To: From:Message-ID:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MLfeqA1u8Dd6VkMakv8BEI7GfkqbB44FjpX0kLYu2kE=; b=WkSFoCpQqaky3xkKG4q9V6vKI v+g24s83JYgMmbKncbtA1sz6TOrkGYdK2XvWoQcNAyzBDt1P42dEYTBSDo/ScGonVj/BZJqdbI+5X c8m03o4lZ+F1K78hthwvMrWlDFEVumZObgSwaExiqP8NKFGmuzRU3RruqVNgDhTRyVSpSOEfMiYi+ Qb5TvaQWDVaU6aIVL1TqauT90TuX6A1yLVlp/PxWDx8VJ7VvOFSqhnYUeBRmUJkD375YoaTCS2cMb +OxQUjKVb15XLmD57xCOz63IZsjFB5Kn7lYJsUMtomxdAiLA02IXFR9769ECc6KziXqB2qosqUrKE yL0XKr97w==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lQGl3-005YvS-Rk; Sat, 27 Mar 2021 21:46:14 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lQGkr-005YuM-0O; Sat, 27 Mar 2021 21:46:03 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 50C7D601FE; Sat, 27 Mar 2021 21:45:57 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=wait-a-minute.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1lQGkl-004BpL-9c; Sat, 27 Mar 2021 21:45:55 +0000 Date: Sat, 27 Mar 2021 21:45:54 +0000 Message-ID: <87mtuofey5.wl-maz@kernel.org> From: Marc Zyngier To: Pali =?UTF-8?B?Um9ow6Fy?= Cc: Jianjun Wang , Bjorn Helgaas , Rob Herring , Lorenzo Pieralisi , Ryder Lee , Philipp Zabel , Matthias Brugger , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, Krzysztof Wilczyski Subject: Re: [v9,5/7] PCI: mediatek-gen3: Add MSI support In-Reply-To: <20210327202904.nvn7tfodmc2xw23l@pali> References: <20210324030510.29177-1-jianjun.wang@mediatek.com> <20210324030510.29177-6-jianjun.wang@mediatek.com> <20210327192837.4rr46oeiuokritlc@pali> <87o8f4fkkh.wl-maz@kernel.org> <20210327202904.nvn7tfodmc2xw23l@pali> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: pali@kernel.org, jianjun.wang@mediatek.com, bhelgaas@google.com, robh+dt@kernel.org, lorenzo.pieralisi@arm.com, ryder.lee@mediatek.com, p.zabel@pengutronix.de, matthias.bgg@gmail.com, linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, kw@linux.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210327_214601_395241_31A1E1A4 X-CRM114-Status: GOOD ( 38.72 ) X-BeenThere: linux-mediatek@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-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org T24gU2F0LCAyNyBNYXIgMjAyMSAyMDoyOTowNCArMDAwMCwKUGFsaSBSb2jDoXIgPHBhbGlAa2Vy bmVsLm9yZz4gd3JvdGU6Cj4gCj4gT24gU2F0dXJkYXkgMjcgTWFyY2ggMjAyMSAxOTo0NDozMCBN YXJjIFp5bmdpZXIgd3JvdGU6Cj4gPiBPbiBTYXQsIDI3IE1hciAyMDIxIDE5OjI4OjM3ICswMDAw LAo+ID4gUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4gd3JvdGU6Cj4gPiA+IAo+ID4gPiBP biBXZWRuZXNkYXkgMjQgTWFyY2ggMjAyMSAxMTowNTowOCBKaWFuanVuIFdhbmcgd3JvdGU6Cj4g PiA+ID4gK3N0YXRpYyB2b2lkIG10a19wY2llX21zaV9oYW5kbGVyKHN0cnVjdCBtdGtfcGNpZV9w b3J0ICpwb3J0LCBpbnQgc2V0X2lkeCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IG10a19t c2lfc2V0ICptc2lfc2V0ID0gJnBvcnQtPm1zaV9zZXRzW3NldF9pZHhdOwo+ID4gPiA+ICsJdW5z aWduZWQgbG9uZyBtc2lfZW5hYmxlLCBtc2lfc3RhdHVzOwo+ID4gPiA+ICsJdW5zaWduZWQgaW50 IHZpcnE7Cj4gPiA+ID4gKwlpcnFfaHdfbnVtYmVyX3QgYml0LCBod2lycTsKPiA+ID4gPiArCj4g PiA+ID4gKwltc2lfZW5hYmxlID0gcmVhZGxfcmVsYXhlZChtc2lfc2V0LT5iYXNlICsgUENJRV9N U0lfU0VUX0VOQUJMRV9PRkZTRVQpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWRvIHsKPiA+ID4gPiAr CQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChtc2lfc2V0LT5iYXNlICsKPiA+ID4gPiArCQkJ CQkgICBQQ0lFX01TSV9TRVRfU1RBVFVTX09GRlNFVCk7Cj4gPiA+ID4gKwkJbXNpX3N0YXR1cyAm PSBtc2lfZW5hYmxlOwo+ID4gPiA+ICsJCWlmICghbXNpX3N0YXR1cykKPiA+ID4gPiArCQkJYnJl YWs7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmbXNpX3N0YXR1 cywgUENJRV9NU0lfSVJRU19QRVJfU0VUKSB7Cj4gPiA+ID4gKwkJCWh3aXJxID0gYml0ICsgc2V0 X2lkeCAqIFBDSUVfTVNJX0lSUVNfUEVSX1NFVDsKPiA+ID4gPiArCQkJdmlycSA9IGlycV9maW5k X21hcHBpbmcocG9ydC0+bXNpX2JvdHRvbV9kb21haW4sIGh3aXJxKTsKPiA+ID4gPiArCQkJZ2Vu ZXJpY19oYW5kbGVfaXJxKHZpcnEpOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCX0gd2hpbGUgKHRy dWUpOwo+ID4gPiAKPiA+ID4gSGVsbG8hCj4gPiA+IAo+ID4gPiBKdXN0IGEgcXVlc3Rpb24sIGNh bm5vdCB0aGlzIHdoaWxlLWxvb3AgY2F1c2UgYmxvY2sgb2YgcHJvY2Vzc2luZyBvdGhlcgo+ID4g PiBpbnRlcnJ1cHRzPwo+ID4gCj4gPiBUaGlzIGlzIGEgbGV2ZWwgaW50ZXJydXB0LiBZb3UgZG9u J3QgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gaGFuZGxlIGl0Cj4gPiBpbW1lZGlhdGVseSwgYWx0 aG91Z2ggYW4gYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gbWFzayBpdCBhbmQgZGVhbCB3aXRoCj4g PiBpdCBpbiBhIHRocmVhZC4gQW5kIHNpbmNlIExpbnV4IGRvZXNuJ3QgZGVhbCB3aXRoIGludGVy cnVwdCBwcmlvcml0eSwKPiA+IGEgc2NyZWFtaW5nIGludGVycnVwdCBpcyBuZXZlciBhIGdvb2Qg dGhpbmcuCj4gCj4gSSBzZWUuIFNvbWV0aGluZyBsaWtlICJpbnRlcnJ1cHQgcHJpb3JpdHkiICh3 aGljaCBkb2VzIG5vdCBleGlzdD8pIHdvdWxkCj4gYmUgbmVlZGVkIHRvIGhhbmRsZSBpdC4KCklu dGVycnVwdCBwcmlvcml0aWVzIGRlZmluaXRlbHkgZXhpc3QsIGJ1dCBMaW51eCBkb2Vzbid0IHVz ZQp0aGVtLiBGdXJ0aGVybW9yZSwgVGhpcyB3b3VsZG4ndCBiZSByZWxldmFudCBoZXJlIGFzIHlv dSBnZXQgYSBidW5jaApvZiBNU0kgbXVsdGlwbGV4ZWQgb250byBhIHNpbmdsZSBvbmUuIFdoZXJl IHdvdWxkIHlvdSBhcHBseSB0aGUKcHJpb3JpdHk/Cgo+IAo+ID4gPiBJIGhhdmUgZG9uZSB0ZXN0 cyB3aXRoIGRpZmZlcmVudCBIVyAoYWFyZHZhcmspIGJ1dCB3aXRoIHNhbWUgd2hpbGUodHJ1ZSkK PiA+ID4gbG9vcCBsb2dpYy4gT25lIFhIQ0kgUENJZSBjb250cm9sbGVyIHdhcyBzZW5kaW5nIE1T SSBpbnRlcnJ1cHRzIHRvbyBmYXN0Cj4gPiA+IGFuZCBpbnRlcnJ1cHQgaGFuZGxlciB3aXRoIHRo aXMgd2hpbGUodHJ1ZSkgbG9naWMgd2FzIGluIGluZmluaXRlIGxvb3AuCj4gPiA+IER1cmluZyBv bmUgSVJRIGl0IHdhcyBjYWxsaW5nIGluZmluaXRlIG1hbnkgdGltZXMgZ2VuZXJpY19oYW5kbGVf aXJxKCkKPiA+ID4gYXMgSFcgd2FzIGZlZWRpbmcgbmV3IGFuZCBuZXcgTVNJIGh3aXJxIGludG8g c3RhdHVzIHJlZ2lzdGVyLgo+ID4gCj4gPiBEZWZpbmUgInRvbyBmYXN0Ii4KPiAKPiBGYXN0IC0g bmV4dCBpbnRlcnJ1cHQgY29tZXMgcHJpb3IgY2hlY2tpbmcgaWYgd2hpbGUodHJ1ZSktbG9vcCBz aG91bGQgc3RvcC4KClRoYXQncyBkZWZpbml0ZWx5IG5vdCBzb21ldGhpbmcgeW91IGNhbiBlYXNp bHkgZml4IGF0IHRoZSBpbnRlcnJ1cHQKaGFuZGxpbmcgbGV2ZWwuIFlvdSBuZWVkIHRvIHByZXZl bnQgdGhpcyBmcm9tIGhhcHBlbmluZy4gVGhhdCdzCnVzdWFsbHkgdGhlIHJlc3VsdCBvZiBhIG1p c3Byb2dyYW1taW5nIG9yIGEgSFcgYnVnLgoKPiA+IElmIHNvbWV0aGluZyBpbiB0aGUgc3lzdGVt IGlzIGFibGUgdG8gcHJvZ3JhbSB0aGUKPiA+IFhIQ0kgZGV2aWNlIGluIHN1Y2ggYSB3YXkgdGhh dCBpdCBjYXVzZXMgYSBzY3JlYW1pbmcgaW50ZXJydXB0LCB0aGF0J3MKPiA+IHRoZSBwbGFjZSB0 byBsb29rIGZvciBwcm9ibGVtcywgYW5kIHByb2JhYmx5IG5vdCBpbiB0aGUgaW50ZXJydXB0Cj4g PiBoYW5kbGluZyBpdHNlbGYsIHdoaWNoIGRvZXMgd2hhdCBpdCBpcyBzdXBwb3NlZCB0byBkby4K PiA+IAo+ID4gPiBCdXQgdGhpcyBpcyBkaWZmZXJlbnQgSFcsIHNvIGl0IGNhbiBoYXZlIGRpZmZl cmVudCBiZWhhdmlvciBhbmQgZG9lcyBub3QKPiA+ID4gaGF2ZSB0byBjYXVzZSBhYm92ZSBpc3N1 ZS4KPiA+ID4gCj4gPiA+IEkgaGF2ZSBqdXN0IHNwb3R0ZWQgc2FtZSBjb2RlIHBhdHRlcm4gZm9y IHByb2Nlc3NpbmcgTVNJIGludGVycnVwdHMuLi4KPiA+IAo+ID4gVGhpcyBpcyBhIGNvbW1vbiBw YXR0ZXJuIHRoYXQgeW91IHdpbGwgZmluZCBpbiBwcmV0dHkgbXVjaCBhbnkKPiA+IGludGVycnVw dCBoYW5kbGluZy9kZW11eGluZywgYW5kIGlzIGRvbmUgdGhpcyB3YXkgd2hlbiB0aGUgY29zdCBv Zgo+ID4gdGFraW5nIHRoZSBleGNlcHRpb24gaXMgaGlnaCBjb21wYXJlZCB0byB0aGF0IG9mIGhh bmRsaW5nIGl0Lgo+IAo+IEFuZCB3b3VsZCBub3QgaGVscCBpZiB3aGlsZSh0cnVlKS1sb29wIGlz IHJlcGxhY2VkIGJ5IGxvb3Agd2l0aCB1cHBlcgo+IGxpbWl0IG9mIGl0ZXJhdGlvbnM/IE9yIGp1 c3QgY2FsbCBvbmx5IG9uZSBpdGVyYXRpb24/CgpUaGF0IHdvdWxkbid0IGNoYW5nZSBtdWNoOiB5 b3Ugd291bGQgc3RpbGwgaGF2ZSB0aGUgaW50ZXJydXB0IGJlaW5nCnBlbmRpbmcsIGFuZCBpdCB3 b3VsZCBmaXJlIGFnYWluIGF0IHRoZSBlYXJsaWVzdCBvcHBvcnR1bml0eS4KCkF0IGJlc3QsIHRo ZSByb290IGludGVycnVwdCBjb250cm9sbGVyIGlzIGFibGUgdG8gcHJlc2VudCB5b3Ugd2l0aAph bm90aGVyIGludGVycnVwdCBiZWZvcmUgZm9yY2luZyB5b3UgdG8gZGVhbCB3aXRoIHRoZSBvbmUg eW91IGhhdmUKaWdub3JlZCBhZ2Fpbi4gQnV0IHlvdSBjYW5ub3QgcmVseSBvbiB0aGF0IGVpdGhl ci4KCkFuZCB0byBiZSBob25lc3QsIG90aGVyIGludGVycnVwdHMgYXJlIG9ubHkgYSBwYXJ0IG9m IHRoZSBwcm9ibGVtIHlvdQphcmUgZGVzY3JpYmluZy4gV2l0aCBhIHNjcmVhbWluZyBpbnRlcnJ1 cHQsIHlvdSBjYW4ndCBleGVjdXRlCnVzZXJzcGFjZS4gVGhpcyBpcyBhcyBiYWQgYXMgaXQgZ2V0 cy4KCglNLgoKLS0gCldpdGhvdXQgZGV2aWF0aW9uIGZyb20gdGhlIG5vcm0sIHByb2dyZXNzIGlz IG5vdCBwb3NzaWJsZS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkxpbnV4LW1lZGlhdGVrIG1haWxpbmcgbGlzdApMaW51eC1tZWRpYXRla0BsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtbWVkaWF0ZWsK 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=-4.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 850C5C433C1 for ; Sat, 27 Mar 2021 21:47:43 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 1EC1F61966 for ; Sat, 27 Mar 2021 21:47:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1EC1F61966 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org 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=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Subject:Cc:To: From:Message-ID:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=U4IX9Wb6eXXuGLDGQ34O/0eOxfXOpu53vWe8yUDLZJs=; b=mTOgbgpIKjhG6hPt5/MgPzTG6 dWLgctLFwsORmx7MIvgoPsXUPOfUx+bJOk1+OmXs9czNRoXeFzJvcf9oePyE065am1VnpZxehje8P 8yrvHAp4dEJLnMXJTR9RJbeSnlWRulvtn5YxqABf6TgIcIUC9IxoY/QN6i6fDj+UuaNsuPlIJvFaK hdyIGUWIGgXc0s98pPc4fgM89bItHnNa9f1kWgHGkuynjYjTpGd9Y3P5Hz5FJmT7NtOVfHIERJ1Qf FuQzLgmmEuPjhOo7rHDyv8UaSZtZkgzK64YuWW6xuLm6RoGbbtw6xvxmM3XT03Kp2jfaNqDahiWbS PLVh0JNfQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lQGkv-005Yuz-Qf; Sat, 27 Mar 2021 21:46:07 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lQGkr-005YuM-0O; Sat, 27 Mar 2021 21:46:03 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 50C7D601FE; Sat, 27 Mar 2021 21:45:57 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=wait-a-minute.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1lQGkl-004BpL-9c; Sat, 27 Mar 2021 21:45:55 +0000 Date: Sat, 27 Mar 2021 21:45:54 +0000 Message-ID: <87mtuofey5.wl-maz@kernel.org> From: Marc Zyngier To: Pali =?UTF-8?B?Um9ow6Fy?= Cc: Jianjun Wang , Bjorn Helgaas , Rob Herring , Lorenzo Pieralisi , Ryder Lee , Philipp Zabel , Matthias Brugger , linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, Krzysztof Wilczyski Subject: Re: [v9,5/7] PCI: mediatek-gen3: Add MSI support In-Reply-To: <20210327202904.nvn7tfodmc2xw23l@pali> References: <20210324030510.29177-1-jianjun.wang@mediatek.com> <20210324030510.29177-6-jianjun.wang@mediatek.com> <20210327192837.4rr46oeiuokritlc@pali> <87o8f4fkkh.wl-maz@kernel.org> <20210327202904.nvn7tfodmc2xw23l@pali> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: pali@kernel.org, jianjun.wang@mediatek.com, bhelgaas@google.com, robh+dt@kernel.org, lorenzo.pieralisi@arm.com, ryder.lee@mediatek.com, p.zabel@pengutronix.de, matthias.bgg@gmail.com, linux-pci@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, youlin.pei@mediatek.com, chuanjia.liu@mediatek.com, qizhong.cheng@mediatek.com, sin_jieyang@mediatek.com, drinkcat@chromium.org, Rex-BC.Chen@mediatek.com, anson.chuang@mediatek.com, kw@linux.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210327_214601_395241_31A1E1A4 X-CRM114-Status: GOOD ( 38.72 ) 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 T24gU2F0LCAyNyBNYXIgMjAyMSAyMDoyOTowNCArMDAwMCwKUGFsaSBSb2jDoXIgPHBhbGlAa2Vy bmVsLm9yZz4gd3JvdGU6Cj4gCj4gT24gU2F0dXJkYXkgMjcgTWFyY2ggMjAyMSAxOTo0NDozMCBN YXJjIFp5bmdpZXIgd3JvdGU6Cj4gPiBPbiBTYXQsIDI3IE1hciAyMDIxIDE5OjI4OjM3ICswMDAw LAo+ID4gUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4gd3JvdGU6Cj4gPiA+IAo+ID4gPiBP biBXZWRuZXNkYXkgMjQgTWFyY2ggMjAyMSAxMTowNTowOCBKaWFuanVuIFdhbmcgd3JvdGU6Cj4g PiA+ID4gK3N0YXRpYyB2b2lkIG10a19wY2llX21zaV9oYW5kbGVyKHN0cnVjdCBtdGtfcGNpZV9w b3J0ICpwb3J0LCBpbnQgc2V0X2lkeCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IG10a19t c2lfc2V0ICptc2lfc2V0ID0gJnBvcnQtPm1zaV9zZXRzW3NldF9pZHhdOwo+ID4gPiA+ICsJdW5z aWduZWQgbG9uZyBtc2lfZW5hYmxlLCBtc2lfc3RhdHVzOwo+ID4gPiA+ICsJdW5zaWduZWQgaW50 IHZpcnE7Cj4gPiA+ID4gKwlpcnFfaHdfbnVtYmVyX3QgYml0LCBod2lycTsKPiA+ID4gPiArCj4g PiA+ID4gKwltc2lfZW5hYmxlID0gcmVhZGxfcmVsYXhlZChtc2lfc2V0LT5iYXNlICsgUENJRV9N U0lfU0VUX0VOQUJMRV9PRkZTRVQpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWRvIHsKPiA+ID4gPiAr CQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChtc2lfc2V0LT5iYXNlICsKPiA+ID4gPiArCQkJ CQkgICBQQ0lFX01TSV9TRVRfU1RBVFVTX09GRlNFVCk7Cj4gPiA+ID4gKwkJbXNpX3N0YXR1cyAm PSBtc2lfZW5hYmxlOwo+ID4gPiA+ICsJCWlmICghbXNpX3N0YXR1cykKPiA+ID4gPiArCQkJYnJl YWs7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCWZvcl9lYWNoX3NldF9iaXQoYml0LCAmbXNpX3N0YXR1 cywgUENJRV9NU0lfSVJRU19QRVJfU0VUKSB7Cj4gPiA+ID4gKwkJCWh3aXJxID0gYml0ICsgc2V0 X2lkeCAqIFBDSUVfTVNJX0lSUVNfUEVSX1NFVDsKPiA+ID4gPiArCQkJdmlycSA9IGlycV9maW5k X21hcHBpbmcocG9ydC0+bXNpX2JvdHRvbV9kb21haW4sIGh3aXJxKTsKPiA+ID4gPiArCQkJZ2Vu ZXJpY19oYW5kbGVfaXJxKHZpcnEpOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCX0gd2hpbGUgKHRy dWUpOwo+ID4gPiAKPiA+ID4gSGVsbG8hCj4gPiA+IAo+ID4gPiBKdXN0IGEgcXVlc3Rpb24sIGNh bm5vdCB0aGlzIHdoaWxlLWxvb3AgY2F1c2UgYmxvY2sgb2YgcHJvY2Vzc2luZyBvdGhlcgo+ID4g PiBpbnRlcnJ1cHRzPwo+ID4gCj4gPiBUaGlzIGlzIGEgbGV2ZWwgaW50ZXJydXB0LiBZb3UgZG9u J3QgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gaGFuZGxlIGl0Cj4gPiBpbW1lZGlhdGVseSwgYWx0 aG91Z2ggYW4gYWx0ZXJuYXRpdmUgd291bGQgYmUgdG8gbWFzayBpdCBhbmQgZGVhbCB3aXRoCj4g PiBpdCBpbiBhIHRocmVhZC4gQW5kIHNpbmNlIExpbnV4IGRvZXNuJ3QgZGVhbCB3aXRoIGludGVy cnVwdCBwcmlvcml0eSwKPiA+IGEgc2NyZWFtaW5nIGludGVycnVwdCBpcyBuZXZlciBhIGdvb2Qg dGhpbmcuCj4gCj4gSSBzZWUuIFNvbWV0aGluZyBsaWtlICJpbnRlcnJ1cHQgcHJpb3JpdHkiICh3 aGljaCBkb2VzIG5vdCBleGlzdD8pIHdvdWxkCj4gYmUgbmVlZGVkIHRvIGhhbmRsZSBpdC4KCklu dGVycnVwdCBwcmlvcml0aWVzIGRlZmluaXRlbHkgZXhpc3QsIGJ1dCBMaW51eCBkb2Vzbid0IHVz ZQp0aGVtLiBGdXJ0aGVybW9yZSwgVGhpcyB3b3VsZG4ndCBiZSByZWxldmFudCBoZXJlIGFzIHlv dSBnZXQgYSBidW5jaApvZiBNU0kgbXVsdGlwbGV4ZWQgb250byBhIHNpbmdsZSBvbmUuIFdoZXJl IHdvdWxkIHlvdSBhcHBseSB0aGUKcHJpb3JpdHk/Cgo+IAo+ID4gPiBJIGhhdmUgZG9uZSB0ZXN0 cyB3aXRoIGRpZmZlcmVudCBIVyAoYWFyZHZhcmspIGJ1dCB3aXRoIHNhbWUgd2hpbGUodHJ1ZSkK PiA+ID4gbG9vcCBsb2dpYy4gT25lIFhIQ0kgUENJZSBjb250cm9sbGVyIHdhcyBzZW5kaW5nIE1T SSBpbnRlcnJ1cHRzIHRvbyBmYXN0Cj4gPiA+IGFuZCBpbnRlcnJ1cHQgaGFuZGxlciB3aXRoIHRo aXMgd2hpbGUodHJ1ZSkgbG9naWMgd2FzIGluIGluZmluaXRlIGxvb3AuCj4gPiA+IER1cmluZyBv bmUgSVJRIGl0IHdhcyBjYWxsaW5nIGluZmluaXRlIG1hbnkgdGltZXMgZ2VuZXJpY19oYW5kbGVf aXJxKCkKPiA+ID4gYXMgSFcgd2FzIGZlZWRpbmcgbmV3IGFuZCBuZXcgTVNJIGh3aXJxIGludG8g c3RhdHVzIHJlZ2lzdGVyLgo+ID4gCj4gPiBEZWZpbmUgInRvbyBmYXN0Ii4KPiAKPiBGYXN0IC0g bmV4dCBpbnRlcnJ1cHQgY29tZXMgcHJpb3IgY2hlY2tpbmcgaWYgd2hpbGUodHJ1ZSktbG9vcCBz aG91bGQgc3RvcC4KClRoYXQncyBkZWZpbml0ZWx5IG5vdCBzb21ldGhpbmcgeW91IGNhbiBlYXNp bHkgZml4IGF0IHRoZSBpbnRlcnJ1cHQKaGFuZGxpbmcgbGV2ZWwuIFlvdSBuZWVkIHRvIHByZXZl bnQgdGhpcyBmcm9tIGhhcHBlbmluZy4gVGhhdCdzCnVzdWFsbHkgdGhlIHJlc3VsdCBvZiBhIG1p c3Byb2dyYW1taW5nIG9yIGEgSFcgYnVnLgoKPiA+IElmIHNvbWV0aGluZyBpbiB0aGUgc3lzdGVt IGlzIGFibGUgdG8gcHJvZ3JhbSB0aGUKPiA+IFhIQ0kgZGV2aWNlIGluIHN1Y2ggYSB3YXkgdGhh dCBpdCBjYXVzZXMgYSBzY3JlYW1pbmcgaW50ZXJydXB0LCB0aGF0J3MKPiA+IHRoZSBwbGFjZSB0 byBsb29rIGZvciBwcm9ibGVtcywgYW5kIHByb2JhYmx5IG5vdCBpbiB0aGUgaW50ZXJydXB0Cj4g PiBoYW5kbGluZyBpdHNlbGYsIHdoaWNoIGRvZXMgd2hhdCBpdCBpcyBzdXBwb3NlZCB0byBkby4K PiA+IAo+ID4gPiBCdXQgdGhpcyBpcyBkaWZmZXJlbnQgSFcsIHNvIGl0IGNhbiBoYXZlIGRpZmZl cmVudCBiZWhhdmlvciBhbmQgZG9lcyBub3QKPiA+ID4gaGF2ZSB0byBjYXVzZSBhYm92ZSBpc3N1 ZS4KPiA+ID4gCj4gPiA+IEkgaGF2ZSBqdXN0IHNwb3R0ZWQgc2FtZSBjb2RlIHBhdHRlcm4gZm9y IHByb2Nlc3NpbmcgTVNJIGludGVycnVwdHMuLi4KPiA+IAo+ID4gVGhpcyBpcyBhIGNvbW1vbiBw YXR0ZXJuIHRoYXQgeW91IHdpbGwgZmluZCBpbiBwcmV0dHkgbXVjaCBhbnkKPiA+IGludGVycnVw dCBoYW5kbGluZy9kZW11eGluZywgYW5kIGlzIGRvbmUgdGhpcyB3YXkgd2hlbiB0aGUgY29zdCBv Zgo+ID4gdGFraW5nIHRoZSBleGNlcHRpb24gaXMgaGlnaCBjb21wYXJlZCB0byB0aGF0IG9mIGhh bmRsaW5nIGl0Lgo+IAo+IEFuZCB3b3VsZCBub3QgaGVscCBpZiB3aGlsZSh0cnVlKS1sb29wIGlz IHJlcGxhY2VkIGJ5IGxvb3Agd2l0aCB1cHBlcgo+IGxpbWl0IG9mIGl0ZXJhdGlvbnM/IE9yIGp1 c3QgY2FsbCBvbmx5IG9uZSBpdGVyYXRpb24/CgpUaGF0IHdvdWxkbid0IGNoYW5nZSBtdWNoOiB5 b3Ugd291bGQgc3RpbGwgaGF2ZSB0aGUgaW50ZXJydXB0IGJlaW5nCnBlbmRpbmcsIGFuZCBpdCB3 b3VsZCBmaXJlIGFnYWluIGF0IHRoZSBlYXJsaWVzdCBvcHBvcnR1bml0eS4KCkF0IGJlc3QsIHRo ZSByb290IGludGVycnVwdCBjb250cm9sbGVyIGlzIGFibGUgdG8gcHJlc2VudCB5b3Ugd2l0aAph bm90aGVyIGludGVycnVwdCBiZWZvcmUgZm9yY2luZyB5b3UgdG8gZGVhbCB3aXRoIHRoZSBvbmUg eW91IGhhdmUKaWdub3JlZCBhZ2Fpbi4gQnV0IHlvdSBjYW5ub3QgcmVseSBvbiB0aGF0IGVpdGhl ci4KCkFuZCB0byBiZSBob25lc3QsIG90aGVyIGludGVycnVwdHMgYXJlIG9ubHkgYSBwYXJ0IG9m IHRoZSBwcm9ibGVtIHlvdQphcmUgZGVzY3JpYmluZy4gV2l0aCBhIHNjcmVhbWluZyBpbnRlcnJ1 cHQsIHlvdSBjYW4ndCBleGVjdXRlCnVzZXJzcGFjZS4gVGhpcyBpcyBhcyBiYWQgYXMgaXQgZ2V0 cy4KCglNLgoKLS0gCldpdGhvdXQgZGV2aWF0aW9uIGZyb20gdGhlIG5vcm0sIHByb2dyZXNzIGlz IG5vdCBwb3NzaWJsZS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK