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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EAD82C433F5 for ; Wed, 5 Jan 2022 18:13:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242780AbiAESNM (ORCPT ); Wed, 5 Jan 2022 13:13:12 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]:39022 "EHLO dfw.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242736AbiAESNK (ORCPT ); Wed, 5 Jan 2022 13:13:10 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 28B3861803; Wed, 5 Jan 2022 18:13:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 43054C36AE0; Wed, 5 Jan 2022 18:13:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641406389; bh=XFXjmqXYuibwyK92ypw+JHMrcOAcsGTLlMLcfXAm7/k=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hRDmFBL13tN6aEFFUwG14hsTkcsWsb3or9njILqk98ZaK6fwcemv3aDdQ/d4rn5vv OI3nqTeKZk+csF7hvZ9irjsoXlkJntNnqikhP6hXr/HnG+q9VTb0Hxhb9jFyAeTRP/ rdjmjlXYiTqB0Plwh4gtxN7RhcU96vhAzKjvne/LSCvQH2vvn6incXxjzGLPfRt36t iUY3dZZdgdQktg4EbZdOjwx8z+kfh8vOsB5Lf3yEzExBhtutbjoMREKhRjLvXvMJRn r3yV6wb2L7rOPmZXIn6OvZ7m0Pby19QOiap+wUhXJRWxkrcy4cE/E4eljFz9dZQ4EL l0OY3UopQrN6Q== Received: by pali.im (Postfix) id 7629A82A; Wed, 5 Jan 2022 19:13:06 +0100 (CET) Date: Wed, 5 Jan 2022 19:13:06 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: Ray Jui Cc: Roman Bacik , Lorenzo Pieralisi , Rob Herring , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , bcm-kernel-feedback-list@broadcom.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] PCI: iproc: Set all 24 bits of PCI class code Message-ID: <20220105181306.mkratasqg36tjf4e@pali> References: <20220105093552.27542-1-pali@kernel.org> <244e74d9-1b46-2abc-6c2a-c089fa5b68b4@broadcom.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <244e74d9-1b46-2abc-6c2a-c089fa5b68b4@broadcom.com> User-Agent: NeoMutt/20180716 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Hello! On Wednesday 05 January 2022 09:51:48 Ray Jui wrote: > Hi Pali, > > On 1/5/2022 1:35 AM, Pali Rohár wrote: > > Register 0x43c in its low 24 bits contains PCI class code. > > > > Update code to set all 24 bits of PCI class code and not only upper 16 bits > > of PCI class code. > > > > Use a new macro PCI_CLASS_BRIDGE_PCI_NORMAL which represents whole 24 bits > > of normal PCI bridge class. > > > > Signed-off-by: Pali Rohár > > > > --- > > Roman helped me with this change and confirmed that class code is stored > > really in bits [23:0] of custom register 0x43c (normally class code is > > stored in bits [31:8] of pci register 0x08). > > > > This patch depends on patch which adds PCI_CLASS_BRIDGE_PCI_NORMAL macro: > > https://lore.kernel.org/linux-pci/20211220145140.31898-1-pali@kernel.org/ > > --- > > drivers/pci/controller/pcie-iproc.c | 9 ++++----- > > 1 file changed, 4 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c > > index 3df4ab209253..2519201b0e51 100644 > > --- a/drivers/pci/controller/pcie-iproc.c > > +++ b/drivers/pci/controller/pcie-iproc.c > > @@ -789,14 +789,13 @@ static int iproc_pcie_check_link(struct iproc_pcie *pcie) > > return -EFAULT; > > } > > > > - /* force class to PCI_CLASS_BRIDGE_PCI (0x0604) */ > > + /* force class to PCI_CLASS_BRIDGE_PCI_NORMAL (0x060400) */ > > #define PCI_BRIDGE_CTRL_REG_OFFSET 0x43c > > -#define PCI_CLASS_BRIDGE_MASK 0xffff00 > > -#define PCI_CLASS_BRIDGE_SHIFT 8 > > +#define PCI_BRIDGE_CTRL_REG_CLASS_MASK 0xffffff > > iproc_pci_raw_config_read32(pcie, 0, PCI_BRIDGE_CTRL_REG_OFFSET, > > 4, &class); > > - class &= ~PCI_CLASS_BRIDGE_MASK; > > - class |= (PCI_CLASS_BRIDGE_PCI << PCI_CLASS_BRIDGE_SHIFT); > > + class &= ~PCI_BRIDGE_CTRL_REG_CLASS_MASK; > > + class |= PCI_CLASS_BRIDGE_PCI_NORMAL; > > iproc_pci_raw_config_write32(pcie, 0, PCI_BRIDGE_CTRL_REG_OFFSET, > > 4, class); > > > > I have two comments: > > 1. You do not seem to generate the email list using the > get_maintainer.pl script, so the two maintainers for Broadcom ARM > architecture (Ray Jui and Scott Branden) are left out. Ou, sorry for that! I have generated this patch for U-Boot and Linux kernel and probably mixed or forgot to include correct recipients for correct project. > 2. I suppose 'PCI_CLASS_BRIDGE_PCI_NORMAL' is defined in some common PCI > header in a separate patch as described in the commit message. Then how > come these patches are not constructed with a patch series? Yes, PCI_CLASS_BRIDGE_PCI_NORMAL is a new constant for common pci header file defined in patch linked in commit message. https://lore.kernel.org/linux-pci/20211220145140.31898-1-pali@kernel.org/ Originally I included this change in v1 of linked patch in December but I realized that it does not match standard PCI config space (different offset 0x43c vs 0x08 and also different shift 0x8 vs 0x0) and probably there is something either incorrect or really non-standard. So later in December I dropped iproc_pcie_check_link() change in v2 of the linked patch where is introduced PCI_CLASS_BRIDGE_PCI_NORMAL and now sent new change for iproc_pcie_check_link() separately. Technically, linked patch in commit message is just extracting code into the common macros without any functional changed. But change in this iproc_pcie_check_link() has also functional change as now also lower 8 bits of class code are changed. So in my opinion this patch should be really separate of linked patch. I hope that Lorenzo and Bjorn take patches in correct order... > Other than, the change itself is exactly what I sent to Roman and looks > good to me. Thanks. > > Acked-by: Ray Jui Perfect! 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 B42C9C433EF for ; Wed, 5 Jan 2022 18:14:30 +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=pGbJv2yNUuqGuwc9S3aVLP84KdosTRIj94hVI2xVAko=; b=Un8sdzz9s0h6GQ u7l3wl7BH+h5QfadeP3Qf1U+U2906bl9hk1PBlQpcGe8eY509crabZHdOuw+p7DFJfpNCGK2z6zU4 y+kMY93suv2YkI/wFwYjdauk5ZvUvHBCf1+QVBkk4C+1DdYzG81NUcLrNWq+vCE48CS3kaS1xL1sB ZqBvgXrfPgID04h8QR/C2DBBh9l/e/dIeXO2ZPnQGkKj7nqyM70xyZo4fULGjZOF4N4J1mVBhGXAP StrUP8JosujejgcnoOe15MQD6IduK8UqOJIkSGK9UjftmKoiBLXeyLShAgxoyLBrjI6e7HMY2bcmH R+cDS9H7LrjQnSSEQ3CA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n5Amg-00FZPb-4f; Wed, 05 Jan 2022 18:13:14 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n5Amc-00FZPC-O4 for linux-arm-kernel@lists.infradead.org; Wed, 05 Jan 2022 18:13:12 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2FF3461883; Wed, 5 Jan 2022 18:13:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 43054C36AE0; Wed, 5 Jan 2022 18:13:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641406389; bh=XFXjmqXYuibwyK92ypw+JHMrcOAcsGTLlMLcfXAm7/k=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hRDmFBL13tN6aEFFUwG14hsTkcsWsb3or9njILqk98ZaK6fwcemv3aDdQ/d4rn5vv OI3nqTeKZk+csF7hvZ9irjsoXlkJntNnqikhP6hXr/HnG+q9VTb0Hxhb9jFyAeTRP/ rdjmjlXYiTqB0Plwh4gtxN7RhcU96vhAzKjvne/LSCvQH2vvn6incXxjzGLPfRt36t iUY3dZZdgdQktg4EbZdOjwx8z+kfh8vOsB5Lf3yEzExBhtutbjoMREKhRjLvXvMJRn r3yV6wb2L7rOPmZXIn6OvZ7m0Pby19QOiap+wUhXJRWxkrcy4cE/E4eljFz9dZQ4EL l0OY3UopQrN6Q== Received: by pali.im (Postfix) id 7629A82A; Wed, 5 Jan 2022 19:13:06 +0100 (CET) Date: Wed, 5 Jan 2022 19:13:06 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: Ray Jui Cc: Roman Bacik , Lorenzo Pieralisi , Rob Herring , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , bcm-kernel-feedback-list@broadcom.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] PCI: iproc: Set all 24 bits of PCI class code Message-ID: <20220105181306.mkratasqg36tjf4e@pali> References: <20220105093552.27542-1-pali@kernel.org> <244e74d9-1b46-2abc-6c2a-c089fa5b68b4@broadcom.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <244e74d9-1b46-2abc-6c2a-c089fa5b68b4@broadcom.com> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220105_101311_276411_84B6A9EB X-CRM114-Status: GOOD ( 34.68 ) 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 SGVsbG8hCgpPbiBXZWRuZXNkYXkgMDUgSmFudWFyeSAyMDIyIDA5OjUxOjQ4IFJheSBKdWkgd3Jv dGU6Cj4gSGkgUGFsaSwKPiAKPiBPbiAxLzUvMjAyMiAxOjM1IEFNLCBQYWxpIFJvaMOhciB3cm90 ZToKPiA+IFJlZ2lzdGVyIDB4NDNjIGluIGl0cyBsb3cgMjQgYml0cyBjb250YWlucyBQQ0kgY2xh c3MgY29kZS4KPiA+IAo+ID4gVXBkYXRlIGNvZGUgdG8gc2V0IGFsbCAyNCBiaXRzIG9mIFBDSSBj bGFzcyBjb2RlIGFuZCBub3Qgb25seSB1cHBlciAxNiBiaXRzCj4gPiBvZiBQQ0kgY2xhc3MgY29k ZS4KPiA+IAo+ID4gVXNlIGEgbmV3IG1hY3JvIFBDSV9DTEFTU19CUklER0VfUENJX05PUk1BTCB3 aGljaCByZXByZXNlbnRzIHdob2xlIDI0IGJpdHMKPiA+IG9mIG5vcm1hbCBQQ0kgYnJpZGdlIGNs YXNzLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwub3Jn Pgo+ID4gCj4gPiAtLS0KPiA+IFJvbWFuIGhlbHBlZCBtZSB3aXRoIHRoaXMgY2hhbmdlIGFuZCBj b25maXJtZWQgdGhhdCBjbGFzcyBjb2RlIGlzIHN0b3JlZAo+ID4gcmVhbGx5IGluIGJpdHMgWzIz OjBdIG9mIGN1c3RvbSByZWdpc3RlciAweDQzYyAobm9ybWFsbHkgY2xhc3MgY29kZSBpcwo+ID4g c3RvcmVkIGluIGJpdHMgWzMxOjhdIG9mIHBjaSByZWdpc3RlciAweDA4KS4KPiA+IAo+ID4gVGhp cyBwYXRjaCBkZXBlbmRzIG9uIHBhdGNoIHdoaWNoIGFkZHMgUENJX0NMQVNTX0JSSURHRV9QQ0lf Tk9STUFMIG1hY3JvOgo+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGNpLzIwMjEx MjIwMTQ1MTQwLjMxODk4LTEtcGFsaUBrZXJuZWwub3JnLwo+ID4gLS0tCj4gPiAgZHJpdmVycy9w Y2kvY29udHJvbGxlci9wY2llLWlwcm9jLmMgfCA5ICsrKystLS0tLQo+ID4gIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtaXByb2MuYyBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvcGNpZS1pcHJvYy5jCj4gPiBpbmRleCAzZGY0YWIyMDkyNTMuLjI1MTkyMDFiMGU1MSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1pcHJvYy5jCj4gPiAr KysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtaXByb2MuYwo+ID4gQEAgLTc4OSwxNCAr Nzg5LDEzIEBAIHN0YXRpYyBpbnQgaXByb2NfcGNpZV9jaGVja19saW5rKHN0cnVjdCBpcHJvY19w Y2llICpwY2llKQo+ID4gIAkJcmV0dXJuIC1FRkFVTFQ7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JLyog Zm9yY2UgY2xhc3MgdG8gUENJX0NMQVNTX0JSSURHRV9QQ0kgKDB4MDYwNCkgKi8KPiA+ICsJLyog Zm9yY2UgY2xhc3MgdG8gUENJX0NMQVNTX0JSSURHRV9QQ0lfTk9STUFMICgweDA2MDQwMCkgKi8K PiA+ICAjZGVmaW5lIFBDSV9CUklER0VfQ1RSTF9SRUdfT0ZGU0VUCTB4NDNjCj4gPiAtI2RlZmlu ZSBQQ0lfQ0xBU1NfQlJJREdFX01BU0sJCTB4ZmZmZjAwCj4gPiAtI2RlZmluZSBQQ0lfQ0xBU1Nf QlJJREdFX1NISUZUCQk4Cj4gPiArI2RlZmluZSBQQ0lfQlJJREdFX0NUUkxfUkVHX0NMQVNTX01B U0sJMHhmZmZmZmYKPiA+ICAJaXByb2NfcGNpX3Jhd19jb25maWdfcmVhZDMyKHBjaWUsIDAsIFBD SV9CUklER0VfQ1RSTF9SRUdfT0ZGU0VULAo+ID4gIAkJCQkgICAgNCwgJmNsYXNzKTsKPiA+IC0J Y2xhc3MgJj0gflBDSV9DTEFTU19CUklER0VfTUFTSzsKPiA+IC0JY2xhc3MgfD0gKFBDSV9DTEFT U19CUklER0VfUENJIDw8IFBDSV9DTEFTU19CUklER0VfU0hJRlQpOwo+ID4gKwljbGFzcyAmPSB+ UENJX0JSSURHRV9DVFJMX1JFR19DTEFTU19NQVNLOwo+ID4gKwljbGFzcyB8PSBQQ0lfQ0xBU1Nf QlJJREdFX1BDSV9OT1JNQUw7Cj4gPiAgCWlwcm9jX3BjaV9yYXdfY29uZmlnX3dyaXRlMzIocGNp ZSwgMCwgUENJX0JSSURHRV9DVFJMX1JFR19PRkZTRVQsCj4gPiAgCQkJCSAgICAgNCwgY2xhc3Mp Owo+ID4gIAo+IAo+IEkgaGF2ZSB0d28gY29tbWVudHM6Cj4gCj4gMS4gWW91IGRvIG5vdCBzZWVt IHRvIGdlbmVyYXRlIHRoZSBlbWFpbCBsaXN0IHVzaW5nIHRoZQo+IGdldF9tYWludGFpbmVyLnBs IHNjcmlwdCwgc28gdGhlIHR3byBtYWludGFpbmVycyBmb3IgQnJvYWRjb20gQVJNCj4gYXJjaGl0 ZWN0dXJlIChSYXkgSnVpIGFuZCBTY290dCBCcmFuZGVuKSBhcmUgbGVmdCBvdXQuCgpPdSwgc29y cnkgZm9yIHRoYXQhIEkgaGF2ZSBnZW5lcmF0ZWQgdGhpcyBwYXRjaCBmb3IgVS1Cb290IGFuZCBM aW51eAprZXJuZWwgYW5kIHByb2JhYmx5IG1peGVkIG9yIGZvcmdvdCB0byBpbmNsdWRlIGNvcnJl Y3QgcmVjaXBpZW50cyBmb3IKY29ycmVjdCBwcm9qZWN0LgoKPiAyLiBJIHN1cHBvc2UgJ1BDSV9D TEFTU19CUklER0VfUENJX05PUk1BTCcgaXMgZGVmaW5lZCBpbiBzb21lIGNvbW1vbiBQQ0kKPiBo ZWFkZXIgaW4gYSBzZXBhcmF0ZSBwYXRjaCBhcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1pdCBtZXNz YWdlLiBUaGVuIGhvdwo+IGNvbWUgdGhlc2UgcGF0Y2hlcyBhcmUgbm90IGNvbnN0cnVjdGVkIHdp dGggYSBwYXRjaCBzZXJpZXM/CgpZZXMsIFBDSV9DTEFTU19CUklER0VfUENJX05PUk1BTCBpcyBh IG5ldyBjb25zdGFudCBmb3IgY29tbW9uIHBjaSBoZWFkZXIKZmlsZSBkZWZpbmVkIGluIHBhdGNo IGxpbmtlZCBpbiBjb21taXQgbWVzc2FnZS4KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgt cGNpLzIwMjExMjIwMTQ1MTQwLjMxODk4LTEtcGFsaUBrZXJuZWwub3JnLwoKT3JpZ2luYWxseSBJ IGluY2x1ZGVkIHRoaXMgY2hhbmdlIGluIHYxIG9mIGxpbmtlZCBwYXRjaCBpbiBEZWNlbWJlciBi dXQKSSByZWFsaXplZCB0aGF0IGl0IGRvZXMgbm90IG1hdGNoIHN0YW5kYXJkIFBDSSBjb25maWcg c3BhY2UgKGRpZmZlcmVudApvZmZzZXQgMHg0M2MgdnMgMHgwOCBhbmQgYWxzbyBkaWZmZXJlbnQg c2hpZnQgMHg4IHZzIDB4MCkgYW5kIHByb2JhYmx5CnRoZXJlIGlzIHNvbWV0aGluZyBlaXRoZXIg aW5jb3JyZWN0IG9yIHJlYWxseSBub24tc3RhbmRhcmQuIFNvIGxhdGVyIGluCkRlY2VtYmVyIEkg ZHJvcHBlZCBpcHJvY19wY2llX2NoZWNrX2xpbmsoKSBjaGFuZ2UgaW4gdjIgb2YgdGhlIGxpbmtl ZApwYXRjaCB3aGVyZSBpcyBpbnRyb2R1Y2VkIFBDSV9DTEFTU19CUklER0VfUENJX05PUk1BTCBh bmQgbm93IHNlbnQgbmV3CmNoYW5nZSBmb3IgaXByb2NfcGNpZV9jaGVja19saW5rKCkgc2VwYXJh dGVseS4KClRlY2huaWNhbGx5LCBsaW5rZWQgcGF0Y2ggaW4gY29tbWl0IG1lc3NhZ2UgaXMganVz dCBleHRyYWN0aW5nIGNvZGUgaW50bwp0aGUgY29tbW9uIG1hY3JvcyB3aXRob3V0IGFueSBmdW5j dGlvbmFsIGNoYW5nZWQuIEJ1dCBjaGFuZ2UgaW4gdGhpcwppcHJvY19wY2llX2NoZWNrX2xpbmso KSBoYXMgYWxzbyBmdW5jdGlvbmFsIGNoYW5nZSBhcyBub3cgYWxzbyBsb3dlciA4CmJpdHMgb2Yg Y2xhc3MgY29kZSBhcmUgY2hhbmdlZC4gU28gaW4gbXkgb3BpbmlvbiB0aGlzIHBhdGNoIHNob3Vs ZCBiZQpyZWFsbHkgc2VwYXJhdGUgb2YgbGlua2VkIHBhdGNoLgoKSSBob3BlIHRoYXQgTG9yZW56 byBhbmQgQmpvcm4gdGFrZSBwYXRjaGVzIGluIGNvcnJlY3Qgb3JkZXIuLi4KCj4gT3RoZXIgdGhh biwgdGhlIGNoYW5nZSBpdHNlbGYgaXMgZXhhY3RseSB3aGF0IEkgc2VudCB0byBSb21hbiBhbmQg bG9va3MKPiBnb29kIHRvIG1lLiBUaGFua3MuCj4gCj4gQWNrZWQtYnk6IFJheSBKdWkgPHJheS5q dWlAYnJvYWRjb20uY29tPgoKUGVyZmVjdCEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK