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 0300CC433FE for ; Thu, 30 Sep 2021 10:56:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DB50860F57 for ; Thu, 30 Sep 2021 10:56:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350211AbhI3K6O (ORCPT ); Thu, 30 Sep 2021 06:58:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41686 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350200AbhI3K6I (ORCPT ); Thu, 30 Sep 2021 06:58:08 -0400 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A340AC06176D for ; Thu, 30 Sep 2021 03:56:25 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id k7so9229666wrd.13 for ; Thu, 30 Sep 2021 03:56:25 -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=/VMupglYU4EOxZ9GIvUTD4Oa9Wz9bmjm6P6VPn5LJEQ=; b=m1SFtJApbC2xkdEpuLj5DyxW/ZNBB3L7xGICBs7nWMebGOeAqWLF6G98j1uRrydwdz kW9Wv8B1NalzEcHPk886QneW10d5dpY+3Cfp5doLRn5nJGPqcxYpgVOrCDaiAkMk35Y+ cQ1gpG0C3q0MtwU07e4bd2uwrs3jzj+7az1QyIuHHbCmmqs17OG/Caf9trFEvntoVxFc enDWOVWJFBMJxHgnMAIenc/2yvQwwVMFRm+mDFqFI0YoriBV8IfPY9Q7E8oAXVvItZ7a vbQnrhdeb7cVt2u22M7t3zvtzg4wL1e1HkQNCeqxcHkySWPWv3Ler0H4IflvMKjzDiI7 jC8A== 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=/VMupglYU4EOxZ9GIvUTD4Oa9Wz9bmjm6P6VPn5LJEQ=; b=mmrp0dMJ1RYOjW1prRTpAw+0/2bTwevgO89K5sQ9sAmIopUrOoaZDuUk+xQHmTaZYc irzdWu0dwac5MlzzCByPZXM8Vnnqw8Ed/cvxdClu9Ch3gXyU+1ovexDrVi5TWXS4VAQp b2rZcgqOqJ8o7ADXfgdgJ02+xhxbrmNRh6L5mAT7m0KKpvKm+9GEXNTHdIOQ0CjrGvQe 3Z8doJ+KQJDw4RVvoWyLttB+cAkTS8RTA28DFfABZZjmaBddcU6RU6uWuaWTO0tLQkbz 4qv/llIw+q3gj8Xn2x/krBgUaM7/ScYZXeLG2fBdVZqCRocU82/yJ3vfxaP719eBCxFv Ho4w== X-Gm-Message-State: AOAM5325VKInXdX4B8RAznj8TkcfaXuCRTpU0yS8qwxwwO4c7ycudKqj gYcZPi6h0TYYcQMh3zzCKsghmQ== X-Google-Smtp-Source: ABdhPJypOUvaFKcTlUycVS7eKZhECtrth44ZiCPYHEO6MZ0vTZaWDKWjEfaWkJeRfx6pupOWXq6ZEw== X-Received: by 2002:a5d:47cf:: with SMTP id o15mr989697wrc.394.1632999384182; Thu, 30 Sep 2021 03:56:24 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id c7sm3413926wmq.13.2021.09.30.03.56.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 03:56:23 -0700 (PDT) Date: Thu, 30 Sep 2021 11:56:21 +0100 From: Lee Jones To: Geert Uytterhoeven Cc: Krzysztof Kozlowski , 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 , Saravana Kannan , "Cc: Android Kernel" , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk , "open list:GPIO SUBSYSTEM" , 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-clk@vger.kernel.org On Thu, 30 Sep 2021, Geert Uytterhoeven wrote: > Hi Lee, > > On Thu, Sep 30, 2021 at 11:23 AM 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. > > Why? Because without them the image wouldn't functional on any level. But you're right, there is still no requirement for it to be built-in. > > 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*. > > If the drivers are really essential/necessary/required, this precludes > running the generic kernel image on the platform that requires them, > making the kernel not sufficiently generic. If they are not at all present, then yes. However that is not what is being suggested. The essential functionality will be provided. Just not built-in. > > 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). > > True, if "potentially". If not potentially, they must be included. I'm not sure what you're trying to say here. Would you mind elaborating? > > Bloating a generic kernel with potentially hundreds of unnecessary > > drivers that will never be executed in the vast majority of instances > > doesn't achieve anything. If we have a kernel image that has the > > ability to boot on 10's of architectures which have 10's of platforms > > each, that's a whole host of unused/wasted executable space. > > The key here is if the driver is required or not to use the platform, > and why it is required. If the requirement comes from some deficiency > in the kernel code or config system, it should be fixed, if possible. > And the fix should be tested. > If it cannot be fixed, the driver should be included, else it would > preclude running the generic kernel on the affected platform. Sorry, I'm not following. > > In order for vendors to work more closely with upstream, they need the > > ability to over-ride a *few* drivers to supplement them with some > > functionality which they believe provides them with a competitive edge > > (I think you called this "value-add" before) prior to the release of a > > device. This is a requirement that cannot be worked around. > > > > 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]. > > > > [0] Full disclosure: part of my role at Linaro is to keep the Android > > kernel running as close to Mainline as possible and encourage/push the > > upstream-first mantra, hence my involvement with this and other sets. > > I assure you all intentions are good and honourable. If you haven't > > already seen it, please see Todd's most recent update on the goals and > > status of GKI: > > > > Article: https://tinyurl.com/saaen3sp > > Video: https://youtu.be/O_lCFGinFPM > > > > > 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. > > > > > You also mentioned downstream devices but without actually ever defining > > > them. Please be more specific. What SoC, what hardware? > > > > Accepting changes based on the proviso that vendors upstream all of > > their work-in-progress solutions is an unfair position. We already > > discussed why upstreaming support for bleeding edge H/W and > > functionality is unrealistic in terms of competitive advantage. > > > > Besides, we might not be talking about new silicon at all (I don't > > believe anyone alluded to that). The flexibility in configuration > > simply allows for generic upstream drivers to be swapped out for ones > > which may have more or slightly different functionality (that can't be > > publicly shared until release). > > The replacement drivers are already a downstream kernel fork, which you > would like to avoid? Avoid, yes, absolutely. However, in the real world of competitive tech, other than in extreme cases such as; fully open source, community driven, cute embedded hobby platforms, there will always be changes required on-top of upstream projects. Even as upstream kernel developers we need to understand and respect that. -- 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 43221C433EF for ; Thu, 30 Sep 2021 10:59:23 +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 0A1F860F57 for ; Thu, 30 Sep 2021 10:59:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0A1F860F57 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=vq41N8FfChruWGmOn/nfkGxO8FTj3lJbHCXZWmrHpzY=; b=PBOvBz1tvH3wi7 +Ph1ItPT9sKXkl6PRt0pgTJelQxeRE/3PjFKXHwU3M4r+WIXrCzy2yU7rTBR0un+cOTmapx5VIMBC dVFxhGaMeBy9dY/TlOsGEIhV6IEKQhjzu3ohM8i62ZXS2vmtiRj88QU2scr0ROHbFxg9P7RmM19tS zNbG0U/vj9vscJVABZW8PmAUKUmU8hxboB917upuquAnyJF0FPiDv0OQxxjhAYrUp2NsS0RWy/W4z CY155GnakjpBkpEEbSDuqm6Ywm/S8zod0EQ/mB84W9ySgiKgb2PkjXfsiQAW3mq+tEtw//7CoNwb6 hsxisGofY5TJutmwP11g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVtjp-00DwyR-LB; Thu, 30 Sep 2021 10:56:29 +0000 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVtjl-00DwxZ-NE for linux-arm-kernel@lists.infradead.org; Thu, 30 Sep 2021 10:56:27 +0000 Received: by mail-wr1-x432.google.com with SMTP id u18so9339787wrg.5 for ; Thu, 30 Sep 2021 03:56:25 -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=/VMupglYU4EOxZ9GIvUTD4Oa9Wz9bmjm6P6VPn5LJEQ=; b=m1SFtJApbC2xkdEpuLj5DyxW/ZNBB3L7xGICBs7nWMebGOeAqWLF6G98j1uRrydwdz kW9Wv8B1NalzEcHPk886QneW10d5dpY+3Cfp5doLRn5nJGPqcxYpgVOrCDaiAkMk35Y+ cQ1gpG0C3q0MtwU07e4bd2uwrs3jzj+7az1QyIuHHbCmmqs17OG/Caf9trFEvntoVxFc enDWOVWJFBMJxHgnMAIenc/2yvQwwVMFRm+mDFqFI0YoriBV8IfPY9Q7E8oAXVvItZ7a vbQnrhdeb7cVt2u22M7t3zvtzg4wL1e1HkQNCeqxcHkySWPWv3Ler0H4IflvMKjzDiI7 jC8A== 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=/VMupglYU4EOxZ9GIvUTD4Oa9Wz9bmjm6P6VPn5LJEQ=; b=cuLnmyH8i5HBD6asQPtSrSyHBW+i+g0+O/EQ9yvwlHQRlfAqlMZrSyIMAOs9/MGVyo lbLXablea2FIaKWSyXXGaVwLix2hy6VeGjQMp7Xsehn9TO6t48D3i5mehli3wZC0Y3sc BDHUXx3cBZetif3DMiTR0Blmd+WgmT4dHjkWbflhmBWWLyvsrvTeWu0/mtodzFMNnHWY 0QaAxZ5PChnyK+BineM+Kh9vUJcbnGPXRGaDo73oUH4eTXrkKu6sGnmmC0vXzjcNJZML Cj4/lvVqMJDMpv+1m4OSpbdmP54JQQ5yYy7ZdkLr3AQM1ck5S8tV9FCltIwRk8kNxw8N AlGQ== X-Gm-Message-State: AOAM531Lu19lxjRReyjhVrHstFdpILd0i/hQokjNQgixa5b0A8GO19pT 0HkoYw8nN2Awdq9kLjB9dNTrOA== X-Google-Smtp-Source: ABdhPJypOUvaFKcTlUycVS7eKZhECtrth44ZiCPYHEO6MZ0vTZaWDKWjEfaWkJeRfx6pupOWXq6ZEw== X-Received: by 2002:a5d:47cf:: with SMTP id o15mr989697wrc.394.1632999384182; Thu, 30 Sep 2021 03:56:24 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id c7sm3413926wmq.13.2021.09.30.03.56.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 03:56:23 -0700 (PDT) Date: Thu, 30 Sep 2021 11:56:21 +0100 From: Lee Jones To: Geert Uytterhoeven Cc: Krzysztof Kozlowski , 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 , Saravana Kannan , "Cc: Android Kernel" , Linux ARM , Linux Kernel Mailing List , linux-samsung-soc , linux-clk , "open list:GPIO SUBSYSTEM" , 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_035625_850072_63BAB712 X-CRM114-Status: GOOD ( 53.71 ) 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 T24gVGh1LCAzMCBTZXAgMjAyMSwgR2VlcnQgVXl0dGVyaG9ldmVuIHdyb3RlOgoKPiBIaSBMZWUs Cj4gCj4gT24gVGh1LCBTZXAgMzAsIDIwMjEgYXQgMTE6MjMgQU0gTGVlIEpvbmVzIDxsZWUuam9u ZXNAbGluYXJvLm9yZz4gd3JvdGU6Cj4gPiBJJ3ZlIHRha2VuIHRoZSBsaWJlcnR5IG9mIGNoZXJy eS1waWNraW5nIHNvbWUgb2YgdGhlIHBvaW50cyB5b3UgaGF2ZQo+ID4gcmVpdGVyYXR0ZWQgYSBm ZXcgdGltZXMuICBIb3BlZnVsbHkgSSBjYW4gaGVscCB0byBhZGRyZXNzIHRoZW0KPiA+IGFkZXF1 ZW50bHkuCj4gPgo+ID4gT24gVGh1LCAzMCBTZXAgMjAyMSwgS3J6eXN6dG9mIEtvemxvd3NraSB3 cm90ZToKPiA+ID4gUmVtaW5kZXI6IHRoZXNlIGFyZSBlc3NlbnRpYWwgZHJpdmVycyBhbmQgYWxs IEV4eW5vcyBwbGF0Zm9ybXMgbXVzdCBoYXZlCj4gPiA+IHRoZW0gYXMgYnVpbHQtaW4gKGF0IGxl YXN0IHRpbGwgc29tZW9uZSByZWFsbHkgdGVzdHMgdGhpcyBvbiBtdWx0aXBsZQo+ID4gPiBzZXR1 cHMpLgo+ID4KPiA+ID4gVGhlcmVmb3JlIEkgZG9uJ3QgYWdyZWUgd2l0aCBjYWxsaW5nIGl0IGEg InByb2JsZW0iIHRoYXQgd2Ugc2VsZWN0Cj4gPiA+ICpuZWNlc3NhcnkqIGRyaXZlcnMgZm9yIHN1 cHBvcnRlZCBwbGF0Zm9ybXMuIEl0J3MgYnkgZGVzaWduIC0gc3VwcG9ydGVkCj4gPiA+IHBsYXRm b3JtcyBzaG91bGQgcmVjZWl2ZSB0aGVtIHdpdGhvdXQgYWJpbGl0eSB0byByZW1vdmUuCj4gPgo+ ID4gPiBUaGUgc2VsZWN0ZWQgZHJpdmVycyBhcmUgZXNzZW50aWFsIGZvciBzdXBwb3J0ZWQgcGxh dGZvcm1zLgo+ID4KPiA+IFNvQyBzcGVjaWZpYyBkcml2ZXJzIGFyZSBvbmx5IGVzc2VudGlhbC9u ZWNlc3NhcnkvcmVxdWlyZWQgaW4KPiA+IGltYWdlcyBkZXNpZ25lZCB0byBleGVjdXRlIHNvbGVs eSBvbiBhIHBsYXRmb3JtIHRoYXQgcmVxdWlyZXMgdGhlbS4KPiAKPiBXaHk/CgpCZWNhdXNlIHdp dGhvdXQgdGhlbSB0aGUgaW1hZ2Ugd291bGRuJ3QgZnVuY3Rpb25hbCBvbiBhbnkgbGV2ZWwuCgpC dXQgeW91J3JlIHJpZ2h0LCB0aGVyZSBpcyBzdGlsbCBubyByZXF1aXJlbWVudCBmb3IgaXQgdG8g YmUgYnVpbHQtaW4uCgo+ID4gRm9yIGEga2VybmVsIGltYWdlIHdoaWNoIGlzIGRlc2lnbmVkIHRv IGJlIGdlbmVyaWMgaS5lLiBvbmUgdGhhdCBoYXMKPiA+IHRoZSBhYmlsaXR5IHRvIGJvb3Qgb24g dmFzdCBhcnJheSBvZiBwbGF0Zm9ybXMsIHRoZSBkcml2ZXJzIHNpbXBseQo+ID4gaGF2ZSB0byBi ZSAqYXZhaWxhYmxlKi4KPiAKPiBJZiB0aGUgZHJpdmVycyBhcmUgcmVhbGx5IGVzc2VudGlhbC9u ZWNlc3NhcnkvcmVxdWlyZWQsIHRoaXMgcHJlY2x1ZGVzCj4gcnVubmluZyB0aGUgZ2VuZXJpYyBr ZXJuZWwgaW1hZ2Ugb24gdGhlIHBsYXRmb3JtIHRoYXQgcmVxdWlyZXMgdGhlbSwKPiBtYWtpbmcg dGhlIGtlcm5lbCBub3Qgc3VmZmljaWVudGx5IGdlbmVyaWMuCgpJZiB0aGV5IGFyZSBub3QgYXQg YWxsIHByZXNlbnQsIHRoZW4geWVzLiAgSG93ZXZlciB0aGF0IGlzIG5vdCB3aGF0IGlzCmJlaW5n IHN1Z2dlc3RlZC4gIFRoZSBlc3NlbnRpYWwgZnVuY3Rpb25hbGl0eSB3aWxsIGJlIHByb3ZpZGVk LiAgSnVzdApub3QgYnVpbHQtaW4uCgo+ID4gRm9yY2luZyBhbGwgSC9XIGRyaXZlcnMgdGhhdCBh cmUgb25seSAqcG90ZW50aWFsbHkqIHV0aWxpc2VkIG9uICpzb21lKgo+ID4gcGxhdGZvcm1zIGFz IGNvcmUgYmluYXJ5IGJ1aWx0LWlucyBkb2Vzbid0IG1ha2UgYW55IHRlY2huaWNhbCBzZW5zZS4K PiA+IFRoZSB0d28gbW9zdCBpbXBvcnRhbnQgaXNzdWVzIHRoaXMgY2F1c2VzIGFyZSBpbWFnZSBz aXplIGFuZCBhIGxhY2sgb2YKPiA+IGNvbmZpZ3VyYWJpbGl0eS9mbGV4aWJpbGl0eSByZWxhdGlu ZyB0byByZWFsLXdvcmxkIGFwcGxpY2F0aW9uIGkuZS4KPiA+IHRoZSBvbmUgaXNzdWUgd2UgYWxy ZWFkeSBhZ3JlZWQgdXBvbjsgSC9XIG9yIGZlYXR1cmVzIHRoYXQgYXJlIHRvbwo+ID4gbmV3IChw cmUtcmVsZWFzZSkuCj4gCj4gVHJ1ZSwgaWYgInBvdGVudGlhbGx5Ii4gIElmIG5vdCBwb3RlbnRp YWxseSwgdGhleSBtdXN0IGJlIGluY2x1ZGVkLgoKSSdtIG5vdCBzdXJlIHdoYXQgeW91J3JlIHRy eWluZyB0byBzYXkgaGVyZS4gIFdvdWxkIHlvdSBtaW5kIGVsYWJvcmF0aW5nPwoKPiA+IEJsb2F0 aW5nIGEgZ2VuZXJpYyBrZXJuZWwgd2l0aCBwb3RlbnRpYWxseSBodW5kcmVkcyBvZiB1bm5lY2Vz c2FyeQo+ID4gZHJpdmVycyB0aGF0IHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQgaW4gdGhlIHZhc3Qg bWFqb3JpdHkgb2YgaW5zdGFuY2VzCj4gPiBkb2Vzbid0IGFjaGlldmUgYW55dGhpbmcuICBJZiB3 ZSBoYXZlIGEga2VybmVsIGltYWdlIHRoYXQgaGFzIHRoZQo+ID4gYWJpbGl0eSB0byBib290IG9u IDEwJ3Mgb2YgYXJjaGl0ZWN0dXJlcyB3aGljaCBoYXZlIDEwJ3Mgb2YgcGxhdGZvcm1zCj4gPiBl YWNoLCB0aGF0J3MgYSB3aG9sZSBob3N0IG9mIHVudXNlZC93YXN0ZWQgZXhlY3V0YWJsZSBzcGFj ZS4KPiAKPiBUaGUga2V5IGhlcmUgaXMgaWYgdGhlIGRyaXZlciBpcyByZXF1aXJlZCBvciBub3Qg dG8gdXNlIHRoZSBwbGF0Zm9ybSwKPiBhbmQgd2h5IGl0IGlzIHJlcXVpcmVkLiAgSWYgdGhlIHJl cXVpcmVtZW50IGNvbWVzIGZyb20gc29tZSBkZWZpY2llbmN5Cj4gaW4gdGhlIGtlcm5lbCBjb2Rl IG9yIGNvbmZpZyBzeXN0ZW0sIGl0IHNob3VsZCBiZSBmaXhlZCwgaWYgcG9zc2libGUuCj4gQW5k IHRoZSBmaXggc2hvdWxkIGJlIHRlc3RlZC4KPiBJZiBpdCBjYW5ub3QgYmUgZml4ZWQsIHRoZSBk cml2ZXIgc2hvdWxkIGJlIGluY2x1ZGVkLCBlbHNlIGl0IHdvdWxkCj4gcHJlY2x1ZGUgcnVubmlu ZyB0aGUgZ2VuZXJpYyBrZXJuZWwgb24gdGhlIGFmZmVjdGVkIHBsYXRmb3JtLgoKU29ycnksIEkn bSBub3QgZm9sbG93aW5nLgoKPiA+IEluIG9yZGVyIGZvciB2ZW5kb3JzIHRvIHdvcmsgbW9yZSBj bG9zZWx5IHdpdGggdXBzdHJlYW0sIHRoZXkgbmVlZCB0aGUKPiA+IGFiaWxpdHkgdG8gb3Zlci1y aWRlIGEgKmZldyogZHJpdmVycyB0byBzdXBwbGVtZW50IHRoZW0gd2l0aCBzb21lCj4gPiBmdW5j dGlvbmFsaXR5IHdoaWNoIHRoZXkgYmVsaWV2ZSBwcm92aWRlcyB0aGVtIHdpdGggYSBjb21wZXRp dGl2ZSBlZGdlCj4gPiAoSSB0aGluayB5b3UgY2FsbGVkIHRoaXMgInZhbHVlLWFkZCIgYmVmb3Jl KSBwcmlvciB0byB0aGUgcmVsZWFzZSBvZiBhCj4gPiBkZXZpY2UuICBUaGlzIGlzIGEgcmVxdWly ZW1lbnQgdGhhdCBjYW5ub3QgYmUgd29ya2VkIGFyb3VuZC4KPiA+Cj4gPiBCeSBpbnNpc3Rpbmcg b24gZHJpdmVycyAobW9zdCBvZiB3aGljaCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpbiB0aGUKPiA+ IHZhc3QgbWFqb3JpdHkgb2YgY2FzZXMpIHRvIGJlIGJ1aWx0LWluLCB5b3UgYXJlIGluc2lzdGlu ZyBvbiBhCj4gPiBkb3duc3RyZWFtIGtlcm5lbCBmb3JrLCB3aGljaCBhbGwgb2YgdXMgd291bGQg bGlrZSB0byBhdm9pZCBbMF0uCj4gPgo+ID4gWzBdIEZ1bGwgZGlzY2xvc3VyZTogcGFydCBvZiBt eSByb2xlIGF0IExpbmFybyBpcyB0byBrZWVwIHRoZSBBbmRyb2lkCj4gPiBrZXJuZWwgcnVubmlu ZyBhcyBjbG9zZSB0byBNYWlubGluZSBhcyBwb3NzaWJsZSBhbmQgZW5jb3VyYWdlL3B1c2ggdGhl Cj4gPiB1cHN0cmVhbS1maXJzdCBtYW50cmEsIGhlbmNlIG15IGludm9sdmVtZW50IHdpdGggdGhp cyBhbmQgb3RoZXIgc2V0cy4KPiA+IEkgYXNzdXJlIHlvdSBhbGwgaW50ZW50aW9ucyBhcmUgZ29v ZCBhbmQgaG9ub3VyYWJsZS4gIElmIHlvdSBoYXZlbid0Cj4gPiBhbHJlYWR5IHNlZW4gaXQsIHBs ZWFzZSBzZWUgVG9kZCdzIG1vc3QgcmVjZW50IHVwZGF0ZSBvbiB0aGUgZ29hbHMgYW5kCj4gPiBz dGF0dXMgb2YgR0tJOgo+ID4KPiA+ICAgQXJ0aWNsZTogaHR0cHM6Ly90aW55dXJsLmNvbS9zYWFl bjNzcAo+ID4gICBWaWRlbzogICBodHRwczovL3lvdXR1LmJlL09fbENGR2luRlBNCj4gPgo+ID4g PiBXZSBkb24ndCBldmVuIGtub3cgd2hhdCBhcmUgdGhlc2UgdW5zdXBwb3J0ZWQsIGRvd25zdHJl YW0gcGxhdGZvcm1zCj4gPiA+IHlvdSB3YW50IGN1c3RvbWl6ZSBrZXJuZWwgZm9yLiBUaGV5IGNh bm5vdCBiZSBhdWRpdGVkLCBjYW5ub3QgYmUKPiA+ID4gY29tcGFyZWQuICBBZmZlY3RpbmcgdXBz dHJlYW0gcGxhdGZvcm1zIGp1c3QgYmVjYXVzZQo+ID4gPiB2ZW5kb3IvZG93bnN0cmVhbSBkb2Vz IG5vdCB3YW50IHRvIG1haW5saW5lIHNvbWUgY29kZSBpcwo+ID4gPiB1bmFjY2VwdGFibGUuIFBs ZWFzZSB1cHN0cmVhbSB5b3VyIGRyaXZlcnMgYW5kIERUUy4KPiA+Cj4gPiA+IFlvdSBhbHNvIG1l bnRpb25lZCBkb3duc3RyZWFtIGRldmljZXMgYnV0IHdpdGhvdXQgYWN0dWFsbHkgZXZlciBkZWZp bmluZwo+ID4gPiB0aGVtLiBQbGVhc2UgYmUgbW9yZSBzcGVjaWZpYy4gV2hhdCBTb0MsIHdoYXQg aGFyZHdhcmU/Cj4gPgo+ID4gQWNjZXB0aW5nIGNoYW5nZXMgYmFzZWQgb24gdGhlIHByb3Zpc28g dGhhdCB2ZW5kb3JzIHVwc3RyZWFtIGFsbCBvZgo+ID4gdGhlaXIgd29yay1pbi1wcm9ncmVzcyBz b2x1dGlvbnMgaXMgYW4gdW5mYWlyIHBvc2l0aW9uLiAgV2UgYWxyZWFkeQo+ID4gZGlzY3Vzc2Vk IHdoeSB1cHN0cmVhbWluZyBzdXBwb3J0IGZvciBibGVlZGluZyBlZGdlIEgvVyBhbmQKPiA+IGZ1 bmN0aW9uYWxpdHkgaXMgdW5yZWFsaXN0aWMgaW4gdGVybXMgb2YgY29tcGV0aXRpdmUgYWR2YW50 YWdlLgo+ID4KPiA+IEJlc2lkZXMsIHdlIG1pZ2h0IG5vdCBiZSB0YWxraW5nIGFib3V0IG5ldyBz aWxpY29uIGF0IGFsbCAoSSBkb24ndAo+ID4gYmVsaWV2ZSBhbnlvbmUgYWxsdWRlZCB0byB0aGF0 KS4gIFRoZSBmbGV4aWJpbGl0eSBpbiBjb25maWd1cmF0aW9uCj4gPiBzaW1wbHkgYWxsb3dzIGZv ciBnZW5lcmljIHVwc3RyZWFtIGRyaXZlcnMgdG8gYmUgc3dhcHBlZCBvdXQgZm9yIG9uZXMKPiA+ IHdoaWNoIG1heSBoYXZlIG1vcmUgb3Igc2xpZ2h0bHkgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkg KHRoYXQgY2FuJ3QgYmUKPiA+IHB1YmxpY2x5IHNoYXJlZCB1bnRpbCByZWxlYXNlKS4KPiAKPiBU aGUgcmVwbGFjZW1lbnQgZHJpdmVycyBhcmUgYWxyZWFkeSBhIGRvd25zdHJlYW0ga2VybmVsIGZv cmssIHdoaWNoIHlvdQo+IHdvdWxkIGxpa2UgdG8gYXZvaWQ/CgpBdm9pZCwgeWVzLCBhYnNvbHV0 ZWx5LgoKSG93ZXZlciwgaW4gdGhlIHJlYWwgd29ybGQgb2YgY29tcGV0aXRpdmUgdGVjaCwgb3Ro ZXIgdGhhbiBpbiBleHRyZW1lCmNhc2VzIHN1Y2ggYXM7IGZ1bGx5IG9wZW4gc291cmNlLCBjb21t dW5pdHkgZHJpdmVuLCBjdXRlIGVtYmVkZGVkCmhvYmJ5IHBsYXRmb3JtcywgdGhlcmUgd2lsbCBh bHdheXMgYmUgY2hhbmdlcyByZXF1aXJlZCBvbi10b3Agb2YKdXBzdHJlYW0gcHJvamVjdHMuICBF dmVuIGFzIHVwc3RyZWFtIGtlcm5lbCBkZXZlbG9wZXJzIHdlIG5lZWQgdG8KdW5kZXJzdGFuZCBh bmQgcmVzcGVjdCB0aGF0LgoKLS0gCkxlZSBKb25lcyBb5p2O55C85pavXQpTZW5pb3IgVGVjaG5p Y2FsIExlYWQgLSBEZXZlbG9wZXIgU2VydmljZXMKTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ug c29mdHdhcmUgZm9yIEFybSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8 IEJsb2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK