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.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FSL_HELO_FAKE,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 44C73C433EF for ; Thu, 23 Sep 2021 12:57:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2749C60F39 for ; Thu, 23 Sep 2021 12:57:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241156AbhIWM7I (ORCPT ); Thu, 23 Sep 2021 08:59:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241065AbhIWM7G (ORCPT ); Thu, 23 Sep 2021 08:59:06 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72BA6C061756 for ; Thu, 23 Sep 2021 05:57:34 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id t8so17063376wri.1 for ; Thu, 23 Sep 2021 05:57:34 -0700 (PDT) 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=IFhO86zUCGeR+R0X9HVERqTznoNeBD84llm7FMDDqNs=; b=aCI79VzTHBk0a6kt1kOIvS16kB6nPZXPZOmG/HGbBVrN7PuuR8bn148nWKg2/KHoMY g98qg7Yxi+xv2TGfww0sdIiDmDtnEvgJjLo4wTfFK5/egbhiNCgeyauYrKoyDKK5VCsl 2eaFEdJSdgNsKntpCCPjxrWn1yS4uSBOx8pcn335bHUP9s1Up4N2OXxgfejgicgfKM4E YIVVXcUKZWS8paAStrOs4HldG/v2qly8OzZV9URbqfbMcKxBz80nafYfKKfMntjEygCM tMn8+LOMclBlAiy4a/geGdjnuUnzdqQt5xajRKAW/o1UK6OrCyycQIHf/vDGVtWuuUf5 fSBA== 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=IFhO86zUCGeR+R0X9HVERqTznoNeBD84llm7FMDDqNs=; b=PTGhMCdcBw9JPUdGjLymDnQXhUcxEcbKVtG9WLQ7sDAYFXj8zCDSSHZYB6faDsZzRU lvHApoqNcSjLZKb3+WiCJ6eUaxP463kk9E0AlFtXQHTEbO4Wh39BHncQwF8tjBdWMIz0 BW8oAKt5jgH4y2fZ+tIcsv2+El7hpqWDPpDOJpC9kPDJNiA17+pfAWhUxQkmAZKxKC2K rpyLLyqeyeLp+NdlA9fBSJR0huEVCnjsyRA/M8yYJP29izEAoa/XgWt/aG9bp0SyjLFA zp5FReqALPdJxrm7MenITbqrVSe982FXUqZNucu7h7q+UzauLUAPBCZ2udUh3fJMv0YU 7dBA== X-Gm-Message-State: AOAM530sHvQFssjbVZOY9gkcH71OZs8KDQlXwmWIe4UmaEjoi/BPA24p LuEpUaDFD2JI2IMf6X1qBWJbLA== X-Google-Smtp-Source: ABdhPJzQKziCrP9k7CIpXN9PnCt6ZFzrhJV04VjcgNhAK65kzUVlIusnHrcjdn2rR7bC7xaKs5IE6Q== X-Received: by 2002:a05:600c:225a:: with SMTP id a26mr4490670wmm.57.1632401852963; Thu, 23 Sep 2021 05:57:32 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id o17sm5204049wrj.96.2021.09.23.05.57.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 05:57:32 -0700 (PDT) Date: Thu, 23 Sep 2021 13:57:30 +0100 From: Lee Jones To: Krzysztof Kozlowski Cc: Will McVicker , Geert Uytterhoeven , Catalin Marinas , Will Deacon , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , Android Kernel Team , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk Subject: Re: [PATCH v1 1/4] clk: samsung: change COMMON_CLK_SAMSUNG default config logic Message-ID: References: <20210920190350.3860821-1-willmcvicker@google.com> <20210920190350.3860821-2-willmcvicker@google.com> <2c8a79f7-711a-b075-745f-ea77b82a1117@canonical.com> <001cd621-53d1-fe22-0eaa-d13137827297@canonical.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <001cd621-53d1-fe22-0eaa-d13137827297@canonical.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 21 Sep 2021, Krzysztof Kozlowski wrote: > On 21/09/2021 19:58, Will McVicker wrote: > > On Tue, Sep 21, 2021 at 1:35 AM Krzysztof Kozlowski > > wrote: > >> > >> On 21/09/2021 09:50, Geert Uytterhoeven wrote: > >>> On Tue, Sep 21, 2021 at 9:31 AM Krzysztof Kozlowski wrote: > >>>> On 20/09/2021 21:03, Will McVicker wrote: > >>>>> COMMON_CLK_SAMSUNG is selected by ARCH_EXYNOS which forces this config > >>>>> to be built-in when ARCH_EXYNOS is enabled. Switch the logic to use a > >>>>> "default y if ARCH_EXYNOS" to provide flexibilty for vendors to disable > >>>>> or modularize this driver. > >>>> > >>>> The clock drivers are essential, you cannot disable them for a generic > >>>> kernel supporting ARCH_EXYNOS. Such kernel won't work properly on platforms. > >>> > >>> Obviously it's not gonna work if the clock driver is not enabled > >>> at all. But does it work if you make the clock driver modular, and > >>> put it with all other essential driver modules in initramfs? Debugging > >>> would be hard, as the serial console driver also relies on clocks > >>> and PM Domains etc. > >> > >> The kernel could boot without clock drivers (default settings from > >> bootloader), probe clocks from initramfs and proceed with rootfs from > >> eMMC/SD/net. > >> > >> In theory. > >> > >> However I have no reports that it ever worked. If there is such working > >> upstream configuration, I don't mind here. Just please explain this in > >> the commit msg. > >> > >>> > >>> If not, this patch should be NAKed, until it works with a modular > >>> clock driver. > >>> > >>> If yes, perhaps another line should be added (_before_ the other line)? > >>> > >>> + default m if ARCH_EXYNOS && MODULES > >>> default y if ARCH_EXYNOS > >>> > >>> However, many developers may want MODULES=y, but not want to bother > >>> with an initramfs. So perhaps we need a new symbol > >>> MINIMUM_GENERIC_KERNEL or so, protected by EXPERT, and make the > >>> driver default to m if that is enabled? > >> > >> Yeah, that's indeed a problem to solve. For most users (and distros) > >> building kernel for Exynos this should be built-in by default. > >> > >> Anyway, the option is non-selectable so it cannot be converted to "m" or > >> disabled. And this is claimed in the commit msg: > >> "provide flexibilty for vendors to disable or modularize this driver." > >> > >> The commit does not achieve it. > >> > >> Best regards, > >> Krzysztof > > > > Thanks for the reviews! As Lee has explained in his replies, the > > intent of this series is to provide config flexibility to create a > > defconfig that allows us to move out SoC specific drivers in order to > > create a generic kernel that can be used across multiple devices with > > different SoCs. > > That's quite generic statement... or let me put it that way - we already > have this ability to create a generic kernel supporting different SoCs. > Exynos and other ARMv7 and ARMv8 platforms are multiplatform. > > Task is done. multi_v7_defconfig and ARMv8's defconfig are bloated monoliths which provide limited flexibility. Good for testing and messing around - not much good for real products. > Please be more specific about use case and describe what exactly in > current upstream multiplatform kernel is missing, what is not > multiplatform enough. The use-case is GKI. A realistic middle-ground between fully open source and real-world usage of the Linux kernel in a competitive technical arena. GKI aims to be as close to Mainline as possible, whilst allowing hardware vendors to supply their own software containing their perceived competitive edge and/or supporting not-yet-released hardware platforms. If you end up over-constraining the ability to configure the kernel in useful/meaningful ways, that makes one of the main (best intention) aims of GKI, (i.e. to have an upstream first ethos in order to be as close to upstream as possible) much more difficult. I put in a lot of effort to ensure GKI doesn't end up as just another fork of the Linux kernel. So far, so good, but flexibility and understanding is key. > > I'm sorry I added confusion by mentioning > > modularization. All of these drivers that I am modifying in this > > series can be modularized which is an ongoing effort, but is not > > addressed here and I don't believe that modularizing them should be a > > requirement before supporting enabling/disabling them. > > Since the disabling the driver for a kernel supporting Exynos does not > make any sense, then making it at least modular unfortunately it is a > requirement. I can go with that. > > I will update the series with my patch that refactors the Samsung SoC > > drivers menuconfig to make these visible as well. > > I would first recommend to really describe your use case because my > questions about this are still unanswered. Hopefully my replies have helped somewhat. Happy to discuss further if required. If all else fails, feel free to ping me on IRC (lag). -- Lee Jones [李琼斯] Senior 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 X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,FSL_HELO_FAKE,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 11280C433EF for ; Thu, 23 Sep 2021 13:00:01 +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 CE5F76103D for ; Thu, 23 Sep 2021 13:00:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org CE5F76103D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=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: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=nKg/VPDuZiUeWOlpfSR99tZD/GCDWoPtAigp6Gw9y6g=; b=FY9XlOv42AG6qp HZSTThtH6dBJBHF+e7vy52J+Kd4L5V1iMlabKfvPBqIhdIibJd9DMINwTyWUHTepVf88b5voXV8Uo XSo+y9qpR5picw7N2RkpsqtqZNrNtqhw/DNnAbHoXmU+s0aKpOTrfM7V1OjecQbjnyYlQWXa8hIQw Ldunn6aNOoAQmB/XgF7qUiJofMg+Wp/aG/aFCgnVSFvD6DMShm4HAEWVcGebDWcbO7jWTV60bOedW TtCz9GzFBdTngNxwAVdZePO0jU+Y8M9aPDg5Li2Wkp9dN23hbf/dj5C/HtPS117ib2ZvQC4JGLzZL AFFL4SnyFR7WXZ6ENQtA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTOIE-00BUVu-8U; Thu, 23 Sep 2021 12:57:38 +0000 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTOIA-00BUUm-Bj for linux-arm-kernel@lists.infradead.org; Thu, 23 Sep 2021 12:57:36 +0000 Received: by mail-wr1-x42a.google.com with SMTP id w29so16871972wra.8 for ; Thu, 23 Sep 2021 05:57:34 -0700 (PDT) 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=IFhO86zUCGeR+R0X9HVERqTznoNeBD84llm7FMDDqNs=; b=aCI79VzTHBk0a6kt1kOIvS16kB6nPZXPZOmG/HGbBVrN7PuuR8bn148nWKg2/KHoMY g98qg7Yxi+xv2TGfww0sdIiDmDtnEvgJjLo4wTfFK5/egbhiNCgeyauYrKoyDKK5VCsl 2eaFEdJSdgNsKntpCCPjxrWn1yS4uSBOx8pcn335bHUP9s1Up4N2OXxgfejgicgfKM4E YIVVXcUKZWS8paAStrOs4HldG/v2qly8OzZV9URbqfbMcKxBz80nafYfKKfMntjEygCM tMn8+LOMclBlAiy4a/geGdjnuUnzdqQt5xajRKAW/o1UK6OrCyycQIHf/vDGVtWuuUf5 fSBA== 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=IFhO86zUCGeR+R0X9HVERqTznoNeBD84llm7FMDDqNs=; b=O1/5BkoB2+KRlYkFJgH+DRG92lhJfgGDVAS5g3pmwmT7Lm86aWxL+tJvdOyZNyKUiO P+vvyIeaEGPUd4qkCNYlV7M4cL8jPWOcL9d4DWbw7qRYQahAuXDJCaD73w8rUK0TEU+c bVl6hPfkBOYWHCG7TkO3m8pl4O+HPstA67GthkhdP8nqLDSOEX2eEUP+kkyXRwNE2V1m onLMuyCpfoqDFades4kCUdgFO0za3n5/Z8YTvTnWfiDgP55otuSAomT7iA7OR4sRwaMa Zp9pKFYxwqPami9u7c5ZmOlua+DDQbMt4JF2pQXWXUR83VutyVvLwKkubesauV93/Ony wwrQ== X-Gm-Message-State: AOAM533E2Es4q98kCMjTWOoIemc8uiPXpUfOSyT36fYqrcdmgmocPbjb fyNob8ZnM/x7JMdSJdcSvrAxrA== X-Google-Smtp-Source: ABdhPJzQKziCrP9k7CIpXN9PnCt6ZFzrhJV04VjcgNhAK65kzUVlIusnHrcjdn2rR7bC7xaKs5IE6Q== X-Received: by 2002:a05:600c:225a:: with SMTP id a26mr4490670wmm.57.1632401852963; Thu, 23 Sep 2021 05:57:32 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id o17sm5204049wrj.96.2021.09.23.05.57.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 05:57:32 -0700 (PDT) Date: Thu, 23 Sep 2021 13:57:30 +0100 From: Lee Jones To: Krzysztof Kozlowski Cc: Will McVicker , Geert Uytterhoeven , Catalin Marinas , Will Deacon , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , Android Kernel Team , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk Subject: Re: [PATCH v1 1/4] clk: samsung: change COMMON_CLK_SAMSUNG default config logic Message-ID: References: <20210920190350.3860821-1-willmcvicker@google.com> <20210920190350.3860821-2-willmcvicker@google.com> <2c8a79f7-711a-b075-745f-ea77b82a1117@canonical.com> <001cd621-53d1-fe22-0eaa-d13137827297@canonical.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <001cd621-53d1-fe22-0eaa-d13137827297@canonical.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210923_055734_465782_2611D354 X-CRM114-Status: GOOD ( 49.66 ) 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 T24gVHVlLCAyMSBTZXAgMjAyMSwgS3J6eXN6dG9mIEtvemxvd3NraSB3cm90ZToKCj4gT24gMjEv MDkvMjAyMSAxOTo1OCwgV2lsbCBNY1ZpY2tlciB3cm90ZToKPiA+IE9uIFR1ZSwgU2VwIDIxLCAy MDIxIGF0IDE6MzUgQU0gS3J6eXN6dG9mIEtvemxvd3NraQo+ID4gPGtyenlzenRvZi5rb3psb3dz a2lAY2Fub25pY2FsLmNvbT4gd3JvdGU6Cj4gPj4KPiA+PiBPbiAyMS8wOS8yMDIxIDA5OjUwLCBH ZWVydCBVeXR0ZXJob2V2ZW4gd3JvdGU6Cj4gPj4+IE9uIFR1ZSwgU2VwIDIxLCAyMDIxIGF0IDk6 MzEgQU0gS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPiB3cm90ZToKPiA+Pj4+ IE9uIDIwLzA5LzIwMjEgMjE6MDMsIFdpbGwgTWNWaWNrZXIgd3JvdGU6Cj4gPj4+Pj4gQ09NTU9O X0NMS19TQU1TVU5HIGlzIHNlbGVjdGVkIGJ5IEFSQ0hfRVhZTk9TIHdoaWNoIGZvcmNlcyB0aGlz IGNvbmZpZwo+ID4+Pj4+IHRvIGJlIGJ1aWx0LWluIHdoZW4gQVJDSF9FWFlOT1MgaXMgZW5hYmxl ZC4gU3dpdGNoIHRoZSBsb2dpYyB0byB1c2UgYQo+ID4+Pj4+ICJkZWZhdWx0IHkgaWYgQVJDSF9F WFlOT1MiIHRvIHByb3ZpZGUgZmxleGliaWx0eSBmb3IgdmVuZG9ycyB0byBkaXNhYmxlCj4gPj4+ Pj4gb3IgbW9kdWxhcml6ZSB0aGlzIGRyaXZlci4KPiA+Pj4+Cj4gPj4+PiBUaGUgY2xvY2sgZHJp dmVycyBhcmUgZXNzZW50aWFsLCB5b3UgY2Fubm90IGRpc2FibGUgdGhlbSBmb3IgYSBnZW5lcmlj Cj4gPj4+PiBrZXJuZWwgc3VwcG9ydGluZyBBUkNIX0VYWU5PUy4gU3VjaCBrZXJuZWwgd29uJ3Qg d29yayBwcm9wZXJseSBvbiBwbGF0Zm9ybXMuCj4gPj4+Cj4gPj4+IE9idmlvdXNseSBpdCdzIG5v dCBnb25uYSB3b3JrIGlmIHRoZSBjbG9jayBkcml2ZXIgaXMgbm90IGVuYWJsZWQKPiA+Pj4gYXQg YWxsLiAgQnV0IGRvZXMgaXQgd29yayBpZiB5b3UgbWFrZSB0aGUgY2xvY2sgZHJpdmVyIG1vZHVs YXIsIGFuZAo+ID4+PiBwdXQgaXQgd2l0aCBhbGwgb3RoZXIgZXNzZW50aWFsIGRyaXZlciBtb2R1 bGVzIGluIGluaXRyYW1mcz8gIERlYnVnZ2luZwo+ID4+PiB3b3VsZCBiZSBoYXJkLCBhcyB0aGUg c2VyaWFsIGNvbnNvbGUgZHJpdmVyIGFsc28gcmVsaWVzIG9uIGNsb2Nrcwo+ID4+PiBhbmQgUE0g RG9tYWlucyBldGMuCj4gPj4KPiA+PiBUaGUga2VybmVsIGNvdWxkIGJvb3Qgd2l0aG91dCBjbG9j ayBkcml2ZXJzIChkZWZhdWx0IHNldHRpbmdzIGZyb20KPiA+PiBib290bG9hZGVyKSwgcHJvYmUg Y2xvY2tzIGZyb20gaW5pdHJhbWZzIGFuZCBwcm9jZWVkIHdpdGggcm9vdGZzIGZyb20KPiA+PiBl TU1DL1NEL25ldC4KPiA+Pgo+ID4+IEluIHRoZW9yeS4KPiA+Pgo+ID4+IEhvd2V2ZXIgSSBoYXZl IG5vIHJlcG9ydHMgdGhhdCBpdCBldmVyIHdvcmtlZC4gSWYgdGhlcmUgaXMgc3VjaCB3b3JraW5n Cj4gPj4gdXBzdHJlYW0gY29uZmlndXJhdGlvbiwgSSBkb24ndCBtaW5kIGhlcmUuIEp1c3QgcGxl YXNlIGV4cGxhaW4gdGhpcyBpbgo+ID4+IHRoZSBjb21taXQgbXNnLgo+ID4+Cj4gPj4+Cj4gPj4+ IElmIG5vdCwgdGhpcyBwYXRjaCBzaG91bGQgYmUgTkFLZWQsIHVudGlsIGl0IHdvcmtzIHdpdGgg YSBtb2R1bGFyCj4gPj4+IGNsb2NrIGRyaXZlci4KPiA+Pj4KPiA+Pj4gSWYgeWVzLCBwZXJoYXBz IGFub3RoZXIgbGluZSBzaG91bGQgYmUgYWRkZWQgKF9iZWZvcmVfIHRoZSBvdGhlciBsaW5lKT8K PiA+Pj4KPiA+Pj4gICArIGRlZmF1bHQgbSBpZiBBUkNIX0VYWU5PUyAmJiBNT0RVTEVTCj4gPj4+ ICAgICBkZWZhdWx0IHkgaWYgQVJDSF9FWFlOT1MKPiA+Pj4KPiA+Pj4gSG93ZXZlciwgbWFueSBk ZXZlbG9wZXJzIG1heSB3YW50IE1PRFVMRVM9eSwgYnV0IG5vdCB3YW50IHRvIGJvdGhlcgo+ID4+ PiB3aXRoIGFuIGluaXRyYW1mcy4gIFNvIHBlcmhhcHMgd2UgbmVlZCBhIG5ldyBzeW1ib2wKPiA+ Pj4gTUlOSU1VTV9HRU5FUklDX0tFUk5FTCBvciBzbywgcHJvdGVjdGVkIGJ5IEVYUEVSVCwgYW5k IG1ha2UgdGhlCj4gPj4+IGRyaXZlciBkZWZhdWx0IHRvIG0gaWYgdGhhdCBpcyBlbmFibGVkPwo+ ID4+Cj4gPj4gWWVhaCwgdGhhdCdzIGluZGVlZCBhIHByb2JsZW0gdG8gc29sdmUuIEZvciBtb3N0 IHVzZXJzIChhbmQgZGlzdHJvcykKPiA+PiBidWlsZGluZyBrZXJuZWwgZm9yIEV4eW5vcyB0aGlz IHNob3VsZCBiZSBidWlsdC1pbiBieSBkZWZhdWx0Lgo+ID4+Cj4gPj4gQW55d2F5LCB0aGUgb3B0 aW9uIGlzIG5vbi1zZWxlY3RhYmxlIHNvIGl0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gIm0iIG9y Cj4gPj4gZGlzYWJsZWQuIEFuZCB0aGlzIGlzIGNsYWltZWQgaW4gdGhlIGNvbW1pdCBtc2c6Cj4g Pj4gInByb3ZpZGUgZmxleGliaWx0eSBmb3IgdmVuZG9ycyB0byBkaXNhYmxlIG9yIG1vZHVsYXJp emUgdGhpcyBkcml2ZXIuIgo+ID4+Cj4gPj4gVGhlIGNvbW1pdCBkb2VzIG5vdCBhY2hpZXZlIGl0 Lgo+ID4+Cj4gPj4gQmVzdCByZWdhcmRzLAo+ID4+IEtyenlzenRvZgo+ID4gCj4gPiBUaGFua3Mg Zm9yIHRoZSByZXZpZXdzISBBcyBMZWUgaGFzIGV4cGxhaW5lZCBpbiBoaXMgcmVwbGllcywgdGhl Cj4gPiBpbnRlbnQgb2YgdGhpcyBzZXJpZXMgaXMgdG8gcHJvdmlkZSBjb25maWcgZmxleGliaWxp dHkgdG8gY3JlYXRlIGEKPiA+IGRlZmNvbmZpZyB0aGF0IGFsbG93cyB1cyB0byBtb3ZlIG91dCBT b0Mgc3BlY2lmaWMgZHJpdmVycyBpbiBvcmRlciB0bwo+ID4gY3JlYXRlIGEgZ2VuZXJpYyBrZXJu ZWwgdGhhdCBjYW4gYmUgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgZGV2aWNlcyB3aXRoCj4gPiBkaWZm ZXJlbnQgU29Dcy4KPiAKPiBUaGF0J3MgcXVpdGUgZ2VuZXJpYyBzdGF0ZW1lbnQuLi4gb3IgbGV0 IG1lIHB1dCBpdCB0aGF0IHdheSAtIHdlIGFscmVhZHkKPiBoYXZlIHRoaXMgYWJpbGl0eSB0byBj cmVhdGUgYSBnZW5lcmljIGtlcm5lbCBzdXBwb3J0aW5nIGRpZmZlcmVudCBTb0NzLgo+IEV4eW5v cyBhbmQgb3RoZXIgQVJNdjcgYW5kIEFSTXY4IHBsYXRmb3JtcyBhcmUgbXVsdGlwbGF0Zm9ybS4K PiAKPiBUYXNrIGlzIGRvbmUuCgptdWx0aV92N19kZWZjb25maWcgYW5kIEFSTXY4J3MgZGVmY29u ZmlnIGFyZSBibG9hdGVkIG1vbm9saXRocyB3aGljaApwcm92aWRlIGxpbWl0ZWQgZmxleGliaWxp dHkuICBHb29kIGZvciB0ZXN0aW5nIGFuZCBtZXNzaW5nIGFyb3VuZCAtCm5vdCBtdWNoIGdvb2Qg Zm9yIHJlYWwgcHJvZHVjdHMuCgo+IFBsZWFzZSBiZSBtb3JlIHNwZWNpZmljIGFib3V0IHVzZSBj YXNlIGFuZCBkZXNjcmliZSB3aGF0IGV4YWN0bHkgaW4KPiBjdXJyZW50IHVwc3RyZWFtIG11bHRp cGxhdGZvcm0ga2VybmVsIGlzIG1pc3NpbmcsIHdoYXQgaXMgbm90Cj4gbXVsdGlwbGF0Zm9ybSBl bm91Z2guCgpUaGUgdXNlLWNhc2UgaXMgR0tJLiAgQSByZWFsaXN0aWMgbWlkZGxlLWdyb3VuZCBi ZXR3ZWVuIGZ1bGx5IG9wZW4Kc291cmNlIGFuZCByZWFsLXdvcmxkIHVzYWdlIG9mIHRoZSBMaW51 eCBrZXJuZWwgaW4gYSBjb21wZXRpdGl2ZQp0ZWNobmljYWwgYXJlbmEuICBHS0kgYWltcyB0byBi ZSBhcyBjbG9zZSB0byBNYWlubGluZSBhcyBwb3NzaWJsZSwKd2hpbHN0IGFsbG93aW5nIGhhcmR3 YXJlIHZlbmRvcnMgdG8gc3VwcGx5IHRoZWlyIG93biBzb2Z0d2FyZQpjb250YWluaW5nIHRoZWly IHBlcmNlaXZlZCBjb21wZXRpdGl2ZSBlZGdlIGFuZC9vciBzdXBwb3J0aW5nCm5vdC15ZXQtcmVs ZWFzZWQgaGFyZHdhcmUgcGxhdGZvcm1zLgoKSWYgeW91IGVuZCB1cCBvdmVyLWNvbnN0cmFpbmlu ZyB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgdGhlIGtlcm5lbCBpbgp1c2VmdWwvbWVhbmluZ2Z1 bCB3YXlzLCB0aGF0IG1ha2VzIG9uZSBvZiB0aGUgbWFpbiAoYmVzdCBpbnRlbnRpb24pCmFpbXMg b2YgR0tJLCAoaS5lLiB0byBoYXZlIGFuIHVwc3RyZWFtIGZpcnN0IGV0aG9zIGluIG9yZGVyIHRv IGJlIGFzCmNsb3NlIHRvIHVwc3RyZWFtIGFzIHBvc3NpYmxlKSBtdWNoIG1vcmUgZGlmZmljdWx0 LgoKSSBwdXQgaW4gYSBsb3Qgb2YgZWZmb3J0IHRvIGVuc3VyZSBHS0kgZG9lc24ndCBlbmQgdXAg YXMganVzdCBhbm90aGVyCmZvcmsgb2YgdGhlIExpbnV4IGtlcm5lbC4gIFNvIGZhciwgc28gZ29v ZCwgYnV0IGZsZXhpYmlsaXR5IGFuZAp1bmRlcnN0YW5kaW5nIGlzIGtleS4KCj4gPiBJJ20gc29y cnkgSSBhZGRlZCBjb25mdXNpb24gYnkgbWVudGlvbmluZwo+ID4gbW9kdWxhcml6YXRpb24uIEFs bCBvZiB0aGVzZSBkcml2ZXJzIHRoYXQgSSBhbSBtb2RpZnlpbmcgaW4gdGhpcwo+ID4gc2VyaWVz IGNhbiBiZSBtb2R1bGFyaXplZCB3aGljaCBpcyBhbiBvbmdvaW5nIGVmZm9ydCwgYnV0IGlzIG5v dAo+ID4gYWRkcmVzc2VkIGhlcmUgYW5kIEkgZG9uJ3QgYmVsaWV2ZSB0aGF0IG1vZHVsYXJpemlu ZyB0aGVtIHNob3VsZCBiZSBhCj4gPiByZXF1aXJlbWVudCBiZWZvcmUgc3VwcG9ydGluZyBlbmFi bGluZy9kaXNhYmxpbmcgdGhlbS4KPiAKPiBTaW5jZSB0aGUgZGlzYWJsaW5nIHRoZSBkcml2ZXIg Zm9yIGEga2VybmVsIHN1cHBvcnRpbmcgRXh5bm9zIGRvZXMgbm90Cj4gbWFrZSBhbnkgc2Vuc2Us IHRoZW4gbWFraW5nIGl0IGF0IGxlYXN0IG1vZHVsYXIgdW5mb3J0dW5hdGVseSBpdCBpcyBhCj4g cmVxdWlyZW1lbnQuCgpJIGNhbiBnbyB3aXRoIHRoYXQuCgo+ID4gSSB3aWxsIHVwZGF0ZSB0aGUg c2VyaWVzIHdpdGggbXkgcGF0Y2ggdGhhdCByZWZhY3RvcnMgdGhlIFNhbXN1bmcgU29DCj4gPiBk cml2ZXJzIG1lbnVjb25maWcgdG8gbWFrZSB0aGVzZSB2aXNpYmxlIGFzIHdlbGwuCj4gCj4gSSB3 b3VsZCBmaXJzdCByZWNvbW1lbmQgdG8gcmVhbGx5IGRlc2NyaWJlIHlvdXIgdXNlIGNhc2UgYmVj YXVzZSBteQo+IHF1ZXN0aW9ucyBhYm91dCB0aGlzIGFyZSBzdGlsbCB1bmFuc3dlcmVkLgoKSG9w ZWZ1bGx5IG15IHJlcGxpZXMgaGF2ZSBoZWxwZWQgc29tZXdoYXQuCgpIYXBweSB0byBkaXNjdXNz IGZ1cnRoZXIgaWYgcmVxdWlyZWQuCgpJZiBhbGwgZWxzZSBmYWlscywgZmVlbCBmcmVlIHRvIHBp bmcgbWUgb24gSVJDIChsYWcpLgoKLS0gCkxlZSBKb25lcyBb5p2O55C85pavXQpTZW5pb3IgVGVj aG5pY2FsIExlYWQgLSBEZXZlbG9wZXIgU2VydmljZXMKTGluYXJvLm9yZyDilIIgT3BlbiBzb3Vy Y2Ugc29mdHdhcmUgZm9yIEFybSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRl ciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK