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 AF26BC433F5 for ; Thu, 13 Jan 2022 17:22:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232535AbiAMRW2 (ORCPT ); Thu, 13 Jan 2022 12:22:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48014 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232273AbiAMRW2 (ORCPT ); Thu, 13 Jan 2022 12:22:28 -0500 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A04C8C061574 for ; Thu, 13 Jan 2022 09:22:27 -0800 (PST) Received: by mail-wm1-x32a.google.com with SMTP id p1-20020a1c7401000000b00345c2d068bdso5848097wmc.3 for ; Thu, 13 Jan 2022 09:22:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=m+qwgIpcnSvftGIeIBkTsoTpDXxQfAwlOlBwhtw/Z0A=; b=VJqNGlWQAxaBIHh+bH7oKdtbLyJ/aMcIoRj/Y1DXeG6CAXdz1xRWd/gZiUoLmdCevv u2sZhBE1mNQg5r7AwoYjYVhiFAR9Ey0+4b40w5GPHluuQkr6R5zBwJIUHDma6NACqMNo QwLeF0XbkE1DmYtxKcyDQtzafXDCtcsVYX7YaWqX95HLcn0qejJh+vOL7lhuAJsNR8c1 A53mKsBkqPLEEUot9MvSb5V/L6HvN/r7gPKhGZNcVRlmT5uEXGhE910n1XXe0wJfvPYC yMNJLrJfOTKphqflkdUidQlDTgvJNIoNpxwAxiJghGcUPEKuIuKhEBVgZ79Fz/gdisL1 LqhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=m+qwgIpcnSvftGIeIBkTsoTpDXxQfAwlOlBwhtw/Z0A=; b=Xj68eghCgIDVQ5n9IbkQ8BHZNbJnB5TNtzp9taW0ULJL+M3WRR9Gl50BFO1wf2shTp tB7FiE3ituy7fgBMUK95Crjvwa1rCRhvp0HGxUPDP17jPC9ulMHaYZl200C0szLY2Cwr /9u5K7C3kw8oTTaBYL8QpVqTUemyxp73DEVZGVb6SNgxpNnmmvvXoIANFs2Nif4fVTGM ReprBrTkGmUyIjfp9angv5UrRPEsggfnWjoz38i3CytfF6ceeIVFarBFnOpFPPnNZ8EV UMI4SWjq06ElGc2m8pwUbhYdSX3Gt+Vq9hyBv6QtxABrVpibRUGsr/fvTmdaMHmiyKJe 99CA== X-Gm-Message-State: AOAM530TIGKSD3ldw+3ligg7ZeajKo93MyJyFJgqO3PI2Hu4vxBu9uHM wwrrFSs46lrOzAJp+4dvpoHVEw== X-Google-Smtp-Source: ABdhPJx/9n09U/8hRrDhCwuUWuzbmuTc5wAGJSYLhLjElpiJ9gMfV/CLNGtLeaRJo8W5ntJyTSDwPg== X-Received: by 2002:a7b:c4da:: with SMTP id g26mr4935862wmk.191.1642094546100; Thu, 13 Jan 2022 09:22:26 -0800 (PST) Received: from google.com ([31.124.24.179]) by smtp.gmail.com with ESMTPSA id p12sm7646216wms.43.2022.01.13.09.22.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Jan 2022 09:22:25 -0800 (PST) Date: Thu, 13 Jan 2022 17:22:24 +0000 From: Lee Jones To: Zong Li Cc: Michael Turquette , Stephen Boyd , Palmer Dabbelt , Paul Walmsley , linux-clk , linux-riscv Subject: Re: [PATCH v3 RESEND] clk: sifive: Fix W=1 kernel build warning Message-ID: References: <20220107090715.2601-1-zong.li@sifive.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org On Thu, 13 Jan 2022, Lee Jones wrote: > On Thu, 13 Jan 2022, Zong Li wrote: > > > On Wed, Jan 12, 2022 at 5:09 PM Lee Jones wrote: > > > > > > On Wed, 12 Jan 2022, Zong Li wrote: > > > > > > > On Tue, Jan 11, 2022 at 5:32 PM Lee Jones wrote: > > > > > > > > > > On Tue, 11 Jan 2022, Zong Li wrote: > > > > > > > > > > > On Mon, Jan 10, 2022 at 5:50 PM Lee Jones wrote: > > > > > > > > > > > > > > Please improve the subject line. > > > > > > > > > > > > > > If this is a straight revert, the subject line should reflect that. > > > > > > > > > > > > > > If not, you need to give us specific information regarding the purpose > > > > > > > of this patch. Please read the Git log for better, more forthcoming > > > > > > > examples. > > > > > > > > > > > > > > > > > > > It seems to me that this patch is not a straight revert, it provides > > > > > > another way to fix the original build warnings, just like > > > > > > '487dc7bb6a0c' tried to do. I guess the commit message has described > > > > > > what the original warnings is and what the root cause is, it also > > > > > > mentioned what is changed in this patch. I'm a bit confused whether we > > > > > > need to add fixes tag, it looks like that it might cause some > > > > > > misunderstanding? > > > > > > > > > > I think it's the patch description and subject that is causing the > > > > > misunderstanding. > > > > > > > > > > > > > Yes, the subject should be made better. > > > > > > > > > Please help me with a couple of points and I'll help you draft > > > > > something up. > > > > > > > > > > Firstly, what alerted you to the problem you're attempting to solve? > > > > > > > > > > > > > I recently noticed the code was changed, I guess that I was missing > > > > something there. After tracking the log, I found that there is a build > > > > warning in the original implementation, and it was already fixed, but > > > > it seems to me that there are still some situations there, please help > > > > me to see the following illustration. > > > > > > > > > > > > --- a/drivers/clk/sifive/fu540-prci.c > > > > > > > > +++ b/drivers/clk/sifive/fu540-prci.c > > > > > > > > @@ -20,7 +20,6 @@ > > > > > > > > > > > > > > > > #include > > > > > > > > > > > > > > > > -#include "fu540-prci.h" > > > > > > > > > > How is this related to the issue/patch? > > > > > > > > > > > > > Let's go back to the version without '487dc7bb6a0c' fix. The > > > > prci_clk_fu540 variable is defined in sifive-fu540-prci.h header, > > > > however, fu540-prci.c includes this header but doesn't use this > > > > variable, so the warnings happen. > > > > > > > > The easiest way to do it is just removing this line, then the warning > > > > could be fixed. But as the '487dc7bb6a0c' or this patch does, the code > > > > should be improved, the prci_clk_fu540 variable shouldn't be defined > > > > in the header, it should be moved somewhere. > > > > > > > > > > > > +struct prci_clk_desc prci_clk_fu540 = { > > > > > > > > + .clks = __prci_init_clocks_fu540, > > > > > > > > + .num_clks = ARRAY_SIZE(__prci_init_clocks_fu540), > > > > > > > > +}; > > > > > > > > > > > > > diff --git a/drivers/clk/sifive/fu540-prci.h b/drivers/clk/sifive/fu540-prci.h > > > > > > > > index c220677dc010..931d6cad8c1c 100644 > > > > > > > > --- a/drivers/clk/sifive/fu540-prci.h > > > > > > > > +++ b/drivers/clk/sifive/fu540-prci.h > > > > > > > > @@ -7,10 +7,6 @@ > > > > > > > > +extern struct prci_clk_desc prci_clk_fu540; > > > > > > > > > > > > > diff --git a/drivers/clk/sifive/sifive-prci.c b/drivers/clk/sifive/sifive-prci.c > > > > > > > > index 80a288c59e56..916d2fc28b9c 100644 > > > > > > > > --- a/drivers/clk/sifive/sifive-prci.c > > > > > > > > +++ b/drivers/clk/sifive/sifive-prci.c > > > > > > > > @@ -12,11 +12,6 @@ > > > > > > > > #include "fu540-prci.h" > > > > > > > > #include "fu740-prci.h" > > > > > > > > > > > > > > > > -static const struct prci_clk_desc prci_clk_fu540 = { > > > > > > > > - .clks = __prci_init_clocks_fu540, > > > > > > > > - .num_clks = ARRAY_SIZE(__prci_init_clocks_fu540), > > > > > > > > -}; > > > > > > > > - > > > > > > > > > > I'm not sure if it's you or I that is missing the point here, but > > > > > prci_clk_fu540 is used within *this* file itself: > > > > > > > > > > > > > Here is another situation I mentioned at the beginning, if we'd like > > > > to put prci_clk_fu540 here, prci_clk_fu740 should be put here as well. > > > > I guess you didn't do that because there is a bug in the original > > > > code, fu740-prci.c misused the fu540-prci.h, so there is no build > > > > warning on fu740. FU740 still works correctly by misusing the > > > > fu540-prci.h header because fu740-prci.c doesn't actually use the > > > > prci_clk_fu740 variable, like fu540 we talked about earlier. > > > > > > > > > static const struct of_device_id sifive_prci_of_match[] = { > > > > > {.compatible = "sifive,fu540-c000-prci", .data = &prci_clk_fu540}, > > > > > {.compatible = "sifive,fu740-c000-prci", .data = &prci_clk_fu740}, > > > > > {} > > > > > }; > > > > > > > > > > So why are you moving it out to somewhere it is *not* used and making > > > > > it an extern? This sounds like the opposite to what you'd want? > > > > > > > > The idea is that sifive-prci.c is the core and common part of PRCI, > > > > and I'd like to separate the SoCs-dependent part into SoCs-dependent > > > > files, such as fu540-prci.c and fu740-prci.c. The goal is if we add > > > > new SoCs in the future, we can just put the SoCs-dependent data > > > > structure in the new C file, and do as minimum modification as > > > > possible in the core file (i.e. sifive-prci.c). It might also help us > > > > to see all SoCs-dependent data in one file, then we don't need to > > > > cross many files. Putting these two variables in sifive-pric.c is the > > > > right thing to do, but that is why I separate them and make them > > > > extern in this patch. > > > > > > I can see what you are doing, but I don't think this is the right > > > thing to do. Please put the struct in the same location as it's > > > referenced. > > > > If we decide to move them into sifive-prci.c (i.e. put it in where > > it's referenced.), I worried that we might need to move all stuff > > which are in fu540-prci.c and fu740-prci.c. Because 'prci_clk_fu540' > > is referenced in sifive-prci.c, whereas '__prci_init_clocks_fu540' is > > used by 'prci_clk_fu540', and the almost things in fu540-prci.c are > > used by '__prci_init_clocks_fu540'. It seems to be a little bit > > difficult to clearly decouple it for modularization which I want to > > do. What this patch does might be a accepted way, I hope that you can > > consider it again. > > > > > > > > And yes that should also be the case for prci_clk_fu740 and yes, it > > > was over-looked because it wasn't causing warnings at build time for > > > whatever reason. > > > > > > IMHO, placing 'struct of_device_id' match tables in headers is also > > > odd and is likely the real cause of this strange situation. > > > > I couldn't see what are you pointing, do you mind give more details > > about it? It seems to me that the match table is put in C file (i.e. > > sifive-prci.c). > > Oh, sorry, it's a common source file, rather than a header. > > Okay, so I went and actually looked at the code this time. > > If I were you I would move all of the device specific structs and > tables into the device specific header files, then delete the device > specific source (C) files entirely. > > There seems to be no good reason for carrying a common source file as > well as a source file AND header file for each supported device. > IMHO, that's over-complicating things for no apparent gain. I can even do it for you, if you'd like! -- Lee Jones [李琼斯] Principal Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog 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 DC7D4C433F5 for ; Thu, 13 Jan 2022 17:22:39 +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=FmuTGstg1Qa+L84ZOr9m+xHsNZ3UcHeuSrnND4/xFcQ=; b=POXw2F7HksaFpa q3A4j+TOx47e0CRfp6Wh55fGMeehQAHj1VlJhKsF/v/PpW9GTDTIyc0V/9AbjBZq0EvrYUog2GLDD 4dyFpntuylL7q0pWDp/VnzPhUvOnJKTitJklnmwNlVn8foMAEA/0leFLJ+M/bBKPInylbPgS6x3fk vOP81+9fouFcWOIp2Hc8Sod50gkOzXZQgT3tU7LE4qBBjYpwhPwBJqGrHoJwZ5QzLmUD30hewC3oZ xgCUlnYW/GbrzPChtZ/LWfr7cyUQetR1obtWYTNFxClkMjSEpBhhrevnr7Vshx58yesfzk1Tk8HE7 vm7annjlT57QGDvPSo1Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n83o0-006k9Z-Dg; Thu, 13 Jan 2022 17:22:32 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n83nw-006k7a-Qk for linux-riscv@lists.infradead.org; Thu, 13 Jan 2022 17:22:30 +0000 Received: by mail-wm1-x329.google.com with SMTP id s6-20020a7bc386000000b0034a89445406so1966192wmj.2 for ; Thu, 13 Jan 2022 09:22:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=m+qwgIpcnSvftGIeIBkTsoTpDXxQfAwlOlBwhtw/Z0A=; b=VJqNGlWQAxaBIHh+bH7oKdtbLyJ/aMcIoRj/Y1DXeG6CAXdz1xRWd/gZiUoLmdCevv u2sZhBE1mNQg5r7AwoYjYVhiFAR9Ey0+4b40w5GPHluuQkr6R5zBwJIUHDma6NACqMNo QwLeF0XbkE1DmYtxKcyDQtzafXDCtcsVYX7YaWqX95HLcn0qejJh+vOL7lhuAJsNR8c1 A53mKsBkqPLEEUot9MvSb5V/L6HvN/r7gPKhGZNcVRlmT5uEXGhE910n1XXe0wJfvPYC yMNJLrJfOTKphqflkdUidQlDTgvJNIoNpxwAxiJghGcUPEKuIuKhEBVgZ79Fz/gdisL1 LqhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=m+qwgIpcnSvftGIeIBkTsoTpDXxQfAwlOlBwhtw/Z0A=; b=jj7MOp+GWUzycgt2SR7x2oe/U7+ME3aWkrUxfJt+ZV6q49gD8hSGOizqhJtmAAHVzB lV7LvngQ6i+TMi0j0xqB2I1LJBjujGdiGSQBfs+QHQNtSlbQpvRScKJwUrGI0Ej1WFmL 9URxXVVnlqxA4cWgSwpIkKrZHt7Rc1CdVcxI27HvlLXIhayCf9wm326MXRmvNm3iIKNd 5GigbSUlo2KijwxY3oc/pmsRU+c1zmCXwuWOP1c6ZUMl+AajsYc0UhuWsQDOokgWPk+h mNJAl2TFwXRU+ZY2Tnop8nxEuosM6rUzHkhxQPgZMYO+UvnPqxIfTg/9lm5Ma161JRS1 bucg== X-Gm-Message-State: AOAM5302ybNa5F2OM7RkBY8DPW5K2CPmy8ELBdpjkUCLHJifeFQHcFZ7 io0S+7oTP5koy5DOCcy8iHLYGQ== X-Google-Smtp-Source: ABdhPJx/9n09U/8hRrDhCwuUWuzbmuTc5wAGJSYLhLjElpiJ9gMfV/CLNGtLeaRJo8W5ntJyTSDwPg== X-Received: by 2002:a7b:c4da:: with SMTP id g26mr4935862wmk.191.1642094546100; Thu, 13 Jan 2022 09:22:26 -0800 (PST) Received: from google.com ([31.124.24.179]) by smtp.gmail.com with ESMTPSA id p12sm7646216wms.43.2022.01.13.09.22.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Jan 2022 09:22:25 -0800 (PST) Date: Thu, 13 Jan 2022 17:22:24 +0000 From: Lee Jones To: Zong Li Cc: Michael Turquette , Stephen Boyd , Palmer Dabbelt , Paul Walmsley , linux-clk , linux-riscv Subject: Re: [PATCH v3 RESEND] clk: sifive: Fix W=1 kernel build warning Message-ID: References: <20220107090715.2601-1-zong.li@sifive.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220113_092228_907108_F161916F X-CRM114-Status: GOOD ( 72.70 ) 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 T24gVGh1LCAxMyBKYW4gMjAyMiwgTGVlIEpvbmVzIHdyb3RlOgoKPiBPbiBUaHUsIDEzIEphbiAy MDIyLCBab25nIExpIHdyb3RlOgo+IAo+ID4gT24gV2VkLCBKYW4gMTIsIDIwMjIgYXQgNTowOSBQ TSBMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPiB3cm90ZToKPiA+ID4KPiA+ID4gT24g V2VkLCAxMiBKYW4gMjAyMiwgWm9uZyBMaSB3cm90ZToKPiA+ID4KPiA+ID4gPiBPbiBUdWUsIEph biAxMSwgMjAyMiBhdCA1OjMyIFBNIExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+IHdy b3RlOgo+ID4gPiA+ID4KPiA+ID4gPiA+IE9uIFR1ZSwgMTEgSmFuIDIwMjIsIFpvbmcgTGkgd3Jv dGU6Cj4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBNb24sIEphbiAxMCwgMjAyMiBhdCA1OjUwIFBN IExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+IHdyb3RlOgo+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gUGxlYXNlIGltcHJvdmUgdGhlIHN1YmplY3QgbGluZS4KPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+IElmIHRoaXMgaXMgYSBzdHJhaWdodCByZXZlcnQsIHRoZSBzdWJqZWN0 IGxpbmUgc2hvdWxkIHJlZmxlY3QgdGhhdC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IElm IG5vdCwgeW91IG5lZWQgdG8gZ2l2ZSB1cyBzcGVjaWZpYyBpbmZvcm1hdGlvbiByZWdhcmRpbmcg dGhlIHB1cnBvc2UKPiA+ID4gPiA+ID4gPiBvZiB0aGlzIHBhdGNoLiAgUGxlYXNlIHJlYWQgdGhl IEdpdCBsb2cgZm9yIGJldHRlciwgbW9yZSBmb3J0aGNvbWluZwo+ID4gPiA+ID4gPiA+IGV4YW1w bGVzLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEl0IHNlZW1zIHRvIG1l IHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgYSBzdHJhaWdodCByZXZlcnQsIGl0IHByb3ZpZGVzCj4g PiA+ID4gPiA+IGFub3RoZXIgd2F5IHRvIGZpeCB0aGUgb3JpZ2luYWwgYnVpbGQgd2FybmluZ3Ms IGp1c3QgbGlrZQo+ID4gPiA+ID4gPiAnNDg3ZGM3YmI2YTBjJyB0cmllZCB0byBkby4gSSBndWVz cyB0aGUgY29tbWl0IG1lc3NhZ2UgaGFzIGRlc2NyaWJlZAo+ID4gPiA+ID4gPiB3aGF0IHRoZSBv cmlnaW5hbCB3YXJuaW5ncyBpcyBhbmQgd2hhdCB0aGUgcm9vdCBjYXVzZSBpcywgaXQgYWxzbwo+ ID4gPiA+ID4gPiBtZW50aW9uZWQgd2hhdCBpcyBjaGFuZ2VkIGluIHRoaXMgcGF0Y2guIEknbSBh IGJpdCBjb25mdXNlZCB3aGV0aGVyIHdlCj4gPiA+ID4gPiA+IG5lZWQgdG8gYWRkIGZpeGVzIHRh ZywgaXQgbG9va3MgbGlrZSB0aGF0IGl0IG1pZ2h0IGNhdXNlIHNvbWUKPiA+ID4gPiA+ID4gbWlz dW5kZXJzdGFuZGluZz8KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJIHRoaW5rIGl0J3MgdGhlIHBhdGNo IGRlc2NyaXB0aW9uIGFuZCBzdWJqZWN0IHRoYXQgaXMgY2F1c2luZyB0aGUKPiA+ID4gPiA+IG1p c3VuZGVyc3RhbmRpbmcuCj4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gWWVzLCB0aGUgc3ViamVj dCBzaG91bGQgYmUgbWFkZSBiZXR0ZXIuCj4gPiA+ID4KPiA+ID4gPiA+IFBsZWFzZSBoZWxwIG1l IHdpdGggYSBjb3VwbGUgb2YgcG9pbnRzIGFuZCBJJ2xsIGhlbHAgeW91IGRyYWZ0Cj4gPiA+ID4g PiBzb21ldGhpbmcgdXAuCj4gPiA+ID4gPgo+ID4gPiA+ID4gRmlyc3RseSwgd2hhdCBhbGVydGVk IHlvdSB0byB0aGUgcHJvYmxlbSB5b3UncmUgYXR0ZW1wdGluZyB0byBzb2x2ZT8KPiA+ID4gPiA+ Cj4gPiA+ID4KPiA+ID4gPiBJIHJlY2VudGx5IG5vdGljZWQgdGhlIGNvZGUgd2FzIGNoYW5nZWQs IEkgZ3Vlc3MgdGhhdCBJIHdhcyBtaXNzaW5nCj4gPiA+ID4gc29tZXRoaW5nIHRoZXJlLiBBZnRl ciB0cmFja2luZyB0aGUgbG9nLCBJIGZvdW5kIHRoYXQgdGhlcmUgaXMgYSBidWlsZAo+ID4gPiA+ IHdhcm5pbmcgaW4gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uLCBhbmQgaXQgd2FzIGFscmVh ZHkgZml4ZWQsIGJ1dAo+ID4gPiA+IGl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlcmUgYXJlIHN0aWxs IHNvbWUgc2l0dWF0aW9ucyB0aGVyZSwgcGxlYXNlIGhlbHAKPiA+ID4gPiBtZSB0byBzZWUgdGhl IGZvbGxvd2luZyBpbGx1c3RyYXRpb24uCj4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvY2xrL3NpZml2ZS9mdTU0MC1wcmNpLmMKPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZl cnMvY2xrL3NpZml2ZS9mdTU0MC1wcmNpLmMKPiA+ID4gPiA+ID4gPiA+IEBAIC0yMCw3ICsyMCw2 IEBACj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gICNpbmNsdWRlIDxkdC1iaW5kaW5n cy9jbG9jay9zaWZpdmUtZnU1NDAtcHJjaS5oPgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+IC0jaW5jbHVkZSAiZnU1NDAtcHJjaS5oIgo+ID4gPiA+ID4KPiA+ID4gPiA+IEhvdyBpcyB0 aGlzIHJlbGF0ZWQgdG8gdGhlIGlzc3VlL3BhdGNoPwo+ID4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+ IExldCdzIGdvIGJhY2sgdG8gdGhlIHZlcnNpb24gd2l0aG91dCAnNDg3ZGM3YmI2YTBjJyBmaXgu IFRoZQo+ID4gPiA+IHByY2lfY2xrX2Z1NTQwIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gc2lmaXZl LWZ1NTQwLXByY2kuaCBoZWFkZXIsCj4gPiA+ID4gaG93ZXZlciwgZnU1NDAtcHJjaS5jIGluY2x1 ZGVzIHRoaXMgaGVhZGVyIGJ1dCBkb2Vzbid0IHVzZSB0aGlzCj4gPiA+ID4gdmFyaWFibGUsIHNv IHRoZSB3YXJuaW5ncyBoYXBwZW4uCj4gPiA+ID4KPiA+ID4gPiBUaGUgZWFzaWVzdCB3YXkgdG8g ZG8gaXQgaXMganVzdCByZW1vdmluZyB0aGlzIGxpbmUsIHRoZW4gdGhlIHdhcm5pbmcKPiA+ID4g PiBjb3VsZCBiZSBmaXhlZC4gQnV0IGFzIHRoZSAnNDg3ZGM3YmI2YTBjJyBvciB0aGlzIHBhdGNo IGRvZXMsIHRoZSBjb2RlCj4gPiA+ID4gc2hvdWxkIGJlIGltcHJvdmVkLCB0aGUgcHJjaV9jbGtf ZnU1NDAgdmFyaWFibGUgc2hvdWxkbid0IGJlIGRlZmluZWQKPiA+ID4gPiBpbiB0aGUgaGVhZGVy LCBpdCBzaG91bGQgYmUgbW92ZWQgc29tZXdoZXJlLgo+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAr c3RydWN0IHByY2lfY2xrX2Rlc2MgcHJjaV9jbGtfZnU1NDAgPSB7Cj4gPiA+ID4gPiA+ID4gPiAr ICAgICAuY2xrcyA9IF9fcHJjaV9pbml0X2Nsb2Nrc19mdTU0MCwKPiA+ID4gPiA+ID4gPiA+ICsg ICAgIC5udW1fY2xrcyA9IEFSUkFZX1NJWkUoX19wcmNpX2luaXRfY2xvY2tzX2Z1NTQwKSwKPiA+ ID4gPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2Nsay9zaWZpdmUvZnU1NDAtcHJjaS5oIGIvZHJpdmVycy9jbGsvc2lmaXZlL2Z1NTQw LXByY2kuaAo+ID4gPiA+ID4gPiA+ID4gaW5kZXggYzIyMDY3N2RjMDEwLi45MzFkNmNhZDhjMWMg MTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2Nsay9zaWZpdmUvZnU1NDAtcHJj aS5oCj4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2Nsay9zaWZpdmUvZnU1NDAtcHJjaS5o Cj4gPiA+ID4gPiA+ID4gPiBAQCAtNywxMCArNyw2IEBACj4gPiA+ID4gPiA+ID4gPiArZXh0ZXJu IHN0cnVjdCBwcmNpX2Nsa19kZXNjIHByY2lfY2xrX2Z1NTQwOwo+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zaWZpdmUvc2lmaXZlLXByY2kuYyBiL2Ry aXZlcnMvY2xrL3NpZml2ZS9zaWZpdmUtcHJjaS5jCj4gPiA+ID4gPiA+ID4gPiBpbmRleCA4MGEy ODhjNTllNTYuLjkxNmQyZmMyOGI5YyAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZl cnMvY2xrL3NpZml2ZS9zaWZpdmUtcHJjaS5jCj4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJz L2Nsay9zaWZpdmUvc2lmaXZlLXByY2kuYwo+ID4gPiA+ID4gPiA+ID4gQEAgLTEyLDExICsxMiw2 IEBACj4gPiA+ID4gPiA+ID4gPiAgI2luY2x1ZGUgImZ1NTQwLXByY2kuaCIKPiA+ID4gPiA+ID4g PiA+ICAjaW5jbHVkZSAiZnU3NDAtcHJjaS5oIgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHByY2lfY2xrX2Rlc2MgcHJjaV9jbGtfZnU1NDAgPSB7 Cj4gPiA+ID4gPiA+ID4gPiAtICAgICAuY2xrcyA9IF9fcHJjaV9pbml0X2Nsb2Nrc19mdTU0MCwK PiA+ID4gPiA+ID4gPiA+IC0gICAgIC5udW1fY2xrcyA9IEFSUkFZX1NJWkUoX19wcmNpX2luaXRf Y2xvY2tzX2Z1NTQwKSwKPiA+ID4gPiA+ID4gPiA+IC19Owo+ID4gPiA+ID4gPiA+ID4gLQo+ID4g PiA+ID4KPiA+ID4gPiA+IEknbSBub3Qgc3VyZSBpZiBpdCdzIHlvdSBvciBJIHRoYXQgaXMgbWlz c2luZyB0aGUgcG9pbnQgaGVyZSwgYnV0Cj4gPiA+ID4gPiBwcmNpX2Nsa19mdTU0MCBpcyB1c2Vk IHdpdGhpbiAqdGhpcyogZmlsZSBpdHNlbGY6Cj4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gSGVy ZSBpcyBhbm90aGVyIHNpdHVhdGlvbiBJIG1lbnRpb25lZCBhdCB0aGUgYmVnaW5uaW5nLCBpZiB3 ZSdkIGxpa2UKPiA+ID4gPiB0byBwdXQgcHJjaV9jbGtfZnU1NDAgaGVyZSwgcHJjaV9jbGtfZnU3 NDAgc2hvdWxkIGJlIHB1dCBoZXJlIGFzIHdlbGwuCj4gPiA+ID4gSSBndWVzcyB5b3UgZGlkbid0 IGRvIHRoYXQgYmVjYXVzZSB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgb3JpZ2luYWwKPiA+ID4gPiBj b2RlLCBmdTc0MC1wcmNpLmMgbWlzdXNlZCB0aGUgZnU1NDAtcHJjaS5oLCBzbyB0aGVyZSBpcyBu byBidWlsZAo+ID4gPiA+IHdhcm5pbmcgb24gZnU3NDAuIEZVNzQwIHN0aWxsIHdvcmtzIGNvcnJl Y3RseSBieSBtaXN1c2luZyB0aGUKPiA+ID4gPiBmdTU0MC1wcmNpLmggaGVhZGVyIGJlY2F1c2Ug ZnU3NDAtcHJjaS5jIGRvZXNuJ3QgYWN0dWFsbHkgdXNlIHRoZQo+ID4gPiA+IHByY2lfY2xrX2Z1 NzQwIHZhcmlhYmxlLCBsaWtlIGZ1NTQwIHdlIHRhbGtlZCBhYm91dCBlYXJsaWVyLgo+ID4gPiA+ Cj4gPiA+ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc2lmaXZlX3ByY2lf b2ZfbWF0Y2hbXSA9IHsKPiA+ID4gPiA+ICAgICAgICAgIHsuY29tcGF0aWJsZSA9ICJzaWZpdmUs ZnU1NDAtYzAwMC1wcmNpIiwgLmRhdGEgPSAmcHJjaV9jbGtfZnU1NDB9LAo+ID4gPiA+ID4gICAg ICAgICAgey5jb21wYXRpYmxlID0gInNpZml2ZSxmdTc0MC1jMDAwLXByY2kiLCAuZGF0YSA9ICZw cmNpX2Nsa19mdTc0MH0sCj4gPiA+ID4gPiAgICAgICAgICB7fQo+ID4gPiA+ID4gIH07Cj4gPiA+ ID4gPgo+ID4gPiA+ID4gU28gd2h5IGFyZSB5b3UgbW92aW5nIGl0IG91dCB0byBzb21ld2hlcmUg aXQgaXMgKm5vdCogdXNlZCBhbmQgbWFraW5nCj4gPiA+ID4gPiBpdCBhbiBleHRlcm4/ICBUaGlz IHNvdW5kcyBsaWtlIHRoZSBvcHBvc2l0ZSB0byB3aGF0IHlvdSdkIHdhbnQ/Cj4gPiA+ID4KPiA+ ID4gPiBUaGUgaWRlYSBpcyB0aGF0IHNpZml2ZS1wcmNpLmMgaXMgdGhlIGNvcmUgYW5kIGNvbW1v biBwYXJ0IG9mIFBSQ0ksCj4gPiA+ID4gYW5kIEknZCBsaWtlIHRvIHNlcGFyYXRlIHRoZSBTb0Nz LWRlcGVuZGVudCBwYXJ0IGludG8gU29Dcy1kZXBlbmRlbnQKPiA+ID4gPiBmaWxlcywgc3VjaCBh cyBmdTU0MC1wcmNpLmMgYW5kIGZ1NzQwLXByY2kuYy4gVGhlIGdvYWwgaXMgaWYgd2UgYWRkCj4g PiA+ID4gbmV3IFNvQ3MgaW4gdGhlIGZ1dHVyZSwgd2UgY2FuIGp1c3QgcHV0IHRoZSBTb0NzLWRl cGVuZGVudCBkYXRhCj4gPiA+ID4gc3RydWN0dXJlIGluIHRoZSBuZXcgQyBmaWxlLCBhbmQgZG8g YXMgbWluaW11bSBtb2RpZmljYXRpb24gYXMKPiA+ID4gPiBwb3NzaWJsZSBpbiB0aGUgY29yZSBm aWxlIChpLmUuIHNpZml2ZS1wcmNpLmMpLiBJdCBtaWdodCBhbHNvIGhlbHAgdXMKPiA+ID4gPiB0 byBzZWUgYWxsIFNvQ3MtZGVwZW5kZW50IGRhdGEgaW4gb25lIGZpbGUsIHRoZW4gd2UgZG9uJ3Qg bmVlZCB0bwo+ID4gPiA+IGNyb3NzIG1hbnkgZmlsZXMuIFB1dHRpbmcgdGhlc2UgdHdvIHZhcmlh YmxlcyBpbiBzaWZpdmUtcHJpYy5jIGlzIHRoZQo+ID4gPiA+IHJpZ2h0IHRoaW5nIHRvIGRvLCBi dXQgdGhhdCBpcyB3aHkgSSBzZXBhcmF0ZSB0aGVtIGFuZCBtYWtlIHRoZW0KPiA+ID4gPiBleHRl cm4gaW4gdGhpcyBwYXRjaC4KPiA+ID4KPiA+ID4gSSBjYW4gc2VlIHdoYXQgeW91IGFyZSBkb2lu ZywgYnV0IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0aGUgcmlnaHQKPiA+ID4gdGhpbmcgdG8gZG8u ICBQbGVhc2UgcHV0IHRoZSBzdHJ1Y3QgaW4gdGhlIHNhbWUgbG9jYXRpb24gYXMgaXQncwo+ID4g PiByZWZlcmVuY2VkLgo+ID4gCj4gPiBJZiB3ZSBkZWNpZGUgdG8gbW92ZSB0aGVtIGludG8gc2lm aXZlLXByY2kuYyAoaS5lLiBwdXQgaXQgaW4gd2hlcmUKPiA+IGl0J3MgcmVmZXJlbmNlZC4pLCBJ IHdvcnJpZWQgdGhhdCB3ZSBtaWdodCBuZWVkIHRvIG1vdmUgYWxsIHN0dWZmCj4gPiB3aGljaCBh cmUgaW4gZnU1NDAtcHJjaS5jIGFuZCBmdTc0MC1wcmNpLmMuIEJlY2F1c2UgJ3ByY2lfY2xrX2Z1 NTQwJwo+ID4gaXMgcmVmZXJlbmNlZCBpbiBzaWZpdmUtcHJjaS5jLCB3aGVyZWFzICdfX3ByY2lf aW5pdF9jbG9ja3NfZnU1NDAnIGlzCj4gPiB1c2VkIGJ5ICdwcmNpX2Nsa19mdTU0MCcsIGFuZCB0 aGUgYWxtb3N0IHRoaW5ncyBpbiBmdTU0MC1wcmNpLmMgYXJlCj4gPiB1c2VkIGJ5ICdfX3ByY2lf aW5pdF9jbG9ja3NfZnU1NDAnLiBJdCBzZWVtcyB0byBiZSBhIGxpdHRsZSBiaXQKPiA+IGRpZmZp Y3VsdCB0byBjbGVhcmx5IGRlY291cGxlIGl0IGZvciBtb2R1bGFyaXphdGlvbiB3aGljaCBJIHdh bnQgdG8KPiA+IGRvLiBXaGF0IHRoaXMgcGF0Y2ggZG9lcyBtaWdodCBiZSBhIGFjY2VwdGVkIHdh eSwgSSBob3BlIHRoYXQgeW91IGNhbgo+ID4gY29uc2lkZXIgaXQgYWdhaW4uCj4gPiAKPiA+ID4K PiA+ID4gQW5kIHllcyB0aGF0IHNob3VsZCBhbHNvIGJlIHRoZSBjYXNlIGZvciBwcmNpX2Nsa19m dTc0MCBhbmQgeWVzLCBpdAo+ID4gPiB3YXMgb3Zlci1sb29rZWQgYmVjYXVzZSBpdCB3YXNuJ3Qg Y2F1c2luZyB3YXJuaW5ncyBhdCBidWlsZCB0aW1lIGZvcgo+ID4gPiB3aGF0ZXZlciByZWFzb24u Cj4gPiA+Cj4gPiA+IElNSE8sIHBsYWNpbmcgJ3N0cnVjdCBvZl9kZXZpY2VfaWQnIG1hdGNoIHRh YmxlcyBpbiBoZWFkZXJzIGlzIGFsc28KPiA+ID4gb2RkIGFuZCBpcyBsaWtlbHkgdGhlIHJlYWwg Y2F1c2Ugb2YgdGhpcyBzdHJhbmdlIHNpdHVhdGlvbi4KPiA+IAo+ID4gSSBjb3VsZG4ndCBzZWUg d2hhdCBhcmUgeW91IHBvaW50aW5nLCBkbyB5b3UgbWluZCBnaXZlIG1vcmUgZGV0YWlscwo+ID4g YWJvdXQgaXQ/IEl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlIG1hdGNoIHRhYmxlIGlzIHB1dCBpbiBD IGZpbGUgKGkuZS4KPiA+IHNpZml2ZS1wcmNpLmMpLgo+IAo+IE9oLCBzb3JyeSwgaXQncyBhIGNv bW1vbiBzb3VyY2UgZmlsZSwgcmF0aGVyIHRoYW4gYSBoZWFkZXIuCj4gCj4gT2theSwgc28gSSB3 ZW50IGFuZCBhY3R1YWxseSBsb29rZWQgYXQgdGhlIGNvZGUgdGhpcyB0aW1lLgo+IAo+IElmIEkg d2VyZSB5b3UgSSB3b3VsZCBtb3ZlIGFsbCBvZiB0aGUgZGV2aWNlIHNwZWNpZmljIHN0cnVjdHMg YW5kCj4gdGFibGVzIGludG8gdGhlIGRldmljZSBzcGVjaWZpYyBoZWFkZXIgZmlsZXMsIHRoZW4g ZGVsZXRlIHRoZSBkZXZpY2UKPiBzcGVjaWZpYyBzb3VyY2UgKEMpIGZpbGVzIGVudGlyZWx5Lgo+ IAo+IFRoZXJlIHNlZW1zIHRvIGJlIG5vIGdvb2QgcmVhc29uIGZvciBjYXJyeWluZyBhIGNvbW1v biBzb3VyY2UgZmlsZSBhcwo+IHdlbGwgYXMgYSBzb3VyY2UgZmlsZSBBTkQgaGVhZGVyIGZpbGUg Zm9yIGVhY2ggc3VwcG9ydGVkIGRldmljZS4KPiBJTUhPLCB0aGF0J3Mgb3Zlci1jb21wbGljYXRp bmcgdGhpbmdzIGZvciBubyBhcHBhcmVudCBnYWluLgoKSSBjYW4gZXZlbiBkbyBpdCBmb3IgeW91 LCBpZiB5b3UnZCBsaWtlIQoKLS0gCkxlZSBKb25lcyBb5p2O55C85pavXQpQcmluY2lwYWwgVGVj aG5pY2FsIExlYWQgLSBEZXZlbG9wZXIgU2VydmljZXMKTGluYXJvLm9yZyDilIIgT3BlbiBzb3Vy Y2Ugc29mdHdhcmUgZm9yIEFybSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRl ciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK