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=-8.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 1DA9DC4708F for ; Fri, 28 May 2021 09:26:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0578A613E3 for ; Fri, 28 May 2021 09:26:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235666AbhE1J1x convert rfc822-to-8bit (ORCPT ); Fri, 28 May 2021 05:27:53 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:58893 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235493AbhE1J1o (ORCPT ); Fri, 28 May 2021 05:27:44 -0400 Received: from mail-wr1-f51.google.com ([209.85.221.51]) by mrelayeu.kundenserver.de (mreue009 [213.165.67.97]) with ESMTPSA (Nemesis) id 1MUGmJ-1lwDPB1hNj-00RKEq; Fri, 28 May 2021 11:26:06 +0200 Received: by mail-wr1-f51.google.com with SMTP id m18so2611306wrv.2; Fri, 28 May 2021 02:26:06 -0700 (PDT) X-Gm-Message-State: AOAM531aGTsAf7aRC087pOKmTKHuQSc0B2fCmvVTaHJOOcImJj1LADR7 sAhlvdN4DuRYwMR9DT3XLTvQgzoqgcq0JmvyDqM= X-Google-Smtp-Source: ABdhPJwUBBPBqy6sEDp8MUkLq9WzypD0Ti5CAqDfrYMCxwUKuoh2u9qM4m0RTX0uKLkvdTb1O0BPwtgr4KrPVkM5omw= X-Received: by 2002:adf:e589:: with SMTP id l9mr8000769wrm.361.1622193965898; Fri, 28 May 2021 02:26:05 -0700 (PDT) MIME-Version: 1.0 References: <20210523232556.15017-1-digetx@gmail.com> <8b6af8c0-6f01-193f-1eb4-4e230871f0cd@gmail.com> In-Reply-To: <8b6af8c0-6f01-193f-1eb4-4e230871f0cd@gmail.com> From: Arnd Bergmann Date: Fri, 28 May 2021 11:24:36 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v1] kbuild: Disable compile testing if HAVE_LEGACY_CLK enabled To: Dmitry Osipenko Cc: Geert Uytterhoeven , Thierry Reding , Jonathan Hunter , Krzysztof Kozlowski , Stephen Boyd , Tony Lindgren , Paul Burton , John Crispin , "open list:BROADCOM NVRAM DRIVER" , Linux ARM , linux-m68k , Linux Kernel Mailing List , linux-tegra , linux-clk , "open list:TI ETHERNET SWITCH DRIVER (CPSW)" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Provags-ID: V03:K1:ZxmZe66P3gA1RFoWlXwfGZn23pAfY6er9wEJOUOeuPZfr13zAwo Nv6OSeliDuoSrIZqL0lanKzF1Fzb9Sr6PkDKrCiO9HAXOatpvNaNbR6eo3C0r9asSJRZ7MP 3S8J3zZ1Hh2/mW2A3FzHfFA8q5VIMAyiAxEmYjs38fsSdwz6906SwkWJjooQa46iYxVovED Fg/yCwpDZL1LKsN9LGpfQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:pHJrBUoRBmQ=:X2mhG5x1vx4uO3+KX2YGMS V7bhmFDEMfN7q+qdEEycrYlL8RRy+iqc6BncDqAaVXQIWebQudKLCAmdDnB+VdCBst2ZdAKTy u9iQhgkgGqmDkva9fco/1NiqExoKD0uY+oZLzEWL0cMVx781kc9++/aQuzhtvmtx3GLHXsf54 74vVBKAJpsizMlpSZcshKpGLatnSkzIjohkM6ghnoxVJiuKeKpCHJ/fhKyFripLabTwHjMI5r /+cKnXcCBWKvmEQH8xB89h6bxdCgF1Ggpv6Itb0M5Dao4CpXPH9GvDhhks5Z9Y9B6pBWnlgHV qgOjPYqSzOBPShVKLHN/fPUmatPA5MkPnX7W/KhM1btLwlakFOtxPDnJT8RPZeh5fmdl1Pgro 7oZsuRSOP+mYW2MymM65qplkZU8UTBFOD2DRVLA2BgRH123VRF5PvQ4csRfMuL3FSp401AmSy UE0yqG5TwLkfGGPRs+0rORBMxxLCeqIszS8B2oVHGw+UbQ0h7HzHEWJG3/hlwyPPWgAt3Ss64 yp6oIrEH2v1uixzidOp9gU= Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org On Mon, May 24, 2021 at 2:39 PM Dmitry Osipenko wrote: > 24.05.2021 11:54, Geert Uytterhoeven пишет: > > Hi Dmitry, > > > > On Mon, May 24, 2021 at 1:26 AM Dmitry Osipenko wrote: > >> There are couple older platforms that can't be compile-tested because they > >> partially implement CLK API. It causes build failure of kernel drivers due > >> to the missing symbols of the unimplemented part of CLK API. > >> > >> These platforms are: ARM EP93XX, ARM OMAP1, m68k ColdFire, MIPS AR7, > >> MIPS Ralink. There is also most of arch/sh/, with the one exception of J2. On MIPS, I see BCM63XX and Lantiq in addition to AR7 and Ralink. I think the patches to convert ep93xx are under discussion at the moment, and I have previously done an implementation for omap1 that I have meant to dig out for a while. Both of the Arm platforms should work fine with compile testing, as I have previously added the stubs as necessary. > >> @@ -131,7 +131,7 @@ config INIT_ENV_ARG_LIMIT > >> > >> config COMPILE_TEST > >> bool "Compile also drivers which will not load" > >> - depends on HAS_IOMEM > >> + depends on HAS_IOMEM && !HAVE_LEGACY_CLK > > > > That sounds a bit drastic to me. Usually we just try to implement the > > missing functionality, or provide stubs. > > Which functions are missing? > > Everything that belongs to CONFIG_COMMON_CLK needs stubs. > > That is everything under CONFIG_HAVE_CLK [1], excluding functions > belonging to clk-devres.o and clk-bulk.o [2]. The HAVE_LEGACY_CLK > selects HAVE_CLK, but the COMMON_CLK is under HAVE_CLK too. > > [1] > https://elixir.bootlin.com/linux/v5.13-rc3/source/include/linux/clk.h#L786 > [2] > https://elixir.bootlin.com/linux/v5.13-rc3/source/drivers/clk/Makefile#L3 > > This problem is repeated over and over again for the past years. Some > maintainers are adding "depends on COMMON_CLK" for COMPILE_TEST of each > driver, but this doesn't solve the root of the problem, and thus, it's > constantly reoccurring. These dependencies tend to reflect the actual requirements though: if a driver calls the clk interfaces, it is likely to require them at runtime as well. If a driver that calls clk_get_rate() does not have a fallback to deal with '0' getting returned, this means that building it without CONFIG_COMMON_CLK gives you a driver that can't work on any hardware at all. In this case depends on COMMON_CLK || COMPILE_TEST does reflect what we want.depends onb > Recently Krzysztof Kozlowski added couple more clk stubs for MIPS, but > still lots of stubs are missing. Some platforms don't have any stubs at > all and apparently nobody cares to fix them. > > There 3 possible solutions: > > 1. Factor out COMMON_CLK from HAVE_LEGACY_CLK, if this is possible > 2. Build stubs universally, maybe using weak functions. > 3. Disable compile-testing for HAVE_LEGACY_CLK > > The third option is the simplest. If anyone will care to fix those > legacy platforms properly, then compile-testing could be re-enabled for > them. This is my proposal. It is pretty much a given that arch/sh won't be converted to common clk at this point, and I think disabling COMPILE_TEST on arch/sh globabally makes sense. Converting coldfire and ar7/lantiq/bcm63xx/ralink to common_clk shouldn't actually be too hard, but I don't think it's a priority for anyone at the moment. One other idea I can think of is to redefine CONFIG_HAVE_CLK. At the moment, this is defined as (COMMON_CLK || HAVE_LEGACY_CLK), not literally, but for all practical purposes. If HAVE_CLK is disabled, we get the stubs, so the build failures you saw happen very rarely on drivers that use clk interfaces but have no such Kconfig dependency. If we change this to define it as config HAVE_CLK def_bool COMMON_CLK || COMPILE_TEST while annotating the sh/coldfire/ar7/bcm63xx/lantiq/ralink specific drivers as 'depends on HAVE_CLK || HAVE_LEGACY_CLK', then we can compile test any driver, but actually get the build failures for drivers that lack a 'depends on COMMON_CLK' and can fix them up more easily. This probably requires adding a ton of missing dependencies first that happened to get ignored in the past. If we don't do this, another approach would be to provide global stubs for anything that isn't already provided by the platforms. Here is a list of which interfaces each version actually has implemented (Y), stubbed out (S) or lacks (N): omap1 ep93xx ar7 bcm63xx lantiq ralink coldf sh clk_enable Y Y S Y Y S Y Y clk_disable Y Y S Y Y S Y Y clk_get_rate Y Y Y Y Y Y S Y clk_round_rate Y S S S Y S S Y clk_set_rate Y Y S S Y S S Y clk_set_parent S S S N N S S Y clk_get_parent S Y S N N S S Y clk_get N N Y N N N Y N clk_put N N S N N N S N - ar7 and coldfire are the only ones that lack the generic clkdev lookup but instead provide their own clk_get/clk_put functions. This can probably get addressed easily. - The clk_get_parent/set_parent functions are only provided on ep93xx and sh. Once ep93xx is out of the way, we could remove the private stubs and always provide the global ones, except for sh. - The remaining five functions (enable/disable/get_rate/set_rate/round_rate) have a consistent interface across all eight platforms, they are always exported in that case. Arnd 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=-9.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 2CEA1C47087 for ; Fri, 28 May 2021 09:27:48 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E7DAE61183 for ; Fri, 28 May 2021 09:27:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E7DAE61183 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arndb.de 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=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=AlRWHAUoZXRFyzqyX5jPg295qTe750aXsiwkmNIDA70=; b=MszJdywDzkNDFK 1gEk/vODOa468MaOV9ihKSyWDyt2rhVTs1SjDcRqDnhWS4ittHWwDJSQ6XUjAdMo/jr8DrWSEIN9I D53RoC6qDEx4RQ/zlndri3hUJSsn0zfssF8hvfpdBgPojjMTf1j9M2aXR9dDUAW8PKkt0JeDw+gw/ ofR2Kc8WTzZGNsbhtQsEGCTbX5XEMK7xl5wllXXrdN+8FF1MU/GfkY6iomtXSrrSXZIVQXjkCn4a9 z1zpffuCVWtTHhkQuCUvj3ck6TX0m+ZvyEpTbtfpkhfTUiwmTN33J3YuV+Q+L39c+O164qCHrRhw8 my/dobKX/fgt0El0UsIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lmYkv-00DrzD-Od; Fri, 28 May 2021 09:26:13 +0000 Received: from mout.kundenserver.de ([212.227.126.133]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lmYkq-00Drw9-ST for linux-arm-kernel@lists.infradead.org; Fri, 28 May 2021 09:26:11 +0000 Received: from mail-wr1-f49.google.com ([209.85.221.49]) by mrelayeu.kundenserver.de (mreue009 [213.165.67.97]) with ESMTPSA (Nemesis) id 1MKbc4-1m7X0s1OOa-00Kytt for ; Fri, 28 May 2021 11:26:06 +0200 Received: by mail-wr1-f49.google.com with SMTP id g17so2539246wrs.13 for ; Fri, 28 May 2021 02:26:06 -0700 (PDT) X-Gm-Message-State: AOAM532vE2lgIaNMRVlRipfNpVib2Om7ohzOzGfONGAnRH+ns0k5OEAb E4QelZNsux2+GIU7KVm+bdhZObhy5H7sDnyVvdw= X-Google-Smtp-Source: ABdhPJwUBBPBqy6sEDp8MUkLq9WzypD0Ti5CAqDfrYMCxwUKuoh2u9qM4m0RTX0uKLkvdTb1O0BPwtgr4KrPVkM5omw= X-Received: by 2002:adf:e589:: with SMTP id l9mr8000769wrm.361.1622193965898; Fri, 28 May 2021 02:26:05 -0700 (PDT) MIME-Version: 1.0 References: <20210523232556.15017-1-digetx@gmail.com> <8b6af8c0-6f01-193f-1eb4-4e230871f0cd@gmail.com> In-Reply-To: <8b6af8c0-6f01-193f-1eb4-4e230871f0cd@gmail.com> From: Arnd Bergmann Date: Fri, 28 May 2021 11:24:36 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v1] kbuild: Disable compile testing if HAVE_LEGACY_CLK enabled To: Dmitry Osipenko Cc: Geert Uytterhoeven , Thierry Reding , Jonathan Hunter , Krzysztof Kozlowski , Stephen Boyd , Tony Lindgren , Paul Burton , John Crispin , "open list:BROADCOM NVRAM DRIVER" , Linux ARM , linux-m68k , Linux Kernel Mailing List , linux-tegra , linux-clk , "open list:TI ETHERNET SWITCH DRIVER (CPSW)" X-Provags-ID: V03:K1:CXc7FDt7JfvbJ4+gIqGYsGBzC2Gp2ljFTCXqSYuaxCkS8rhtwfR xwMXlWoD4xRUJb/AayjYpp9fqlpcMIOa3pW6zfKUb2IGBsFcaJnzPq5cTVANU4Qc8PB4VJ1 lpVLXQE5OKiMpbJA7r3FKnAU3wKpJkK6cJbid3NawszDSpbnL2FVfrPL+qX8fFZO1xG8e00 sW6tu+YkyIOOuoKI/z6qA== X-UI-Out-Filterresults: notjunk:1;V03:K0:7MyBs4AT+F8=:IFTya5+h0GzEyO5Gv37WOL K13Q4blc0y/z9DJqNjMW7MBFM/4pUU1QhiHfZfSLs+NzN9aRLtljfMynJ2avNRaJGhAclnpq0 +dyOqYStvA5ALxOIxl2XM4WMif8q6keczk2aLA9fIK50k9ymb1x61glEcHjp4Iwk7znt/0jYA rq89yP7426WyZuugQ7gv0RqC+rSAgHGDMIKPuBGEFeAWJWkXvQ9UW08i51Q1MY4TVysqiItKQ MxdxHyEXJErwWA8pGXQMYBnuKnnQb4i0ekXVs0rxYJDxHk2Wwg3qszn5ee9mgov6tVjbOM9IF 2JPUWcJXZvkqiyPkOoesOUVp6ceCsyaFlG+X6og+9qFfssrDqhTRuZFrzl3mB5c9JeeF38g3b H4cJLGbpZMVj3Hjf1FhahleViJKvun3ldjcGEhsxW9KjDMfA9GxQ0/dCLmmc6mlASgR2hg2X+ 6WJx/tDeHpK5QDfNdiV51LqgPBXzFUxZbiA/RcHSGExxQtn0xKdY/ghIxOyteSKT1els4p8yv TbmNWdxTdruXBBYF+EqFyM= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210528_022609_236747_53ABD673 X-CRM114-Status: GOOD ( 38.03 ) 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 T24gTW9uLCBNYXkgMjQsIDIwMjEgYXQgMjozOSBQTSBEbWl0cnkgT3NpcGVua28gPGRpZ2V0eEBn bWFpbC5jb20+IHdyb3RlOgo+IDI0LjA1LjIwMjEgMTE6NTQsIEdlZXJ0IFV5dHRlcmhvZXZlbiDQ v9C40YjQtdGCOgo+ID4gSGkgRG1pdHJ5LAo+ID4KPiA+IE9uIE1vbiwgTWF5IDI0LCAyMDIxIGF0 IDE6MjYgQU0gRG1pdHJ5IE9zaXBlbmtvIDxkaWdldHhAZ21haWwuY29tPiB3cm90ZToKPiA+PiBU aGVyZSBhcmUgY291cGxlIG9sZGVyIHBsYXRmb3JtcyB0aGF0IGNhbid0IGJlIGNvbXBpbGUtdGVz dGVkIGJlY2F1c2UgdGhleQo+ID4+IHBhcnRpYWxseSBpbXBsZW1lbnQgQ0xLIEFQSS4gSXQgY2F1 c2VzIGJ1aWxkIGZhaWx1cmUgb2Yga2VybmVsIGRyaXZlcnMgZHVlCj4gPj4gdG8gdGhlIG1pc3Np bmcgc3ltYm9scyBvZiB0aGUgdW5pbXBsZW1lbnRlZCBwYXJ0IG9mIENMSyBBUEkuCj4gPj4KPiA+ PiBUaGVzZSBwbGF0Zm9ybXMgYXJlOiBBUk0gRVA5M1hYLCBBUk0gT01BUDEsIG02OGsgQ29sZEZp cmUsIE1JUFMgQVI3LAo+ID4+ICAgICAgICAgICAgICAgICAgICAgIE1JUFMgUmFsaW5rLgoKVGhl cmUgaXMgYWxzbyBtb3N0IG9mIGFyY2gvc2gvLCB3aXRoIHRoZSBvbmUgZXhjZXB0aW9uIG9mIEoy LgoKT24gTUlQUywgSSBzZWUgQkNNNjNYWCBhbmQgTGFudGlxIGluIGFkZGl0aW9uIHRvIEFSNyBh bmQgUmFsaW5rLgoKSSB0aGluayB0aGUgcGF0Y2hlcyB0byBjb252ZXJ0IGVwOTN4eCBhcmUgdW5k ZXIgZGlzY3Vzc2lvbiBhdCB0aGUgbW9tZW50LAphbmQgSSBoYXZlIHByZXZpb3VzbHkgZG9uZSBh biBpbXBsZW1lbnRhdGlvbiBmb3Igb21hcDEgdGhhdCBJIGhhdmUgbWVhbnQKdG8gZGlnIG91dCBm b3IgYSB3aGlsZS4KCkJvdGggb2YgdGhlIEFybSBwbGF0Zm9ybXMgc2hvdWxkIHdvcmsgZmluZSB3 aXRoIGNvbXBpbGUgdGVzdGluZywgYXMgSQpoYXZlIHByZXZpb3VzbHkgYWRkZWQgdGhlIHN0dWJz IGFzIG5lY2Vzc2FyeS4KCj4gPj4gQEAgLTEzMSw3ICsxMzEsNyBAQCBjb25maWcgSU5JVF9FTlZf QVJHX0xJTUlUCj4gPj4KPiA+PiAgY29uZmlnIENPTVBJTEVfVEVTVAo+ID4+ICAgICAgICAgYm9v bCAiQ29tcGlsZSBhbHNvIGRyaXZlcnMgd2hpY2ggd2lsbCBub3QgbG9hZCIKPiA+PiAtICAgICAg IGRlcGVuZHMgb24gSEFTX0lPTUVNCj4gPj4gKyAgICAgICBkZXBlbmRzIG9uIEhBU19JT01FTSAm JiAhSEFWRV9MRUdBQ1lfQ0xLCj4gPgo+ID4gVGhhdCBzb3VuZHMgYSBiaXQgZHJhc3RpYyB0byBt ZS4gIFVzdWFsbHkgd2UganVzdCB0cnkgdG8gaW1wbGVtZW50IHRoZQo+ID4gbWlzc2luZyBmdW5j dGlvbmFsaXR5LCBvciBwcm92aWRlIHN0dWJzLgo+ID4gV2hpY2ggZnVuY3Rpb25zIGFyZSBtaXNz aW5nPwo+Cj4gRXZlcnl0aGluZyB0aGF0IGJlbG9uZ3MgdG8gQ09ORklHX0NPTU1PTl9DTEsgbmVl ZHMgc3R1YnMuCj4KPiBUaGF0IGlzIGV2ZXJ5dGhpbmcgdW5kZXIgQ09ORklHX0hBVkVfQ0xLIFsx XSwgZXhjbHVkaW5nIGZ1bmN0aW9ucwo+IGJlbG9uZ2luZyB0byBjbGstZGV2cmVzLm8gYW5kIGNs ay1idWxrLm8gWzJdLiBUaGUgSEFWRV9MRUdBQ1lfQ0xLCj4gc2VsZWN0cyBIQVZFX0NMSywgYnV0 IHRoZSBDT01NT05fQ0xLIGlzIHVuZGVyIEhBVkVfQ0xLIHRvby4KPgo+IFsxXQo+IGh0dHBzOi8v ZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y1LjEzLXJjMy9zb3VyY2UvaW5jbHVkZS9saW51eC9j bGsuaCNMNzg2Cj4gWzJdCj4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjUuMTMt cmMzL3NvdXJjZS9kcml2ZXJzL2Nsay9NYWtlZmlsZSNMMwo+Cj4gVGhpcyBwcm9ibGVtIGlzIHJl cGVhdGVkIG92ZXIgYW5kIG92ZXIgYWdhaW4gZm9yIHRoZSBwYXN0IHllYXJzLiBTb21lCj4gbWFp bnRhaW5lcnMgYXJlIGFkZGluZyAiZGVwZW5kcyBvbiBDT01NT05fQ0xLIiBmb3IgQ09NUElMRV9U RVNUIG9mIGVhY2gKPiBkcml2ZXIsIGJ1dCB0aGlzIGRvZXNuJ3Qgc29sdmUgdGhlIHJvb3Qgb2Yg dGhlIHByb2JsZW0sIGFuZCB0aHVzLCBpdCdzCj4gY29uc3RhbnRseSByZW9jY3VycmluZy4KClRo ZXNlIGRlcGVuZGVuY2llcyB0ZW5kIHRvIHJlZmxlY3QgdGhlIGFjdHVhbCByZXF1aXJlbWVudHMg dGhvdWdoOiBpZiBhCmRyaXZlciBjYWxscyB0aGUgY2xrIGludGVyZmFjZXMsIGl0IGlzIGxpa2Vs eSB0byByZXF1aXJlIHRoZW0gYXQKcnVudGltZSBhcyB3ZWxsLgoKSWYgYSBkcml2ZXIgdGhhdCBj YWxscyBjbGtfZ2V0X3JhdGUoKSBkb2VzIG5vdCBoYXZlIGEgZmFsbGJhY2sgdG8gZGVhbCB3aXRo ICcwJwpnZXR0aW5nIHJldHVybmVkLCB0aGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgaXQgd2l0aG91 dCBDT05GSUdfQ09NTU9OX0NMSwpnaXZlcyB5b3UgYSBkcml2ZXIgdGhhdCBjYW4ndCB3b3JrIG9u IGFueSBoYXJkd2FyZSBhdCBhbGwuIEluIHRoaXMgY2FzZQoKICBkZXBlbmRzIG9uIENPTU1PTl9D TEsgfHwgQ09NUElMRV9URVNUCgpkb2VzIHJlZmxlY3Qgd2hhdCB3ZSB3YW50LmRlcGVuZHMgb25i Cgo+IFJlY2VudGx5IEtyenlzenRvZiBLb3psb3dza2kgYWRkZWQgY291cGxlIG1vcmUgY2xrIHN0 dWJzIGZvciBNSVBTLCBidXQKPiBzdGlsbCBsb3RzIG9mIHN0dWJzIGFyZSBtaXNzaW5nLiBTb21l IHBsYXRmb3JtcyBkb24ndCBoYXZlIGFueSBzdHVicyBhdAo+IGFsbCBhbmQgYXBwYXJlbnRseSBu b2JvZHkgY2FyZXMgdG8gZml4IHRoZW0uCj4KPiBUaGVyZSAzIHBvc3NpYmxlIHNvbHV0aW9uczoK Pgo+IDEuIEZhY3RvciBvdXQgQ09NTU9OX0NMSyBmcm9tIEhBVkVfTEVHQUNZX0NMSywgaWYgdGhp cyBpcyBwb3NzaWJsZQo+IDIuIEJ1aWxkIHN0dWJzIHVuaXZlcnNhbGx5LCBtYXliZSB1c2luZyB3 ZWFrIGZ1bmN0aW9ucy4KPiAzLiBEaXNhYmxlIGNvbXBpbGUtdGVzdGluZyBmb3IgSEFWRV9MRUdB Q1lfQ0xLCj4KPiBUaGUgdGhpcmQgb3B0aW9uIGlzIHRoZSBzaW1wbGVzdC4gSWYgYW55b25lIHdp bGwgY2FyZSB0byBmaXggdGhvc2UKPiBsZWdhY3kgcGxhdGZvcm1zIHByb3Blcmx5LCB0aGVuIGNv bXBpbGUtdGVzdGluZyBjb3VsZCBiZSByZS1lbmFibGVkIGZvcgo+IHRoZW0uIFRoaXMgaXMgbXkg cHJvcG9zYWwuCgpJdCBpcyBwcmV0dHkgbXVjaCBhIGdpdmVuIHRoYXQgYXJjaC9zaCB3b24ndCBi ZSBjb252ZXJ0ZWQgdG8gY29tbW9uIGNsawphdCB0aGlzIHBvaW50LCBhbmQgSSB0aGluayBkaXNh YmxpbmcgQ09NUElMRV9URVNUIG9uIGFyY2gvc2ggZ2xvYmFiYWxseQptYWtlcyBzZW5zZS4KCkNv bnZlcnRpbmcgY29sZGZpcmUgYW5kIGFyNy9sYW50aXEvYmNtNjN4eC9yYWxpbmsgdG8gY29tbW9u X2NsayBzaG91bGRuJ3QKYWN0dWFsbHkgYmUgdG9vIGhhcmQsIGJ1dCBJIGRvbid0IHRoaW5rIGl0 J3MgYSBwcmlvcml0eSBmb3IgYW55b25lIGF0CnRoZSBtb21lbnQuCgpPbmUgb3RoZXIgaWRlYSBJ IGNhbiB0aGluayBvZiBpcyB0byByZWRlZmluZSBDT05GSUdfSEFWRV9DTEsuIEF0IHRoZQptb21l bnQsIHRoaXMgaXMgZGVmaW5lZCBhcyAoQ09NTU9OX0NMSyB8fCBIQVZFX0xFR0FDWV9DTEspLApu b3QgbGl0ZXJhbGx5LCBidXQgZm9yIGFsbCBwcmFjdGljYWwgcHVycG9zZXMuIElmIEhBVkVfQ0xL IGlzIGRpc2FibGVkLAp3ZSBnZXQgdGhlIHN0dWJzLCBzbyB0aGUgYnVpbGQgZmFpbHVyZXMgeW91 IHNhdyBoYXBwZW4gdmVyeSByYXJlbHkKb24gZHJpdmVycyB0aGF0IHVzZSBjbGsgaW50ZXJmYWNl cyBidXQgaGF2ZSBubyBzdWNoIEtjb25maWcgZGVwZW5kZW5jeS4KCklmIHdlIGNoYW5nZSB0aGlz IHRvIGRlZmluZSBpdCBhcwoKY29uZmlnIEhBVkVfQ0xLCiAgICAgICAgZGVmX2Jvb2wgQ09NTU9O X0NMSyB8fCBDT01QSUxFX1RFU1QKCndoaWxlIGFubm90YXRpbmcgdGhlIHNoL2NvbGRmaXJlL2Fy Ny9iY202M3h4L2xhbnRpcS9yYWxpbmsgc3BlY2lmaWMKZHJpdmVycyBhcyAnZGVwZW5kcyBvbiBI QVZFX0NMSyB8fCBIQVZFX0xFR0FDWV9DTEsnLCB0aGVuCndlIGNhbiBjb21waWxlIHRlc3QgYW55 IGRyaXZlciwgYnV0IGFjdHVhbGx5IGdldCB0aGUgYnVpbGQgZmFpbHVyZXMKZm9yIGRyaXZlcnMg dGhhdCBsYWNrIGEgJ2RlcGVuZHMgb24gQ09NTU9OX0NMSycgYW5kIGNhbiBmaXgKdGhlbSB1cCBt b3JlIGVhc2lseS4gVGhpcyBwcm9iYWJseSByZXF1aXJlcyBhZGRpbmcgYSB0b24gb2YKbWlzc2lu ZyBkZXBlbmRlbmNpZXMgZmlyc3QgdGhhdCBoYXBwZW5lZCB0byBnZXQgaWdub3JlZCBpbiB0aGUK cGFzdC4KCklmIHdlIGRvbid0IGRvIHRoaXMsIGFub3RoZXIgYXBwcm9hY2ggd291bGQgYmUgdG8g cHJvdmlkZQpnbG9iYWwgc3R1YnMgZm9yIGFueXRoaW5nIHRoYXQgaXNuJ3QgYWxyZWFkeSBwcm92 aWRlZCBieQp0aGUgcGxhdGZvcm1zLiBIZXJlIGlzIGEgbGlzdCBvZiB3aGljaCBpbnRlcmZhY2Vz IGVhY2ggdmVyc2lvbgphY3R1YWxseSBoYXMgaW1wbGVtZW50ZWQgKFkpLCBzdHViYmVkIG91dCAo Uykgb3IgbGFja3MgKE4pOgoKICAgICAgICAgICAgICAgIG9tYXAxICAgZXA5M3h4ICBhcjcgICAg IGJjbTYzeHggbGFudGlxICByYWxpbmsgIGNvbGRmICAgc2gKY2xrX2VuYWJsZSAgICAgIFkgICAg ICAgWSAgICAgICBTICAgICAgIFkgICAgICAgWSAgICAgICBTICAgICAgIFkgICAgICAgWQpjbGtf ZGlzYWJsZSAgICAgWSAgICAgICBZICAgICAgIFMgICAgICAgWSAgICAgICBZICAgICAgIFMgICAg ICAgWSAgICAgICBZCmNsa19nZXRfcmF0ZSAgICBZICAgICAgIFkgICAgICAgWSAgICAgICBZICAg ICAgIFkgICAgICAgWSAgICAgICBTICAgICAgIFkKY2xrX3JvdW5kX3JhdGUgIFkgICAgICAgUyAg ICAgICBTICAgICAgIFMgICAgICAgWSAgICAgICBTICAgICAgIFMgICAgICAgWQpjbGtfc2V0X3Jh dGUgICAgWSAgICAgICBZICAgICAgIFMgICAgICAgUyAgICAgICBZICAgICAgIFMgICAgICAgUyAg ICAgICBZCmNsa19zZXRfcGFyZW50ICBTICAgICAgIFMgICAgICAgUyAgICAgICBOICAgICAgIE4g ICAgICAgUyAgICAgICBTICAgICAgIFkKY2xrX2dldF9wYXJlbnQgIFMgICAgICAgWSAgICAgICBT ICAgICAgIE4gICAgICAgTiAgICAgICBTICAgICAgIFMgICAgICAgWQpjbGtfZ2V0ICAgICAgICAg TiAgICAgICBOICAgICAgIFkgICAgICAgTiAgICAgICBOICAgICAgIE4gICAgICAgWSAgICAgICBO CmNsa19wdXQgICAgICAgICBOICAgICAgIE4gICAgICAgUyAgICAgICBOICAgICAgIE4gICAgICAg TiAgICAgICBTICAgICAgIE4KCi0gYXI3IGFuZCBjb2xkZmlyZSBhcmUgdGhlIG9ubHkgb25lcyB0 aGF0IGxhY2sgdGhlIGdlbmVyaWMKICBjbGtkZXYgbG9va3VwIGJ1dCBpbnN0ZWFkIHByb3ZpZGUg dGhlaXIgb3duIGNsa19nZXQvY2xrX3B1dAogIGZ1bmN0aW9ucy4gVGhpcyBjYW4gcHJvYmFibHkg Z2V0IGFkZHJlc3NlZCBlYXNpbHkuCgotIFRoZSBjbGtfZ2V0X3BhcmVudC9zZXRfcGFyZW50IGZ1 bmN0aW9ucyBhcmUgb25seQogIHByb3ZpZGVkIG9uIGVwOTN4eCBhbmQgc2guIE9uY2UgZXA5M3h4 IGlzIG91dCBvZiB0aGUKICB3YXksIHdlIGNvdWxkIHJlbW92ZSB0aGUgcHJpdmF0ZSBzdHVicyBh bmQgYWx3YXlzCiAgcHJvdmlkZSB0aGUgZ2xvYmFsIG9uZXMsIGV4Y2VwdCBmb3Igc2guCgotIFRo ZSByZW1haW5pbmcgZml2ZSBmdW5jdGlvbnMKICAoZW5hYmxlL2Rpc2FibGUvZ2V0X3JhdGUvc2V0 X3JhdGUvcm91bmRfcmF0ZSkgaGF2ZSBhCiAgY29uc2lzdGVudCBpbnRlcmZhY2UgYWNyb3NzIGFs bCBlaWdodCBwbGF0Zm9ybXMsIHRoZXkKICBhcmUgYWx3YXlzIGV4cG9ydGVkIGluIHRoYXQgY2Fz ZS4KCiAgICAgICBBcm5kCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==