From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4CE36242D69; Fri, 26 Sep 2025 21:10:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758921025; cv=none; b=pfaymNl80G50DCg1HU8RP+oQ2AaV1YUNvvxmuauGPCu/Vnh+fgkvCsojSmiFuJzuzbhksXs6cLUI+wmPm1p0euls4M0tr6/K4rDFTs+bGJMv5lWFgURW6+FY9sVEsjEUbTn6en4YZ7o5aonUhqlW+TpyRA+5pFaNhL0vvPdUGmc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758921025; c=relaxed/simple; bh=/1ElN3uhG06OJ2qKUXgLudpPHVrywtGPulcS4+9P0tU=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition:In-Reply-To; b=p/MmgySJYeQd94Nv0RdlBTx0LxRwQO8XvGUaxr3BAmA8EAwX0mo5WefBKPD8u+Zm+HSK73aC0UXh4tyIiXLDK6On3YvQ/+wvOtVBLsTOgfSGgsIYRannZyw48AGUeNhs02EYKvSbg63EwJtTciKY5fbH06Xtzp1FXKxRhG8Y55k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mhcAYVQ5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mhcAYVQ5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3445C4CEF4; Fri, 26 Sep 2025 21:10:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758921024; bh=/1ElN3uhG06OJ2qKUXgLudpPHVrywtGPulcS4+9P0tU=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=mhcAYVQ58DVBObBw74hQf07QzZ/ihSB0Z5sfR7lMU69jxt5bJmgEQuljnYL3KW5I7 0mg5ehePi7OyHF25w/YkphKl6mFNj7i7j60YXjKHrciJggfyFObj7UhQ5qGMjyRty7 vDwE15607DBwKxXRKZXSevpZ/6u3j+73gyIANt/endOiXJrzzM/B0GI3X/KZUy2DZt polCzEpXbZ0ciqu++0mO8vHQamJcnhVecmVnk258EeXgf2OS6VQYUikLG2am/ZPHbZ /qr8UbfcYz8yVWzZgnFqQlyINA1GSDsdX5f8+F2jfLUBKguZUtltixot9UQ7/1pIxi iHXZI2WdQeYOw== Date: Fri, 26 Sep 2025 16:10:23 -0500 From: Bjorn Helgaas To: Randolph Lin Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, krzk+dt@kernel.org, conor+dt@kernel.org, alex@ghiti.fr, aou@eecs.berkeley.edu, palmer@dabbelt.com, paul.walmsley@sifive.com, ben717@andestech.com, inochiama@gmail.com, thippeswamy.havalige@amd.com, namcao@linutronix.de, shradha.t@samsung.com, randolph.sklin@gmail.com, tim609@andestech.com Subject: Re: [PATCH v3 1/5] PCI: dwc: Skip failed outbound iATU and continue Message-ID: <20250926211023.GA2128495@bhelgaas> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Wed, Sep 24, 2025 at 08:58:11PM +0800, Randolph Lin wrote: > On Tue, Sep 23, 2025 at 09:42:23AM -0500, Bjorn Helgaas wrote: > > On Tue, Sep 23, 2025 at 07:36:43PM +0800, Randolph Lin wrote: > > > Previously, outbound iATU programming included range checks > > > based on hardware limitations. If a configuration did not meet > > > these constraints, the loop would stop immediately. > > > > > > This patch updates the behavior to enhance flexibility. Instead > > > of stopping at the first issue, it now logs a warning with > > > details of the affected window and proceeds to program the > > > remaining iATU entries. > > > > > > This enables partial configuration to complete in cases where > > > some iATU windows may not meet requirements, improving overall > > > compatibility. > > > > It's not really clear why this is needed. I assume it's related > > to dropping qilai_pcie_outbound_atu_addr_valid(). > > Yes, I want to drop the previous atu_addr_valid function. > > > I guess dw_pcie_prog_outbound_atu() must return an error for one > > of the QiLai ranges? Which one, and what exactly is the problem? > > I still suspect something wrong in the devicetree description. > > The main issue is not the returned error; just need to avoid > terminating the process when the configuration exceeds the > hardware’s expected limits. > > There are two methods to fix the issue on the Qilai SoC: > > 1. Simply skip the entries that do not match the designware hardware > iATU limitations. An error will be returned, but it can be ignored. > On the Qilai SoC, the iATU limitation is the 4GB boundary. Qilai SoC > only need to configure iATU support to translate addresses below the > "32-bits" address range. Although 64-bits addresses do not match the > designware hardware iATU limitations, there is no need to configure > 64-bits addresses, since the connection is hard-wired. > > 2. Set the devicetree only 2 viewport for iATU and force using > devicetree value. This is a workaround in the devicetree, but the > fix logic is not easy to document. Instead, we should enforce the > use of the viewport defined in the devicetree and modify the > designware generic code accordingly — using the viewport values from > the devicetree instead of reading them from the designware > registers. Since only two viewports are available for iATU, we > should reserve one for the configuration registers and the other for > 32-bit address access. Therefore, reverse logic still needs to be > added to the designware generic code. > > Method 2 adds excessive complexity to the designware generic code. > Instead, directly configuring the iATU and reporting an error when > the configuration exceeds the hardware iATU limitations is a simpler > and more effective approach to applying the fix. I don't know the DesignWare iATU design very well, so I don't know if this issue is something unique to Qilai or if it's something that could be handled via devicetree. Will look for input/acks from DesignWare maintainers (Jingoo, Mani). > Conclusion: > 1. The iATU needs to be configured for 32-bits address space. > In compliance with hardware limitations. > 2. The iATU needs to be configured for config space. > In compliance with hardware limitations. > 3. The iATU needs to be configured for 64-bit address space. > This does not comply with hardware limitations and will print an error. > As long as it does not return an error value that terminates subsequent > operations, it is acceptable. > Simply skipping this entry when configuring the iATU is acceptable. > > > > Signed-off-by: Randolph Lin > > > --- > > > drivers/pci/controller/dwc/pcie-designware-host.c | 9 +++++---- > > > 1 file changed, 5 insertions(+), 4 deletions(-) > > > > > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c > > > index 952f8594b501..91ee6b903934 100644 > > > --- a/drivers/pci/controller/dwc/pcie-designware-host.c > > > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c > > > @@ -756,7 +756,7 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp) > > > if (resource_type(entry->res) != IORESOURCE_MEM) > > > continue; > > > > > > - if (pci->num_ob_windows <= ++i) > > > + if (pci->num_ob_windows <= i) > > > break; > > > > > > atu.index = i; > > > @@ -773,9 +773,10 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp) > > > > > > ret = dw_pcie_prog_outbound_atu(pci, &atu); > > > if (ret) { > > > - dev_err(pci->dev, "Failed to set MEM range %pr\n", > > > - entry->res); > > > - return ret; > > > + dev_warn(pci->dev, "Failed to set MEM range %pr\n", > > > + entry->res); > > > + } else { > > > + i++; > > > } > > > } > > > > > > -- > > > 2.34.1 > > > > > > > > > _______________________________________________ > > > linux-riscv mailing list > > > linux-riscv@lists.infradead.org > > > http://lists.infradead.org/mailman/listinfo/linux-riscv > > Sincerely, > Randolph 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 8DC17CAC5B8 for ; Fri, 26 Sep 2025 21:10:32 +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: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:References: List-Owner; bh=Sn15iuL49c9HbXmGn3B8+Va288AVG1JH8CztcDxD4iM=; b=gkwmXpMMs1lPjV ltRIRkzg4eqHtwBPZgQ1ndLjxtf52JB9gHUl4wl7OiSDXNyDitNb9v24k2/SnAUSoe3gX1RaF6ZfW kAu+u6By/SCeM8HKIOu0Oi0eJf2L6YuSIAv2iWcPQezibBWJwM9rcq2r6h0yqhq3IzYVaWbA6hOie W2/LBIhDVaPzVUw7OoAyyUl0qXUkiC9euIEFK6GThWeHjxrINYJUGGex+lMPbjxTEZINVY3zFZoTs 5HaCGpDJ2uw1n0aYtClsyiR78+n1YNXHO0ZtAlC39+0EnVQTuEPUGuiERdXWD56BD7F7jAq+fkNC1 XQactyq/KSe7E3pa35Ag==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1v2Fhy-00000004Yc1-2op1; Fri, 26 Sep 2025 21:10:26 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1v2Fhx-00000004YbH-3WwC for linux-riscv@lists.infradead.org; Fri, 26 Sep 2025 21:10:25 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 2E4A761F5B; Fri, 26 Sep 2025 21:10:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3445C4CEF4; Fri, 26 Sep 2025 21:10:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758921024; bh=/1ElN3uhG06OJ2qKUXgLudpPHVrywtGPulcS4+9P0tU=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=mhcAYVQ58DVBObBw74hQf07QzZ/ihSB0Z5sfR7lMU69jxt5bJmgEQuljnYL3KW5I7 0mg5ehePi7OyHF25w/YkphKl6mFNj7i7j60YXjKHrciJggfyFObj7UhQ5qGMjyRty7 vDwE15607DBwKxXRKZXSevpZ/6u3j+73gyIANt/endOiXJrzzM/B0GI3X/KZUy2DZt polCzEpXbZ0ciqu++0mO8vHQamJcnhVecmVnk258EeXgf2OS6VQYUikLG2am/ZPHbZ /qr8UbfcYz8yVWzZgnFqQlyINA1GSDsdX5f8+F2jfLUBKguZUtltixot9UQ7/1pIxi iHXZI2WdQeYOw== Date: Fri, 26 Sep 2025 16:10:23 -0500 From: Bjorn Helgaas To: Randolph Lin Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, krzk+dt@kernel.org, conor+dt@kernel.org, alex@ghiti.fr, aou@eecs.berkeley.edu, palmer@dabbelt.com, paul.walmsley@sifive.com, ben717@andestech.com, inochiama@gmail.com, thippeswamy.havalige@amd.com, namcao@linutronix.de, shradha.t@samsung.com, randolph.sklin@gmail.com, tim609@andestech.com Subject: Re: [PATCH v3 1/5] PCI: dwc: Skip failed outbound iATU and continue Message-ID: <20250926211023.GA2128495@bhelgaas> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBTZXAgMjQsIDIwMjUgYXQgMDg6NTg6MTFQTSArMDgwMCwgUmFuZG9scGggTGluIHdy b3RlOgo+IE9uIFR1ZSwgU2VwIDIzLCAyMDI1IGF0IDA5OjQyOjIzQU0gLTA1MDAsIEJqb3JuIEhl bGdhYXMgd3JvdGU6Cj4gPiBPbiBUdWUsIFNlcCAyMywgMjAyNSBhdCAwNzozNjo0M1BNICswODAw LCBSYW5kb2xwaCBMaW4gd3JvdGU6Cj4gPiA+IFByZXZpb3VzbHksIG91dGJvdW5kIGlBVFUgcHJv Z3JhbW1pbmcgaW5jbHVkZWQgcmFuZ2UgY2hlY2tzCj4gPiA+IGJhc2VkIG9uIGhhcmR3YXJlIGxp bWl0YXRpb25zLiBJZiBhIGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBtZWV0Cj4gPiA+IHRoZXNlIGNv bnN0cmFpbnRzLCB0aGUgbG9vcCB3b3VsZCBzdG9wIGltbWVkaWF0ZWx5Lgo+ID4gPgo+ID4gPiBU aGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGJlaGF2aW9yIHRvIGVuaGFuY2UgZmxleGliaWxpdHkuIElu c3RlYWQKPiA+ID4gb2Ygc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGlzc3VlLCBpdCBub3cgbG9ncyBh IHdhcm5pbmcgd2l0aAo+ID4gPiBkZXRhaWxzIG9mIHRoZSBhZmZlY3RlZCB3aW5kb3cgYW5kIHBy b2NlZWRzIHRvIHByb2dyYW0gdGhlCj4gPiA+IHJlbWFpbmluZyBpQVRVIGVudHJpZXMuCj4gPiA+ Cj4gPiA+IFRoaXMgZW5hYmxlcyBwYXJ0aWFsIGNvbmZpZ3VyYXRpb24gdG8gY29tcGxldGUgaW4g Y2FzZXMgd2hlcmUKPiA+ID4gc29tZSBpQVRVIHdpbmRvd3MgbWF5IG5vdCBtZWV0IHJlcXVpcmVt ZW50cywgaW1wcm92aW5nIG92ZXJhbGwKPiA+ID4gY29tcGF0aWJpbGl0eS4KPiA+IAo+ID4gSXQn cyBub3QgcmVhbGx5IGNsZWFyIHdoeSB0aGlzIGlzIG5lZWRlZC4gIEkgYXNzdW1lIGl0J3MgcmVs YXRlZAo+ID4gdG8gZHJvcHBpbmcgcWlsYWlfcGNpZV9vdXRib3VuZF9hdHVfYWRkcl92YWxpZCgp Lgo+IAo+IFllcywgSSB3YW50IHRvIGRyb3AgdGhlIHByZXZpb3VzIGF0dV9hZGRyX3ZhbGlkIGZ1 bmN0aW9uLgo+IAo+ID4gSSBndWVzcyBkd19wY2llX3Byb2dfb3V0Ym91bmRfYXR1KCkgbXVzdCBy ZXR1cm4gYW4gZXJyb3IgZm9yIG9uZQo+ID4gb2YgdGhlIFFpTGFpIHJhbmdlcz8gIFdoaWNoIG9u ZSwgYW5kIHdoYXQgZXhhY3RseSBpcyB0aGUgcHJvYmxlbT8KPiA+IEkgc3RpbGwgc3VzcGVjdCBz b21ldGhpbmcgd3JvbmcgaW4gdGhlIGRldmljZXRyZWUgZGVzY3JpcHRpb24uCj4gCj4gVGhlIG1h aW4gaXNzdWUgaXMgbm90IHRoZSByZXR1cm5lZCBlcnJvcjsganVzdCBuZWVkIHRvIGF2b2lkCj4g dGVybWluYXRpbmcgdGhlIHByb2Nlc3Mgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBleGNlZWRzIHRo ZQo+IGhhcmR3YXJl4oCZcyBleHBlY3RlZCBsaW1pdHMuCj4gCj4gVGhlcmUgYXJlIHR3byBtZXRo b2RzIHRvIGZpeCB0aGUgaXNzdWUgb24gdGhlIFFpbGFpIFNvQzoKPiAKPiAxLiBTaW1wbHkgc2tp cCB0aGUgZW50cmllcyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgZGVzaWdud2FyZSBoYXJkd2FyZQo+ IGlBVFUgbGltaXRhdGlvbnMuICBBbiBlcnJvciB3aWxsIGJlIHJldHVybmVkLCBidXQgaXQgY2Fu IGJlIGlnbm9yZWQuCj4gT24gdGhlIFFpbGFpIFNvQywgdGhlIGlBVFUgbGltaXRhdGlvbiBpcyB0 aGUgNEdCIGJvdW5kYXJ5LiBRaWxhaSBTb0MKPiBvbmx5IG5lZWQgdG8gY29uZmlndXJlIGlBVFUg c3VwcG9ydCB0byB0cmFuc2xhdGUgYWRkcmVzc2VzIGJlbG93IHRoZQo+ICIzMi1iaXRzIiBhZGRy ZXNzIHJhbmdlLiBBbHRob3VnaCA2NC1iaXRzIGFkZHJlc3NlcyBkbyBub3QgbWF0Y2ggdGhlCj4g ZGVzaWdud2FyZSBoYXJkd2FyZSBpQVRVIGxpbWl0YXRpb25zLCB0aGVyZSBpcyBubyBuZWVkIHRv IGNvbmZpZ3VyZQo+IDY0LWJpdHMgYWRkcmVzc2VzLCBzaW5jZSB0aGUgY29ubmVjdGlvbiBpcyBo YXJkLXdpcmVkLgo+IAo+IDIuIFNldCB0aGUgZGV2aWNldHJlZSBvbmx5IDIgdmlld3BvcnQgZm9y IGlBVFUgYW5kIGZvcmNlIHVzaW5nCj4gZGV2aWNldHJlZSB2YWx1ZS4gIFRoaXMgaXMgYSB3b3Jr YXJvdW5kIGluIHRoZSBkZXZpY2V0cmVlLCBidXQgdGhlCj4gZml4IGxvZ2ljIGlzIG5vdCBlYXN5 IHRvIGRvY3VtZW50LiAgSW5zdGVhZCwgd2Ugc2hvdWxkIGVuZm9yY2UgdGhlCj4gdXNlIG9mIHRo ZSB2aWV3cG9ydCBkZWZpbmVkIGluIHRoZSBkZXZpY2V0cmVlIGFuZCBtb2RpZnkgdGhlCj4gZGVz aWdud2FyZSBnZW5lcmljIGNvZGUgYWNjb3JkaW5nbHkg4oCUIHVzaW5nIHRoZSB2aWV3cG9ydCB2 YWx1ZXMgZnJvbQo+IHRoZSBkZXZpY2V0cmVlIGluc3RlYWQgb2YgcmVhZGluZyB0aGVtIGZyb20g dGhlIGRlc2lnbndhcmUKPiByZWdpc3RlcnMuICBTaW5jZSBvbmx5IHR3byB2aWV3cG9ydHMgYXJl IGF2YWlsYWJsZSBmb3IgaUFUVSwgd2UKPiBzaG91bGQgcmVzZXJ2ZSBvbmUgZm9yIHRoZSBjb25m aWd1cmF0aW9uIHJlZ2lzdGVycyBhbmQgdGhlIG90aGVyIGZvcgo+IDMyLWJpdCBhZGRyZXNzIGFj Y2Vzcy4gIFRoZXJlZm9yZSwgcmV2ZXJzZSBsb2dpYyBzdGlsbCBuZWVkcyB0byBiZQo+IGFkZGVk IHRvIHRoZSBkZXNpZ253YXJlIGdlbmVyaWMgY29kZS4KPiAKPiBNZXRob2QgMiBhZGRzIGV4Y2Vz c2l2ZSBjb21wbGV4aXR5IHRvIHRoZSBkZXNpZ253YXJlIGdlbmVyaWMgY29kZS4KPiBJbnN0ZWFk LCBkaXJlY3RseSBjb25maWd1cmluZyB0aGUgaUFUVSBhbmQgcmVwb3J0aW5nIGFuIGVycm9yIHdo ZW4KPiB0aGUgY29uZmlndXJhdGlvbiBleGNlZWRzIHRoZSBoYXJkd2FyZSBpQVRVIGxpbWl0YXRp b25zIGlzIGEgc2ltcGxlcgo+IGFuZCBtb3JlIGVmZmVjdGl2ZSBhcHByb2FjaCB0byBhcHBseWlu ZyB0aGUgZml4LgoKSSBkb24ndCBrbm93IHRoZSBEZXNpZ25XYXJlIGlBVFUgZGVzaWduIHZlcnkg d2VsbCwgc28gSSBkb24ndCBrbm93IGlmCnRoaXMgaXNzdWUgaXMgc29tZXRoaW5nIHVuaXF1ZSB0 byBRaWxhaSBvciBpZiBpdCdzIHNvbWV0aGluZyB0aGF0CmNvdWxkIGJlIGhhbmRsZWQgdmlhIGRl dmljZXRyZWUuCgpXaWxsIGxvb2sgZm9yIGlucHV0L2Fja3MgZnJvbSBEZXNpZ25XYXJlIG1haW50 YWluZXJzIChKaW5nb28sIE1hbmkpLgoKPiBDb25jbHVzaW9uOgo+IDEuIFRoZSBpQVRVIG5lZWRz IHRvIGJlIGNvbmZpZ3VyZWQgZm9yIDMyLWJpdHMgYWRkcmVzcyBzcGFjZS4KPiAgICBJbiBjb21w bGlhbmNlIHdpdGggaGFyZHdhcmUgbGltaXRhdGlvbnMuCj4gMi4gVGhlIGlBVFUgbmVlZHMgdG8g YmUgY29uZmlndXJlZCBmb3IgY29uZmlnIHNwYWNlLgo+ICAgIEluIGNvbXBsaWFuY2Ugd2l0aCBo YXJkd2FyZSBsaW1pdGF0aW9ucy4KPiAzLiBUaGUgaUFUVSBuZWVkcyB0byBiZSBjb25maWd1cmVk IGZvciA2NC1iaXQgYWRkcmVzcyBzcGFjZS4KPiAgICBUaGlzIGRvZXMgbm90IGNvbXBseSB3aXRo IGhhcmR3YXJlIGxpbWl0YXRpb25zIGFuZCB3aWxsIHByaW50IGFuIGVycm9yLgo+ICAgIEFzIGxv bmcgYXMgaXQgZG9lcyBub3QgcmV0dXJuIGFuIGVycm9yIHZhbHVlIHRoYXQgdGVybWluYXRlcyBz dWJzZXF1ZW50Cj4gICAgb3BlcmF0aW9ucywgaXQgaXMgYWNjZXB0YWJsZS4KPiAgICBTaW1wbHkg c2tpcHBpbmcgdGhpcyBlbnRyeSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBpQVRVIGlzIGFjY2VwdGFi bGUuCj4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFJhbmRvbHBoIExpbiA8cmFuZG9scGhAYW5kZXN0 ZWNoLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ll LWRlc2lnbndhcmUtaG9zdC5jIHwgOSArKysrKy0tLS0KPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCA1 IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYwo+ID4gPiBpbmRleCA5 NTJmODU5NGI1MDEuLjkxZWU2YjkwMzkzNCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kv Y29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYwo+ID4gPiArKysgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jCj4gPiA+IEBAIC03NTYs NyArNzU2LDcgQEAgc3RhdGljIGludCBkd19wY2llX2lhdHVfc2V0dXAoc3RydWN0IGR3X3BjaWVf cnAgKnBwKQo+ID4gPiAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZV90eXBlKGVudHJ5LT5yZXMp ICE9IElPUkVTT1VSQ0VfTUVNKQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gPiA+Cj4gPiA+IC0gICAgICAgICAgICAgaWYgKHBjaS0+bnVtX29iX3dpbmRvd3MgPD0gKytp KQo+ID4gPiArICAgICAgICAgICAgIGlmIChwY2ktPm51bV9vYl93aW5kb3dzIDw9IGkpCj4gPiA+ ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4KPiA+ID4gICAgICAgICAgICAgICBh dHUuaW5kZXggPSBpOwo+ID4gPiBAQCAtNzczLDkgKzc3MywxMCBAQCBzdGF0aWMgaW50IGR3X3Bj aWVfaWF0dV9zZXR1cChzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApCj4gPiA+Cj4gPiA+ICAgICAgICAg ICAgICAgcmV0ID0gZHdfcGNpZV9wcm9nX291dGJvdW5kX2F0dShwY2ksICZhdHUpOwo+ID4gPiAg ICAgICAgICAgICAgIGlmIChyZXQpIHsKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRldl9l cnIocGNpLT5kZXYsICJGYWlsZWQgdG8gc2V0IE1FTSByYW5nZSAlcHJcbiIsCj4gPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5yZXMpOwo+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl93YXJu KHBjaS0+ZGV2LCAiRmFpbGVkIHRvIHNldCBNRU0gcmFuZ2UgJXByXG4iLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnJlcyk7Cj4gPiA+ICsgICAgICAgICAgICAg fSBlbHNlIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGkrKzsKPiA+ID4gICAgICAgICAg ICAgICB9Cj4gPiA+ICAgICAgIH0KPiA+ID4KPiA+ID4gLS0KPiA+ID4gMi4zNC4xCj4gPiA+Cj4g PiA+Cj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gPiA+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAo+ID4gPiBsaW51eC1yaXNjdkBsaXN0cy5p bmZyYWRlYWQub3JnCj4gPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtcmlzY3YKPiAKPiBTaW5jZXJlbHksCj4gUmFuZG9scGgKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcg bGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK