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 1EDF1C433F5 for ; Thu, 23 Sep 2021 12:41:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 03BA960FE6 for ; Thu, 23 Sep 2021 12:41:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241101AbhIWMm3 (ORCPT ); Thu, 23 Sep 2021 08:42:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241119AbhIWMku (ORCPT ); Thu, 23 Sep 2021 08:40:50 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A589C061766 for ; Thu, 23 Sep 2021 05:39:19 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id u15so16771178wru.6 for ; Thu, 23 Sep 2021 05:39:19 -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=MxzHpyFAKESr4Ic38SfTztzA/X7/MbsMGoi6a9FAX+U=; b=HrD+E5p/kd87Idd0+E+i7CSFqQrUH5/tS3hgU3xe0kPdEKpRL6WeIKHL8rLM2n9YZ0 OrjLzYYAoUHwRlLkp6GlE8MS9tSnwYB0VIuvFvldJ4YVxhXnXnvH6dDee16vlM+K+E/v rLlo9UK1P8jUL61MnVMfCYnuyadgnJA9YD8T71HWRPG9RhVwC/bbbNDzSRy4xpft7fis DpX93qTrAfa3NFjJF6d91StYi08k5/yY50gdrwL9vHit1vNjU6o2b3MDf4qddvB9zeNM IV89tKRUntoWUfbjBLRfI1MyBtFJfMPLEU1sm7FFnJ5PHSRbQL8VcqbxeastkAraHpiB L1fQ== 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=MxzHpyFAKESr4Ic38SfTztzA/X7/MbsMGoi6a9FAX+U=; b=QWai2e5TIp9opIPVvDXNI4G1MQOGzVnYT1JNCYH6w2dak0p/kBu8mOwiyKpslrsaHx OMDk3f8iMQamA0LQPiX0rzr+RFOYwG2NaUyj3/OZTj622BJ1IFrfAgfzHbMWVwK12vX+ UfErvtXWMBS28ziAOFlzM/z/pqulWZhN2A5P9+j4aF+H2EeAd7A+1zS0CsK/27gcV45A L4MK/rHTTz3zkVVIekJcKgK83ZIsw1r+1IQ7Z3L2PoQa5f7pu5VZGqwoa3ouWkeg7ePD yA7MywbbBw4xy4R/fjbfbpiTXTAv9lMCn9+Wl8bK4D+AB+kJfv+wb3dJkmSyycn9Q/Bx YzcQ== X-Gm-Message-State: AOAM532QTHTf4AMGMF6VBIq/EhjCSE7b0rjt254kyvkSlQtpdETjUoJH 70Ff7TTaK0XwlSRSp2yf8CiJdw== X-Google-Smtp-Source: ABdhPJxJ0vo0FQOPLMRAOfZZ+bDnC0Jo6XTw9or8ZXgwDUmzF6PVee54ZoA8mf+D3EiKxqFxQ71NrQ== X-Received: by 2002:a1c:f70a:: with SMTP id v10mr15939265wmh.3.1632400757847; Thu, 23 Sep 2021 05:39:17 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id v191sm5101400wme.36.2021.09.23.05.39.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 05:39:17 -0700 (PDT) Date: Thu, 23 Sep 2021 13:39:15 +0100 From: Lee Jones To: Krzysztof Kozlowski Cc: Will McVicker , Catalin Marinas , Will Deacon , "Cc: Android Kernel" , linux-arm-kernel@lists.infradead.org, Linux Kernel Mailing List , linux-samsung-soc@vger.kernel.org Subject: Re: [PATCH v1 2/4] soc: samsung: change SOC_SAMSUNG default config logic Message-ID: References: <20210920190350.3860821-1-willmcvicker@google.com> <20210920190350.3860821-3-willmcvicker@google.com> <2b48a41a-9130-b4cc-40d3-0bc7930ac76a@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-kernel@vger.kernel.org On Tue, 21 Sep 2021, Krzysztof Kozlowski wrote: > On 21/09/2021 19:45, Will McVicker wrote: > > On Tue, Sep 21, 2021 at 1:19 AM Lee Jones wrote: > >> > >> On Tue, 21 Sep 2021, Krzysztof Kozlowski wrote: > >> > >>> On 20/09/2021 21:03, Will McVicker wrote: > >>>> Switch the default logic to enable SOC_SAMSUNG and it's sub-configs to > >>>> be enabled by default via "default y if ARCH_EXYNOS" versus being > >>>> selected by the ARCH_EXYNOS config directly. This allows vendors to > >>>> disable these configs if they wish and provides additional flexibility > >>>> to modularize them in the presence of a generic kernel. > >>> > >>> This is not true. Vendors cannot disable these options as they are not > >>> visible. > >> > >> Good point, well made. > >> > >>> Although I understand that Arnd prefers this way and I do not > >>> object it, but your explanation is incorrect. > > > > Thanks Krzysztof for the reviews! I'm sorry I missed the whole "hidden > > configs" part. I'll upload the series to include the fix that refactos > > the Samsung SoC drivers menuconfig which will address that and allow > > one to enable/disable those configs. I'm going to hold off though > > until we hash out the rest of the discussion in the cover letter > > email. > > No, please first read our discussions, including Lee's and Geert's > comments. The drivers should not be converted to modules or made visible > if such configuration does not work. If it works, please describe your > testing setup. Modules *should* work. William is going to try it out. Might need to lean-on for some testing on different H/W though. > All these drivers are *necessary* for a multiplatform kernel supporting > Exynos platforms, therefore disabling them does not make any sense (if > you support Exynos platform). If your kernel does not support Exynos > platform, just do not select ARCH_EXYNOS and problem disappears because > none of these drivers will be visible and selected. > > Unless you describe here some out-of-tree kernel which wants > ARCH_EXYNOS, because vendor did not upstream it's code, but you do not > want existing Exynos upstream drivers. We do not support such > configuration. Please push your lovely vendor to work with upstream. > That's the only solution. > > It's the third time this abuse re-usage of ARCH_EXYNOS appears and the > same as before - the vendor does not like to upstream stuff. There are > few guys trying to upstream recent Samsung SoC support by themself (ping > me for contacts if you would like to participate) but the one party > which should be doing it - the lovely vendor - does not actually > participate and instead sends ridiculous patches like this one here... > or like this [1] [2]. > > Nope, please work with upstreaming SoC support, instead of abusing > ARCH_EXYNOS for out of tree code from the vendor. One of the on-going issues that GKI aims to solve pertains to the disparity between what upstream engineers would like to be upstreamed (i.e. everything) and what vendors can upstream (i.e. most things). The old Open Source vs Business (i.e. products/real-life) struggle! Vendors are not able to upstream all functionality right away, as it would give away their perceived edge on the competition (i.e. other vendors). This is something we just have to accept as it will *never* change. GKI attempts to solve this issue by providing a generic core containing all of the elements required to get every supported platform bootstrapped to a point where modules can be loaded and additional functionality can be brought in. GKI provides all of the modules available from the upstream kernel BUT allows them to be overwritten/swapped-out by modules containing code (new/shiny unreleased value-add) that the vendors do not wish to share (yet). Clever, eh! As I've explained before, the trigger for all of this was SERIAL_SAMSUNG which is required for early console on supported Samsung platforms i.e. this symbol *has* to be built-in. In order for this to built-in ARCH_EXYNOS has to be enabled due to the listed dependencies in Kconfig. And since ARCH_EXYNOS 'selects' all of these different extra symbols, it means they too will be built-in, meaning that a) the core binary will be unnecessarily bloated and b) vendors who wish to overwrite/replace this functionality with their non-shareable value-add, are not able to do so. Going forward, it sounds like the best approach that will make everyone happy, providing it's technically feasible, is to enable these added (sometimes required, other times superfluous) symbols as loadable modules. > [1] > https://lore.kernel.org/linux-samsung-soc/001001d5a03d$05de1f70$119a5e50$@samsung.com/ > > [2] > https://lore.kernel.org/linux-usb/20210303022628.6540-1-taehyun.cho@samsung.com/ > > Best regards, > Krzysztof -- 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 18D3DC433F5 for ; Thu, 23 Sep 2021 12:41:20 +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 CD8D060FE6 for ; Thu, 23 Sep 2021 12:41:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org CD8D060FE6 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=o3yCVGS/YZsApSbqfHnWE2doRJ4Wc0xj5ZmN5yIHQNo=; b=rW1xIUa0PR6N4t 8qjVnKh51E//tdtf0YRwh1MhLLvBZeLPlk+4w4Xrwu9RvWrELDZ7d1sJfsDhQObPHrB+ac4NARIqq DU7/olKLzdJAKcTgMnUA+XX4+EAOG2O6Rx6A7g4nLn1lCHM0egNCsdhPAUnbPj4xSewoh8wkCxiWF nrN6ISR8XkPJ0P/0m9HG4U4YBdEkJq1pFu5QKE6YHQCS6HUOtQ1pMUlpN3tU5BNLY8TpZtSUkpmph PLv3HRrEOWgC8xdCvbngtibC4sf9kQ6OFbdnACmYGp1ZydG3dhz2lpO6OtqVdcCeoSTE0YAxjFq+G WZLP+GKy2hi0iKQv8iPA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTO0b-00BSRJ-2p; Thu, 23 Sep 2021 12:39:25 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mTO0W-00BSQ2-DJ for linux-arm-kernel@lists.infradead.org; Thu, 23 Sep 2021 12:39:22 +0000 Received: by mail-wr1-x436.google.com with SMTP id t7so16668543wrw.13 for ; Thu, 23 Sep 2021 05:39:19 -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=MxzHpyFAKESr4Ic38SfTztzA/X7/MbsMGoi6a9FAX+U=; b=HrD+E5p/kd87Idd0+E+i7CSFqQrUH5/tS3hgU3xe0kPdEKpRL6WeIKHL8rLM2n9YZ0 OrjLzYYAoUHwRlLkp6GlE8MS9tSnwYB0VIuvFvldJ4YVxhXnXnvH6dDee16vlM+K+E/v rLlo9UK1P8jUL61MnVMfCYnuyadgnJA9YD8T71HWRPG9RhVwC/bbbNDzSRy4xpft7fis DpX93qTrAfa3NFjJF6d91StYi08k5/yY50gdrwL9vHit1vNjU6o2b3MDf4qddvB9zeNM IV89tKRUntoWUfbjBLRfI1MyBtFJfMPLEU1sm7FFnJ5PHSRbQL8VcqbxeastkAraHpiB L1fQ== 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=MxzHpyFAKESr4Ic38SfTztzA/X7/MbsMGoi6a9FAX+U=; b=RD4ikhgQhvJkdnZdQRVO93y0tHmmoxlCcUD6IR4iRshN7upKlSJ3ubVrGwn2rmqJok NHH2hBDcBP7KHruXXoKZGxmGNUscPvivgL8rY1xoraobrPhVTLLewHrHWtWB6JyMp3i7 oMHYh9q2tCYv+67wSjgFOnkRVJL/ninWI3Rbg3MBOgnxCThPA04c35kkcqgO2bwPB2NM 875vkdtsapyzHvbUkOw5fQS/9VLIqc0KAGpt/LsXENqQKs34+3at6/ctjDJT2N2j1aKj VRPGq9hQf4/6rMVCr7AKcWt7CmyQ3portwGmvTktD0+ZYJbFTz8x8Rsbh/5b9gX7pwg1 IuBA== X-Gm-Message-State: AOAM532sbOE/9RXaZXZqV1bfeI7vfKZusU3p9isIoZdiiGyxKhDpGfsP UxjyxDlN5jKO6EcTF8eJGRpnDA== X-Google-Smtp-Source: ABdhPJxJ0vo0FQOPLMRAOfZZ+bDnC0Jo6XTw9or8ZXgwDUmzF6PVee54ZoA8mf+D3EiKxqFxQ71NrQ== X-Received: by 2002:a1c:f70a:: with SMTP id v10mr15939265wmh.3.1632400757847; Thu, 23 Sep 2021 05:39:17 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id v191sm5101400wme.36.2021.09.23.05.39.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Sep 2021 05:39:17 -0700 (PDT) Date: Thu, 23 Sep 2021 13:39:15 +0100 From: Lee Jones To: Krzysztof Kozlowski Cc: Will McVicker , Catalin Marinas , Will Deacon , "Cc: Android Kernel" , linux-arm-kernel@lists.infradead.org, Linux Kernel Mailing List , linux-samsung-soc@vger.kernel.org Subject: Re: [PATCH v1 2/4] soc: samsung: change SOC_SAMSUNG default config logic Message-ID: References: <20210920190350.3860821-1-willmcvicker@google.com> <20210920190350.3860821-3-willmcvicker@google.com> <2b48a41a-9130-b4cc-40d3-0bc7930ac76a@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-20210923_053920_513810_D46067CC X-CRM114-Status: GOOD ( 36.01 ) 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 MDkvMjAyMSAxOTo0NSwgV2lsbCBNY1ZpY2tlciB3cm90ZToKPiA+IE9uIFR1ZSwgU2VwIDIxLCAy MDIxIGF0IDE6MTkgQU0gTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4gd3JvdGU6Cj4g Pj4KPiA+PiBPbiBUdWUsIDIxIFNlcCAyMDIxLCBLcnp5c3p0b2YgS296bG93c2tpIHdyb3RlOgo+ ID4+Cj4gPj4+IE9uIDIwLzA5LzIwMjEgMjE6MDMsIFdpbGwgTWNWaWNrZXIgd3JvdGU6Cj4gPj4+ PiBTd2l0Y2ggdGhlIGRlZmF1bHQgbG9naWMgdG8gZW5hYmxlIFNPQ19TQU1TVU5HIGFuZCBpdCdz IHN1Yi1jb25maWdzIHRvCj4gPj4+PiBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgdmlhICJkZWZhdWx0 IHkgaWYgQVJDSF9FWFlOT1MiIHZlcnN1cyBiZWluZwo+ID4+Pj4gc2VsZWN0ZWQgYnkgdGhlIEFS Q0hfRVhZTk9TIGNvbmZpZyBkaXJlY3RseS4gVGhpcyBhbGxvd3MgdmVuZG9ycyB0bwo+ID4+Pj4g ZGlzYWJsZSB0aGVzZSBjb25maWdzIGlmIHRoZXkgd2lzaCBhbmQgcHJvdmlkZXMgYWRkaXRpb25h bCBmbGV4aWJpbGl0eQo+ID4+Pj4gdG8gbW9kdWxhcml6ZSB0aGVtIGluIHRoZSBwcmVzZW5jZSBv ZiBhIGdlbmVyaWMga2VybmVsLgo+ID4+Pgo+ID4+PiBUaGlzIGlzIG5vdCB0cnVlLiBWZW5kb3Jz IGNhbm5vdCBkaXNhYmxlIHRoZXNlIG9wdGlvbnMgYXMgdGhleSBhcmUgbm90Cj4gPj4+IHZpc2li bGUuCj4gPj4KPiA+PiBHb29kIHBvaW50LCB3ZWxsIG1hZGUuCj4gPj4KPiA+Pj4gQWx0aG91Z2gg SSB1bmRlcnN0YW5kIHRoYXQgQXJuZCBwcmVmZXJzIHRoaXMgd2F5IGFuZCBJIGRvIG5vdAo+ID4+ PiBvYmplY3QgaXQsIGJ1dCB5b3VyIGV4cGxhbmF0aW9uIGlzIGluY29ycmVjdC4KPiA+IAo+ID4g VGhhbmtzIEtyenlzenRvZiBmb3IgdGhlIHJldmlld3MhIEknbSBzb3JyeSBJIG1pc3NlZCB0aGUg d2hvbGUgImhpZGRlbgo+ID4gY29uZmlncyIgcGFydC4gSSdsbCB1cGxvYWQgdGhlIHNlcmllcyB0 byBpbmNsdWRlIHRoZSBmaXggdGhhdCByZWZhY3Rvcwo+ID4gdGhlIFNhbXN1bmcgU29DIGRyaXZl cnMgbWVudWNvbmZpZyB3aGljaCB3aWxsIGFkZHJlc3MgdGhhdCBhbmQgYWxsb3cKPiA+IG9uZSB0 byBlbmFibGUvZGlzYWJsZSB0aG9zZSBjb25maWdzLiBJJ20gZ29pbmcgdG8gaG9sZCBvZmYgdGhv dWdoCj4gPiB1bnRpbCB3ZSBoYXNoIG91dCB0aGUgcmVzdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbiB0 aGUgY292ZXIgbGV0dGVyCj4gPiBlbWFpbC4KPiAKPiBObywgcGxlYXNlIGZpcnN0IHJlYWQgb3Vy IGRpc2N1c3Npb25zLCBpbmNsdWRpbmcgTGVlJ3MgYW5kIEdlZXJ0J3MKPiBjb21tZW50cy4gVGhl IGRyaXZlcnMgc2hvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gbW9kdWxlcyBvciBtYWRlIHZpc2li bGUKPiBpZiBzdWNoIGNvbmZpZ3VyYXRpb24gZG9lcyBub3Qgd29yay4gSWYgaXQgd29ya3MsIHBs ZWFzZSBkZXNjcmliZSB5b3VyCj4gdGVzdGluZyBzZXR1cC4KCk1vZHVsZXMgKnNob3VsZCogd29y ay4gIFdpbGxpYW0gaXMgZ29pbmcgdG8gdHJ5IGl0IG91dC4KCk1pZ2h0IG5lZWQgdG8gbGVhbi1v biBmb3Igc29tZSB0ZXN0aW5nIG9uIGRpZmZlcmVudCBIL1cgdGhvdWdoLgoKPiBBbGwgdGhlc2Ug ZHJpdmVycyBhcmUgKm5lY2Vzc2FyeSogZm9yIGEgbXVsdGlwbGF0Zm9ybSBrZXJuZWwgc3VwcG9y dGluZwo+IEV4eW5vcyBwbGF0Zm9ybXMsIHRoZXJlZm9yZSBkaXNhYmxpbmcgdGhlbSBkb2VzIG5v dCBtYWtlIGFueSBzZW5zZSAoaWYKPiB5b3Ugc3VwcG9ydCBFeHlub3MgcGxhdGZvcm0pLiBJZiB5 b3VyIGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IEV4eW5vcwo+IHBsYXRmb3JtLCBqdXN0IGRvIG5v dCBzZWxlY3QgQVJDSF9FWFlOT1MgYW5kIHByb2JsZW0gZGlzYXBwZWFycyBiZWNhdXNlCj4gbm9u ZSBvZiB0aGVzZSBkcml2ZXJzIHdpbGwgYmUgdmlzaWJsZSBhbmQgc2VsZWN0ZWQuCj4gCj4gVW5s ZXNzIHlvdSBkZXNjcmliZSBoZXJlIHNvbWUgb3V0LW9mLXRyZWUga2VybmVsIHdoaWNoIHdhbnRz Cj4gQVJDSF9FWFlOT1MsIGJlY2F1c2UgdmVuZG9yIGRpZCBub3QgdXBzdHJlYW0gaXQncyBjb2Rl LCBidXQgeW91IGRvIG5vdAo+IHdhbnQgZXhpc3RpbmcgRXh5bm9zIHVwc3RyZWFtIGRyaXZlcnMu IFdlIGRvIG5vdCBzdXBwb3J0IHN1Y2gKPiBjb25maWd1cmF0aW9uLiBQbGVhc2UgcHVzaCB5b3Vy IGxvdmVseSB2ZW5kb3IgdG8gd29yayB3aXRoIHVwc3RyZWFtLgo+IFRoYXQncyB0aGUgb25seSBz b2x1dGlvbi4KPiAKPiBJdCdzIHRoZSB0aGlyZCB0aW1lIHRoaXMgYWJ1c2UgcmUtdXNhZ2Ugb2Yg QVJDSF9FWFlOT1MgYXBwZWFycyBhbmQgdGhlCj4gc2FtZSBhcyBiZWZvcmUgLSB0aGUgdmVuZG9y IGRvZXMgbm90IGxpa2UgdG8gdXBzdHJlYW0gc3R1ZmYuIFRoZXJlIGFyZQo+IGZldyBndXlzIHRy eWluZyB0byB1cHN0cmVhbSByZWNlbnQgU2Ftc3VuZyBTb0Mgc3VwcG9ydCBieSB0aGVtc2VsZiAo cGluZwo+IG1lIGZvciBjb250YWN0cyBpZiB5b3Ugd291bGQgbGlrZSB0byBwYXJ0aWNpcGF0ZSkg YnV0IHRoZSBvbmUgcGFydHkKPiB3aGljaCBzaG91bGQgYmUgZG9pbmcgaXQgLSB0aGUgbG92ZWx5 IHZlbmRvciAtIGRvZXMgbm90IGFjdHVhbGx5Cj4gcGFydGljaXBhdGUgYW5kIGluc3RlYWQgc2Vu ZHMgcmlkaWN1bG91cyBwYXRjaGVzIGxpa2UgdGhpcyBvbmUgaGVyZS4uLgo+IG9yIGxpa2UgdGhp cyBbMV0gWzJdLgo+IAo+IE5vcGUsIHBsZWFzZSB3b3JrIHdpdGggdXBzdHJlYW1pbmcgU29DIHN1 cHBvcnQsIGluc3RlYWQgb2YgYWJ1c2luZwo+IEFSQ0hfRVhZTk9TIGZvciBvdXQgb2YgdHJlZSBj b2RlIGZyb20gdGhlIHZlbmRvci4KCk9uZSBvZiB0aGUgb24tZ29pbmcgaXNzdWVzIHRoYXQgR0tJ IGFpbXMgdG8gc29sdmUgcGVydGFpbnMgdG8gdGhlCmRpc3Bhcml0eSBiZXR3ZWVuIHdoYXQgdXBz dHJlYW0gZW5naW5lZXJzIHdvdWxkIGxpa2UgdG8gYmUgdXBzdHJlYW1lZAooaS5lLiBldmVyeXRo aW5nKSBhbmQgd2hhdCB2ZW5kb3JzIGNhbiB1cHN0cmVhbSAoaS5lLiBtb3N0IHRoaW5ncykuCgpU aGUgb2xkIE9wZW4gU291cmNlIHZzIEJ1c2luZXNzIChpLmUuIHByb2R1Y3RzL3JlYWwtbGlmZSkg c3RydWdnbGUhCgpWZW5kb3JzIGFyZSBub3QgYWJsZSB0byB1cHN0cmVhbSBhbGwgZnVuY3Rpb25h bGl0eSByaWdodCBhd2F5LCBhcyBpdAp3b3VsZCBnaXZlIGF3YXkgdGhlaXIgcGVyY2VpdmVkIGVk Z2Ugb24gdGhlIGNvbXBldGl0aW9uIChpLmUuIG90aGVyCnZlbmRvcnMpLiAgVGhpcyBpcyBzb21l dGhpbmcgd2UganVzdCBoYXZlIHRvIGFjY2VwdCBhcyBpdCB3aWxsICpuZXZlcioKY2hhbmdlLgoK R0tJIGF0dGVtcHRzIHRvIHNvbHZlIHRoaXMgaXNzdWUgYnkgcHJvdmlkaW5nIGEgZ2VuZXJpYyBj b3JlCmNvbnRhaW5pbmcgYWxsIG9mIHRoZSBlbGVtZW50cyByZXF1aXJlZCB0byBnZXQgZXZlcnkg c3VwcG9ydGVkCnBsYXRmb3JtIGJvb3RzdHJhcHBlZCB0byBhIHBvaW50IHdoZXJlIG1vZHVsZXMg Y2FuIGJlIGxvYWRlZCBhbmQKYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IGNhbiBiZSBicm91Z2h0 IGluLiAgR0tJIHByb3ZpZGVzIGFsbCBvZiB0aGUKbW9kdWxlcyBhdmFpbGFibGUgZnJvbSB0aGUg dXBzdHJlYW0ga2VybmVsIEJVVCBhbGxvd3MgdGhlbSB0byBiZQpvdmVyd3JpdHRlbi9zd2FwcGVk LW91dCBieSBtb2R1bGVzIGNvbnRhaW5pbmcgY29kZSAobmV3L3NoaW55CnVucmVsZWFzZWQgdmFs dWUtYWRkKSB0aGF0IHRoZSB2ZW5kb3JzIGRvIG5vdCB3aXNoIHRvIHNoYXJlICh5ZXQpLgoKQ2xl dmVyLCBlaCEKCkFzIEkndmUgZXhwbGFpbmVkIGJlZm9yZSwgdGhlIHRyaWdnZXIgZm9yIGFsbCBv ZiB0aGlzIHdhcwpTRVJJQUxfU0FNU1VORyB3aGljaCBpcyByZXF1aXJlZCBmb3IgZWFybHkgY29u c29sZSBvbiBzdXBwb3J0ZWQKU2Ftc3VuZyBwbGF0Zm9ybXMgaS5lLiB0aGlzIHN5bWJvbCAqaGFz KiB0byBiZSBidWlsdC1pbi4gIEluIG9yZGVyIGZvcgp0aGlzIHRvIGJ1aWx0LWluIEFSQ0hfRVhZ Tk9TIGhhcyB0byBiZSBlbmFibGVkIGR1ZSB0byB0aGUgbGlzdGVkCmRlcGVuZGVuY2llcyBpbiBL Y29uZmlnLiAgQW5kIHNpbmNlIEFSQ0hfRVhZTk9TICdzZWxlY3RzJyBhbGwgb2YgdGhlc2UKZGlm ZmVyZW50IGV4dHJhIHN5bWJvbHMsIGl0IG1lYW5zIHRoZXkgdG9vIHdpbGwgYmUgYnVpbHQtaW4s IG1lYW5pbmcKdGhhdCBhKSB0aGUgY29yZSBiaW5hcnkgd2lsbCBiZSB1bm5lY2Vzc2FyaWx5IGJs b2F0ZWQgYW5kIGIpIHZlbmRvcnMKd2hvIHdpc2ggdG8gb3ZlcndyaXRlL3JlcGxhY2UgdGhpcyBm dW5jdGlvbmFsaXR5IHdpdGggdGhlaXIKbm9uLXNoYXJlYWJsZSB2YWx1ZS1hZGQsIGFyZSBub3Qg YWJsZSB0byBkbyBzby4KCkdvaW5nIGZvcndhcmQsIGl0IHNvdW5kcyBsaWtlIHRoZSBiZXN0IGFw cHJvYWNoIHRoYXQgd2lsbCBtYWtlCmV2ZXJ5b25lIGhhcHB5LCBwcm92aWRpbmcgaXQncyB0ZWNo bmljYWxseSBmZWFzaWJsZSwgaXMgdG8gZW5hYmxlCnRoZXNlIGFkZGVkIChzb21ldGltZXMgcmVx dWlyZWQsIG90aGVyIHRpbWVzIHN1cGVyZmx1b3VzKSBzeW1ib2xzIGFzCmxvYWRhYmxlIG1vZHVs ZXMuCgo+IFsxXQo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXNhbXN1bmctc29jLzAw MTAwMWQ1YTAzZCQwNWRlMWY3MCQxMTlhNWU1MCRAc2Ftc3VuZy5jb20vCj4gCj4gWzJdCj4gaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtdXNiLzIwMjEwMzAzMDIyNjI4LjY1NDAtMS10YWVo eXVuLmNob0BzYW1zdW5nLmNvbS8KPiAKPiBCZXN0IHJlZ2FyZHMsCj4gS3J6eXN6dG9mCgotLSAK TGVlIEpvbmVzIFvmnY7nkLzmlq9dClNlbmlvciBUZWNobmljYWwgTGVhZCAtIERldmVsb3BlciBT ZXJ2aWNlcwpMaW5hcm8ub3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQXJtIFNvQ3MK Rm9sbG93IExpbmFybzogRmFjZWJvb2sgfCBUd2l0dGVyIHwgQmxvZwoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=