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 AEC2FC04A6A for ; Wed, 19 Jul 2023 10:29:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231483AbjGSK35 (ORCPT ); Wed, 19 Jul 2023 06:29:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48168 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231211AbjGSK3n (ORCPT ); Wed, 19 Jul 2023 06:29:43 -0400 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EED51FFF; Wed, 19 Jul 2023 03:29:13 -0700 (PDT) Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-56341268f2fso944709a12.0; Wed, 19 Jul 2023 03:29:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689762552; x=1692354552; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=3cLoW1TQOaWlvp3NhBI7qdcwZ4QB0jKAj6tuRXeMoec=; b=WPe4dG8IV5s9fX2/Z33QFeBzFdkgN3D2DGwyPXvHHrKuklW7v5XgYdlnocE8NyqE7d 2sa4VInAAEhTjDdr8d4PORMZoi2eCI50aGK/74MceoIYk2Md973VWveKcYSYcnJ8qMld Cp6tce5LeSHIXuEEgWVxrrNu1ofvEHJxGiuCEtR5KNrID4ZaFQhHg6EbBx5XizEst4tu sysTJszjJu0qJBSYiv7sqTSWElzKlFVwOIbLvS5P5XrnCAJ7fZEpNsGSBbK9PfF89Rjm aBgFpEwF8X1lWxRrm/V7xXgC3rkz09T/Qau94iVqKzBQr4GllFFoyysvR8d1x0LwmXDZ Ygsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689762552; x=1692354552; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3cLoW1TQOaWlvp3NhBI7qdcwZ4QB0jKAj6tuRXeMoec=; b=DrmEGh1Op59NvGGYUygft7LglkCC63yP4D8vOKx4cZYZ1KsUeVFTtOo9W/S9v9LPk6 7JEzUq0eEeNZH4NzxagDhtkfFrNmv+XsDToI2lWPGF5E1ePfBAIAt6O8mqlxRkcMaxQU HqwJnDRk8I/PsHp0DXKaCwwKfCEqB8PugfFpvT8h1uHxxyimcQlF6Q3ha1Cbh+81bzt0 KZZYPp/X3oJqol6qBq82iAcq0ucd88DSMn+D1JKBbZbbyokZit3dB1QN6d9zF+4XrhZe scmulLfG9ishwUDq7lSDe+tu5wWDVhp/FMuoQjiwDdOroqDjJLPhmV/dLl5brnV6cbYu P2Lw== X-Gm-Message-State: ABy/qLbM6ouFQf4Zs6IaDGLB9LeUVGTgF4yIKV85x6xTgN/iEGOxL+pB 2ibJMdpWufJzBBS7TgvrS9g= X-Google-Smtp-Source: APBJJlHdapFFwXVg7QIHj2SlCxGpSMVkZ7YXY9N0WNIT06DbPwKGONdFPKbpsK53hKMs6V3hHLd0zg== X-Received: by 2002:a05:6a20:549d:b0:134:f040:e970 with SMTP id i29-20020a056a20549d00b00134f040e970mr1817921pzk.48.1689762551553; Wed, 19 Jul 2023 03:29:11 -0700 (PDT) Received: from [192.168.50.148] (net-2-34-93-18.cust.vodafonedsl.it. [2.34.93.18]) by smtp.gmail.com with ESMTPSA id s25-20020a62e719000000b0064d57ecaa1dsm2984524pfh.28.2023.07.19.03.29.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Jul 2023 03:29:11 -0700 (PDT) Message-ID: <3d9515b1-2df0-9bbf-1290-d0618ff8a598@gmail.com> Date: Wed, 19 Jul 2023 12:29:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH v4 08/21] dt-bindings: reserved-memory: Add qcom,ramoops binding Content-Language: en-US To: Krzysztof Kozlowski , Mukesh Ojha Cc: Rob Herring , corbet@lwn.net, agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, conor+dt@kernel.org, keescook@chromium.org, tony.luck@intel.com, gpiccoli@igalia.com, mathieu.poirier@linaro.org, catalin.marinas@arm.com, will@kernel.org, linus.walleij@linaro.org, andy.shevchenko@gmail.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-hardening@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org References: <1687955688-20809-1-git-send-email-quic_mojha@quicinc.com> <1687955688-20809-9-git-send-email-quic_mojha@quicinc.com> <58a26b9e-a48d-d567-c310-193a2c52521e@linaro.org> <5447f9f8-55b4-8bed-66a6-1c9d62b02c79@quicinc.com> From: Luca Stefani In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 04/07/23 07:57, Krzysztof Kozlowski wrote: > On 03/07/2023 17:55, Mukesh Ojha wrote: >> >> On 7/3/2023 12:50 PM, Krzysztof Kozlowski wrote: >>> On Mon, 3 Jul 2023 at 08:22, Mukesh Ojha wrote: >>>> On 7/2/2023 1:42 PM, Krzysztof Kozlowski wrote: >>>>>>> The big difference is if firmware is not deciding where this log >>>>>>> lives, then it doesn't need to be in DT. How does anything except the >>>>>>> kernel that allocates the log find the logs? >>>>>> Yes, you are correct, firmware is not deciding where the logs lives >>>>>> instead here, Kernel has reserved the region where the ramoops region >>>>>> lives and later with the minidump registration where, physical >>>>>> address/size/virtual address(for parsing) are passed and that is how >>>>>> firmware is able to know and dump those region before triggering system >>>>>> reset. >>>>> Your explanation does not justify storing all this in DT. Kernel can >>>>> allocate any memory it wishes, store there logs and pass the address to >>>>> the firmware. That's it, no need for DT. >>>> If you go through the driver, you will know that what it does, is >>> We talk about bindings and I should not be forced to look at the >>> driver to be able to understand them. Bindings should stand on their >>> own. >> Why can't ramoops binding have one more feature where it can add a flag >> *dynamic* to indicate the regions are dynamic and it is for platforms >> where there is another entity 'minidump' who is interested in these >> regions. > Because we do not define dynamic stuff in Devicetree. Dynamic means > defined by SW or runtime configurable. It is against the entire idea of > Devicetree which is for non-discoverable hardware. > >>>> just create platform device for actual ramoops driver to probe and to >>> Not really justification for Devicetree anyway. Whatever your driver >>> is doing, is driver's business, not bindings. >>> >>>> provide this it needs exact set of parameters of input what original >>>> ramoops DT provides, we need to keep it in DT as maintaining this in >>>> driver will not scale well with different size/parameter size >>>> requirement for different targets. >>> Really? Why? I don't see a problem in scaling. At all. >> I had attempted it here, >> >> https://lore.kernel.org/lkml/1683133352-10046-10-git-send-email-quic_mojha@quicinc.com/ >> >> but got comments related to hard coding and some in favor of having >> the same set of properties what ramoops has/provides >> >> https://lore.kernel.org/lkml/e25723bf-be85-b458-a84c-1a45392683bb@gmail.com/ >> >> https://lore.kernel.org/lkml/202305161347.80204C1A0E@keescook/ > Then you were tricked. I don't get why someone else suggests that > non-hardware property should be part of Devicetree, but anyway it's the > call of Devicetree binding maintainers, not someone else. DT is not > dumping ground for all the system configuration variables. Sorry for that, I assumed the interface should be as close as possible to pstore, but apparently that's not the case. Why does it have to be different from it? It provides the same functionality and is configurable even if it doesn't explicitly configure non discoverable hardware properties. Assuming we make the driver picks the values, how would it do that?  Hardcoding a configuration could lead to a few problems, such as the allocated region being smaller than the driver defaults or driver defaults not fully utilizing the allocated region, possibly wasting more memory than it'll ever use. On top of that what happens if we want to configure it differently than the hardcoded default values? Via cmdline options? For example in the previous version it allocated the whole region for the console alone, while other entries, such as pmsg that could be useful on devices using minidump to store Android logs, was zero-sized. > >>>>>> A part of this registration code you can find in 11/21 >>>>>> >>>>>>> I'm pretty sure I already said all this before. >>>>>> Yes, you said this before but that's the reason i came up with vendor >>>>>> ramoops instead of changing traditional ramoops binding. >>>>> That's unexpected conclusion. Adding more bindings is not the answer to >>>>> comment that it should not be in the DTS in the first place. >>>> Please suggest, what is the other way being above text as requirement.. >>> I do not see any requirement for us there. Forcing me to figure out >>> how to add non-hardware property to DT is not the way to convince >>> reviewers. But if you insist - we have ABI for this, called sysfs. If >>> it is debugging feature, then debugfs. >> ramoops already support module params and a way to pass these parameters >> from bootargs but it also need to know the hard-codes addresses, so, >> doing something in sysfs will be again duplication with ramoops driver.. > Why do you need hard-coded addresses? > >> If this can be accommodated under ramoops, this will be very small >> change, like this >> >> https://lore.kernel.org/lkml/20230622005213.458236-1-isaacmanjarres@google.com/ > That's also funny patch - missing bindings updated, missing CC DT > maintainers. > > Best regards, > Krzysztof > > > 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 A88C9EB64DA for ; Wed, 19 Jul 2023 10:29:33 +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=0AynzeI5zlCP4qShKK3DZStJa4BhU3F9LhIhLGnDHYI=; b=TvKciy1cwesUdt au9+/7TuvDgs4i4xvD/m0hxjAaO5xdRJuTOuCUBDQ7bqsGGATOVSWuGjjyCC3tUIkIlEeXeCJ3S7K YlWhbweI9pgBsO4yO1ahknaDX0Wj9Zc6BJE/dox5ivYptSqy/+UlTwGeJCYL3R1f7tpN6KUc/Gn7I SE8fsXz0flp97E149BbvuMzF2JsvoEjrftG7iP/NwaX4rygJSnXzUheQCco41xhreHVGkFVk8fC8c K4iY+N3TSyT3AZ2pjQD5CHoVDmqgnnRcG6g+zIRQZ1oX/OpS5dXS3eEp5PXyCiCGVIAzvPAGIOuzM U4AnTF6l3tIQltLP1tFw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qM4Qn-006i0n-14; Wed, 19 Jul 2023 10:29:17 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qM4Qk-006hzJ-14 for linux-arm-kernel@lists.infradead.org; Wed, 19 Jul 2023 10:29:16 +0000 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-668730696a4so4561765b3a.1 for ; Wed, 19 Jul 2023 03:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689762552; x=1692354552; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=3cLoW1TQOaWlvp3NhBI7qdcwZ4QB0jKAj6tuRXeMoec=; b=WPe4dG8IV5s9fX2/Z33QFeBzFdkgN3D2DGwyPXvHHrKuklW7v5XgYdlnocE8NyqE7d 2sa4VInAAEhTjDdr8d4PORMZoi2eCI50aGK/74MceoIYk2Md973VWveKcYSYcnJ8qMld Cp6tce5LeSHIXuEEgWVxrrNu1ofvEHJxGiuCEtR5KNrID4ZaFQhHg6EbBx5XizEst4tu sysTJszjJu0qJBSYiv7sqTSWElzKlFVwOIbLvS5P5XrnCAJ7fZEpNsGSBbK9PfF89Rjm aBgFpEwF8X1lWxRrm/V7xXgC3rkz09T/Qau94iVqKzBQr4GllFFoyysvR8d1x0LwmXDZ Ygsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689762552; x=1692354552; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3cLoW1TQOaWlvp3NhBI7qdcwZ4QB0jKAj6tuRXeMoec=; b=c/LbVQI4hX3eWiK3XqlhNUIs2R+6iwa+ueGeChvyQ6cvjPLfnCj1xmV5q4Cxvg5fTO /4ZYcQBmMWyA1cVvEDeTUE1VLNIzsotY/QVSSLt97S/J6voXUTzri+1Iw8aB+G/Ri7xe UJ7dnTqMfND5woQpUpFoNYB6ZpcQKbH0wn2WaJ6y1bEmRe+GW84K4EK33kFAC1vq3BwB 0MIzwneGMZ5EJyaI45nF5H5U/xuJX1kEgnuC0N4ShVA7niWRG8hFJ0+TVLBVNM1sSNTD Yil4xm0OZsFm1QRozrX7Lcz5TfNPPIbJENbT0HILiyKcxJXwMyFDKU9fPtXhw5t0Oxrn X5PQ== X-Gm-Message-State: ABy/qLYNrS8jqoVgzwBWeosZa0TERwf/3gpz7+f0BKSJhtItJbrEKycD /tQfz/Pn6CA6hosPbWyQmjE= X-Google-Smtp-Source: APBJJlHdapFFwXVg7QIHj2SlCxGpSMVkZ7YXY9N0WNIT06DbPwKGONdFPKbpsK53hKMs6V3hHLd0zg== X-Received: by 2002:a05:6a20:549d:b0:134:f040:e970 with SMTP id i29-20020a056a20549d00b00134f040e970mr1817921pzk.48.1689762551553; Wed, 19 Jul 2023 03:29:11 -0700 (PDT) Received: from [192.168.50.148] (net-2-34-93-18.cust.vodafonedsl.it. [2.34.93.18]) by smtp.gmail.com with ESMTPSA id s25-20020a62e719000000b0064d57ecaa1dsm2984524pfh.28.2023.07.19.03.29.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Jul 2023 03:29:11 -0700 (PDT) Message-ID: <3d9515b1-2df0-9bbf-1290-d0618ff8a598@gmail.com> Date: Wed, 19 Jul 2023 12:29:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH v4 08/21] dt-bindings: reserved-memory: Add qcom,ramoops binding Content-Language: en-US To: Krzysztof Kozlowski , Mukesh Ojha Cc: Rob Herring , corbet@lwn.net, agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, conor+dt@kernel.org, keescook@chromium.org, tony.luck@intel.com, gpiccoli@igalia.com, mathieu.poirier@linaro.org, catalin.marinas@arm.com, will@kernel.org, linus.walleij@linaro.org, andy.shevchenko@gmail.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-hardening@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org References: <1687955688-20809-1-git-send-email-quic_mojha@quicinc.com> <1687955688-20809-9-git-send-email-quic_mojha@quicinc.com> <58a26b9e-a48d-d567-c310-193a2c52521e@linaro.org> <5447f9f8-55b4-8bed-66a6-1c9d62b02c79@quicinc.com> From: Luca Stefani In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230719_032914_390018_85C02E90 X-CRM114-Status: GOOD ( 40.21 ) 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 Ck9uIDA0LzA3LzIzIDA3OjU3LCBLcnp5c3p0b2YgS296bG93c2tpIHdyb3RlOgo+IE9uIDAzLzA3 LzIwMjMgMTc6NTUsIE11a2VzaCBPamhhIHdyb3RlOgo+Pgo+PiBPbiA3LzMvMjAyMyAxMjo1MCBQ TSwgS3J6eXN6dG9mIEtvemxvd3NraSB3cm90ZToKPj4+IE9uIE1vbiwgMyBKdWwgMjAyMyBhdCAw ODoyMiwgTXVrZXNoIE9qaGEgPHF1aWNfbW9qaGFAcXVpY2luYy5jb20+IHdyb3RlOgo+Pj4+IE9u IDcvMi8yMDIzIDE6NDIgUE0sIEtyenlzenRvZiBLb3psb3dza2kgd3JvdGU6Cj4+Pj4+Pj4gVGhl IGJpZyBkaWZmZXJlbmNlIGlzIGlmIGZpcm13YXJlIGlzIG5vdCBkZWNpZGluZyB3aGVyZSB0aGlz IGxvZwo+Pj4+Pj4+IGxpdmVzLCB0aGVuIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBpbiBEVC4gSG93 IGRvZXMgYW55dGhpbmcgZXhjZXB0IHRoZQo+Pj4+Pj4+IGtlcm5lbCB0aGF0IGFsbG9jYXRlcyB0 aGUgbG9nIGZpbmQgdGhlIGxvZ3M/Cj4+Pj4+PiBZZXMsIHlvdSBhcmUgY29ycmVjdCwgZmlybXdh cmUgaXMgbm90IGRlY2lkaW5nIHdoZXJlIHRoZSBsb2dzIGxpdmVzCj4+Pj4+PiBpbnN0ZWFkIGhl cmUsIEtlcm5lbCBoYXMgcmVzZXJ2ZWQgdGhlIHJlZ2lvbiB3aGVyZSB0aGUgcmFtb29wcyByZWdp b24KPj4+Pj4+IGxpdmVzIGFuZCBsYXRlciB3aXRoIHRoZSBtaW5pZHVtcCByZWdpc3RyYXRpb24g d2hlcmUsIHBoeXNpY2FsCj4+Pj4+PiBhZGRyZXNzL3NpemUvdmlydHVhbCBhZGRyZXNzKGZvciBw YXJzaW5nKSBhcmUgcGFzc2VkIGFuZCB0aGF0IGlzIGhvdwo+Pj4+Pj4gZmlybXdhcmUgaXMgYWJs ZSB0byBrbm93IGFuZCBkdW1wIHRob3NlIHJlZ2lvbiBiZWZvcmUgdHJpZ2dlcmluZyBzeXN0ZW0K Pj4+Pj4+IHJlc2V0Lgo+Pj4+PiBZb3VyIGV4cGxhbmF0aW9uIGRvZXMgbm90IGp1c3RpZnkgc3Rv cmluZyBhbGwgdGhpcyBpbiBEVC4gS2VybmVsIGNhbgo+Pj4+PiBhbGxvY2F0ZSBhbnkgbWVtb3J5 IGl0IHdpc2hlcywgc3RvcmUgdGhlcmUgbG9ncyBhbmQgcGFzcyB0aGUgYWRkcmVzcyB0bwo+Pj4+ PiB0aGUgZmlybXdhcmUuIFRoYXQncyBpdCwgbm8gbmVlZCBmb3IgRFQuCj4+Pj4gSWYgeW91IGdv IHRocm91Z2ggdGhlIGRyaXZlciwgeW91IHdpbGwga25vdyB0aGF0IHdoYXQgaXQgZG9lcywgaXMK Pj4+IFdlIHRhbGsgYWJvdXQgYmluZGluZ3MgYW5kIEkgc2hvdWxkIG5vdCBiZSBmb3JjZWQgdG8g bG9vayBhdCB0aGUKPj4+IGRyaXZlciB0byBiZSBhYmxlIHRvIHVuZGVyc3RhbmQgdGhlbS4gQmlu ZGluZ3Mgc2hvdWxkIHN0YW5kIG9uIHRoZWlyCj4+PiBvd24uCj4+IFdoeSBjYW4ndCByYW1vb3Bz IGJpbmRpbmcgaGF2ZSBvbmUgbW9yZSBmZWF0dXJlIHdoZXJlIGl0IGNhbiBhZGQgYSBmbGFnCj4+ ICpkeW5hbWljKiB0byBpbmRpY2F0ZSB0aGUgcmVnaW9ucyBhcmUgZHluYW1pYyBhbmQgaXQgaXMg Zm9yIHBsYXRmb3Jtcwo+PiB3aGVyZSB0aGVyZSBpcyBhbm90aGVyIGVudGl0eSAnbWluaWR1bXAn IHdobyBpcyBpbnRlcmVzdGVkIGluIHRoZXNlCj4+IHJlZ2lvbnMuCj4gQmVjYXVzZSB3ZSBkbyBu b3QgZGVmaW5lIGR5bmFtaWMgc3R1ZmYgaW4gRGV2aWNldHJlZS4gRHluYW1pYyBtZWFucwo+IGRl ZmluZWQgYnkgU1cgb3IgcnVudGltZSBjb25maWd1cmFibGUuIEl0IGlzIGFnYWluc3QgdGhlIGVu dGlyZSBpZGVhIG9mCj4gRGV2aWNldHJlZSB3aGljaCBpcyBmb3Igbm9uLWRpc2NvdmVyYWJsZSBo YXJkd2FyZS4KPgo+Pj4+IGp1c3QgY3JlYXRlIHBsYXRmb3JtIGRldmljZSBmb3IgYWN0dWFsIHJh bW9vcHMgZHJpdmVyIHRvIHByb2JlIGFuZCB0bwo+Pj4gTm90IHJlYWxseSBqdXN0aWZpY2F0aW9u IGZvciBEZXZpY2V0cmVlIGFueXdheS4gV2hhdGV2ZXIgeW91ciBkcml2ZXIKPj4+IGlzIGRvaW5n LCBpcyBkcml2ZXIncyBidXNpbmVzcywgbm90IGJpbmRpbmdzLgo+Pj4KPj4+PiBwcm92aWRlIHRo aXMgaXQgbmVlZHMgZXhhY3Qgc2V0IG9mIHBhcmFtZXRlcnMgb2YgaW5wdXQgd2hhdCBvcmlnaW5h bAo+Pj4+IHJhbW9vcHMgRFQgcHJvdmlkZXMsIHdlIG5lZWQgdG8ga2VlcCBpdCBpbiBEVCBhcyBt YWludGFpbmluZyB0aGlzIGluCj4+Pj4gZHJpdmVyIHdpbGwgbm90IHNjYWxlIHdlbGwgd2l0aCBk aWZmZXJlbnQgc2l6ZS9wYXJhbWV0ZXIgc2l6ZQo+Pj4+IHJlcXVpcmVtZW50IGZvciBkaWZmZXJl bnQgdGFyZ2V0cy4KPj4+IFJlYWxseT8gV2h5PyBJIGRvbid0IHNlZSBhIHByb2JsZW0gaW4gc2Nh bGluZy4gQXQgYWxsLgo+PiBJIGhhZCBhdHRlbXB0ZWQgaXQgaGVyZSwKPj4KPj4gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvbGttbC8xNjgzMTMzMzUyLTEwMDQ2LTEwLWdpdC1zZW5kLWVtYWlsLXF1 aWNfbW9qaGFAcXVpY2luYy5jb20vCj4+Cj4+IGJ1dCBnb3QgY29tbWVudHMgcmVsYXRlZCB0byBo YXJkIGNvZGluZyBhbmQgc29tZSBpbiBmYXZvciBvZiBoYXZpbmcKPj4gdGhlIHNhbWUgc2V0IG9m IHByb3BlcnRpZXMgd2hhdCByYW1vb3BzIGhhcy9wcm92aWRlcwo+Pgo+PiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9sa21sL2UyNTcyM2JmLWJlODUtYjQ1OC1hODRjLTFhNDUzOTI2ODNiYkBnbWFp bC5jb20vCj4+Cj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMzA1MTYxMzQ3Ljgw MjA0QzFBMEVAa2Vlc2Nvb2svCj4gVGhlbiB5b3Ugd2VyZSB0cmlja2VkLiBJIGRvbid0IGdldCB3 aHkgc29tZW9uZSBlbHNlIHN1Z2dlc3RzIHRoYXQKPiBub24taGFyZHdhcmUgcHJvcGVydHkgc2hv dWxkIGJlIHBhcnQgb2YgRGV2aWNldHJlZSwgYnV0IGFueXdheSBpdCdzIHRoZQo+IGNhbGwgb2Yg RGV2aWNldHJlZSBiaW5kaW5nIG1haW50YWluZXJzLCBub3Qgc29tZW9uZSBlbHNlLiBEVCBpcyBu b3QKPiBkdW1waW5nIGdyb3VuZCBmb3IgYWxsIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJp YWJsZXMuCgpTb3JyeSBmb3IgdGhhdCwgSSBhc3N1bWVkIHRoZSBpbnRlcmZhY2Ugc2hvdWxkIGJl IGFzIGNsb3NlIGFzIHBvc3NpYmxlIAp0byBwc3RvcmUsIGJ1dCBhcHBhcmVudGx5IHRoYXQncyBu b3QgdGhlIGNhc2UuIFdoeSBkb2VzIGl0IGhhdmUgdG8gYmUgCmRpZmZlcmVudCBmcm9tIGl0PyBJ dCBwcm92aWRlcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IGFuZCBpcyAKY29uZmlndXJhYmxlIGV2 ZW4gaWYgaXQgZG9lc24ndCBleHBsaWNpdGx5IGNvbmZpZ3VyZSBub24gZGlzY292ZXJhYmxlIApo YXJkd2FyZSBwcm9wZXJ0aWVzLgoKQXNzdW1pbmcgd2UgbWFrZSB0aGUgZHJpdmVyIHBpY2tzIHRo ZSB2YWx1ZXMsIGhvdyB3b3VsZCBpdCBkbyB0aGF0P8KgIApIYXJkY29kaW5nIGEgY29uZmlndXJh dGlvbiBjb3VsZCBsZWFkIHRvIGEgZmV3IHByb2JsZW1zLCBzdWNoIGFzIHRoZSAKYWxsb2NhdGVk IHJlZ2lvbiBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIGRyaXZlciBkZWZhdWx0cyBvciBkcml2ZXIg CmRlZmF1bHRzIG5vdCBmdWxseSB1dGlsaXppbmcgdGhlIGFsbG9jYXRlZCByZWdpb24sIHBvc3Np Ymx5IHdhc3RpbmcgbW9yZSAKbWVtb3J5IHRoYW4gaXQnbGwgZXZlciB1c2UuIE9uIHRvcCBvZiB0 aGF0IHdoYXQgaGFwcGVucyBpZiB3ZSB3YW50IHRvIApjb25maWd1cmUgaXQgZGlmZmVyZW50bHkg dGhhbiB0aGUgaGFyZGNvZGVkIGRlZmF1bHQgdmFsdWVzPyBWaWEgY21kbGluZSAKb3B0aW9ucz8g Rm9yIGV4YW1wbGUgaW4gdGhlIHByZXZpb3VzIHZlcnNpb24gaXQgYWxsb2NhdGVkIHRoZSB3aG9s ZSAKcmVnaW9uIGZvciB0aGUgY29uc29sZSBhbG9uZSwgd2hpbGUgb3RoZXIgZW50cmllcywgc3Vj aCBhcyBwbXNnIHRoYXQgCmNvdWxkIGJlIHVzZWZ1bCBvbiBkZXZpY2VzIHVzaW5nIG1pbmlkdW1w IHRvIHN0b3JlIEFuZHJvaWQgbG9ncywgd2FzIAp6ZXJvLXNpemVkLgoKPgo+Pj4+Pj4gQSBwYXJ0 IG9mIHRoaXMgcmVnaXN0cmF0aW9uIGNvZGUgeW91IGNhbiBmaW5kIGluIDExLzIxCj4+Pj4+Pgo+ Pj4+Pj4+IEknbSBwcmV0dHkgc3VyZSBJIGFscmVhZHkgc2FpZCBhbGwgdGhpcyBiZWZvcmUuCj4+ Pj4+PiBZZXMsIHlvdSBzYWlkIHRoaXMgYmVmb3JlIGJ1dCB0aGF0J3MgdGhlIHJlYXNvbiBpIGNh bWUgdXAgd2l0aCB2ZW5kb3IKPj4+Pj4+IHJhbW9vcHMgaW5zdGVhZCBvZiBjaGFuZ2luZyB0cmFk aXRpb25hbCByYW1vb3BzIGJpbmRpbmcuCj4+Pj4+IFRoYXQncyB1bmV4cGVjdGVkIGNvbmNsdXNp b24uIEFkZGluZyBtb3JlIGJpbmRpbmdzIGlzIG5vdCB0aGUgYW5zd2VyIHRvCj4+Pj4+IGNvbW1l bnQgdGhhdCBpdCBzaG91bGQgbm90IGJlIGluIHRoZSBEVFMgaW4gdGhlIGZpcnN0IHBsYWNlLgo+ Pj4+IFBsZWFzZSBzdWdnZXN0LCB3aGF0IGlzIHRoZSBvdGhlciB3YXkgYmVpbmcgYWJvdmUgdGV4 dCBhcyByZXF1aXJlbWVudC4uCj4+PiBJIGRvIG5vdCBzZWUgYW55IHJlcXVpcmVtZW50IGZvciB1 cyB0aGVyZS4gRm9yY2luZyBtZSB0byBmaWd1cmUgb3V0Cj4+PiBob3cgdG8gYWRkIG5vbi1oYXJk d2FyZSBwcm9wZXJ0eSB0byBEVCBpcyBub3QgdGhlIHdheSB0byBjb252aW5jZQo+Pj4gcmV2aWV3 ZXJzLiBCdXQgaWYgeW91IGluc2lzdCAtIHdlIGhhdmUgQUJJIGZvciB0aGlzLCBjYWxsZWQgc3lz ZnMuIElmCj4+PiBpdCBpcyBkZWJ1Z2dpbmcgZmVhdHVyZSwgdGhlbiBkZWJ1Z2ZzLgo+PiByYW1v b3BzIGFscmVhZHkgc3VwcG9ydCBtb2R1bGUgcGFyYW1zIGFuZCBhIHdheSB0byBwYXNzIHRoZXNl IHBhcmFtZXRlcnMKPj4gZnJvbSBib290YXJncyBidXQgaXQgYWxzbyBuZWVkIHRvIGtub3cgdGhl IGhhcmQtY29kZXMgYWRkcmVzc2VzLCBzbywKPj4gZG9pbmcgc29tZXRoaW5nIGluIHN5c2ZzIHdp bGwgYmUgYWdhaW4gZHVwbGljYXRpb24gd2l0aCByYW1vb3BzIGRyaXZlci4uCj4gV2h5IGRvIHlv dSBuZWVkIGhhcmQtY29kZWQgYWRkcmVzc2VzPwo+Cj4+IElmIHRoaXMgY2FuIGJlIGFjY29tbW9k YXRlZCB1bmRlciByYW1vb3BzLCB0aGlzIHdpbGwgYmUgdmVyeSBzbWFsbAo+PiBjaGFuZ2UsIGxp a2UgdGhpcwo+Pgo+PiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjMwNjIyMDA1MjEz LjQ1ODIzNi0xLWlzYWFjbWFuamFycmVzQGdvb2dsZS5jb20vCj4gVGhhdCdzIGFsc28gZnVubnkg cGF0Y2ggLSBtaXNzaW5nIGJpbmRpbmdzIHVwZGF0ZWQsIG1pc3NpbmcgQ0MgRFQKPiBtYWludGFp bmVycy4KPgo+IEJlc3QgcmVnYXJkcywKPiBLcnp5c3p0b2YKPgo+Cj4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK