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 61D10C43217 for ; Thu, 30 Sep 2021 09:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4D80861980 for ; Thu, 30 Sep 2021 09:24:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349307AbhI3JZm (ORCPT ); Thu, 30 Sep 2021 05:25:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349330AbhI3JZl (ORCPT ); Thu, 30 Sep 2021 05:25:41 -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 7AB29C06176F for ; Thu, 30 Sep 2021 02:23:59 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id l18-20020a05600c4f1200b002f8cf606262so7808377wmq.1 for ; Thu, 30 Sep 2021 02:23:59 -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=znAoADjhs2fJ+wj2vo0owL06Ld5pagfAGMeTjsU1i/w=; b=ZueYPyqOSo4Zvxbh0nbgpQSITavH3zSzMsp3MDq6PIJQrM5iJm6yRv5pGSo+Avgzs2 1eIxfXB+Gtki3wY6WHndItuy9Eed/OU3AwNQwHjCUo8F6TAdTLKk+2Ku3hX1P8wCQlbR /DISaH5DktLBLipTCM/A59ldqEfYeGWyqzvwSUVqk3XWXURANz/AvEzcxibm23SIIJQk DTI5qXV14EHLJOIJtUcHyxU0Y3NSWPKbpS9kp082/VN1qbeoAk1pND98hOWRB+1Yl+3a 8ro6/Etiu59rsnguftvrmPra0gt2/E1O8R9iDvX6h89e1RtLySEAUupm9ydsvAZn9HYq G9Kg== 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=znAoADjhs2fJ+wj2vo0owL06Ld5pagfAGMeTjsU1i/w=; b=SknP8LRQGslkryTL6538FU+RIMi1pvzoow2HklJRzvB1xY00rO8CX6nRHesLmpXIPD KJa3ON5umX/pCIy3tYHGERIO4v7dyhxmckQPUrn5Cxm/cOg55J0jE8lKiQmIte939eG+ PJmoTA3K9tSDnIXn60r+Q3agivWCn6HOEcEVTgCYFNVuuYzpFPiUC++uWG707SWwzpKL BxojUpYlwqIoABVl7jyXB+FPWCz/LS9FvO3sIFYH0NanQjLRYlrAOXa7UMKXeq0jOUEw C5w2LBZ6lJsXgjoGJWmnVRrHuXXNmOKwi4Dl+dLbF4qpbl38JTvztPiUxzsyM56svATN E9nQ== X-Gm-Message-State: AOAM530mdeVwsodgYIpTGdruFDP+7LMQcY6yzh4i9XJU1n15gmc+Yzx5 vTJ1UpQ09J5SHv6KdvDtSlwNi+Uc+JQIQA== X-Google-Smtp-Source: ABdhPJytqKtte5uugEvv86UdYrVN1vxmWLlYRx7mQpjuznaxHHwAmHobXet1Hggjc7uAjkRxUWxrXQ== X-Received: by 2002:a05:600c:1552:: with SMTP id f18mr14293425wmg.184.1632993838010; Thu, 30 Sep 2021 02:23:58 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id b6sm598405wmb.1.2021.09.30.02.23.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 02:23:57 -0700 (PDT) Date: Thu, 30 Sep 2021 10:23:55 +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 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*. 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). 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. 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). > Please explain why Exynos is special that it does not require essential > drivers to be selected as built-in. For example why aren't same changes > done for Renesas? > Everyone else are working like this. NXP, Renesas, Xilinx, TI, Rockchip, > AllWinner. Samsung or Google is not special to receive an exception for > this. 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). I truly hope this has helped to align my thoughts with yours. -- 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 A53D1C433EF for ; Thu, 30 Sep 2021 09:26: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 732816135D for ; Thu, 30 Sep 2021 09:26:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 732816135D 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=65P/EqVID8FyrFSX619Dx833WxLHY0GDILzpWW+J3dw=; b=zprXIc8I3UPA0D cnvbaFNmYwqho/iy1gAtoXicE2JdHYOEZUyXvsSUVhuOwKkT7lvZGKAPSzQ4cPuFzYg3fQSxNZtme LD5mNcwf5qcfKnaR6N75ZL3hF1XJH3d0D3qukLHsgoBP5vBDXkXXr6EFmWlcwRMgkWBHxjNEPbm1b WhifeQt5nct/6ucfXwRTLO1uQb34Gh3/XX0qEjEI7DUyPJ+hj2pLQjfnqwjPfbVPvWLybjztRqwZK xmSkX+/h7iUSepJKlBmM8VsFcsuymsth83HT1h8kwkRe/MKq8qDHqgO4FaJ9aofxDd+Nsc91JiOV8 Q+c2XlXso38msXCOw/Hg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVsIO-00DY8h-Pc; Thu, 30 Sep 2021 09:24:05 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVsIK-00DY7f-TM for linux-arm-kernel@lists.infradead.org; Thu, 30 Sep 2021 09:24:02 +0000 Received: by mail-wm1-x334.google.com with SMTP id i6-20020a1c3b06000000b0030d05169e9bso5612241wma.4 for ; Thu, 30 Sep 2021 02:23:59 -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=znAoADjhs2fJ+wj2vo0owL06Ld5pagfAGMeTjsU1i/w=; b=ZueYPyqOSo4Zvxbh0nbgpQSITavH3zSzMsp3MDq6PIJQrM5iJm6yRv5pGSo+Avgzs2 1eIxfXB+Gtki3wY6WHndItuy9Eed/OU3AwNQwHjCUo8F6TAdTLKk+2Ku3hX1P8wCQlbR /DISaH5DktLBLipTCM/A59ldqEfYeGWyqzvwSUVqk3XWXURANz/AvEzcxibm23SIIJQk DTI5qXV14EHLJOIJtUcHyxU0Y3NSWPKbpS9kp082/VN1qbeoAk1pND98hOWRB+1Yl+3a 8ro6/Etiu59rsnguftvrmPra0gt2/E1O8R9iDvX6h89e1RtLySEAUupm9ydsvAZn9HYq G9Kg== 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=znAoADjhs2fJ+wj2vo0owL06Ld5pagfAGMeTjsU1i/w=; b=m8HaOFXtKjC3xrFfyQDmntIbd2Zp4g120MxHEYCrysSX9eChcpU9dc5YkCxwuyr1JU aGVp9qIpJxiEc4VsfrjnWv8m9w1wUtEaqJzECvNUC1/kJgykisZR7uAzm1DCgx3zMavk KxQOIVpTGX5hGpUCzX53iap2qoPFpXWkJ+L22CXo0rJn4efJyA+Exmd7c3rxMYJhG5yK cMBz7tIzqjvQ7LU0FoW8G+V9lhipWGW7AelJX37+JbrQ0xXphTxt/2Uv8WNzaOQWEIIA UwJWu1/K9MnJUiAlJPGK4dwzdEJyv4jnoM0n9Gqps4JvqeynYFYT09GI9+IfD2UDq3m3 oxhg== X-Gm-Message-State: AOAM533UiPgUujJqW9OxWSrnQz4UedzCeGscohGsCtZKsWS9KhfJsLiL hfo6x0ZcDkXIvn/GpNCmQ2UDmA== X-Google-Smtp-Source: ABdhPJytqKtte5uugEvv86UdYrVN1vxmWLlYRx7mQpjuznaxHHwAmHobXet1Hggjc7uAjkRxUWxrXQ== X-Received: by 2002:a05:600c:1552:: with SMTP id f18mr14293425wmg.184.1632993838010; Thu, 30 Sep 2021 02:23:58 -0700 (PDT) Received: from google.com ([95.148.6.233]) by smtp.gmail.com with ESMTPSA id b6sm598405wmb.1.2021.09.30.02.23.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 02:23:57 -0700 (PDT) Date: Thu, 30 Sep 2021 10:23:55 +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_022400_983453_9D883C68 X-CRM114-Status: GOOD ( 28.39 ) 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 SSd2ZSB0YWtlbiB0aGUgbGliZXJ0eSBvZiBjaGVycnktcGlja2luZyBzb21lIG9mIHRoZSBwb2lu dHMgeW91IGhhdmUKcmVpdGVyYXR0ZWQgYSBmZXcgdGltZXMuICBIb3BlZnVsbHkgSSBjYW4gaGVs cCB0byBhZGRyZXNzIHRoZW0KYWRlcXVlbnRseS4KCk9uIFRodSwgMzAgU2VwIDIwMjEsIEtyenlz enRvZiBLb3psb3dza2kgd3JvdGU6Cj4gUmVtaW5kZXI6IHRoZXNlIGFyZSBlc3NlbnRpYWwgZHJp dmVycyBhbmQgYWxsIEV4eW5vcyBwbGF0Zm9ybXMgbXVzdCBoYXZlCj4gdGhlbSBhcyBidWlsdC1p biAoYXQgbGVhc3QgdGlsbCBzb21lb25lIHJlYWxseSB0ZXN0cyB0aGlzIG9uIG11bHRpcGxlCj4g c2V0dXBzKS4KCj4gVGhlcmVmb3JlIEkgZG9uJ3QgYWdyZWUgd2l0aCBjYWxsaW5nIGl0IGEgInBy b2JsZW0iIHRoYXQgd2Ugc2VsZWN0Cj4gKm5lY2Vzc2FyeSogZHJpdmVycyBmb3Igc3VwcG9ydGVk IHBsYXRmb3Jtcy4gSXQncyBieSBkZXNpZ24gLSBzdXBwb3J0ZWQKPiBwbGF0Zm9ybXMgc2hvdWxk IHJlY2VpdmUgdGhlbSB3aXRob3V0IGFiaWxpdHkgdG8gcmVtb3ZlLgoKPiBUaGUgc2VsZWN0ZWQg ZHJpdmVycyBhcmUgZXNzZW50aWFsIGZvciBzdXBwb3J0ZWQgcGxhdGZvcm1zLgoKU29DIHNwZWNp ZmljIGRyaXZlcnMgYXJlIG9ubHkgZXNzZW50aWFsL25lY2Vzc2FyeS9yZXF1aXJlZCBpbgppbWFn ZXMgZGVzaWduZWQgdG8gZXhlY3V0ZSBzb2xlbHkgb24gYSBwbGF0Zm9ybSB0aGF0IHJlcXVpcmVz IHRoZW0uCkZvciBhIGtlcm5lbCBpbWFnZSB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBnZW5lcmlj IGkuZS4gb25lIHRoYXQgaGFzCnRoZSBhYmlsaXR5IHRvIGJvb3Qgb24gdmFzdCBhcnJheSBvZiBw bGF0Zm9ybXMsIHRoZSBkcml2ZXJzIHNpbXBseQpoYXZlIHRvIGJlICphdmFpbGFibGUqLgoKRm9y Y2luZyBhbGwgSC9XIGRyaXZlcnMgdGhhdCBhcmUgb25seSAqcG90ZW50aWFsbHkqIHV0aWxpc2Vk IG9uICpzb21lKgpwbGF0Zm9ybXMgYXMgY29yZSBiaW5hcnkgYnVpbHQtaW5zIGRvZXNuJ3QgbWFr ZSBhbnkgdGVjaG5pY2FsIHNlbnNlLgpUaGUgdHdvIG1vc3QgaW1wb3J0YW50IGlzc3VlcyB0aGlz IGNhdXNlcyBhcmUgaW1hZ2Ugc2l6ZSBhbmQgYSBsYWNrIG9mCmNvbmZpZ3VyYWJpbGl0eS9mbGV4 aWJpbGl0eSByZWxhdGluZyB0byByZWFsLXdvcmxkIGFwcGxpY2F0aW9uIGkuZS4KdGhlIG9uZSBp c3N1ZSB3ZSBhbHJlYWR5IGFncmVlZCB1cG9uOyBIL1cgb3IgZmVhdHVyZXMgdGhhdCBhcmUgdG9v Cm5ldyAocHJlLXJlbGVhc2UpLgoKQmxvYXRpbmcgYSBnZW5lcmljIGtlcm5lbCB3aXRoIHBvdGVu dGlhbGx5IGh1bmRyZWRzIG9mIHVubmVjZXNzYXJ5CmRyaXZlcnMgdGhhdCB3aWxsIG5ldmVyIGJl IGV4ZWN1dGVkIGluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGluc3RhbmNlcwpkb2Vzbid0IGFjaGll dmUgYW55dGhpbmcuICBJZiB3ZSBoYXZlIGEga2VybmVsIGltYWdlIHRoYXQgaGFzIHRoZQphYmls aXR5IHRvIGJvb3Qgb24gMTAncyBvZiBhcmNoaXRlY3R1cmVzIHdoaWNoIGhhdmUgMTAncyBvZiBw bGF0Zm9ybXMKZWFjaCwgdGhhdCdzIGEgd2hvbGUgaG9zdCBvZiB1bnVzZWQvd2FzdGVkIGV4ZWN1 dGFibGUgc3BhY2UuCgpJbiBvcmRlciBmb3IgdmVuZG9ycyB0byB3b3JrIG1vcmUgY2xvc2VseSB3 aXRoIHVwc3RyZWFtLCB0aGV5IG5lZWQgdGhlCmFiaWxpdHkgdG8gb3Zlci1yaWRlIGEgKmZldyog ZHJpdmVycyB0byBzdXBwbGVtZW50IHRoZW0gd2l0aCBzb21lCmZ1bmN0aW9uYWxpdHkgd2hpY2gg dGhleSBiZWxpZXZlIHByb3ZpZGVzIHRoZW0gd2l0aCBhIGNvbXBldGl0aXZlIGVkZ2UKKEkgdGhp bmsgeW91IGNhbGxlZCB0aGlzICJ2YWx1ZS1hZGQiIGJlZm9yZSkgcHJpb3IgdG8gdGhlIHJlbGVh c2Ugb2YgYQpkZXZpY2UuICBUaGlzIGlzIGEgcmVxdWlyZW1lbnQgdGhhdCBjYW5ub3QgYmUgd29y a2VkIGFyb3VuZC4KCkJ5IGluc2lzdGluZyBvbiBkcml2ZXJzIChtb3N0IG9mIHdoaWNoIHdpbGwg bm90IGJlIGV4ZWN1dGVkIGluIHRoZQp2YXN0IG1ham9yaXR5IG9mIGNhc2VzKSB0byBiZSBidWls dC1pbiwgeW91IGFyZSBpbnNpc3Rpbmcgb24gYQpkb3duc3RyZWFtIGtlcm5lbCBmb3JrLCB3aGlj aCBhbGwgb2YgdXMgd291bGQgbGlrZSB0byBhdm9pZCBbMF0uCgpbMF0gRnVsbCBkaXNjbG9zdXJl OiBwYXJ0IG9mIG15IHJvbGUgYXQgTGluYXJvIGlzIHRvIGtlZXAgdGhlIEFuZHJvaWQKa2VybmVs IHJ1bm5pbmcgYXMgY2xvc2UgdG8gTWFpbmxpbmUgYXMgcG9zc2libGUgYW5kIGVuY291cmFnZS9w dXNoIHRoZQp1cHN0cmVhbS1maXJzdCBtYW50cmEsIGhlbmNlIG15IGludm9sdmVtZW50IHdpdGgg dGhpcyBhbmQgb3RoZXIgc2V0cy4KSSBhc3N1cmUgeW91IGFsbCBpbnRlbnRpb25zIGFyZSBnb29k IGFuZCBob25vdXJhYmxlLiAgSWYgeW91IGhhdmVuJ3QKYWxyZWFkeSBzZWVuIGl0LCBwbGVhc2Ug c2VlIFRvZGQncyBtb3N0IHJlY2VudCB1cGRhdGUgb24gdGhlIGdvYWxzIGFuZApzdGF0dXMgb2Yg R0tJOgoKICBBcnRpY2xlOiBodHRwczovL3Rpbnl1cmwuY29tL3NhYWVuM3NwCiAgVmlkZW86ICAg aHR0cHM6Ly95b3V0dS5iZS9PX2xDRkdpbkZQTQoKPiBXZSBkb24ndCBldmVuIGtub3cgd2hhdCBh cmUgdGhlc2UgdW5zdXBwb3J0ZWQsIGRvd25zdHJlYW0gcGxhdGZvcm1zCj4geW91IHdhbnQgY3Vz dG9taXplIGtlcm5lbCBmb3IuIFRoZXkgY2Fubm90IGJlIGF1ZGl0ZWQsIGNhbm5vdCBiZQo+IGNv bXBhcmVkLiAgQWZmZWN0aW5nIHVwc3RyZWFtIHBsYXRmb3JtcyBqdXN0IGJlY2F1c2UKPiB2ZW5k b3IvZG93bnN0cmVhbSBkb2VzIG5vdCB3YW50IHRvIG1haW5saW5lIHNvbWUgY29kZSBpcwo+IHVu YWNjZXB0YWJsZS4gUGxlYXNlIHVwc3RyZWFtIHlvdXIgZHJpdmVycyBhbmQgRFRTLgoKPiBZb3Ug YWxzbyBtZW50aW9uZWQgZG93bnN0cmVhbSBkZXZpY2VzIGJ1dCB3aXRob3V0IGFjdHVhbGx5IGV2 ZXIgZGVmaW5pbmcKPiB0aGVtLiBQbGVhc2UgYmUgbW9yZSBzcGVjaWZpYy4gV2hhdCBTb0MsIHdo YXQgaGFyZHdhcmU/CgpBY2NlcHRpbmcgY2hhbmdlcyBiYXNlZCBvbiB0aGUgcHJvdmlzbyB0aGF0 IHZlbmRvcnMgdXBzdHJlYW0gYWxsIG9mCnRoZWlyIHdvcmstaW4tcHJvZ3Jlc3Mgc29sdXRpb25z IGlzIGFuIHVuZmFpciBwb3NpdGlvbi4gIFdlIGFscmVhZHkKZGlzY3Vzc2VkIHdoeSB1cHN0cmVh bWluZyBzdXBwb3J0IGZvciBibGVlZGluZyBlZGdlIEgvVyBhbmQKZnVuY3Rpb25hbGl0eSBpcyB1 bnJlYWxpc3RpYyBpbiB0ZXJtcyBvZiBjb21wZXRpdGl2ZSBhZHZhbnRhZ2UuCgpCZXNpZGVzLCB3 ZSBtaWdodCBub3QgYmUgdGFsa2luZyBhYm91dCBuZXcgc2lsaWNvbiBhdCBhbGwgKEkgZG9uJ3QK YmVsaWV2ZSBhbnlvbmUgYWxsdWRlZCB0byB0aGF0KS4gIFRoZSBmbGV4aWJpbGl0eSBpbiBjb25m aWd1cmF0aW9uCnNpbXBseSBhbGxvd3MgZm9yIGdlbmVyaWMgdXBzdHJlYW0gZHJpdmVycyB0byBi ZSBzd2FwcGVkIG91dCBmb3Igb25lcwp3aGljaCBtYXkgaGF2ZSBtb3JlIG9yIHNsaWdodGx5IGRp ZmZlcmVudCBmdW5jdGlvbmFsaXR5ICh0aGF0IGNhbid0IGJlCnB1YmxpY2x5IHNoYXJlZCB1bnRp bCByZWxlYXNlKS4KCj4gUGxlYXNlIGV4cGxhaW4gd2h5IEV4eW5vcyBpcyBzcGVjaWFsIHRoYXQg aXQgZG9lcyBub3QgcmVxdWlyZSBlc3NlbnRpYWwKPiBkcml2ZXJzIHRvIGJlIHNlbGVjdGVkIGFz IGJ1aWx0LWluLiBGb3IgZXhhbXBsZSB3aHkgYXJlbid0IHNhbWUgY2hhbmdlcwo+IGRvbmUgZm9y IFJlbmVzYXM/Cgo+IEV2ZXJ5b25lIGVsc2UgYXJlIHdvcmtpbmcgbGlrZSB0aGlzLiBOWFAsIFJl bmVzYXMsIFhpbGlueCwgVEksIFJvY2tjaGlwLAo+IEFsbFdpbm5lci4gU2Ftc3VuZyBvciBHb29n bGUgaXMgbm90IHNwZWNpYWwgdG8gcmVjZWl2ZSBhbiBleGNlcHRpb24gZm9yCj4gdGhpcy4KCkV4 eW5vcyBpc24ndCBzcGVjaWFsIGluIHRoaXMgcmVnYXJkLiAgVGhpcyBhcHBsaWVzIHRvIGFueSB2 ZW5kb3Igd2hvCnJlbGVhc2VzIEFuZHJvaWQgaW1hZ2VzIGFuZCB3aXNoZXMgdG8gYmUgc29sdmUg YWxsIG9mIHRoZSBpc3N1ZXMgdGhlCkdLSSBwcm9qZWN0IGFkZHJlc3NlcyAocGxlYXNlIHJlYWQg dGhlIGFydGljbGUgYWJvdmUgZm9yIG1vcmUgYWJvdXQKdGhpcykuCgpJIHRydWx5IGhvcGUgdGhp cyBoYXMgaGVscGVkIHRvIGFsaWduIG15IHRob3VnaHRzIHdpdGggeW91cnMuCgotLSAKTGVlIEpv bmVzIFvmnY7nkLzmlq9dClNlbmlvciBUZWNobmljYWwgTGVhZCAtIERldmVsb3BlciBTZXJ2aWNl cwpMaW5hcm8ub3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBmb3IgQXJtIFNvQ3MKRm9sbG93 IExpbmFybzogRmFjZWJvb2sgfCBUd2l0dGVyIHwgQmxvZwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=