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 E83B6C433F5 for ; Thu, 13 Jan 2022 17:22:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234094AbiAMRWD (ORCPT ); Thu, 13 Jan 2022 12:22:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234052AbiAMRWC (ORCPT ); Thu, 13 Jan 2022 12:22:02 -0500 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD191C061574 for ; Thu, 13 Jan 2022 09:22:01 -0800 (PST) Received: by mail-wr1-x42b.google.com with SMTP id q8so11347207wra.12 for ; Thu, 13 Jan 2022 09:22:01 -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=Xpk9tCDnUUJOO+qcGEP0EWz9/LUz6UHTbY8FbY1HT6w=; b=x8d8bzDRxm+Hx+1eXZze8vT2UbEVMsedenUDAIcrjNtkncxpQ7tjjLS+I5K7bL3qVe DPI+NLHPkUy7jSlgxiVOv13hNvaHDZ4rLnqq6+4Epc2KqOLgSbbUKdjtvey9vWFEQwSG Ve9hyu/Wzxr19YiRPQlwxUw7VLPIoaNeh3xlXRIvyYQldDb5tQ7r66KS229DNBpGqgs+ KAjkgfqiMDyQv7QNcT4lV7O0YL0c/E8eiHtG7Kmh2IVBHwZkwTXLiME5cl/Q4O3AoLwY 0/EtDN3HH5pN19PDY9BqGi+OjKHYgHTeGyJQB0nDOZpyW1ts6cErlf+Kezv20wUSyD3q hz4g== 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=Xpk9tCDnUUJOO+qcGEP0EWz9/LUz6UHTbY8FbY1HT6w=; b=IAJYKjsK2yFwqWITUcGopE2GeApQM/bxEzg3nU20Fgb3rPN5zrGOJA38IoXeH7eGsp K9evdTiBbK3Y52U6gmYjam250p7UCManpQMSaARsyHxY3y/yjnsI33XWicnXMnL62qDY E7MLnbWR2VATGQOZ653qc98qTRk6/xswJcXDz6+eNpGkAhN5rsSRTDSB+pinoxqmbtsx Rrqgz8yNJuq8wwmPMnziQuMRrtg6kCEEHKF5I0b3/j4Czawepj18q8+v3rCuK8IlIJzS HDT5b0D3+i0EfJw8khs8DT5q3jbvIyky9Yx4ni8uUUz4qpcDzKzlISJY5IK3XrFpBIHq Wbrw== X-Gm-Message-State: AOAM532m1sIoM7Of0r2ciQ2XrzIHoVJRL3Q2yUGH5ev2TkYCT+Au8g6y 31evLW4UZupnGQKSMmJsSn5AZg== X-Google-Smtp-Source: ABdhPJx3YJyAcr/Jso9vu0oKbSiDz+UCxAleei6V+t8bltOwTQorP+/mMjeoCHx19nZx7K3eBoGlPQ== X-Received: by 2002:a5d:6dad:: with SMTP id u13mr5066298wrs.604.1642094520257; Thu, 13 Jan 2022 09:22:00 -0800 (PST) Received: from google.com ([31.124.24.179]) by smtp.gmail.com with ESMTPSA id p15sm1448239wrw.93.2022.01.13.09.21.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Jan 2022 09:21:59 -0800 (PST) Date: Thu, 13 Jan 2022 17:21:57 +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, 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. -- 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 6905BC433FE for ; Thu, 13 Jan 2022 17:22:16 +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=2HB3MWBkGNqUweGEkBF4Hxwn1Wg+DoFGMF5G32Irag8=; b=ufscEfEAUGuKiu Y76o9ByRBUgbGszRD10oqDHpQV7krAF4e5ae6JmHFwDe/s8khKlFzF8av/GXgQ3owSli3y5O2BPEO 4zCX8ZQPt91pbBzzxXDNg0PtKqdOFjoFwmIHzFloI60MtgTXOFQL2Z6C4do+sP3fr2LxroFcT812U s2kDNzF31xhJSUzDAE8aFltQOGCL+gKAauDz056ym2IzHPL+ZE4WSpR2Ku/kMv5pCXnkIb01f/oGX VgxfUEmQ7arMcVO8Yh0ihJf3RaZqzUrfwALWD5fERWfzUIE/aDUuqBZMqZxk6RUPdrjtH6okuKi/H AzSfHIJGtzYq3xXC3MRQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1n83na-006jv4-0e; Thu, 13 Jan 2022 17:22:06 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1n83nX-006jsq-NR for linux-riscv@lists.infradead.org; Thu, 13 Jan 2022 17:22:05 +0000 Received: by mail-wr1-x42b.google.com with SMTP id a5so11415771wrh.5 for ; Thu, 13 Jan 2022 09:22:01 -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=Xpk9tCDnUUJOO+qcGEP0EWz9/LUz6UHTbY8FbY1HT6w=; b=x8d8bzDRxm+Hx+1eXZze8vT2UbEVMsedenUDAIcrjNtkncxpQ7tjjLS+I5K7bL3qVe DPI+NLHPkUy7jSlgxiVOv13hNvaHDZ4rLnqq6+4Epc2KqOLgSbbUKdjtvey9vWFEQwSG Ve9hyu/Wzxr19YiRPQlwxUw7VLPIoaNeh3xlXRIvyYQldDb5tQ7r66KS229DNBpGqgs+ KAjkgfqiMDyQv7QNcT4lV7O0YL0c/E8eiHtG7Kmh2IVBHwZkwTXLiME5cl/Q4O3AoLwY 0/EtDN3HH5pN19PDY9BqGi+OjKHYgHTeGyJQB0nDOZpyW1ts6cErlf+Kezv20wUSyD3q hz4g== 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=Xpk9tCDnUUJOO+qcGEP0EWz9/LUz6UHTbY8FbY1HT6w=; b=Pb29/26x3aLWAP4F6yLcoAvVXkRbXA/AXF+DgpiqnGFPmfW3No5S6KC8vkGl3uvxtr NzkadQfL7NDiYFogwzI1SsQj2lN1/M6mY3YyRcQlXyjbdXrBfy9wLxlxGZMqryOcdKFG y+W4CFESjWHYukfFgs90aqVOgj3fQP5GivyCfar2PBAOYmpfA44wNPjl08FQJopGvcUN V7uHEJAQNQDYrshBuTlutx3ZNH3cWKt5JoWz+DJ7ve1iK1GKJGNUABuN3TtEyPZRiKSN y6hD1CJp6MYubtI6v+JdxJEmPQbOCWDn+f8Wbml6kMoKizxb3BTD6TWrkYU4a1stgsNc NgMQ== X-Gm-Message-State: AOAM530cYSoqxYb6s93XTzpeqscu7gzCEeGis3Q7KoxmevM2rrWepkfQ D5YzuVSCqQoIuV0ilKMb9kcrPw== X-Google-Smtp-Source: ABdhPJx3YJyAcr/Jso9vu0oKbSiDz+UCxAleei6V+t8bltOwTQorP+/mMjeoCHx19nZx7K3eBoGlPQ== X-Received: by 2002:a5d:6dad:: with SMTP id u13mr5066298wrs.604.1642094520257; Thu, 13 Jan 2022 09:22:00 -0800 (PST) Received: from google.com ([31.124.24.179]) by smtp.gmail.com with ESMTPSA id p15sm1448239wrw.93.2022.01.13.09.21.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Jan 2022 09:21:59 -0800 (PST) Date: Thu, 13 Jan 2022 17:21:57 +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_092203_803974_940F904C X-CRM114-Status: GOOD ( 70.33 ) 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 T24gVGh1LCAxMyBKYW4gMjAyMiwgWm9uZyBMaSB3cm90ZToKCj4gT24gV2VkLCBKYW4gMTIsIDIw MjIgYXQgNTowOSBQTSBMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPiB3cm90ZToKPiA+ Cj4gPiBPbiBXZWQsIDEyIEphbiAyMDIyLCBab25nIExpIHdyb3RlOgo+ID4KPiA+ID4gT24gVHVl LCBKYW4gMTEsIDIwMjIgYXQgNTozMiBQTSBMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3Jn PiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IE9uIFR1ZSwgMTEgSmFuIDIwMjIsIFpvbmcgTGkgd3Jv dGU6Cj4gPiA+ID4KPiA+ID4gPiA+IE9uIE1vbiwgSmFuIDEwLCAyMDIyIGF0IDU6NTAgUE0gTGVl IEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4gd3JvdGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IFBsZWFzZSBpbXByb3ZlIHRoZSBzdWJqZWN0IGxpbmUuCj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IElmIHRoaXMgaXMgYSBzdHJhaWdodCByZXZlcnQsIHRoZSBzdWJqZWN0IGxpbmUgc2hvdWxk IHJlZmxlY3QgdGhhdC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSWYgbm90LCB5b3UgbmVlZCB0 byBnaXZlIHVzIHNwZWNpZmljIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgcHVycG9zZQo+ID4g PiA+ID4gPiBvZiB0aGlzIHBhdGNoLiAgUGxlYXNlIHJlYWQgdGhlIEdpdCBsb2cgZm9yIGJldHRl ciwgbW9yZSBmb3J0aGNvbWluZwo+ID4gPiA+ID4gPiBleGFtcGxlcy4KPiA+ID4gPiA+ID4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiBJdCBzZWVtcyB0byBtZSB0aGF0IHRoaXMgcGF0Y2ggaXMgbm90IGEg c3RyYWlnaHQgcmV2ZXJ0LCBpdCBwcm92aWRlcwo+ID4gPiA+ID4gYW5vdGhlciB3YXkgdG8gZml4 IHRoZSBvcmlnaW5hbCBidWlsZCB3YXJuaW5ncywganVzdCBsaWtlCj4gPiA+ID4gPiAnNDg3ZGM3 YmI2YTBjJyB0cmllZCB0byBkby4gSSBndWVzcyB0aGUgY29tbWl0IG1lc3NhZ2UgaGFzIGRlc2Ny aWJlZAo+ID4gPiA+ID4gd2hhdCB0aGUgb3JpZ2luYWwgd2FybmluZ3MgaXMgYW5kIHdoYXQgdGhl IHJvb3QgY2F1c2UgaXMsIGl0IGFsc28KPiA+ID4gPiA+IG1lbnRpb25lZCB3aGF0IGlzIGNoYW5n ZWQgaW4gdGhpcyBwYXRjaC4gSSdtIGEgYml0IGNvbmZ1c2VkIHdoZXRoZXIgd2UKPiA+ID4gPiA+ IG5lZWQgdG8gYWRkIGZpeGVzIHRhZywgaXQgbG9va3MgbGlrZSB0aGF0IGl0IG1pZ2h0IGNhdXNl IHNvbWUKPiA+ID4gPiA+IG1pc3VuZGVyc3RhbmRpbmc/Cj4gPiA+ID4KPiA+ID4gPiBJIHRoaW5r IGl0J3MgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIGFuZCBzdWJqZWN0IHRoYXQgaXMgY2F1c2luZyB0 aGUKPiA+ID4gPiBtaXN1bmRlcnN0YW5kaW5nLgo+ID4gPiA+Cj4gPiA+Cj4gPiA+IFllcywgdGhl IHN1YmplY3Qgc2hvdWxkIGJlIG1hZGUgYmV0dGVyLgo+ID4gPgo+ID4gPiA+IFBsZWFzZSBoZWxw IG1lIHdpdGggYSBjb3VwbGUgb2YgcG9pbnRzIGFuZCBJJ2xsIGhlbHAgeW91IGRyYWZ0Cj4gPiA+ ID4gc29tZXRoaW5nIHVwLgo+ID4gPiA+Cj4gPiA+ID4gRmlyc3RseSwgd2hhdCBhbGVydGVkIHlv dSB0byB0aGUgcHJvYmxlbSB5b3UncmUgYXR0ZW1wdGluZyB0byBzb2x2ZT8KPiA+ID4gPgo+ID4g Pgo+ID4gPiBJIHJlY2VudGx5IG5vdGljZWQgdGhlIGNvZGUgd2FzIGNoYW5nZWQsIEkgZ3Vlc3Mg dGhhdCBJIHdhcyBtaXNzaW5nCj4gPiA+IHNvbWV0aGluZyB0aGVyZS4gQWZ0ZXIgdHJhY2tpbmcg dGhlIGxvZywgSSBmb3VuZCB0aGF0IHRoZXJlIGlzIGEgYnVpbGQKPiA+ID4gd2FybmluZyBpbiB0 aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24sIGFuZCBpdCB3YXMgYWxyZWFkeSBmaXhlZCwgYnV0 Cj4gPiA+IGl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlcmUgYXJlIHN0aWxsIHNvbWUgc2l0dWF0aW9u cyB0aGVyZSwgcGxlYXNlIGhlbHAKPiA+ID4gbWUgdG8gc2VlIHRoZSBmb2xsb3dpbmcgaWxsdXN0 cmF0aW9uLgo+ID4gPgo+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvY2xrL3NpZml2ZS9mdTU0 MC1wcmNpLmMKPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2Nsay9zaWZpdmUvZnU1NDAtcHJj aS5jCj4gPiA+ID4gPiA+ID4gQEAgLTIwLDcgKzIwLDYgQEAKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ICAjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xvY2svc2lmaXZlLWZ1NTQwLXByY2kuaD4K PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IC0jaW5jbHVkZSAiZnU1NDAtcHJjaS5oIgo+ID4g PiA+Cj4gPiA+ID4gSG93IGlzIHRoaXMgcmVsYXRlZCB0byB0aGUgaXNzdWUvcGF0Y2g/Cj4gPiA+ ID4KPiA+ID4KPiA+ID4gTGV0J3MgZ28gYmFjayB0byB0aGUgdmVyc2lvbiB3aXRob3V0ICc0ODdk YzdiYjZhMGMnIGZpeC4gVGhlCj4gPiA+IHByY2lfY2xrX2Z1NTQwIHZhcmlhYmxlIGlzIGRlZmlu ZWQgaW4gc2lmaXZlLWZ1NTQwLXByY2kuaCBoZWFkZXIsCj4gPiA+IGhvd2V2ZXIsIGZ1NTQwLXBy Y2kuYyBpbmNsdWRlcyB0aGlzIGhlYWRlciBidXQgZG9lc24ndCB1c2UgdGhpcwo+ID4gPiB2YXJp YWJsZSwgc28gdGhlIHdhcm5pbmdzIGhhcHBlbi4KPiA+ID4KPiA+ID4gVGhlIGVhc2llc3Qgd2F5 IHRvIGRvIGl0IGlzIGp1c3QgcmVtb3ZpbmcgdGhpcyBsaW5lLCB0aGVuIHRoZSB3YXJuaW5nCj4g PiA+IGNvdWxkIGJlIGZpeGVkLiBCdXQgYXMgdGhlICc0ODdkYzdiYjZhMGMnIG9yIHRoaXMgcGF0 Y2ggZG9lcywgdGhlIGNvZGUKPiA+ID4gc2hvdWxkIGJlIGltcHJvdmVkLCB0aGUgcHJjaV9jbGtf ZnU1NDAgdmFyaWFibGUgc2hvdWxkbid0IGJlIGRlZmluZWQKPiA+ID4gaW4gdGhlIGhlYWRlciwg aXQgc2hvdWxkIGJlIG1vdmVkIHNvbWV3aGVyZS4KPiA+ID4KPiA+ID4gPiA+ID4gPiArc3RydWN0 IHByY2lfY2xrX2Rlc2MgcHJjaV9jbGtfZnU1NDAgPSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgLmNs a3MgPSBfX3ByY2lfaW5pdF9jbG9ja3NfZnU1NDAsCj4gPiA+ID4gPiA+ID4gKyAgICAgLm51bV9j bGtzID0gQVJSQVlfU0laRShfX3ByY2lfaW5pdF9jbG9ja3NfZnU1NDApLAo+ID4gPiA+ID4gPiA+ ICt9Owo+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3NpZml2 ZS9mdTU0MC1wcmNpLmggYi9kcml2ZXJzL2Nsay9zaWZpdmUvZnU1NDAtcHJjaS5oCj4gPiA+ID4g PiA+ID4gaW5kZXggYzIyMDY3N2RjMDEwLi45MzFkNmNhZDhjMWMgMTAwNjQ0Cj4gPiA+ID4gPiA+ ID4gLS0tIGEvZHJpdmVycy9jbGsvc2lmaXZlL2Z1NTQwLXByY2kuaAo+ID4gPiA+ID4gPiA+ICsr KyBiL2RyaXZlcnMvY2xrL3NpZml2ZS9mdTU0MC1wcmNpLmgKPiA+ID4gPiA+ID4gPiBAQCAtNywx MCArNyw2IEBACj4gPiA+ID4gPiA+ID4gK2V4dGVybiBzdHJ1Y3QgcHJjaV9jbGtfZGVzYyBwcmNp X2Nsa19mdTU0MDsKPiA+ID4gPgo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Ns ay9zaWZpdmUvc2lmaXZlLXByY2kuYyBiL2RyaXZlcnMvY2xrL3NpZml2ZS9zaWZpdmUtcHJjaS5j Cj4gPiA+ID4gPiA+ID4gaW5kZXggODBhMjg4YzU5ZTU2Li45MTZkMmZjMjhiOWMgMTAwNjQ0Cj4g PiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9jbGsvc2lmaXZlL3NpZml2ZS1wcmNpLmMKPiA+ID4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2Nsay9zaWZpdmUvc2lmaXZlLXByY2kuYwo+ID4gPiA+ID4g PiA+IEBAIC0xMiwxMSArMTIsNiBAQAo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSAiZnU1NDAtcHJj aS5oIgo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSAiZnU3NDAtcHJjaS5oIgo+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJjaV9jbGtfZGVzYyBwcmNpX2Ns a19mdTU0MCA9IHsKPiA+ID4gPiA+ID4gPiAtICAgICAuY2xrcyA9IF9fcHJjaV9pbml0X2Nsb2Nr c19mdTU0MCwKPiA+ID4gPiA+ID4gPiAtICAgICAubnVtX2Nsa3MgPSBBUlJBWV9TSVpFKF9fcHJj aV9pbml0X2Nsb2Nrc19mdTU0MCksCj4gPiA+ID4gPiA+ID4gLX07Cj4gPiA+ID4gPiA+ID4gLQo+ ID4gPiA+Cj4gPiA+ID4gSSdtIG5vdCBzdXJlIGlmIGl0J3MgeW91IG9yIEkgdGhhdCBpcyBtaXNz aW5nIHRoZSBwb2ludCBoZXJlLCBidXQKPiA+ID4gPiBwcmNpX2Nsa19mdTU0MCBpcyB1c2VkIHdp dGhpbiAqdGhpcyogZmlsZSBpdHNlbGY6Cj4gPiA+ID4KPiA+ID4KPiA+ID4gSGVyZSBpcyBhbm90 aGVyIHNpdHVhdGlvbiBJIG1lbnRpb25lZCBhdCB0aGUgYmVnaW5uaW5nLCBpZiB3ZSdkIGxpa2UK PiA+ID4gdG8gcHV0IHByY2lfY2xrX2Z1NTQwIGhlcmUsIHByY2lfY2xrX2Z1NzQwIHNob3VsZCBi ZSBwdXQgaGVyZSBhcyB3ZWxsLgo+ID4gPiBJIGd1ZXNzIHlvdSBkaWRuJ3QgZG8gdGhhdCBiZWNh dXNlIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBvcmlnaW5hbAo+ID4gPiBjb2RlLCBmdTc0MC1wcmNp LmMgbWlzdXNlZCB0aGUgZnU1NDAtcHJjaS5oLCBzbyB0aGVyZSBpcyBubyBidWlsZAo+ID4gPiB3 YXJuaW5nIG9uIGZ1NzQwLiBGVTc0MCBzdGlsbCB3b3JrcyBjb3JyZWN0bHkgYnkgbWlzdXNpbmcg dGhlCj4gPiA+IGZ1NTQwLXByY2kuaCBoZWFkZXIgYmVjYXVzZSBmdTc0MC1wcmNpLmMgZG9lc24n dCBhY3R1YWxseSB1c2UgdGhlCj4gPiA+IHByY2lfY2xrX2Z1NzQwIHZhcmlhYmxlLCBsaWtlIGZ1 NTQwIHdlIHRhbGtlZCBhYm91dCBlYXJsaWVyLgo+ID4gPgo+ID4gPiA+ICBzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCBzaWZpdmVfcHJjaV9vZl9tYXRjaFtdID0gewo+ID4gPiA+ICAg ICAgICAgIHsuY29tcGF0aWJsZSA9ICJzaWZpdmUsZnU1NDAtYzAwMC1wcmNpIiwgLmRhdGEgPSAm cHJjaV9jbGtfZnU1NDB9LAo+ID4gPiA+ICAgICAgICAgIHsuY29tcGF0aWJsZSA9ICJzaWZpdmUs ZnU3NDAtYzAwMC1wcmNpIiwgLmRhdGEgPSAmcHJjaV9jbGtfZnU3NDB9LAo+ID4gPiA+ICAgICAg ICAgIHt9Cj4gPiA+ID4gIH07Cj4gPiA+ID4KPiA+ID4gPiBTbyB3aHkgYXJlIHlvdSBtb3Zpbmcg aXQgb3V0IHRvIHNvbWV3aGVyZSBpdCBpcyAqbm90KiB1c2VkIGFuZCBtYWtpbmcKPiA+ID4gPiBp dCBhbiBleHRlcm4/ICBUaGlzIHNvdW5kcyBsaWtlIHRoZSBvcHBvc2l0ZSB0byB3aGF0IHlvdSdk IHdhbnQ/Cj4gPiA+Cj4gPiA+IFRoZSBpZGVhIGlzIHRoYXQgc2lmaXZlLXByY2kuYyBpcyB0aGUg Y29yZSBhbmQgY29tbW9uIHBhcnQgb2YgUFJDSSwKPiA+ID4gYW5kIEknZCBsaWtlIHRvIHNlcGFy YXRlIHRoZSBTb0NzLWRlcGVuZGVudCBwYXJ0IGludG8gU29Dcy1kZXBlbmRlbnQKPiA+ID4gZmls ZXMsIHN1Y2ggYXMgZnU1NDAtcHJjaS5jIGFuZCBmdTc0MC1wcmNpLmMuIFRoZSBnb2FsIGlzIGlm IHdlIGFkZAo+ID4gPiBuZXcgU29DcyBpbiB0aGUgZnV0dXJlLCB3ZSBjYW4ganVzdCBwdXQgdGhl IFNvQ3MtZGVwZW5kZW50IGRhdGEKPiA+ID4gc3RydWN0dXJlIGluIHRoZSBuZXcgQyBmaWxlLCBh bmQgZG8gYXMgbWluaW11bSBtb2RpZmljYXRpb24gYXMKPiA+ID4gcG9zc2libGUgaW4gdGhlIGNv cmUgZmlsZSAoaS5lLiBzaWZpdmUtcHJjaS5jKS4gSXQgbWlnaHQgYWxzbyBoZWxwIHVzCj4gPiA+ IHRvIHNlZSBhbGwgU29Dcy1kZXBlbmRlbnQgZGF0YSBpbiBvbmUgZmlsZSwgdGhlbiB3ZSBkb24n dCBuZWVkIHRvCj4gPiA+IGNyb3NzIG1hbnkgZmlsZXMuIFB1dHRpbmcgdGhlc2UgdHdvIHZhcmlh YmxlcyBpbiBzaWZpdmUtcHJpYy5jIGlzIHRoZQo+ID4gPiByaWdodCB0aGluZyB0byBkbywgYnV0 IHRoYXQgaXMgd2h5IEkgc2VwYXJhdGUgdGhlbSBhbmQgbWFrZSB0aGVtCj4gPiA+IGV4dGVybiBp biB0aGlzIHBhdGNoLgo+ID4KPiA+IEkgY2FuIHNlZSB3aGF0IHlvdSBhcmUgZG9pbmcsIGJ1dCBJ IGRvbid0IHRoaW5rIHRoaXMgaXMgdGhlIHJpZ2h0Cj4gPiB0aGluZyB0byBkby4gIFBsZWFzZSBw dXQgdGhlIHN0cnVjdCBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcyBpdCdzCj4gPiByZWZlcmVuY2Vk Lgo+IAo+IElmIHdlIGRlY2lkZSB0byBtb3ZlIHRoZW0gaW50byBzaWZpdmUtcHJjaS5jIChpLmUu IHB1dCBpdCBpbiB3aGVyZQo+IGl0J3MgcmVmZXJlbmNlZC4pLCBJIHdvcnJpZWQgdGhhdCB3ZSBt aWdodCBuZWVkIHRvIG1vdmUgYWxsIHN0dWZmCj4gd2hpY2ggYXJlIGluIGZ1NTQwLXByY2kuYyBh bmQgZnU3NDAtcHJjaS5jLiBCZWNhdXNlICdwcmNpX2Nsa19mdTU0MCcKPiBpcyByZWZlcmVuY2Vk IGluIHNpZml2ZS1wcmNpLmMsIHdoZXJlYXMgJ19fcHJjaV9pbml0X2Nsb2Nrc19mdTU0MCcgaXMK PiB1c2VkIGJ5ICdwcmNpX2Nsa19mdTU0MCcsIGFuZCB0aGUgYWxtb3N0IHRoaW5ncyBpbiBmdTU0 MC1wcmNpLmMgYXJlCj4gdXNlZCBieSAnX19wcmNpX2luaXRfY2xvY2tzX2Z1NTQwJy4gSXQgc2Vl bXMgdG8gYmUgYSBsaXR0bGUgYml0Cj4gZGlmZmljdWx0IHRvIGNsZWFybHkgZGVjb3VwbGUgaXQg Zm9yIG1vZHVsYXJpemF0aW9uIHdoaWNoIEkgd2FudCB0bwo+IGRvLiBXaGF0IHRoaXMgcGF0Y2gg ZG9lcyBtaWdodCBiZSBhIGFjY2VwdGVkIHdheSwgSSBob3BlIHRoYXQgeW91IGNhbgo+IGNvbnNp ZGVyIGl0IGFnYWluLgo+IAo+ID4KPiA+IEFuZCB5ZXMgdGhhdCBzaG91bGQgYWxzbyBiZSB0aGUg Y2FzZSBmb3IgcHJjaV9jbGtfZnU3NDAgYW5kIHllcywgaXQKPiA+IHdhcyBvdmVyLWxvb2tlZCBi ZWNhdXNlIGl0IHdhc24ndCBjYXVzaW5nIHdhcm5pbmdzIGF0IGJ1aWxkIHRpbWUgZm9yCj4gPiB3 aGF0ZXZlciByZWFzb24uCj4gPgo+ID4gSU1ITywgcGxhY2luZyAnc3RydWN0IG9mX2RldmljZV9p ZCcgbWF0Y2ggdGFibGVzIGluIGhlYWRlcnMgaXMgYWxzbwo+ID4gb2RkIGFuZCBpcyBsaWtlbHkg dGhlIHJlYWwgY2F1c2Ugb2YgdGhpcyBzdHJhbmdlIHNpdHVhdGlvbi4KPiAKPiBJIGNvdWxkbid0 IHNlZSB3aGF0IGFyZSB5b3UgcG9pbnRpbmcsIGRvIHlvdSBtaW5kIGdpdmUgbW9yZSBkZXRhaWxz Cj4gYWJvdXQgaXQ/IEl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlIG1hdGNoIHRhYmxlIGlzIHB1dCBp biBDIGZpbGUgKGkuZS4KPiBzaWZpdmUtcHJjaS5jKS4KCk9oLCBzb3JyeSwgaXQncyBhIGNvbW1v biBzb3VyY2UgZmlsZSwgcmF0aGVyIHRoYW4gYSBoZWFkZXIuCgpPa2F5LCBzbyBJIHdlbnQgYW5k IGFjdHVhbGx5IGxvb2tlZCBhdCB0aGUgY29kZSB0aGlzIHRpbWUuCgpJZiBJIHdlcmUgeW91IEkg d291bGQgbW92ZSBhbGwgb2YgdGhlIGRldmljZSBzcGVjaWZpYyBzdHJ1Y3RzIGFuZAp0YWJsZXMg aW50byB0aGUgZGV2aWNlIHNwZWNpZmljIGhlYWRlciBmaWxlcywgdGhlbiBkZWxldGUgdGhlIGRl dmljZQpzcGVjaWZpYyBzb3VyY2UgKEMpIGZpbGVzIGVudGlyZWx5LgoKVGhlcmUgc2VlbXMgdG8g YmUgbm8gZ29vZCByZWFzb24gZm9yIGNhcnJ5aW5nIGEgY29tbW9uIHNvdXJjZSBmaWxlIGFzCndl bGwgYXMgYSBzb3VyY2UgZmlsZSBBTkQgaGVhZGVyIGZpbGUgZm9yIGVhY2ggc3VwcG9ydGVkIGRl dmljZS4KSU1ITywgdGhhdCdzIG92ZXItY29tcGxpY2F0aW5nIHRoaW5ncyBmb3Igbm8gYXBwYXJl bnQgZ2Fpbi4KCi0tIApMZWUgSm9uZXMgW+adjueQvOaWr10KUHJpbmNpcGFsIFRlY2huaWNhbCBM ZWFkIC0gRGV2ZWxvcGVyIFNlcnZpY2VzCkxpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3 YXJlIGZvciBBcm0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9n CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1y aXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==