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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F096C433F5 for ; Thu, 30 Sep 2021 12:32:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2ACB7613A0 for ; Thu, 30 Sep 2021 12:32:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350353AbhI3MeX (ORCPT ); Thu, 30 Sep 2021 08:34:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350326AbhI3MeX (ORCPT ); Thu, 30 Sep 2021 08:34:23 -0400 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8918CC06176D for ; Thu, 30 Sep 2021 05:32:40 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id 205-20020a1c01d6000000b0030cd17ffcf8so8287969wmb.3 for ; Thu, 30 Sep 2021 05:32:40 -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=En+5YrjM9LlGpDVk1qLlFN9D0UbWW1q5lQuQYRqATW0=; b=yfsE6YBweYWAU+QUeuH3l8VsYBkS4YRRfFTAUbjlBj1cbRhLGuilAthUvCDsjVG6qG dh7Un3DHfvuQkyyrFJFwq8AhY5EmkfL6gZH3T0qH6kCuP3dY11JPJ+zYBLNlHJOa4WbJ WDoUGO7Mwssy6Pk5zzLVJuz5p4EHEt91JchNU2FJrwVuE4ymbJdvsdY1Lid6mWlO8oMD CvwDNMTaO4Fkcb4/5p5pN7CsXquoA27mdQL5XssFNF+X5SmKC+b4vhrZvb9Bq6SVzKQE 4O+RpT/FLQgl5/RMerb1fzqgCamevlhivoXdQi+9CIBJcpRSYPnYF0EsbwK16966zetB t16Q== 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=En+5YrjM9LlGpDVk1qLlFN9D0UbWW1q5lQuQYRqATW0=; b=lcwTneqoNm54akyXPOWwGspB+QA9/pV9vfwyaOfR2u1bYKf0XqByO8jKw2/+Cdb4DZ O6Ih8QNqvyTEaX3M36xt+7dzIDP0KPv3rJwj+RvD/XRS2k2UYKEFPV4aVoKRG3drKsCj NYBEDFa8YHLktmZuAYn6PYZavRV9h/xnV9HGzz6ev9r9h4n01E6yjxUJNlI3b/cX3Odk LTCrJbJ6vgzzPKO0rdbcw9TFEKWFIi9lSxwgkS1wE0aIiA4Y2smc/26HQ+UFU8s/daFw lMlcXXBK4rfY77NzDoyh2RPYuHAnbSCtmJ+0epAUrXKzwo8t2GSwzcqPkxAz/18qTkKS G3Tg== X-Gm-Message-State: AOAM533/VMkdYMG4j3Wd4MAf77SnCEVnTg+THEm4CDU8BjAQZJ7fDWyM oesx4eokiSLBIMqYTUmuebGjbg== X-Google-Smtp-Source: ABdhPJypzNOV6MSKCZRk58YQppRsxlxVtOIMAQuJ+ppbdRDySWcSJDA77/Nq8JTkyQcJRwpBLZSNMg== X-Received: by 2002:a05:600c:1911:: with SMTP id j17mr2845306wmq.149.1633005159069; Thu, 30 Sep 2021 05:32:39 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id i7sm2958529wrp.5.2021.09.30.05.32.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 05:32:38 -0700 (PDT) Date: Thu, 30 Sep 2021 13:32:36 +0100 From: Lee Jones To: Krzysztof Kozlowski Cc: Will McVicker , Russell King , Catalin Marinas , Will Deacon , Michael Turquette , Stephen Boyd , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Linus Walleij , Alessandro Zummo , Alexandre Belloni , John Stultz , Thomas Gleixner , Geert Uytterhoeven , Saravana Kannan , "Cc: Android Kernel" , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk , linux-gpio@vger.kernel.org, linux-rtc@vger.kernel.org, Arnd Bergmann , Olof Johansson Subject: Re: [PATCH v2 00/12] arm64: Kconfig: Update ARCH_EXYNOS select configs Message-ID: References: <20210928235635.1348330-1-willmcvicker@google.com> <7766faf8-2dd1-6525-3b9a-8ba790c29cff@canonical.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-gpio@vger.kernel.org On Thu, 30 Sep 2021, Krzysztof Kozlowski wrote: > On 30/09/2021 11:23, Lee Jones wrote: > > I've taken the liberty of cherry-picking some of the points you have > > reiteratted a few times. Hopefully I can help to address them > > adequently. > > > > On Thu, 30 Sep 2021, Krzysztof Kozlowski wrote: > >> Reminder: these are essential drivers and all Exynos platforms must have > >> them as built-in (at least till someone really tests this on multiple > >> setups). > > > >> Therefore I don't agree with calling it a "problem" that we select > >> *necessary* drivers for supported platforms. It's by design - supported > >> platforms should receive them without ability to remove. > > > >> The selected drivers are essential for supported platforms. > > > > SoC specific drivers are only essential/necessary/required in > > images designed to execute solely on a platform that requires them. > > For a kernel image which is designed to be generic i.e. one that has > > the ability to boot on vast array of platforms, the drivers simply > > have to be *available*. > > By "essential", I meant drivers which are needed for supported platform > to boot properly. Yes, I know what you meant by essential. My comment still stands. As long as they are provided, it should work. > Also without significant performance penalty due to > probe deferrals. Agreed. We will try to find a way to test this. > > Forcing all H/W drivers that are only *potentially* utilised on *some* > > platforms as core binary built-ins doesn't make any technical sense. > > The two most important issues this causes are image size and a lack of > > configurability/flexibility relating to real-world application i.e. > > the one issue we already agreed upon; H/W or features that are too > > new (pre-release). > > Geert responded here. If drivers are essential for supported platforms > to boot, having them built-in has technical sense. We're going to have to agree to disagree here. None of us are currently aware of any technical reasons why these particular drivers have to be built-in. Hopefully we can prove this out with testing. > > By insisting on drivers (most of which will not be executed in the > > vast majority of cases) to be built-in, you are insisting on a > > downstream kernel fork, which all of us would like to avoid [0]. > > The same with all the DTS and hundreds of drivers you keep out of tree. I do not keep any drivers out of tree. :) > >> We don't even know what are these unsupported, downstream platforms > >> you want customize kernel for. They cannot be audited, cannot be > >> compared. Affecting upstream platforms just because > >> vendor/downstream does not want to mainline some code is > >> unacceptable. > >> > >> Please upstream your drivers and DTS. > > > > Accepting changes based on the proviso that vendors upstream all of > > their work-in-progress solutions is an unfair position. > > You twisted (or ignored) my words here. I said before - sacrificing any > mainline platform (e.g. reliable boot for distro) for an out-of-tree > vendor which does no want to upstream drivers is the unfair position. > One of the incentives of upstreaming is to be able to shape kernel and > be considered in kernel upstream decisions. That's the privileged for > upstreamed platforms - they have an impact. > > Vendor decides to stay out - fine, vendor's choice. You loose impact. > Any sad words like "oh upstream does not want to change for me" should > receive a message: "please join the upstream :), so we will change > together". No one is proposing to sacrifice anything. This change is believed to be benign. > > We already > > discussed why upstreaming support for bleeding edge H/W and > > functionality is unrealistic in terms of competitive advantage. > > Nope, my last point was not responded to. You said that there is no > point for vendor to upstream bleeding edge HW. Then you said that there > is also little point to upstream older HW. The driver in question is already upstream. It is my hope that the vendor will realign with Mainline and upstream the differences (providing the current competitive edge). Although I have no real influence in this regard, as I have no contact with them. > Basically following this approach you agree that vendor does not have to > do anything because it is inconvenient for him. > > However upstream has to adapt to downstream vendor, right? > > No, this is *unfair to all the platforms we upstreamed*. The point here is that this change should not be a determent to anyone. > > Exynos isn't special in this regard. This applies to any vendor who > > releases Android images and wishes to be solve all of the issues the > > GKI project addresses (please read the article above for more about > > this). > > We have then slightly different goals, because you are driven by Android > release images and this is why you are less interested in NXP and > Renesas. Only some vendors should receive such changes? No, in upstream > we are not focusing on any specific distro and there are other uses of > Exynos (and NXP and Renesas) platforms. Therefore the choice/policy and > overall design tries to match all vendors, not only some subset > convenient to Android. > > If Android (or some vendor) wants to have exception for a specific > driver/platform, it must do it in upstream way, by contributing, not by > changing to match downstream needs while ignoring other users. No users are being ignored. No damaging changes are being proposed. This has little to do with Android and everything to do with the possibly of a more generic kernel. Moving drivers out of platform code and into /drivers along with enabling components as modules has been an on-going effort for many years now. I'm struggling to see how this is different. -- 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AA13C433EF for ; Thu, 30 Sep 2021 12:34:55 +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 14A6C61381 for ; Thu, 30 Sep 2021 12:34:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 14A6C61381 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=ojdkbsyFFkAnbQDOQk9WiEH1mLI9hCPsVLlcVVSmE1o=; b=GpfIfrXNeGP8d0 gfvRC07XeNNc8vVA+uAuCjfWTE+NRds+h8H5vPh3JTT/T9QQ5x6a06OvT2kM7ShJ+m8YUoFlpPyoo 2z7Eq+LUsBDnD269pwuQw+xhz17fJ4HF3+D376Ci4G5rCiKg6awn4r7+dqGoCuUMR2LQg1c9+F1ze r0N057iQm+J7XtvaUpOmlJoBQEBkhJvtevM0d+Eu33dWgurvaZ4s9TCFIBEGRLq0iWRFG2tf1TZon UE3YTrYbUSb8TpgZGEvjdNyoMudwnxkJlhNyId5cP51ys9L5700ODsacoMjtPLS7jTw4eUApSdv4L gRkjUjuR74SS5Oq3x2DQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVvF1-00ECrC-5G; Thu, 30 Sep 2021 12:32:47 +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 1mVvEx-00ECqC-8j for linux-arm-kernel@lists.infradead.org; Thu, 30 Sep 2021 12:32:45 +0000 Received: by mail-wm1-x329.google.com with SMTP id r11-20020a1c440b000000b0030cf0f01fbaso1654883wma.1 for ; Thu, 30 Sep 2021 05:32:42 -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=En+5YrjM9LlGpDVk1qLlFN9D0UbWW1q5lQuQYRqATW0=; b=yfsE6YBweYWAU+QUeuH3l8VsYBkS4YRRfFTAUbjlBj1cbRhLGuilAthUvCDsjVG6qG dh7Un3DHfvuQkyyrFJFwq8AhY5EmkfL6gZH3T0qH6kCuP3dY11JPJ+zYBLNlHJOa4WbJ WDoUGO7Mwssy6Pk5zzLVJuz5p4EHEt91JchNU2FJrwVuE4ymbJdvsdY1Lid6mWlO8oMD CvwDNMTaO4Fkcb4/5p5pN7CsXquoA27mdQL5XssFNF+X5SmKC+b4vhrZvb9Bq6SVzKQE 4O+RpT/FLQgl5/RMerb1fzqgCamevlhivoXdQi+9CIBJcpRSYPnYF0EsbwK16966zetB t16Q== 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=En+5YrjM9LlGpDVk1qLlFN9D0UbWW1q5lQuQYRqATW0=; b=oAUEoAQhBmg6nH/8OZdadSysFtLxdJ1HRG/n2U0WzPPbPlS7unLZQDvQU/SBZWnJ/F fCIIvFjU23BRF0Eb0nJ5jQKGN6U/ODGoeH2+UQuOiDsmrPJeggw4QsLp9STgaRKYwmSY PNVHK3aNNtmOQGge8dItgs+AE0spMWM8w8klvsJr+XunSA1wK3S3hpkbtvVp/2YNYlKC hAAVvYvQIJo0ggzGVSilRABRQm3rgHGppb4dFBppETJPanKx1NtMVMyM5luVBgrW7Bef oiWuE1e99I9s6MxjhWwx2y45Co7+1g6RnmPMXARxEiDoB4GohvwvQ8yGbQcPlSznQHkW aK7A== X-Gm-Message-State: AOAM531WSeP4mQIDTuxa296oILFfclmKgTHNJUyD+Jyt0OMae/PAZE0o 8FatSb/xTKMGSkxSxQ45ZKTAEQ== X-Google-Smtp-Source: ABdhPJypzNOV6MSKCZRk58YQppRsxlxVtOIMAQuJ+ppbdRDySWcSJDA77/Nq8JTkyQcJRwpBLZSNMg== X-Received: by 2002:a05:600c:1911:: with SMTP id j17mr2845306wmq.149.1633005159069; Thu, 30 Sep 2021 05:32:39 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id i7sm2958529wrp.5.2021.09.30.05.32.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 05:32:38 -0700 (PDT) Date: Thu, 30 Sep 2021 13:32:36 +0100 From: Lee Jones To: Krzysztof Kozlowski Cc: Will McVicker , Russell King , Catalin Marinas , Will Deacon , Michael Turquette , Stephen Boyd , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Linus Walleij , Alessandro Zummo , Alexandre Belloni , John Stultz , Thomas Gleixner , Geert Uytterhoeven , Saravana Kannan , "Cc: Android Kernel" , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk , linux-gpio@vger.kernel.org, linux-rtc@vger.kernel.org, Arnd Bergmann , Olof Johansson Subject: Re: [PATCH v2 00/12] arm64: Kconfig: Update ARCH_EXYNOS select configs Message-ID: References: <20210928235635.1348330-1-willmcvicker@google.com> <7766faf8-2dd1-6525-3b9a-8ba790c29cff@canonical.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-20210930_053243_405286_9AAE7782 X-CRM114-Status: GOOD ( 51.40 ) 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 T24gVGh1LCAzMCBTZXAgMjAyMSwgS3J6eXN6dG9mIEtvemxvd3NraSB3cm90ZToKCj4gT24gMzAv MDkvMjAyMSAxMToyMywgTGVlIEpvbmVzIHdyb3RlOgo+ID4gSSd2ZSB0YWtlbiB0aGUgbGliZXJ0 eSBvZiBjaGVycnktcGlja2luZyBzb21lIG9mIHRoZSBwb2ludHMgeW91IGhhdmUKPiA+IHJlaXRl cmF0dGVkIGEgZmV3IHRpbWVzLiAgSG9wZWZ1bGx5IEkgY2FuIGhlbHAgdG8gYWRkcmVzcyB0aGVt Cj4gPiBhZGVxdWVudGx5Lgo+ID4gCj4gPiBPbiBUaHUsIDMwIFNlcCAyMDIxLCBLcnp5c3p0b2Yg S296bG93c2tpIHdyb3RlOgo+ID4+IFJlbWluZGVyOiB0aGVzZSBhcmUgZXNzZW50aWFsIGRyaXZl cnMgYW5kIGFsbCBFeHlub3MgcGxhdGZvcm1zIG11c3QgaGF2ZQo+ID4+IHRoZW0gYXMgYnVpbHQt aW4gKGF0IGxlYXN0IHRpbGwgc29tZW9uZSByZWFsbHkgdGVzdHMgdGhpcyBvbiBtdWx0aXBsZQo+ ID4+IHNldHVwcykuCj4gPiAKPiA+PiBUaGVyZWZvcmUgSSBkb24ndCBhZ3JlZSB3aXRoIGNhbGxp bmcgaXQgYSAicHJvYmxlbSIgdGhhdCB3ZSBzZWxlY3QKPiA+PiAqbmVjZXNzYXJ5KiBkcml2ZXJz IGZvciBzdXBwb3J0ZWQgcGxhdGZvcm1zLiBJdCdzIGJ5IGRlc2lnbiAtIHN1cHBvcnRlZAo+ID4+ IHBsYXRmb3JtcyBzaG91bGQgcmVjZWl2ZSB0aGVtIHdpdGhvdXQgYWJpbGl0eSB0byByZW1vdmUu Cj4gPiAKPiA+PiBUaGUgc2VsZWN0ZWQgZHJpdmVycyBhcmUgZXNzZW50aWFsIGZvciBzdXBwb3J0 ZWQgcGxhdGZvcm1zLgo+ID4gCj4gPiBTb0Mgc3BlY2lmaWMgZHJpdmVycyBhcmUgb25seSBlc3Nl bnRpYWwvbmVjZXNzYXJ5L3JlcXVpcmVkIGluCj4gPiBpbWFnZXMgZGVzaWduZWQgdG8gZXhlY3V0 ZSBzb2xlbHkgb24gYSBwbGF0Zm9ybSB0aGF0IHJlcXVpcmVzIHRoZW0uCj4gPiBGb3IgYSBrZXJu ZWwgaW1hZ2Ugd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgZ2VuZXJpYyBpLmUuIG9uZSB0aGF0IGhh cwo+ID4gdGhlIGFiaWxpdHkgdG8gYm9vdCBvbiB2YXN0IGFycmF5IG9mIHBsYXRmb3JtcywgdGhl IGRyaXZlcnMgc2ltcGx5Cj4gPiBoYXZlIHRvIGJlICphdmFpbGFibGUqLgo+IAo+IEJ5ICJlc3Nl bnRpYWwiLCBJIG1lYW50IGRyaXZlcnMgd2hpY2ggYXJlIG5lZWRlZCBmb3Igc3VwcG9ydGVkIHBs YXRmb3JtCj4gdG8gYm9vdCBwcm9wZXJseS4KClllcywgSSBrbm93IHdoYXQgeW91IG1lYW50IGJ5 IGVzc2VudGlhbC4KCk15IGNvbW1lbnQgc3RpbGwgc3RhbmRzLiAgQXMgbG9uZyBhcyB0aGV5IGFy ZSBwcm92aWRlZCwgaXQgc2hvdWxkIHdvcmsuCgo+IEFsc28gd2l0aG91dCBzaWduaWZpY2FudCBw ZXJmb3JtYW5jZSBwZW5hbHR5IGR1ZSB0bwo+IHByb2JlIGRlZmVycmFscy4KCkFncmVlZC4gIFdl IHdpbGwgdHJ5IHRvIGZpbmQgYSB3YXkgdG8gdGVzdCB0aGlzLgoKPiA+IEZvcmNpbmcgYWxsIEgv VyBkcml2ZXJzIHRoYXQgYXJlIG9ubHkgKnBvdGVudGlhbGx5KiB1dGlsaXNlZCBvbiAqc29tZSoK PiA+IHBsYXRmb3JtcyBhcyBjb3JlIGJpbmFyeSBidWlsdC1pbnMgZG9lc24ndCBtYWtlIGFueSB0 ZWNobmljYWwgc2Vuc2UuCj4gPiBUaGUgdHdvIG1vc3QgaW1wb3J0YW50IGlzc3VlcyB0aGlzIGNh dXNlcyBhcmUgaW1hZ2Ugc2l6ZSBhbmQgYSBsYWNrIG9mCj4gPiBjb25maWd1cmFiaWxpdHkvZmxl eGliaWxpdHkgcmVsYXRpbmcgdG8gcmVhbC13b3JsZCBhcHBsaWNhdGlvbiBpLmUuCj4gPiB0aGUg b25lIGlzc3VlIHdlIGFscmVhZHkgYWdyZWVkIHVwb247IEgvVyBvciBmZWF0dXJlcyB0aGF0IGFy ZSB0b28KPiA+IG5ldyAocHJlLXJlbGVhc2UpLgo+IAo+IEdlZXJ0IHJlc3BvbmRlZCBoZXJlLiBJ ZiBkcml2ZXJzIGFyZSBlc3NlbnRpYWwgZm9yIHN1cHBvcnRlZCBwbGF0Zm9ybXMKPiB0byBib290 LCBoYXZpbmcgdGhlbSBidWlsdC1pbiBoYXMgdGVjaG5pY2FsIHNlbnNlLgoKV2UncmUgZ29pbmcg dG8gaGF2ZSB0byBhZ3JlZSB0byBkaXNhZ3JlZSBoZXJlLgoKTm9uZSBvZiB1cyBhcmUgY3VycmVu dGx5IGF3YXJlIG9mIGFueSB0ZWNobmljYWwgcmVhc29ucyB3aHkgdGhlc2UKcGFydGljdWxhciBk cml2ZXJzIGhhdmUgdG8gYmUgYnVpbHQtaW4uICBIb3BlZnVsbHkgd2UgY2FuIHByb3ZlIHRoaXMK b3V0IHdpdGggdGVzdGluZy4KCj4gPiBCeSBpbnNpc3Rpbmcgb24gZHJpdmVycyAobW9zdCBvZiB3 aGljaCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpbiB0aGUKPiA+IHZhc3QgbWFqb3JpdHkgb2YgY2Fz ZXMpIHRvIGJlIGJ1aWx0LWluLCB5b3UgYXJlIGluc2lzdGluZyBvbiBhCj4gPiBkb3duc3RyZWFt IGtlcm5lbCBmb3JrLCB3aGljaCBhbGwgb2YgdXMgd291bGQgbGlrZSB0byBhdm9pZCBbMF0uCj4g Cj4gVGhlIHNhbWUgd2l0aCBhbGwgdGhlIERUUyBhbmQgaHVuZHJlZHMgb2YgZHJpdmVycyB5b3Ug a2VlcCBvdXQgb2YgdHJlZS4KCkkgZG8gbm90IGtlZXAgYW55IGRyaXZlcnMgb3V0IG9mIHRyZWUu IDopCgo+ID4+IFdlIGRvbid0IGV2ZW4ga25vdyB3aGF0IGFyZSB0aGVzZSB1bnN1cHBvcnRlZCwg ZG93bnN0cmVhbSBwbGF0Zm9ybXMKPiA+PiB5b3Ugd2FudCBjdXN0b21pemUga2VybmVsIGZvci4g VGhleSBjYW5ub3QgYmUgYXVkaXRlZCwgY2Fubm90IGJlCj4gPj4gY29tcGFyZWQuICBBZmZlY3Rp bmcgdXBzdHJlYW0gcGxhdGZvcm1zIGp1c3QgYmVjYXVzZQo+ID4+IHZlbmRvci9kb3duc3RyZWFt IGRvZXMgbm90IHdhbnQgdG8gbWFpbmxpbmUgc29tZSBjb2RlIGlzCj4gPj4gdW5hY2NlcHRhYmxl Lgo+ID4+Cj4gPj4gUGxlYXNlIHVwc3RyZWFtIHlvdXIgZHJpdmVycyBhbmQgRFRTLgo+ID4gCj4g PiBBY2NlcHRpbmcgY2hhbmdlcyBiYXNlZCBvbiB0aGUgcHJvdmlzbyB0aGF0IHZlbmRvcnMgdXBz dHJlYW0gYWxsIG9mCj4gPiB0aGVpciB3b3JrLWluLXByb2dyZXNzIHNvbHV0aW9ucyBpcyBhbiB1 bmZhaXIgcG9zaXRpb24uICAKPiAKPiBZb3UgdHdpc3RlZCAob3IgaWdub3JlZCkgbXkgd29yZHMg aGVyZS4gSSBzYWlkIGJlZm9yZSAtIHNhY3JpZmljaW5nIGFueQo+IG1haW5saW5lIHBsYXRmb3Jt IChlLmcuIHJlbGlhYmxlIGJvb3QgZm9yIGRpc3RybykgZm9yIGFuIG91dC1vZi10cmVlCj4gdmVu ZG9yIHdoaWNoIGRvZXMgbm8gd2FudCB0byB1cHN0cmVhbSBkcml2ZXJzIGlzIHRoZSB1bmZhaXIg cG9zaXRpb24uCj4gT25lIG9mIHRoZSBpbmNlbnRpdmVzIG9mIHVwc3RyZWFtaW5nIGlzIHRvIGJl IGFibGUgdG8gc2hhcGUga2VybmVsIGFuZAo+IGJlIGNvbnNpZGVyZWQgaW4ga2VybmVsIHVwc3Ry ZWFtIGRlY2lzaW9ucy4gVGhhdCdzIHRoZSBwcml2aWxlZ2VkIGZvcgo+IHVwc3RyZWFtZWQgcGxh dGZvcm1zIC0gdGhleSBoYXZlIGFuIGltcGFjdC4KPiAKPiBWZW5kb3IgZGVjaWRlcyB0byBzdGF5 IG91dCAtIGZpbmUsIHZlbmRvcidzIGNob2ljZS4gWW91IGxvb3NlIGltcGFjdC4KPiBBbnkgc2Fk IHdvcmRzIGxpa2UgIm9oIHVwc3RyZWFtIGRvZXMgbm90IHdhbnQgdG8gY2hhbmdlIGZvciBtZSIg c2hvdWxkCj4gcmVjZWl2ZSBhIG1lc3NhZ2U6ICJwbGVhc2Ugam9pbiB0aGUgdXBzdHJlYW0gOiks IHNvIHdlIHdpbGwgY2hhbmdlCj4gdG9nZXRoZXIiLgoKTm8gb25lIGlzIHByb3Bvc2luZyB0byBz YWNyaWZpY2UgYW55dGhpbmcuCgpUaGlzIGNoYW5nZSBpcyBiZWxpZXZlZCB0byBiZSBiZW5pZ24u Cgo+ID4gV2UgYWxyZWFkeQo+ID4gZGlzY3Vzc2VkIHdoeSB1cHN0cmVhbWluZyBzdXBwb3J0IGZv ciBibGVlZGluZyBlZGdlIEgvVyBhbmQKPiA+IGZ1bmN0aW9uYWxpdHkgaXMgdW5yZWFsaXN0aWMg aW4gdGVybXMgb2YgY29tcGV0aXRpdmUgYWR2YW50YWdlLgo+IAo+IE5vcGUsIG15IGxhc3QgcG9p bnQgd2FzIG5vdCByZXNwb25kZWQgdG8uIFlvdSBzYWlkIHRoYXQgdGhlcmUgaXMgbm8KPiBwb2lu dCBmb3IgdmVuZG9yIHRvIHVwc3RyZWFtIGJsZWVkaW5nIGVkZ2UgSFcuIFRoZW4geW91IHNhaWQg dGhhdCB0aGVyZQo+IGlzIGFsc28gbGl0dGxlIHBvaW50IHRvIHVwc3RyZWFtIG9sZGVyIEhXLgoK VGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBhbHJlYWR5IHVwc3RyZWFtLgoKSXQgaXMgbXkgaG9w ZSB0aGF0IHRoZSB2ZW5kb3Igd2lsbCByZWFsaWduIHdpdGggTWFpbmxpbmUgYW5kIHVwc3RyZWFt CnRoZSBkaWZmZXJlbmNlcyAocHJvdmlkaW5nIHRoZSBjdXJyZW50IGNvbXBldGl0aXZlIGVkZ2Up LiAgQWx0aG91Z2ggSQpoYXZlIG5vIHJlYWwgaW5mbHVlbmNlIGluIHRoaXMgcmVnYXJkLCBhcyBJ IGhhdmUgbm8gY29udGFjdCB3aXRoCnRoZW0uCgo+IEJhc2ljYWxseSBmb2xsb3dpbmcgdGhpcyBh cHByb2FjaCB5b3UgYWdyZWUgdGhhdCB2ZW5kb3IgZG9lcyBub3QgaGF2ZSB0bwo+IGRvIGFueXRo aW5nIGJlY2F1c2UgaXQgaXMgaW5jb252ZW5pZW50IGZvciBoaW0uCj4gCj4gSG93ZXZlciB1cHN0 cmVhbSBoYXMgdG8gYWRhcHQgdG8gZG93bnN0cmVhbSB2ZW5kb3IsIHJpZ2h0Pwo+IAo+IE5vLCB0 aGlzIGlzICp1bmZhaXIgdG8gYWxsIHRoZSBwbGF0Zm9ybXMgd2UgdXBzdHJlYW1lZCouCgpUaGUg cG9pbnQgaGVyZSBpcyB0aGF0IHRoaXMgY2hhbmdlIHNob3VsZCBub3QgYmUgYSBkZXRlcm1lbnQg dG8KYW55b25lLgoKPiA+IEV4eW5vcyBpc24ndCBzcGVjaWFsIGluIHRoaXMgcmVnYXJkLiAgVGhp cyBhcHBsaWVzIHRvIGFueSB2ZW5kb3Igd2hvCj4gPiByZWxlYXNlcyBBbmRyb2lkIGltYWdlcyBh bmQgd2lzaGVzIHRvIGJlIHNvbHZlIGFsbCBvZiB0aGUgaXNzdWVzIHRoZQo+ID4gR0tJIHByb2pl Y3QgYWRkcmVzc2VzIChwbGVhc2UgcmVhZCB0aGUgYXJ0aWNsZSBhYm92ZSBmb3IgbW9yZSBhYm91 dAo+ID4gdGhpcykuCj4gCj4gV2UgaGF2ZSB0aGVuIHNsaWdodGx5IGRpZmZlcmVudCBnb2Fscywg YmVjYXVzZSB5b3UgYXJlIGRyaXZlbiBieSBBbmRyb2lkCj4gcmVsZWFzZSBpbWFnZXMgYW5kIHRo aXMgaXMgd2h5IHlvdSBhcmUgbGVzcyBpbnRlcmVzdGVkIGluIE5YUCBhbmQKPiBSZW5lc2FzLiBP bmx5IHNvbWUgdmVuZG9ycyBzaG91bGQgcmVjZWl2ZSBzdWNoIGNoYW5nZXM/IE5vLCBpbiB1cHN0 cmVhbQo+IHdlIGFyZSBub3QgZm9jdXNpbmcgb24gYW55IHNwZWNpZmljIGRpc3RybyBhbmQgdGhl cmUgYXJlIG90aGVyIHVzZXMgb2YKPiBFeHlub3MgKGFuZCBOWFAgYW5kIFJlbmVzYXMpIHBsYXRm b3Jtcy4gVGhlcmVmb3JlIHRoZSBjaG9pY2UvcG9saWN5IGFuZAo+IG92ZXJhbGwgZGVzaWduIHRy aWVzIHRvIG1hdGNoIGFsbCB2ZW5kb3JzLCBub3Qgb25seSBzb21lIHN1YnNldAo+IGNvbnZlbmll bnQgdG8gQW5kcm9pZC4KPiAKPiBJZiBBbmRyb2lkIChvciBzb21lIHZlbmRvcikgd2FudHMgdG8g aGF2ZSBleGNlcHRpb24gZm9yIGEgc3BlY2lmaWMKPiBkcml2ZXIvcGxhdGZvcm0sIGl0IG11c3Qg ZG8gaXQgaW4gdXBzdHJlYW0gd2F5LCBieSBjb250cmlidXRpbmcsIG5vdCBieQo+IGNoYW5naW5n IHRvIG1hdGNoIGRvd25zdHJlYW0gbmVlZHMgd2hpbGUgaWdub3Jpbmcgb3RoZXIgdXNlcnMuCgpO byB1c2VycyBhcmUgYmVpbmcgaWdub3JlZC4gIE5vIGRhbWFnaW5nIGNoYW5nZXMgYXJlIGJlaW5n IHByb3Bvc2VkLgoKVGhpcyBoYXMgbGl0dGxlIHRvIGRvIHdpdGggQW5kcm9pZCBhbmQgZXZlcnl0 aGluZyB0byBkbyB3aXRoIHRoZQpwb3NzaWJseSBvZiBhIG1vcmUgZ2VuZXJpYyBrZXJuZWwuICBN b3ZpbmcgZHJpdmVycyBvdXQgb2YgcGxhdGZvcm0KY29kZSBhbmQgaW50byAvZHJpdmVycyBhbG9u ZyB3aXRoIGVuYWJsaW5nIGNvbXBvbmVudHMgYXMgbW9kdWxlcyBoYXMKYmVlbiBhbiBvbi1nb2lu ZyBlZmZvcnQgZm9yIG1hbnkgeWVhcnMgbm93LgoKSSdtIHN0cnVnZ2xpbmcgdG8gc2VlIGhvdyB0 aGlzIGlzIGRpZmZlcmVudC4KCi0tIApMZWUgSm9uZXMgW+adjueQvOaWr10KU2VuaW9yIFRlY2hu aWNhbCBMZWFkIC0gRGV2ZWxvcGVyIFNlcnZpY2VzCkxpbmFyby5vcmcg4pSCIE9wZW4gc291cmNl IHNvZnR3YXJlIGZvciBBcm0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIg fCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg==