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=-7.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 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 AE8B5C433E2 for ; Fri, 19 Mar 2021 18:54:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7A0056198D for ; Fri, 19 Mar 2021 18:54:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230264AbhCSSyH (ORCPT ); Fri, 19 Mar 2021 14:54:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:36116 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229912AbhCSSxp (ORCPT ); Fri, 19 Mar 2021 14:53:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 468CD6191F; Fri, 19 Mar 2021 18:53:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616180024; bh=NwrtCO6JNbhykgaZnJI5HFj68c9ePk8Pf1xRIwTiWys=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iNpInxvuzmJYjrSuGnFKJUchQYHAX33qIUU75+sTbxSRGGfrkazg472r9REvA4yzk 2IRuJGLN0iVIKMqwoK/vEP+/0YE+Ad3sJe6dyA74/SzRv3elKepID9Oj/Kn4yHzTfX iAoD7C7cT8ddnD7Y4Rnht+vWTT7Ni9WKYKodpga/jEkbzSI1n0OaIHwxFjybCbZmXp GjTXmszGDFo/bf2LOVEu5ac79qxsexjYpxmm8V48CKVQwAdFRTGUzLf+Lr8M7kAXS4 xAuujS8A4i5WiRool75oNI6FFiBF9P7mXgd2xtubLBSs/PlHas0bzNRYRWNvA6OjB8 S1DHtLjMIhGRg== Received: by pali.im (Postfix) id 596916FE; Fri, 19 Mar 2021 19:53:41 +0100 (CET) Date: Fri, 19 Mar 2021 19:53:41 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: Jianjun Wang Cc: Bjorn Helgaas , Rob Herring , maz@kernel.org, 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, Sj Huang , 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 Subject: Re: [v8,3/7] PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192 Message-ID: <20210319185341.nyxmo7nwii5fzsxc@pali> References: <20210224061132.26526-1-jianjun.wang@mediatek.com> <20210224061132.26526-4-jianjun.wang@mediatek.com> <20210311123844.qzl264ungtk7b6xz@pali> <1615621394.25662.70.camel@mhfsdcap03> <20210318000211.ykjsfavfc7suu2sb@pali> <1616046487.31760.16.camel@mhfsdcap03> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1616046487.31760.16.camel@mhfsdcap03> User-Agent: NeoMutt/20180716 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday 18 March 2021 13:48:07 Jianjun Wang wrote: > On Thu, 2021-03-18 at 01:02 +0100, Pali Rohár wrote: > > On Saturday 13 March 2021 15:43:14 Jianjun Wang wrote: > > > On Thu, 2021-03-11 at 13:38 +0100, Pali Rohár wrote: > > > > On Wednesday 24 February 2021 14:11:28 Jianjun Wang wrote: > > > > > +static int mtk_pcie_startup_port(struct mtk_pcie_port *port) > > > > > +{ > > > > ... > > > > > + > > > > > + /* Delay 100ms to wait the reference clocks become stable */ > > > > > + msleep(100); > > > > > + > > > > > + /* De-assert PERST# signal */ > > > > > + val &= ~PCIE_PE_RSTB; > > > > > + writel_relaxed(val, port->base + PCIE_RST_CTRL_REG); > > > > > > > > Hello! This is a new driver which introduce yet another custom timeout > > > > prior PERST# signal for PCIe card is de-asserted. Timeouts for other > > > > drivers I collected in older email [2]. > > > > > > > > Please look at my email [1] about PCIe Warm Reset if you have any clue > > > > about it. Lorenzo and Rob already expressed that this timeout should not > > > > be driver specific. But nobody was able to "decode" and "understand" > > > > PCIe spec yet about these timeouts. > > > > > > Hi Pali, > > > > > > I think this is more like a platform specific timeout, which is used to > > > wait for the reference clocks to become stable and finish the reset flow > > > of HW blocks. > > > > > > Here is the steps to start a link training in this HW: > > > > > > 1. Assert all reset signals which including the transaction layer, PIPE > > > interface and internal bus interface; > > > > > > 2. De-assert reset signals except the PERST#, this will make the > > > physical layer active and start to output the reference clock, but the > > > EP device remains in the reset state. > > > Before releasing the PERST# signal, the HW blocks needs at least 10ms > > > to finish the reset flow, and ref-clk needs about 30us to become stable. > > > > > > 3. De-assert PERST# signal, wait LTSSM enter L0 state. > > > > > > This 100ms timeout is reference to TPVPERL in the PCIe CEM spec. Since > > > we are in the kernel stage, the power supply has already stabled, this > > > timeout may not take that long. > > > > I think that this is not platform specific timeout or platform specific > > steps. This matches generic steps as defined in PCIe CEM spec, section > > 2.2.1. Initial Power-Up (G3 to S0). > > > > What is platform specific is just how to achieve these steps. > > > > Am I right? > > > > ... > > > > TPVPERL is one of my timeout candidates as minimal required timeout for > > Warm Reset. I have wrote it in email: > > > > https://lore.kernel.org/linux-pci/20200430082245.xblvb7xeamm4e336@pali/ > > > > But I'm not sure as specially in none diagram is described just warm > > reset as defined in mPCIe CEM (3.2.4.3. PERST# Signal). > > > > ... > > > > Anyway, I would suggest to define constants for those timeouts. I guess > > that in future we could be able to define "generic" timeout constants > > which would not be in private driver section, but in some common header > > file. > > I agree with this, but I'm not sure if we really need that long time in > the kernel stage, because the power supply has already stable and it's > really impact the boot time, especially when the platform have multi > ports and not connect any EP device, we need to wait 200ms for each port > when system bootup. Ports are independent. So you can initialize them in parallel, right? If you initialize each port in separate worker then during msleep calls kernel can schedule other kernel thread to run and so it does not increase boot time. While pcie is sleeping kernel can do other things. So the result is that whole boot time is not increased, just reordered. > For this PCIe controller driver, I would like to change the timeout > value to 10ms to comply with the HW design, and save some boot time. In case you can connect _any_ PCIe card to your HW then you cannot decrease or change timeouts required by PCIe specs. Otherwise there can be a card which would not be initialized correctly. I'm debugging driver for aardvark PCIe controller and I see that Compex cards really needs these timeouts, otherwise link is down and card cannot be detected. So I guess that there can be also other cards which requires other timeouts as specified in PCIe specs. > > > > > > > + > > > > > + /* Check if the link is up or not */ > > > > > + err = readl_poll_timeout(port->base + PCIE_LINK_STATUS_REG, val, > > > > > + !!(val & PCIE_PORT_LINKUP), 20, > > > > > + 50 * USEC_PER_MSEC); > > > > > > > > IIRC, you need to wait at least 100ms after de-asserting PERST# signal > > > > as it is required by PCIe specs and also because experiments proved that > > > > some Compex wifi cards (e.g. WLE900VX) are not detected if you do not > > > > wait this minimal time. > > > > > > Yes, this should be 100ms, I will fix it at next version, thanks for > > > your review. > > > > In past Bjorn suggested to use msleep(PCI_PM_D3COLD_WAIT); macro for > > this step during reviewing aardvark driver. > > > > https://lore.kernel.org/linux-pci/20190426161050.GA189964@google.com/ > > > > And next iteration used this PCI_PM_D3COLD_WAIT macro instead of 100: > > > > https://lore.kernel.org/linux-pci/20190522213351.21366-2-repk@triplefau.lt/ > > Sure, I will use PCI_PM_D3COLD_WAIT macro instead in the next version. > > Thanks. > > > > > > Thanks. > > > > > > > > > + if (err) { > > > > > + val = readl_relaxed(port->base + PCIE_LTSSM_STATUS_REG); > > > > > + dev_err(port->dev, "PCIe link down, ltssm reg val: %#x\n", val); > > > > > + return err; > > > > > + } > > > > > > > > [1] - https://lore.kernel.org/linux-pci/20210310110535.zh4pnn4vpmvzwl5q@pali/ > > > > [2] - https://lore.kernel.org/linux-pci/20200424092546.25p3hdtkehohe3xw@pali/ > > > > 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=-5.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 E2600C433DB for ; Fri, 19 Mar 2021 18:54:11 +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 711956192C for ; Fri, 19 Mar 2021 18:54:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 711956192C 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: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=PTAE3jmyRjXJeD+CwKwKt3Y/FnWSASbClf93bdAU1Ac=; b=APG5tFgfbX7yMZuo1UqiaGqhd NAsFBGQSq7oIQGrST4E7JzUGoKtwXuCF61n9ZMhEyJ+VF3p1NffLHxpjW1ozhun2r4B8RHytWRyK/ O6TOlww1W45eAXKCPSUzTmdE06TniXPDXR2gs8N9SsPEfO2AS5dAMtGyJjsrjG83Yq03L64tKt1ME LbnUr/jczgmJqKsCbCqa/z5pBepmzSLZhrvOcT1rvj6JPcX/rdSUvE9AS+bUeOyGKMN3bwWOu1vln /GXOPlnD/ReEjuDjHNqVXVoIjCFydJBRkYcTZmcZ5iBCCY8mTGKZWtavqFHLMINZiRIWMDwI4SQCV +3c3o5QnQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lNKFy-0080Tf-Nl; Fri, 19 Mar 2021 18:53:58 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lNKFn-0080St-RF; Fri, 19 Mar 2021 18:53:50 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 468CD6191F; Fri, 19 Mar 2021 18:53:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616180024; bh=NwrtCO6JNbhykgaZnJI5HFj68c9ePk8Pf1xRIwTiWys=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iNpInxvuzmJYjrSuGnFKJUchQYHAX33qIUU75+sTbxSRGGfrkazg472r9REvA4yzk 2IRuJGLN0iVIKMqwoK/vEP+/0YE+Ad3sJe6dyA74/SzRv3elKepID9Oj/Kn4yHzTfX iAoD7C7cT8ddnD7Y4Rnht+vWTT7Ni9WKYKodpga/jEkbzSI1n0OaIHwxFjybCbZmXp GjTXmszGDFo/bf2LOVEu5ac79qxsexjYpxmm8V48CKVQwAdFRTGUzLf+Lr8M7kAXS4 xAuujS8A4i5WiRool75oNI6FFiBF9P7mXgd2xtubLBSs/PlHas0bzNRYRWNvA6OjB8 S1DHtLjMIhGRg== Received: by pali.im (Postfix) id 596916FE; Fri, 19 Mar 2021 19:53:41 +0100 (CET) Date: Fri, 19 Mar 2021 19:53:41 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: Jianjun Wang Cc: Bjorn Helgaas , Rob Herring , maz@kernel.org, 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, Sj Huang , 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 Subject: Re: [v8,3/7] PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192 Message-ID: <20210319185341.nyxmo7nwii5fzsxc@pali> References: <20210224061132.26526-1-jianjun.wang@mediatek.com> <20210224061132.26526-4-jianjun.wang@mediatek.com> <20210311123844.qzl264ungtk7b6xz@pali> <1615621394.25662.70.camel@mhfsdcap03> <20210318000211.ykjsfavfc7suu2sb@pali> <1616046487.31760.16.camel@mhfsdcap03> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1616046487.31760.16.camel@mhfsdcap03> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210319_185348_702467_C4781D93 X-CRM114-Status: GOOD ( 51.04 ) 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 T24gVGh1cnNkYXkgMTggTWFyY2ggMjAyMSAxMzo0ODowNyBKaWFuanVuIFdhbmcgd3JvdGU6Cj4g T24gVGh1LCAyMDIxLTAzLTE4IGF0IDAxOjAyICswMTAwLCBQYWxpIFJvaMOhciB3cm90ZToKPiA+ IE9uIFNhdHVyZGF5IDEzIE1hcmNoIDIwMjEgMTU6NDM6MTQgSmlhbmp1biBXYW5nIHdyb3RlOgo+ ID4gPiBPbiBUaHUsIDIwMjEtMDMtMTEgYXQgMTM6MzggKzAxMDAsIFBhbGkgUm9ow6FyIHdyb3Rl Ogo+ID4gPiA+IE9uIFdlZG5lc2RheSAyNCBGZWJydWFyeSAyMDIxIDE0OjExOjI4IEppYW5qdW4g V2FuZyB3cm90ZToKPiA+ID4gPiA+ICtzdGF0aWMgaW50IG10a19wY2llX3N0YXJ0dXBfcG9ydChz dHJ1Y3QgbXRrX3BjaWVfcG9ydCAqcG9ydCkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gLi4uCj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArCS8qIERlbGF5IDEwMG1zIHRvIHdhaXQgdGhlIHJlZmVyZW5jZSBj bG9ja3MgYmVjb21lIHN0YWJsZSAqLwo+ID4gPiA+ID4gKwltc2xlZXAoMTAwKTsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJLyogRGUtYXNzZXJ0IFBFUlNUIyBzaWduYWwgKi8KPiA+ID4gPiA+ICsJ dmFsICY9IH5QQ0lFX1BFX1JTVEI7Cj4gPiA+ID4gPiArCXdyaXRlbF9yZWxheGVkKHZhbCwgcG9y dC0+YmFzZSArIFBDSUVfUlNUX0NUUkxfUkVHKTsKPiA+ID4gPiAKPiA+ID4gPiBIZWxsbyEgVGhp cyBpcyBhIG5ldyBkcml2ZXIgd2hpY2ggaW50cm9kdWNlIHlldCBhbm90aGVyIGN1c3RvbSB0aW1l b3V0Cj4gPiA+ID4gcHJpb3IgUEVSU1QjIHNpZ25hbCBmb3IgUENJZSBjYXJkIGlzIGRlLWFzc2Vy dGVkLiBUaW1lb3V0cyBmb3Igb3RoZXIKPiA+ID4gPiBkcml2ZXJzIEkgY29sbGVjdGVkIGluIG9s ZGVyIGVtYWlsIFsyXS4KPiA+ID4gPiAKPiA+ID4gPiBQbGVhc2UgbG9vayBhdCBteSBlbWFpbCBb MV0gYWJvdXQgUENJZSBXYXJtIFJlc2V0IGlmIHlvdSBoYXZlIGFueSBjbHVlCj4gPiA+ID4gYWJv dXQgaXQuIExvcmVuem8gYW5kIFJvYiBhbHJlYWR5IGV4cHJlc3NlZCB0aGF0IHRoaXMgdGltZW91 dCBzaG91bGQgbm90Cj4gPiA+ID4gYmUgZHJpdmVyIHNwZWNpZmljLiBCdXQgbm9ib2R5IHdhcyBh YmxlIHRvICJkZWNvZGUiIGFuZCAidW5kZXJzdGFuZCIKPiA+ID4gPiBQQ0llIHNwZWMgeWV0IGFi b3V0IHRoZXNlIHRpbWVvdXRzLgo+ID4gPiAKPiA+ID4gSGkgUGFsaSwKPiA+ID4gCj4gPiA+IEkg dGhpbmsgdGhpcyBpcyBtb3JlIGxpa2UgYSBwbGF0Zm9ybSBzcGVjaWZpYyB0aW1lb3V0LCB3aGlj aCBpcyB1c2VkIHRvCj4gPiA+IHdhaXQgZm9yIHRoZSByZWZlcmVuY2UgY2xvY2tzIHRvIGJlY29t ZSBzdGFibGUgYW5kIGZpbmlzaCB0aGUgcmVzZXQgZmxvdwo+ID4gPiBvZiBIVyBibG9ja3MuCj4g PiA+IAo+ID4gPiBIZXJlIGlzIHRoZSBzdGVwcyB0byBzdGFydCBhIGxpbmsgdHJhaW5pbmcgaW4g dGhpcyBIVzoKPiA+ID4gCj4gPiA+IDEuIEFzc2VydCBhbGwgcmVzZXQgc2lnbmFscyB3aGljaCBp bmNsdWRpbmcgdGhlIHRyYW5zYWN0aW9uIGxheWVyLCBQSVBFCj4gPiA+IGludGVyZmFjZSBhbmQg aW50ZXJuYWwgYnVzIGludGVyZmFjZTsKPiA+ID4gCj4gPiA+IDIuIERlLWFzc2VydCByZXNldCBz aWduYWxzIGV4Y2VwdCB0aGUgUEVSU1QjLCB0aGlzIHdpbGwgbWFrZSB0aGUKPiA+ID4gcGh5c2lj YWwgbGF5ZXIgYWN0aXZlIGFuZCBzdGFydCB0byBvdXRwdXQgdGhlIHJlZmVyZW5jZSBjbG9jaywg YnV0IHRoZQo+ID4gPiBFUCBkZXZpY2UgcmVtYWlucyBpbiB0aGUgcmVzZXQgc3RhdGUuCj4gPiA+ ICAgIEJlZm9yZSByZWxlYXNpbmcgdGhlIFBFUlNUIyBzaWduYWwsIHRoZSBIVyBibG9ja3MgbmVl ZHMgYXQgbGVhc3QgMTBtcwo+ID4gPiB0byBmaW5pc2ggdGhlIHJlc2V0IGZsb3csIGFuZCByZWYt Y2xrIG5lZWRzIGFib3V0IDMwdXMgdG8gYmVjb21lIHN0YWJsZS4KPiA+ID4gCj4gPiA+IDMuIERl LWFzc2VydCBQRVJTVCMgc2lnbmFsLCB3YWl0IExUU1NNIGVudGVyIEwwIHN0YXRlLgo+ID4gPiAK PiA+ID4gVGhpcyAxMDBtcyB0aW1lb3V0IGlzIHJlZmVyZW5jZSB0byBUUFZQRVJMIGluIHRoZSBQ Q0llIENFTSBzcGVjLiBTaW5jZQo+ID4gPiB3ZSBhcmUgaW4gdGhlIGtlcm5lbCBzdGFnZSwgdGhl IHBvd2VyIHN1cHBseSBoYXMgYWxyZWFkeSBzdGFibGVkLCB0aGlzCj4gPiA+IHRpbWVvdXQgbWF5 IG5vdCB0YWtlIHRoYXQgbG9uZy4KPiA+IAo+ID4gSSB0aGluayB0aGF0IHRoaXMgaXMgbm90IHBs YXRmb3JtIHNwZWNpZmljIHRpbWVvdXQgb3IgcGxhdGZvcm0gc3BlY2lmaWMKPiA+IHN0ZXBzLiBU aGlzIG1hdGNoZXMgZ2VuZXJpYyBzdGVwcyBhcyBkZWZpbmVkIGluIFBDSWUgQ0VNIHNwZWMsIHNl Y3Rpb24KPiA+IDIuMi4xLiBJbml0aWFsIFBvd2VyLVVwIChHMyB0byBTMCkuCj4gPiAKPiA+IFdo YXQgaXMgcGxhdGZvcm0gc3BlY2lmaWMgaXMganVzdCBob3cgdG8gYWNoaWV2ZSB0aGVzZSBzdGVw cy4KPiA+IAo+ID4gQW0gSSByaWdodD8KPiA+IAo+ID4gLi4uCj4gPiAKPiA+IFRQVlBFUkwgaXMg b25lIG9mIG15IHRpbWVvdXQgY2FuZGlkYXRlcyBhcyBtaW5pbWFsIHJlcXVpcmVkIHRpbWVvdXQg Zm9yCj4gPiBXYXJtIFJlc2V0LiBJIGhhdmUgd3JvdGUgaXQgaW4gZW1haWw6Cj4gPiAKPiA+IGh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXBjaS8yMDIwMDQzMDA4MjI0NS54Ymx2Yjd4ZWFt bTRlMzM2QHBhbGkvCj4gPiAKPiA+IEJ1dCBJJ20gbm90IHN1cmUgYXMgc3BlY2lhbGx5IGluIG5v bmUgZGlhZ3JhbSBpcyBkZXNjcmliZWQganVzdCB3YXJtCj4gPiByZXNldCBhcyBkZWZpbmVkIGlu IG1QQ0llIENFTSAoMy4yLjQuMy4gUEVSU1QjIFNpZ25hbCkuCj4gPiAKPiA+IC4uLgo+ID4gCj4g PiBBbnl3YXksIEkgd291bGQgc3VnZ2VzdCB0byBkZWZpbmUgY29uc3RhbnRzIGZvciB0aG9zZSB0 aW1lb3V0cy4gSSBndWVzcwo+ID4gdGhhdCBpbiBmdXR1cmUgd2UgY291bGQgYmUgYWJsZSB0byBk ZWZpbmUgImdlbmVyaWMiIHRpbWVvdXQgY29uc3RhbnRzCj4gPiB3aGljaCB3b3VsZCBub3QgYmUg aW4gcHJpdmF0ZSBkcml2ZXIgc2VjdGlvbiwgYnV0IGluIHNvbWUgY29tbW9uIGhlYWRlcgo+ID4g ZmlsZS4KPiAKPiBJIGFncmVlIHdpdGggdGhpcywgYnV0IEknbSBub3Qgc3VyZSBpZiB3ZSByZWFs bHkgbmVlZCB0aGF0IGxvbmcgdGltZSBpbgo+IHRoZSBrZXJuZWwgc3RhZ2UsIGJlY2F1c2UgdGhl IHBvd2VyIHN1cHBseSBoYXMgYWxyZWFkeSBzdGFibGUgYW5kIGl0J3MKPiByZWFsbHkgaW1wYWN0 IHRoZSBib290IHRpbWUsIGVzcGVjaWFsbHkgd2hlbiB0aGUgcGxhdGZvcm0gaGF2ZSBtdWx0aQo+ IHBvcnRzIGFuZCBub3QgY29ubmVjdCBhbnkgRVAgZGV2aWNlLCB3ZSBuZWVkIHRvIHdhaXQgMjAw bXMgZm9yIGVhY2ggcG9ydAo+IHdoZW4gc3lzdGVtIGJvb3R1cC4KClBvcnRzIGFyZSBpbmRlcGVu ZGVudC4gU28geW91IGNhbiBpbml0aWFsaXplIHRoZW0gaW4gcGFyYWxsZWwsIHJpZ2h0PwoKSWYg eW91IGluaXRpYWxpemUgZWFjaCBwb3J0IGluIHNlcGFyYXRlIHdvcmtlciB0aGVuIGR1cmluZyBt c2xlZXAgY2FsbHMKa2VybmVsIGNhbiBzY2hlZHVsZSBvdGhlciBrZXJuZWwgdGhyZWFkIHRvIHJ1 biBhbmQgc28gaXQgZG9lcyBub3QKaW5jcmVhc2UgYm9vdCB0aW1lLiBXaGlsZSBwY2llIGlzIHNs ZWVwaW5nIGtlcm5lbCBjYW4gZG8gb3RoZXIgdGhpbmdzLgpTbyB0aGUgcmVzdWx0IGlzIHRoYXQg d2hvbGUgYm9vdCB0aW1lIGlzIG5vdCBpbmNyZWFzZWQsIGp1c3QgcmVvcmRlcmVkLgoKPiBGb3Ig dGhpcyBQQ0llIGNvbnRyb2xsZXIgZHJpdmVyLCBJIHdvdWxkIGxpa2UgdG8gY2hhbmdlIHRoZSB0 aW1lb3V0Cj4gdmFsdWUgdG8gMTBtcyB0byBjb21wbHkgd2l0aCB0aGUgSFcgZGVzaWduLCBhbmQg c2F2ZSBzb21lIGJvb3QgdGltZS4KCkluIGNhc2UgeW91IGNhbiBjb25uZWN0IF9hbnlfIFBDSWUg Y2FyZCB0byB5b3VyIEhXIHRoZW4geW91IGNhbm5vdApkZWNyZWFzZSBvciBjaGFuZ2UgdGltZW91 dHMgcmVxdWlyZWQgYnkgUENJZSBzcGVjcy4gT3RoZXJ3aXNlIHRoZXJlIGNhbgpiZSBhIGNhcmQg d2hpY2ggd291bGQgbm90IGJlIGluaXRpYWxpemVkIGNvcnJlY3RseS4KCkknbSBkZWJ1Z2dpbmcg ZHJpdmVyIGZvciBhYXJkdmFyayBQQ0llIGNvbnRyb2xsZXIgYW5kIEkgc2VlIHRoYXQgQ29tcGV4 CmNhcmRzIHJlYWxseSBuZWVkcyB0aGVzZSB0aW1lb3V0cywgb3RoZXJ3aXNlIGxpbmsgaXMgZG93 biBhbmQgY2FyZApjYW5ub3QgYmUgZGV0ZWN0ZWQuCgpTbyBJIGd1ZXNzIHRoYXQgdGhlcmUgY2Fu IGJlIGFsc28gb3RoZXIgY2FyZHMgd2hpY2ggcmVxdWlyZXMgb3RoZXIKdGltZW91dHMgYXMgc3Bl Y2lmaWVkIGluIFBDSWUgc3BlY3MuCgo+ID4gCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIENo ZWNrIGlmIHRoZSBsaW5rIGlzIHVwIG9yIG5vdCAqLwo+ID4gPiA+ID4gKwllcnIgPSByZWFkbF9w b2xsX3RpbWVvdXQocG9ydC0+YmFzZSArIFBDSUVfTElOS19TVEFUVVNfUkVHLCB2YWwsCj4gPiA+ ID4gPiArCQkJCSAhISh2YWwgJiBQQ0lFX1BPUlRfTElOS1VQKSwgMjAsCj4gPiA+ID4gPiArCQkJ CSA1MCAqIFVTRUNfUEVSX01TRUMpOwo+ID4gPiA+IAo+ID4gPiA+IElJUkMsIHlvdSBuZWVkIHRv IHdhaXQgYXQgbGVhc3QgMTAwbXMgYWZ0ZXIgZGUtYXNzZXJ0aW5nIFBFUlNUIyBzaWduYWwKPiA+ ID4gPiBhcyBpdCBpcyByZXF1aXJlZCBieSBQQ0llIHNwZWNzIGFuZCBhbHNvIGJlY2F1c2UgZXhw ZXJpbWVudHMgcHJvdmVkIHRoYXQKPiA+ID4gPiBzb21lIENvbXBleCB3aWZpIGNhcmRzIChlLmcu IFdMRTkwMFZYKSBhcmUgbm90IGRldGVjdGVkIGlmIHlvdSBkbyBub3QKPiA+ID4gPiB3YWl0IHRo aXMgbWluaW1hbCB0aW1lLgo+ID4gPiAKPiA+ID4gWWVzLCB0aGlzIHNob3VsZCBiZSAxMDBtcywg SSB3aWxsIGZpeCBpdCBhdCBuZXh0IHZlcnNpb24sIHRoYW5rcyBmb3IKPiA+ID4geW91ciByZXZp ZXcuCj4gPiAKPiA+IEluIHBhc3QgQmpvcm4gc3VnZ2VzdGVkIHRvIHVzZSBtc2xlZXAoUENJX1BN X0QzQ09MRF9XQUlUKTsgbWFjcm8gZm9yCj4gPiB0aGlzIHN0ZXAgZHVyaW5nIHJldmlld2luZyBh YXJkdmFyayBkcml2ZXIuCj4gPiAKPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXBj aS8yMDE5MDQyNjE2MTA1MC5HQTE4OTk2NEBnb29nbGUuY29tLwo+ID4gCj4gPiBBbmQgbmV4dCBp dGVyYXRpb24gdXNlZCB0aGlzIFBDSV9QTV9EM0NPTERfV0FJVCBtYWNybyBpbnN0ZWFkIG9mIDEw MDoKPiA+IAo+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGNpLzIwMTkwNTIyMjEz MzUxLjIxMzY2LTItcmVwa0B0cmlwbGVmYXUubHQvCj4gCj4gU3VyZSwgSSB3aWxsIHVzZSBQQ0lf UE1fRDNDT0xEX1dBSVQgbWFjcm8gaW5zdGVhZCBpbiB0aGUgbmV4dCB2ZXJzaW9uLgo+IAo+IFRo YW5rcy4KPiAKPiA+IAo+ID4gPiBUaGFua3MuCj4gPiA+ID4gCj4gPiA+ID4gPiArCWlmIChlcnIp IHsKPiA+ID4gPiA+ICsJCXZhbCA9IHJlYWRsX3JlbGF4ZWQocG9ydC0+YmFzZSArIFBDSUVfTFRT U01fU1RBVFVTX1JFRyk7Cj4gPiA+ID4gPiArCQlkZXZfZXJyKHBvcnQtPmRldiwgIlBDSWUgbGlu ayBkb3duLCBsdHNzbSByZWcgdmFsOiAlI3hcbiIsIHZhbCk7Cj4gPiA+ID4gPiArCQlyZXR1cm4g ZXJyOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gCj4gPiA+ID4gWzFdIC0gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvbGludXgtcGNpLzIwMjEwMzEwMTEwNTM1LnpoNHBubjR2cG12endsNXFAcGFsaS8K PiA+ID4gPiBbMl0gLSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1wY2kvMjAyMDA0MjQw OTI1NDYuMjVwM2hkdGtlaG9oZTN4d0BwYWxpLwo+ID4gPiAKPiAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW1lZGlhdGVrIG1haWxpbmcgbGlz dApMaW51eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbWVkaWF0ZWsK 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=-5.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 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 CF42EC433E1 for ; Fri, 19 Mar 2021 18:55:25 +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 0F29C6194A for ; Fri, 19 Mar 2021 18:55:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0F29C6194A 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: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=7EV2MZHzkiwW6GnYcBKfw/c2HkDpMEq0LAsI5jNR1Eg=; b=Zi9luYeEnGGucS/kEgQxnT1Je DGA7wtqA8DpGiGffFLpp1QolikVFR94n6d5E1mevrG7Bz/44/8pKhuXBNYVnK8NPazSsejAFJgM8y jwutE4Y0JKFMhJ7ZEFm5AdaFYGPR9ISt8jnp7jDWo49UYJt3V/snRebeLLOQ34Uk/IzwmdPm3bf1z rLkyzCj6w2kEV12e3elYuJcJMnR5AFyDvQOTvCBvpcV1RCE1w3T/1tO1pc5PjCIellQEDFQGe34aa DhfKjUpD7flaz6A3GBhSideEXtpXF8SADhDIf37GS6ZgGVFI/ADH7ZjVz0iDDL5rU/LYyz8o/RF29 3RNzUumFw==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lNKFt-0080TS-5g; Fri, 19 Mar 2021 18:53:53 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lNKFn-0080St-RF; Fri, 19 Mar 2021 18:53:50 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 468CD6191F; Fri, 19 Mar 2021 18:53:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616180024; bh=NwrtCO6JNbhykgaZnJI5HFj68c9ePk8Pf1xRIwTiWys=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iNpInxvuzmJYjrSuGnFKJUchQYHAX33qIUU75+sTbxSRGGfrkazg472r9REvA4yzk 2IRuJGLN0iVIKMqwoK/vEP+/0YE+Ad3sJe6dyA74/SzRv3elKepID9Oj/Kn4yHzTfX iAoD7C7cT8ddnD7Y4Rnht+vWTT7Ni9WKYKodpga/jEkbzSI1n0OaIHwxFjybCbZmXp GjTXmszGDFo/bf2LOVEu5ac79qxsexjYpxmm8V48CKVQwAdFRTGUzLf+Lr8M7kAXS4 xAuujS8A4i5WiRool75oNI6FFiBF9P7mXgd2xtubLBSs/PlHas0bzNRYRWNvA6OjB8 S1DHtLjMIhGRg== Received: by pali.im (Postfix) id 596916FE; Fri, 19 Mar 2021 19:53:41 +0100 (CET) Date: Fri, 19 Mar 2021 19:53:41 +0100 From: Pali =?utf-8?B?Um9ow6Fy?= To: Jianjun Wang Cc: Bjorn Helgaas , Rob Herring , maz@kernel.org, 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, Sj Huang , 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 Subject: Re: [v8,3/7] PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192 Message-ID: <20210319185341.nyxmo7nwii5fzsxc@pali> References: <20210224061132.26526-1-jianjun.wang@mediatek.com> <20210224061132.26526-4-jianjun.wang@mediatek.com> <20210311123844.qzl264ungtk7b6xz@pali> <1615621394.25662.70.camel@mhfsdcap03> <20210318000211.ykjsfavfc7suu2sb@pali> <1616046487.31760.16.camel@mhfsdcap03> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1616046487.31760.16.camel@mhfsdcap03> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210319_185348_702467_C4781D93 X-CRM114-Status: GOOD ( 51.04 ) 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 T24gVGh1cnNkYXkgMTggTWFyY2ggMjAyMSAxMzo0ODowNyBKaWFuanVuIFdhbmcgd3JvdGU6Cj4g T24gVGh1LCAyMDIxLTAzLTE4IGF0IDAxOjAyICswMTAwLCBQYWxpIFJvaMOhciB3cm90ZToKPiA+ IE9uIFNhdHVyZGF5IDEzIE1hcmNoIDIwMjEgMTU6NDM6MTQgSmlhbmp1biBXYW5nIHdyb3RlOgo+ ID4gPiBPbiBUaHUsIDIwMjEtMDMtMTEgYXQgMTM6MzggKzAxMDAsIFBhbGkgUm9ow6FyIHdyb3Rl Ogo+ID4gPiA+IE9uIFdlZG5lc2RheSAyNCBGZWJydWFyeSAyMDIxIDE0OjExOjI4IEppYW5qdW4g V2FuZyB3cm90ZToKPiA+ID4gPiA+ICtzdGF0aWMgaW50IG10a19wY2llX3N0YXJ0dXBfcG9ydChz dHJ1Y3QgbXRrX3BjaWVfcG9ydCAqcG9ydCkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gLi4uCj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArCS8qIERlbGF5IDEwMG1zIHRvIHdhaXQgdGhlIHJlZmVyZW5jZSBj bG9ja3MgYmVjb21lIHN0YWJsZSAqLwo+ID4gPiA+ID4gKwltc2xlZXAoMTAwKTsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJLyogRGUtYXNzZXJ0IFBFUlNUIyBzaWduYWwgKi8KPiA+ID4gPiA+ICsJ dmFsICY9IH5QQ0lFX1BFX1JTVEI7Cj4gPiA+ID4gPiArCXdyaXRlbF9yZWxheGVkKHZhbCwgcG9y dC0+YmFzZSArIFBDSUVfUlNUX0NUUkxfUkVHKTsKPiA+ID4gPiAKPiA+ID4gPiBIZWxsbyEgVGhp cyBpcyBhIG5ldyBkcml2ZXIgd2hpY2ggaW50cm9kdWNlIHlldCBhbm90aGVyIGN1c3RvbSB0aW1l b3V0Cj4gPiA+ID4gcHJpb3IgUEVSU1QjIHNpZ25hbCBmb3IgUENJZSBjYXJkIGlzIGRlLWFzc2Vy dGVkLiBUaW1lb3V0cyBmb3Igb3RoZXIKPiA+ID4gPiBkcml2ZXJzIEkgY29sbGVjdGVkIGluIG9s ZGVyIGVtYWlsIFsyXS4KPiA+ID4gPiAKPiA+ID4gPiBQbGVhc2UgbG9vayBhdCBteSBlbWFpbCBb MV0gYWJvdXQgUENJZSBXYXJtIFJlc2V0IGlmIHlvdSBoYXZlIGFueSBjbHVlCj4gPiA+ID4gYWJv dXQgaXQuIExvcmVuem8gYW5kIFJvYiBhbHJlYWR5IGV4cHJlc3NlZCB0aGF0IHRoaXMgdGltZW91 dCBzaG91bGQgbm90Cj4gPiA+ID4gYmUgZHJpdmVyIHNwZWNpZmljLiBCdXQgbm9ib2R5IHdhcyBh YmxlIHRvICJkZWNvZGUiIGFuZCAidW5kZXJzdGFuZCIKPiA+ID4gPiBQQ0llIHNwZWMgeWV0IGFi b3V0IHRoZXNlIHRpbWVvdXRzLgo+ID4gPiAKPiA+ID4gSGkgUGFsaSwKPiA+ID4gCj4gPiA+IEkg dGhpbmsgdGhpcyBpcyBtb3JlIGxpa2UgYSBwbGF0Zm9ybSBzcGVjaWZpYyB0aW1lb3V0LCB3aGlj aCBpcyB1c2VkIHRvCj4gPiA+IHdhaXQgZm9yIHRoZSByZWZlcmVuY2UgY2xvY2tzIHRvIGJlY29t ZSBzdGFibGUgYW5kIGZpbmlzaCB0aGUgcmVzZXQgZmxvdwo+ID4gPiBvZiBIVyBibG9ja3MuCj4g PiA+IAo+ID4gPiBIZXJlIGlzIHRoZSBzdGVwcyB0byBzdGFydCBhIGxpbmsgdHJhaW5pbmcgaW4g dGhpcyBIVzoKPiA+ID4gCj4gPiA+IDEuIEFzc2VydCBhbGwgcmVzZXQgc2lnbmFscyB3aGljaCBp bmNsdWRpbmcgdGhlIHRyYW5zYWN0aW9uIGxheWVyLCBQSVBFCj4gPiA+IGludGVyZmFjZSBhbmQg aW50ZXJuYWwgYnVzIGludGVyZmFjZTsKPiA+ID4gCj4gPiA+IDIuIERlLWFzc2VydCByZXNldCBz aWduYWxzIGV4Y2VwdCB0aGUgUEVSU1QjLCB0aGlzIHdpbGwgbWFrZSB0aGUKPiA+ID4gcGh5c2lj YWwgbGF5ZXIgYWN0aXZlIGFuZCBzdGFydCB0byBvdXRwdXQgdGhlIHJlZmVyZW5jZSBjbG9jaywg YnV0IHRoZQo+ID4gPiBFUCBkZXZpY2UgcmVtYWlucyBpbiB0aGUgcmVzZXQgc3RhdGUuCj4gPiA+ ICAgIEJlZm9yZSByZWxlYXNpbmcgdGhlIFBFUlNUIyBzaWduYWwsIHRoZSBIVyBibG9ja3MgbmVl ZHMgYXQgbGVhc3QgMTBtcwo+ID4gPiB0byBmaW5pc2ggdGhlIHJlc2V0IGZsb3csIGFuZCByZWYt Y2xrIG5lZWRzIGFib3V0IDMwdXMgdG8gYmVjb21lIHN0YWJsZS4KPiA+ID4gCj4gPiA+IDMuIERl LWFzc2VydCBQRVJTVCMgc2lnbmFsLCB3YWl0IExUU1NNIGVudGVyIEwwIHN0YXRlLgo+ID4gPiAK PiA+ID4gVGhpcyAxMDBtcyB0aW1lb3V0IGlzIHJlZmVyZW5jZSB0byBUUFZQRVJMIGluIHRoZSBQ Q0llIENFTSBzcGVjLiBTaW5jZQo+ID4gPiB3ZSBhcmUgaW4gdGhlIGtlcm5lbCBzdGFnZSwgdGhl IHBvd2VyIHN1cHBseSBoYXMgYWxyZWFkeSBzdGFibGVkLCB0aGlzCj4gPiA+IHRpbWVvdXQgbWF5 IG5vdCB0YWtlIHRoYXQgbG9uZy4KPiA+IAo+ID4gSSB0aGluayB0aGF0IHRoaXMgaXMgbm90IHBs YXRmb3JtIHNwZWNpZmljIHRpbWVvdXQgb3IgcGxhdGZvcm0gc3BlY2lmaWMKPiA+IHN0ZXBzLiBU aGlzIG1hdGNoZXMgZ2VuZXJpYyBzdGVwcyBhcyBkZWZpbmVkIGluIFBDSWUgQ0VNIHNwZWMsIHNl Y3Rpb24KPiA+IDIuMi4xLiBJbml0aWFsIFBvd2VyLVVwIChHMyB0byBTMCkuCj4gPiAKPiA+IFdo YXQgaXMgcGxhdGZvcm0gc3BlY2lmaWMgaXMganVzdCBob3cgdG8gYWNoaWV2ZSB0aGVzZSBzdGVw cy4KPiA+IAo+ID4gQW0gSSByaWdodD8KPiA+IAo+ID4gLi4uCj4gPiAKPiA+IFRQVlBFUkwgaXMg b25lIG9mIG15IHRpbWVvdXQgY2FuZGlkYXRlcyBhcyBtaW5pbWFsIHJlcXVpcmVkIHRpbWVvdXQg Zm9yCj4gPiBXYXJtIFJlc2V0LiBJIGhhdmUgd3JvdGUgaXQgaW4gZW1haWw6Cj4gPiAKPiA+IGh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXBjaS8yMDIwMDQzMDA4MjI0NS54Ymx2Yjd4ZWFt bTRlMzM2QHBhbGkvCj4gPiAKPiA+IEJ1dCBJJ20gbm90IHN1cmUgYXMgc3BlY2lhbGx5IGluIG5v bmUgZGlhZ3JhbSBpcyBkZXNjcmliZWQganVzdCB3YXJtCj4gPiByZXNldCBhcyBkZWZpbmVkIGlu IG1QQ0llIENFTSAoMy4yLjQuMy4gUEVSU1QjIFNpZ25hbCkuCj4gPiAKPiA+IC4uLgo+ID4gCj4g PiBBbnl3YXksIEkgd291bGQgc3VnZ2VzdCB0byBkZWZpbmUgY29uc3RhbnRzIGZvciB0aG9zZSB0 aW1lb3V0cy4gSSBndWVzcwo+ID4gdGhhdCBpbiBmdXR1cmUgd2UgY291bGQgYmUgYWJsZSB0byBk ZWZpbmUgImdlbmVyaWMiIHRpbWVvdXQgY29uc3RhbnRzCj4gPiB3aGljaCB3b3VsZCBub3QgYmUg aW4gcHJpdmF0ZSBkcml2ZXIgc2VjdGlvbiwgYnV0IGluIHNvbWUgY29tbW9uIGhlYWRlcgo+ID4g ZmlsZS4KPiAKPiBJIGFncmVlIHdpdGggdGhpcywgYnV0IEknbSBub3Qgc3VyZSBpZiB3ZSByZWFs bHkgbmVlZCB0aGF0IGxvbmcgdGltZSBpbgo+IHRoZSBrZXJuZWwgc3RhZ2UsIGJlY2F1c2UgdGhl IHBvd2VyIHN1cHBseSBoYXMgYWxyZWFkeSBzdGFibGUgYW5kIGl0J3MKPiByZWFsbHkgaW1wYWN0 IHRoZSBib290IHRpbWUsIGVzcGVjaWFsbHkgd2hlbiB0aGUgcGxhdGZvcm0gaGF2ZSBtdWx0aQo+ IHBvcnRzIGFuZCBub3QgY29ubmVjdCBhbnkgRVAgZGV2aWNlLCB3ZSBuZWVkIHRvIHdhaXQgMjAw bXMgZm9yIGVhY2ggcG9ydAo+IHdoZW4gc3lzdGVtIGJvb3R1cC4KClBvcnRzIGFyZSBpbmRlcGVu ZGVudC4gU28geW91IGNhbiBpbml0aWFsaXplIHRoZW0gaW4gcGFyYWxsZWwsIHJpZ2h0PwoKSWYg eW91IGluaXRpYWxpemUgZWFjaCBwb3J0IGluIHNlcGFyYXRlIHdvcmtlciB0aGVuIGR1cmluZyBt c2xlZXAgY2FsbHMKa2VybmVsIGNhbiBzY2hlZHVsZSBvdGhlciBrZXJuZWwgdGhyZWFkIHRvIHJ1 biBhbmQgc28gaXQgZG9lcyBub3QKaW5jcmVhc2UgYm9vdCB0aW1lLiBXaGlsZSBwY2llIGlzIHNs ZWVwaW5nIGtlcm5lbCBjYW4gZG8gb3RoZXIgdGhpbmdzLgpTbyB0aGUgcmVzdWx0IGlzIHRoYXQg d2hvbGUgYm9vdCB0aW1lIGlzIG5vdCBpbmNyZWFzZWQsIGp1c3QgcmVvcmRlcmVkLgoKPiBGb3Ig dGhpcyBQQ0llIGNvbnRyb2xsZXIgZHJpdmVyLCBJIHdvdWxkIGxpa2UgdG8gY2hhbmdlIHRoZSB0 aW1lb3V0Cj4gdmFsdWUgdG8gMTBtcyB0byBjb21wbHkgd2l0aCB0aGUgSFcgZGVzaWduLCBhbmQg c2F2ZSBzb21lIGJvb3QgdGltZS4KCkluIGNhc2UgeW91IGNhbiBjb25uZWN0IF9hbnlfIFBDSWUg Y2FyZCB0byB5b3VyIEhXIHRoZW4geW91IGNhbm5vdApkZWNyZWFzZSBvciBjaGFuZ2UgdGltZW91 dHMgcmVxdWlyZWQgYnkgUENJZSBzcGVjcy4gT3RoZXJ3aXNlIHRoZXJlIGNhbgpiZSBhIGNhcmQg d2hpY2ggd291bGQgbm90IGJlIGluaXRpYWxpemVkIGNvcnJlY3RseS4KCkknbSBkZWJ1Z2dpbmcg ZHJpdmVyIGZvciBhYXJkdmFyayBQQ0llIGNvbnRyb2xsZXIgYW5kIEkgc2VlIHRoYXQgQ29tcGV4 CmNhcmRzIHJlYWxseSBuZWVkcyB0aGVzZSB0aW1lb3V0cywgb3RoZXJ3aXNlIGxpbmsgaXMgZG93 biBhbmQgY2FyZApjYW5ub3QgYmUgZGV0ZWN0ZWQuCgpTbyBJIGd1ZXNzIHRoYXQgdGhlcmUgY2Fu IGJlIGFsc28gb3RoZXIgY2FyZHMgd2hpY2ggcmVxdWlyZXMgb3RoZXIKdGltZW91dHMgYXMgc3Bl Y2lmaWVkIGluIFBDSWUgc3BlY3MuCgo+ID4gCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIENo ZWNrIGlmIHRoZSBsaW5rIGlzIHVwIG9yIG5vdCAqLwo+ID4gPiA+ID4gKwllcnIgPSByZWFkbF9w b2xsX3RpbWVvdXQocG9ydC0+YmFzZSArIFBDSUVfTElOS19TVEFUVVNfUkVHLCB2YWwsCj4gPiA+ ID4gPiArCQkJCSAhISh2YWwgJiBQQ0lFX1BPUlRfTElOS1VQKSwgMjAsCj4gPiA+ID4gPiArCQkJ CSA1MCAqIFVTRUNfUEVSX01TRUMpOwo+ID4gPiA+IAo+ID4gPiA+IElJUkMsIHlvdSBuZWVkIHRv IHdhaXQgYXQgbGVhc3QgMTAwbXMgYWZ0ZXIgZGUtYXNzZXJ0aW5nIFBFUlNUIyBzaWduYWwKPiA+ ID4gPiBhcyBpdCBpcyByZXF1aXJlZCBieSBQQ0llIHNwZWNzIGFuZCBhbHNvIGJlY2F1c2UgZXhw ZXJpbWVudHMgcHJvdmVkIHRoYXQKPiA+ID4gPiBzb21lIENvbXBleCB3aWZpIGNhcmRzIChlLmcu IFdMRTkwMFZYKSBhcmUgbm90IGRldGVjdGVkIGlmIHlvdSBkbyBub3QKPiA+ID4gPiB3YWl0IHRo aXMgbWluaW1hbCB0aW1lLgo+ID4gPiAKPiA+ID4gWWVzLCB0aGlzIHNob3VsZCBiZSAxMDBtcywg SSB3aWxsIGZpeCBpdCBhdCBuZXh0IHZlcnNpb24sIHRoYW5rcyBmb3IKPiA+ID4geW91ciByZXZp ZXcuCj4gPiAKPiA+IEluIHBhc3QgQmpvcm4gc3VnZ2VzdGVkIHRvIHVzZSBtc2xlZXAoUENJX1BN X0QzQ09MRF9XQUlUKTsgbWFjcm8gZm9yCj4gPiB0aGlzIHN0ZXAgZHVyaW5nIHJldmlld2luZyBh YXJkdmFyayBkcml2ZXIuCj4gPiAKPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXBj aS8yMDE5MDQyNjE2MTA1MC5HQTE4OTk2NEBnb29nbGUuY29tLwo+ID4gCj4gPiBBbmQgbmV4dCBp dGVyYXRpb24gdXNlZCB0aGlzIFBDSV9QTV9EM0NPTERfV0FJVCBtYWNybyBpbnN0ZWFkIG9mIDEw MDoKPiA+IAo+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcGNpLzIwMTkwNTIyMjEz MzUxLjIxMzY2LTItcmVwa0B0cmlwbGVmYXUubHQvCj4gCj4gU3VyZSwgSSB3aWxsIHVzZSBQQ0lf UE1fRDNDT0xEX1dBSVQgbWFjcm8gaW5zdGVhZCBpbiB0aGUgbmV4dCB2ZXJzaW9uLgo+IAo+IFRo YW5rcy4KPiAKPiA+IAo+ID4gPiBUaGFua3MuCj4gPiA+ID4gCj4gPiA+ID4gPiArCWlmIChlcnIp IHsKPiA+ID4gPiA+ICsJCXZhbCA9IHJlYWRsX3JlbGF4ZWQocG9ydC0+YmFzZSArIFBDSUVfTFRT U01fU1RBVFVTX1JFRyk7Cj4gPiA+ID4gPiArCQlkZXZfZXJyKHBvcnQtPmRldiwgIlBDSWUgbGlu ayBkb3duLCBsdHNzbSByZWcgdmFsOiAlI3hcbiIsIHZhbCk7Cj4gPiA+ID4gPiArCQlyZXR1cm4g ZXJyOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gCj4gPiA+ID4gWzFdIC0gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvbGludXgtcGNpLzIwMjEwMzEwMTEwNTM1LnpoNHBubjR2cG12endsNXFAcGFsaS8K PiA+ID4gPiBbMl0gLSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1wY2kvMjAyMDA0MjQw OTI1NDYuMjVwM2hkdGtlaG9oZTN4d0BwYWxpLwo+ID4gPiAKPiAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK