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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C055FC35280 for ; Mon, 14 Mar 2022 12:33:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242012AbiCNMdr (ORCPT ); Mon, 14 Mar 2022 08:33:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241252AbiCNMV4 (ORCPT ); Mon, 14 Mar 2022 08:21:56 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 922FF1CFF0; Mon, 14 Mar 2022 05:20:43 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E3D9713D5; Mon, 14 Mar 2022 05:20:42 -0700 (PDT) Received: from [10.57.42.204] (unknown [10.57.42.204]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8207E3F99C; Mon, 14 Mar 2022 05:20:41 -0700 (PDT) Message-ID: Date: Mon, 14 Mar 2022 12:20:36 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: [PATCH v2 3/3] ARM: dts: lpc32xx: Update spi clock properties Content-Language: en-GB To: Vladimir Zapolskiy , Arnd Bergmann Cc: Kuldeep Singh , Olof Johansson , SoC Team , Rob Herring , DTML , Linux ARM , Linux Kernel Mailing List References: <20220311093800.18778-1-singh.kuldeep87k@gmail.com> <20220311093800.18778-4-singh.kuldeep87k@gmail.com> <4aae560d-d266-d0d0-136f-32891b15bc01@mleia.com> <4f39f086-1932-1729-8761-d5c533356812@mleia.com> From: Robin Murphy In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022-03-14 11:50, Vladimir Zapolskiy wrote: > On 3/14/22 1:43 PM, Robin Murphy wrote: >> On 2022-03-11 14:07, Vladimir Zapolskiy wrote: >>> On 3/11/22 3:38 PM, Arnd Bergmann wrote: >>>> On Fri, Mar 11, 2022 at 2:20 PM Vladimir Zapolskiy >>>> wrote: >>>>> >>>>> On 3/11/22 11:38 AM, Kuldeep Singh wrote: >>>>>> PL022 binding require two clocks to be defined but lpc platform >>>>>> doesn't >>>>>> comply with bindings and define only one clock i.e apb_pclk. >>>>>> >>>>>> Update spi clocks and clocks-names property by adding appropriate >>>>>> clock >>>>>> reference to make it compliant with bindings. >>>>>> >>>>>> CC: Vladimir Zapolskiy >>>>>> Signed-off-by: Kuldeep Singh >>>>>> --- >>>>>> v2: >>>>>> - New patch with similar changeset >>>>>> - Send to soc ML >>>>>> >>>>>>     arch/arm/boot/dts/lpc32xx.dtsi | 8 ++++---- >>>>>>     1 file changed, 4 insertions(+), 4 deletions(-) >>>>>> >>>>>> diff --git a/arch/arm/boot/dts/lpc32xx.dtsi >>>>>> b/arch/arm/boot/dts/lpc32xx.dtsi >>>>>> index c87066d6c995..30958e02d5e2 100644 >>>>>> --- a/arch/arm/boot/dts/lpc32xx.dtsi >>>>>> +++ b/arch/arm/boot/dts/lpc32xx.dtsi >>>>>> @@ -178,8 +178,8 @@ ssp0: spi@20084000 { >>>>>>                                 compatible = "arm,pl022", >>>>>> "arm,primecell"; >>>>>>                                 reg = <0x20084000 0x1000>; >>>>>>                                 interrupts = <20 >>>>>> IRQ_TYPE_LEVEL_HIGH>; >>>>>> -                             clocks = <&clk LPC32XX_CLK_SSP0>; >>>>>> -                             clock-names = "apb_pclk"; >>>>>> +                             clocks = <&clk LPC32XX_CLK_SSP0>, >>>>>> <&clk LPC32XX_CLK_SSP0>; >>>>>> +                             clock-names = "sspclk", "apb_pclk"; >>>>> >>>>> In fact I'm uncertain if it is the right change, could it happen that >>>>> the commit >>>>> cc0f6e96c4fd ("spi: dt-bindings: Convert Arm pl022 to json-schema") >>>>> sets a wrong >>>>> schema pattern? >>>> >>>> Good pointm this doesn't quite seem right: it is unlikely that the >>>> same clock >>>> is used for both the SPI bus and the APB bus. >>>> >>>>> Apparently just one clock is wanted on all observed platforms and >>>>> cases, this >>>>> is implicitly confirmed by clock handling in the >>>>> drivers/spi/spi-pl022.c : >>>>> >>>>>           pl022->clk = devm_clk_get(&adev->dev, NULL); >>>>> >>>>> So, I would vote to fix the device tree bindings schema. >>>> >>>> Isn't this just using the wrong name? The name of the macro >>>> LPC32XX_CLK_SSP0 might indicate that this is indeed the SPI clock >>>> rather than the APB clock, so we only need to change clock-names >>>> property here and leave it unchanged otherwise. >>> >>> Yes, the name is wrong, here I'm ready to take the blame: >>> >>> Fixes: 93898eb775e5 ("arm: dts: lpc32xx: add clock properties to device >>> nodes") >>> >>> Noteworthy the commit above presets the same clock name to other >>> PrimeCell >>> controllers, namely pl110 (LCD), pl080 (DMA), pl175 (EMC) and pl18x >>> (SD), >>> plus this one pl022 (SSP), and all but SSP and SD are AHB slaves in >>> fact. >>> >>> On LPC32xx the bus clock source and function clock source for SSP is >>> HCLK. >>> >>> My guess is that the misnamed "apb_pclk" migrated into the schema from >>> the lpc32xx.dtsi, so I'd suggest, unless some platform really needs it, >>> firstly fix the schema by removing "apb_pclk" clock. It will leave >>> just one >>> clock, so "clock-names" property can be set as optional, and the drop >>> the property from the lpc32xx.dtsi. >> >> No, "apb_pclk" is part of the common AMBA binding, and is required by >> the "arm,primecell" compatible. You won't (usually) find it referenced >> in drivers because it's dealt with by amba_get_enable_pclk() via >> amba_probe(). >> > > Thank you, it explains, why "apb_pclk" is required for all PrimeCell > controllers on the SoC. Nevertheless, in commit 93898eb775e5 it was > misidentified with the sspclk clock, the latter one is the only clock > explicitly utilized by the driver in 2015 and till today. Fixes in dts > files should be preceded by a fix in the driver. There's nothing to fix in the driver, though. In fact it can only be working today because the Linux driver isn't very strict and simply assumes that the first clock entry is SSPCLK *without* considering its name (other consumers of the binding might be stricter; I don't know), and because presumably the HCLK happens to be enabled already anyway. Changing the driver behaviour would only stand to cause functional regressions. There are effectively two bugs in the DTS here, firstly that it only has one clock entry when it should have two, and secondly that the clock entry which *is* present has the wrong name (or the wrong clock specifier, depending on how you look at it). Kuldeep's patch merely fixes the first one by fully describing the way it's currently working in practice, so it's really just a choice of whether to treat "respect the binding" and "describe the hardware correctly" as separate issues and have a follow-up patch to correctly reference HCLK as the second clock, or whether they're trivial enough to squash together. Robin. 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 25CD3C433F5 for ; Mon, 14 Mar 2022 12:21:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=i+wE99pNDQh/aGmvHUCryzOAbhGIVmvcf7PSHxS+Bqs=; b=wnLWsiPDkZtWs+ rRvUcW4LbDej0ncynXIx+InSYkV3HTJ+w9eMFBxZy1nuN1Q1QkynA7VnzzNhDhJufZK7/PwH2vXnZ tbNulXUw7P6jzcRGeyWGaBCSths8yvtG6pKWMsvii78JuKh/sp7yBPqd8UVb4tT5wYLjLc5n8Gbuk 30vc+e8NTAuJOz9+RicIts0IDXeAWtKzy6+OTU7EgDPE/DPkZaMgUZ8I/WOzVOXQkzb4yoEiOk51+ nuPJgl8ErE8ixEOlljFpH61eMe4ZVHmDco5q82Si93iuxRm/Z80DRLE2G3OYvKFzDnsOmycSc83e/ vj7yKLd8305FFb2Etu6w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nTjgv-005NYh-I0; Mon, 14 Mar 2022 12:20:49 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nTjgr-005NVw-Dm for linux-arm-kernel@lists.infradead.org; Mon, 14 Mar 2022 12:20:47 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E3D9713D5; Mon, 14 Mar 2022 05:20:42 -0700 (PDT) Received: from [10.57.42.204] (unknown [10.57.42.204]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8207E3F99C; Mon, 14 Mar 2022 05:20:41 -0700 (PDT) Message-ID: Date: Mon, 14 Mar 2022 12:20:36 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 Subject: Re: [PATCH v2 3/3] ARM: dts: lpc32xx: Update spi clock properties Content-Language: en-GB To: Vladimir Zapolskiy , Arnd Bergmann Cc: Kuldeep Singh , Olof Johansson , SoC Team , Rob Herring , DTML , Linux ARM , Linux Kernel Mailing List References: <20220311093800.18778-1-singh.kuldeep87k@gmail.com> <20220311093800.18778-4-singh.kuldeep87k@gmail.com> <4aae560d-d266-d0d0-136f-32891b15bc01@mleia.com> <4f39f086-1932-1729-8761-d5c533356812@mleia.com> From: Robin Murphy In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220314_052045_585274_914455C5 X-CRM114-Status: GOOD ( 28.05 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMi0wMy0xNCAxMTo1MCwgVmxhZGltaXIgWmFwb2xza2l5IHdyb3RlOgo+IE9uIDMvMTQv MjIgMTo0MyBQTSwgUm9iaW4gTXVycGh5IHdyb3RlOgo+PiBPbiAyMDIyLTAzLTExIDE0OjA3LCBW bGFkaW1pciBaYXBvbHNraXkgd3JvdGU6Cj4+PiBPbiAzLzExLzIyIDM6MzggUE0sIEFybmQgQmVy Z21hbm4gd3JvdGU6Cj4+Pj4gT24gRnJpLCBNYXIgMTEsIDIwMjIgYXQgMjoyMCBQTSBWbGFkaW1p ciBaYXBvbHNraXkgPHZ6QG1sZWlhLmNvbT4gCj4+Pj4gd3JvdGU6Cj4+Pj4+Cj4+Pj4+IE9uIDMv MTEvMjIgMTE6MzggQU0sIEt1bGRlZXAgU2luZ2ggd3JvdGU6Cj4+Pj4+PiBQTDAyMiBiaW5kaW5n IHJlcXVpcmUgdHdvIGNsb2NrcyB0byBiZSBkZWZpbmVkIGJ1dCBscGMgcGxhdGZvcm0gCj4+Pj4+ PiBkb2Vzbid0Cj4+Pj4+PiBjb21wbHkgd2l0aCBiaW5kaW5ncyBhbmQgZGVmaW5lIG9ubHkgb25l IGNsb2NrIGkuZSBhcGJfcGNsay4KPj4+Pj4+Cj4+Pj4+PiBVcGRhdGUgc3BpIGNsb2NrcyBhbmQg Y2xvY2tzLW5hbWVzIHByb3BlcnR5IGJ5IGFkZGluZyBhcHByb3ByaWF0ZSAKPj4+Pj4+IGNsb2Nr Cj4+Pj4+PiByZWZlcmVuY2UgdG8gbWFrZSBpdCBjb21wbGlhbnQgd2l0aCBiaW5kaW5ncy4KPj4+ Pj4+Cj4+Pj4+PiBDQzogVmxhZGltaXIgWmFwb2xza2l5IDx2ekBtbGVpYS5jb20+Cj4+Pj4+PiBT aWduZWQtb2ZmLWJ5OiBLdWxkZWVwIFNpbmdoIDxzaW5naC5rdWxkZWVwODdrQGdtYWlsLmNvbT4K Pj4+Pj4+IC0tLQo+Pj4+Pj4gdjI6Cj4+Pj4+PiAtIE5ldyBwYXRjaCB3aXRoIHNpbWlsYXIgY2hh bmdlc2V0Cj4+Pj4+PiAtIFNlbmQgdG8gc29jIE1MCj4+Pj4+Pgo+Pj4+Pj4gwqDCoMKgIGFyY2gv YXJtL2Jvb3QvZHRzL2xwYzMyeHguZHRzaSB8IDggKysrKy0tLS0KPj4+Pj4+IMKgwqDCoCAxIGZp bGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+Pj4+Pj4KPj4+Pj4+ IGRpZmYgLS1naXQgYS9hcmNoL2FybS9ib290L2R0cy9scGMzMnh4LmR0c2kKPj4+Pj4+IGIvYXJj aC9hcm0vYm9vdC9kdHMvbHBjMzJ4eC5kdHNpCj4+Pj4+PiBpbmRleCBjODcwNjZkNmM5OTUuLjMw OTU4ZTAyZDVlMiAxMDA2NDQKPj4+Pj4+IC0tLSBhL2FyY2gvYXJtL2Jvb3QvZHRzL2xwYzMyeHgu ZHRzaQo+Pj4+Pj4gKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvbHBjMzJ4eC5kdHNpCj4+Pj4+PiBA QCAtMTc4LDggKzE3OCw4IEBAIHNzcDA6IHNwaUAyMDA4NDAwMCB7Cj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21w YXRpYmxlID0gImFybSxwbDAyMiIsCj4+Pj4+PiAiYXJtLHByaW1lY2VsbCI7Cj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZWcgPSA8MHgyMDA4NDAwMCAweDEwMDA+Owo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZXJydXB0cyA9IDwy MCAKPj4+Pj4+IElSUV9UWVBFX0xFVkVMX0hJR0g+Owo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsb2NrcyA9IDwmY2xrIExQ QzMyWFhfQ0xLX1NTUDA+Owo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsb2NrLW5hbWVzID0gImFwYl9wY2xrIjsKPj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBjbG9ja3MgPSA8JmNsayBMUEMzMlhYX0NMS19TU1AwPiwKPj4+Pj4+IDwmY2xrIExQQzMyWFhf Q0xLX1NTUDA+Owo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGNsb2NrLW5hbWVzID0gInNzcGNsayIsICJhcGJfcGNsayI7Cj4+ Pj4+Cj4+Pj4+IEluIGZhY3QgSSdtIHVuY2VydGFpbiBpZiBpdCBpcyB0aGUgcmlnaHQgY2hhbmdl LCBjb3VsZCBpdCBoYXBwZW4gdGhhdAo+Pj4+PiB0aGUgY29tbWl0Cj4+Pj4+IGNjMGY2ZTk2YzRm ZCAoInNwaTogZHQtYmluZGluZ3M6IENvbnZlcnQgQXJtIHBsMDIyIHRvIGpzb24tc2NoZW1hIikK Pj4+Pj4gc2V0cyBhIHdyb25nCj4+Pj4+IHNjaGVtYSBwYXR0ZXJuPwo+Pj4+Cj4+Pj4gR29vZCBw b2ludG0gdGhpcyBkb2Vzbid0IHF1aXRlIHNlZW0gcmlnaHQ6IGl0IGlzIHVubGlrZWx5IHRoYXQg dGhlCj4+Pj4gc2FtZSBjbG9jawo+Pj4+IGlzIHVzZWQgZm9yIGJvdGggdGhlIFNQSSBidXMgYW5k IHRoZSBBUEIgYnVzLgo+Pj4+Cj4+Pj4+IEFwcGFyZW50bHkganVzdCBvbmUgY2xvY2sgaXMgd2Fu dGVkIG9uIGFsbCBvYnNlcnZlZCBwbGF0Zm9ybXMgYW5kCj4+Pj4+IGNhc2VzLCB0aGlzCj4+Pj4+ IGlzIGltcGxpY2l0bHkgY29uZmlybWVkIGJ5IGNsb2NrIGhhbmRsaW5nIGluIHRoZQo+Pj4+PiBk cml2ZXJzL3NwaS9zcGktcGwwMjIuYyA6Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBw bDAyMi0+Y2xrID0gZGV2bV9jbGtfZ2V0KCZhZGV2LT5kZXYsIE5VTEwpOwo+Pj4+Pgo+Pj4+PiBT bywgSSB3b3VsZCB2b3RlIHRvIGZpeCB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3Mgc2NoZW1hLgo+ Pj4+Cj4+Pj4gSXNuJ3QgdGhpcyBqdXN0IHVzaW5nIHRoZSB3cm9uZyBuYW1lPyBUaGUgbmFtZSBv ZiB0aGUgbWFjcm8KPj4+PiBMUEMzMlhYX0NMS19TU1AwIG1pZ2h0IGluZGljYXRlIHRoYXQgdGhp cyBpcyBpbmRlZWQgdGhlIFNQSSBjbG9jawo+Pj4+IHJhdGhlciB0aGFuIHRoZSBBUEIgY2xvY2ss IHNvIHdlIG9ubHkgbmVlZCB0byBjaGFuZ2UgY2xvY2stbmFtZXMKPj4+PiBwcm9wZXJ0eSBoZXJl IGFuZCBsZWF2ZSBpdCB1bmNoYW5nZWQgb3RoZXJ3aXNlLgo+Pj4KPj4+IFllcywgdGhlIG5hbWUg aXMgd3JvbmcsIGhlcmUgSSdtIHJlYWR5IHRvIHRha2UgdGhlIGJsYW1lOgo+Pj4KPj4+IEZpeGVz OiA5Mzg5OGViNzc1ZTUgKCJhcm06IGR0czogbHBjMzJ4eDogYWRkIGNsb2NrIHByb3BlcnRpZXMg dG8gZGV2aWNlCj4+PiBub2RlcyIpCj4+Pgo+Pj4gTm90ZXdvcnRoeSB0aGUgY29tbWl0IGFib3Zl IHByZXNldHMgdGhlIHNhbWUgY2xvY2sgbmFtZSB0byBvdGhlciAKPj4+IFByaW1lQ2VsbAo+Pj4g Y29udHJvbGxlcnMsIG5hbWVseSBwbDExMCAoTENEKSwgcGwwODAgKERNQSksIHBsMTc1IChFTUMp IGFuZCBwbDE4eCAKPj4+IChTRCksCj4+PiBwbHVzIHRoaXMgb25lIHBsMDIyIChTU1ApLCBhbmQg YWxsIGJ1dCBTU1AgYW5kIFNEIGFyZSBBSEIgc2xhdmVzIGluIAo+Pj4gZmFjdC4KPj4+Cj4+PiBP biBMUEMzMnh4IHRoZSBidXMgY2xvY2sgc291cmNlIGFuZCBmdW5jdGlvbiBjbG9jayBzb3VyY2Ug Zm9yIFNTUCBpcyAKPj4+IEhDTEsuCj4+Pgo+Pj4gTXkgZ3Vlc3MgaXMgdGhhdCB0aGUgbWlzbmFt ZWQgImFwYl9wY2xrIiBtaWdyYXRlZCBpbnRvIHRoZSBzY2hlbWEgZnJvbQo+Pj4gdGhlIGxwYzMy eHguZHRzaSwgc28gSSdkIHN1Z2dlc3QsIHVubGVzcyBzb21lIHBsYXRmb3JtIHJlYWxseSBuZWVk cyBpdCwKPj4+IGZpcnN0bHkgZml4IHRoZSBzY2hlbWEgYnkgcmVtb3ZpbmcgImFwYl9wY2xrIiBj bG9jay4gSXQgd2lsbCBsZWF2ZSAKPj4+IGp1c3Qgb25lCj4+PiBjbG9jaywgc28gImNsb2NrLW5h bWVzIiBwcm9wZXJ0eSBjYW4gYmUgc2V0IGFzIG9wdGlvbmFsLCBhbmQgdGhlIGRyb3AKPj4+IHRo ZSBwcm9wZXJ0eSBmcm9tIHRoZSBscGMzMnh4LmR0c2kuCj4+Cj4+IE5vLCAiYXBiX3BjbGsiIGlz IHBhcnQgb2YgdGhlIGNvbW1vbiBBTUJBIGJpbmRpbmcsIGFuZCBpcyByZXF1aXJlZCBieQo+PiB0 aGUgImFybSxwcmltZWNlbGwiIGNvbXBhdGlibGUuIFlvdSB3b24ndCAodXN1YWxseSkgZmluZCBp dCByZWZlcmVuY2VkCj4+IGluIGRyaXZlcnMgYmVjYXVzZSBpdCdzIGRlYWx0IHdpdGggYnkgYW1i YV9nZXRfZW5hYmxlX3BjbGsoKSB2aWEKPj4gYW1iYV9wcm9iZSgpLgo+Pgo+IAo+IFRoYW5rIHlv dSwgaXQgZXhwbGFpbnMsIHdoeSAiYXBiX3BjbGsiIGlzIHJlcXVpcmVkIGZvciBhbGwgUHJpbWVD ZWxsCj4gY29udHJvbGxlcnMgb24gdGhlIFNvQy4gTmV2ZXJ0aGVsZXNzLCBpbiBjb21taXQgOTM4 OThlYjc3NWU1IGl0IHdhcwo+IG1pc2lkZW50aWZpZWQgd2l0aCB0aGUgc3NwY2xrIGNsb2NrLCB0 aGUgbGF0dGVyIG9uZSBpcyB0aGUgb25seSBjbG9jawo+IGV4cGxpY2l0bHkgdXRpbGl6ZWQgYnkg dGhlIGRyaXZlciBpbiAyMDE1IGFuZCB0aWxsIHRvZGF5LiBGaXhlcyBpbiBkdHMKPiBmaWxlcyBz aG91bGQgYmUgcHJlY2VkZWQgYnkgYSBmaXggaW4gdGhlIGRyaXZlci4KClRoZXJlJ3Mgbm90aGlu ZyB0byBmaXggaW4gdGhlIGRyaXZlciwgdGhvdWdoLiBJbiBmYWN0IGl0IGNhbiBvbmx5IGJlIAp3 b3JraW5nIHRvZGF5IGJlY2F1c2UgdGhlIExpbnV4IGRyaXZlciBpc24ndCB2ZXJ5IHN0cmljdCBh bmQgc2ltcGx5IAphc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGNsb2NrIGVudHJ5IGlzIFNTUENMSyAq d2l0aG91dCogY29uc2lkZXJpbmcgaXRzIApuYW1lIChvdGhlciBjb25zdW1lcnMgb2YgdGhlIGJp bmRpbmcgbWlnaHQgYmUgc3RyaWN0ZXI7IEkgZG9uJ3Qga25vdyksIAphbmQgYmVjYXVzZSBwcmVz dW1hYmx5IHRoZSBIQ0xLIGhhcHBlbnMgdG8gYmUgZW5hYmxlZCBhbHJlYWR5IGFueXdheS4gCkNo YW5naW5nIHRoZSBkcml2ZXIgYmVoYXZpb3VyIHdvdWxkIG9ubHkgc3RhbmQgdG8gY2F1c2UgZnVu Y3Rpb25hbCAKcmVncmVzc2lvbnMuCgpUaGVyZSBhcmUgZWZmZWN0aXZlbHkgdHdvIGJ1Z3MgaW4g dGhlIERUUyBoZXJlLCBmaXJzdGx5IHRoYXQgaXQgb25seSBoYXMgCm9uZSBjbG9jayBlbnRyeSB3 aGVuIGl0IHNob3VsZCBoYXZlIHR3bywgYW5kIHNlY29uZGx5IHRoYXQgdGhlIGNsb2NrIAplbnRy eSB3aGljaCAqaXMqIHByZXNlbnQgaGFzIHRoZSB3cm9uZyBuYW1lIChvciB0aGUgd3JvbmcgY2xv Y2sgCnNwZWNpZmllciwgZGVwZW5kaW5nIG9uIGhvdyB5b3UgbG9vayBhdCBpdCkuIEt1bGRlZXAn cyBwYXRjaCBtZXJlbHkgCmZpeGVzIHRoZSBmaXJzdCBvbmUgYnkgZnVsbHkgZGVzY3JpYmluZyB0 aGUgd2F5IGl0J3MgY3VycmVudGx5IHdvcmtpbmcgCmluIHByYWN0aWNlLCBzbyBpdCdzIHJlYWxs eSBqdXN0IGEgY2hvaWNlIG9mIHdoZXRoZXIgdG8gdHJlYXQgInJlc3BlY3QgCnRoZSBiaW5kaW5n IiBhbmQgImRlc2NyaWJlIHRoZSBoYXJkd2FyZSBjb3JyZWN0bHkiIGFzIHNlcGFyYXRlIGlzc3Vl cyAKYW5kIGhhdmUgYSBmb2xsb3ctdXAgcGF0Y2ggdG8gY29ycmVjdGx5IHJlZmVyZW5jZSBIQ0xL IGFzIHRoZSBzZWNvbmQgCmNsb2NrLCBvciB3aGV0aGVyIHRoZXkncmUgdHJpdmlhbCBlbm91Z2gg dG8gc3F1YXNoIHRvZ2V0aGVyLgoKUm9iaW4uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==