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 EED8DC64EC4 for ; Wed, 22 Feb 2023 10:22:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231918AbjBVKWB (ORCPT ); Wed, 22 Feb 2023 05:22:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231800AbjBVKWA (ORCPT ); Wed, 22 Feb 2023 05:22:00 -0500 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1C3233471 for ; Wed, 22 Feb 2023 02:21:57 -0800 (PST) Received: by mail-wr1-x435.google.com with SMTP id l25so6779256wrb.3 for ; Wed, 22 Feb 2023 02:21:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; 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=A/j0BfnrCEhVdiOlio/nDMN6dumXmN70t4sL/nEbtGg=; b=GNmVNqegus0CkMHKZPlBIsyM8lqvJHnnghxp/kR0qt3wPYhVy7syqKVVpUbEuVSYHl h3ON4kUamqsUja0gB2puPO0PL8/riIyXemHSnZtXNzSvJGBvnwz5hNb+jzCDsrdpHNen Majnw0xt4GVNQi5SXv/j8nQj1+vZoM9HAxdO6cb1Q74BlBdmvFxlXYrPjKHhvmGDopJL 5NR6lC9IFzNzqsxYOgtPulFZlcrHf8bYs3KuXCEXnP5cy/GQGI0zBOD3vhw1mwNhn0DD yqEEqElvmi0OsdBpOvCtKI3l2b0GyeFNJ92kCZ/pUxa7zvKuBr9KxPUGhii4g/73b1kZ xVLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=A/j0BfnrCEhVdiOlio/nDMN6dumXmN70t4sL/nEbtGg=; b=hCyc89nLiFWnm1GkLRToCVQ8DcABzUl5EZ7nUx66U1T29TiFghicmUZUDWgKwj1t6N qQpOUxG0Cn2ZafeYFT/pk26AuDV/gNbR3Z5DdejK6rRvBkF0XGSrw1D+uJ9foTG8D2lE 0FCGcdVyThD1acaD59tH9NhTEHjaugoGQR1OQv3GZ+sDElqKkCfJtKFYU5QZod/U3lWU FVK7HWfzfsqoIKDO+DameA3DTB1athcdAjYl/c6sxeZWrnVNjxb5AIvmJmhiZW+CVHdj HUf2yzp8tizrz3e40ToSB8otAHaiY8Ee+Gg7VZtHMsw6bIHaGd5jgyr7CtIQJiCcwlzP kX+A== X-Gm-Message-State: AO0yUKWXsBL++JoooCQAK1fD/wgdBf3pvaHmNodibjJEoTJq7qtDz/w3 K4HSqjaDO4Vbr9O2HAM/e4+/yw== X-Google-Smtp-Source: AK7set9mJGpo7aAMHeJCPmz7r3fDVsWDYZu57myyP0o6LfkR4NtiNQffpn1liMDoWlfe8foSFDc/Ow== X-Received: by 2002:adf:fb4b:0:b0:2c5:85ef:980f with SMTP id c11-20020adffb4b000000b002c585ef980fmr5648878wrs.49.1677061316323; Wed, 22 Feb 2023 02:21:56 -0800 (PST) Received: from [192.168.1.195] ([5.133.47.210]) by smtp.googlemail.com with ESMTPSA id m26-20020a7bca5a000000b003e20a6fd604sm6782962wml.4.2023.02.22.02.21.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Feb 2023 02:21:55 -0800 (PST) Message-ID: Date: Wed, 22 Feb 2023 10:21:53 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v10 15/26] gunyah: rsc_mgr: Add platform ops on mem_lend/mem_reclaim Content-Language: en-US To: Elliot Berman , Alex Elder , Prakruthi Deepak Heragu Cc: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Jonathan Corbet , Bagas Sanjaya , Catalin Marinas , Jassi Brar , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230214211229.3239350-1-quic_eberman@quicinc.com> <20230214212448.3318756-1-quic_eberman@quicinc.com> <963d84e8-7b91-c278-1978-4e73d73f7c6f@linaro.org> <7aa025a1-b211-f04c-9169-236102fe27fe@quicinc.com> From: Srinivas Kandagatla In-Reply-To: <7aa025a1-b211-f04c-9169-236102fe27fe@quicinc.com> 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 21/02/2023 21:22, Elliot Berman wrote: > > > On 2/21/2023 6:51 AM, Srinivas Kandagatla wrote: >> >> >> On 14/02/2023 21:24, Elliot Berman wrote: > [snip] >>> + >>> +static struct gunyah_rm_platform_ops *rm_platform_ops; >>> +static DECLARE_RWSEM(rm_platform_ops_lock); >> >> Why do we need this read/write lock or this global rm_platform_ops >> here, AFAIU, there will be only one instance of platform_ops per >> platform. >> >> This should be a core part of the gunyah and its driver early setup, >> that should give us pretty much lock less behaviour. >> >> We should be able to determine by Hypervisor UUID that its on Qualcomm >> platform or not, during early gunyah setup which should help us setup >> the platfrom ops accordingly. >> >> This should also help cleanup some of the gunyah code that was added >> futher down in this patchset. > > I'm guessing the direction to take is: > >   config GUNYAH >     select QCOM_SCM if ARCH_QCOM This is how other kernel drivers use SCM. > > and have vm_mgr call directly into qcom_scm driver if the UID matches? Yes that is the plan, we could have these callbacks as part key data structure like struct gh_rm and update it at very early in setup stage based on UUID match. > > We have an Android requirement to enable CONFIG_GUNYAH=y and > CONFIG_QCOM_SCM=m, but it wouldn't be possible with this design. The Am not sure how this will work, if gunyah for QCOM Platform is depended on SCM then there is no way that gunyah could be a inbuilt and make scm a module. On the other hand with the existing design gunyah will not be functional until scm driver is loaded and platform hooks are registered. This runtime dependency design does not express the dependency correctly and the only way to know if gunyah is functional is keep trying which can only work after scm driver is probed. This also raises the design question on how much of platform hooks dependency is captured at gunyah core and api level, with state of current code /dev/gunyah will be created even without platform hooks and let the userspace use it which then only fail at hyp call level. Other issue with current design is, scm module can be unloaded under the hood leaving gunyah with NULL pointers to those platform hook functions. This is the kind of issues we could see if the dependency is not expressed from bottom up. The current design is not really capturing the depended components accurately. Considering platform hooks as a core resource to gunyah on Qualcomm platform is something that needs attention. If we can fix that then it might be doable to have QCOM_SCM=m and CONFIG_GUNYAH=y. --srini > platform hooks implementation allows GUNYAH and QCOM_SCM to be enabled > without setting lower bound of the other. > > - Elliot 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 E08AAC61DA4 for ; Wed, 22 Feb 2023 10:38:48 +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=l3eXid3z6gddvCWYvbty588WzIkQcvRWaGM+amZhad8=; b=lxJr2yjWon9L7A 40dJzMYnbjWvxwNk8/aui/XQvyaNKxKwVi7zrOvpxXjq5WBwJGG+K+GK/e7OQEqvZUuEQY55EzeWk 6DDoO6/HZndjRm/lxJuu7/1l73hGcL/7hYf+zeFRSs2/Vj5eF6fANDTN5FanZ76eGq2IqqRV9OnaP +4GVdwaN9CyG5yU4Zzy0kyQgnUoXgMwaIknbwwyMc5Or+RQzSTp92ll0dfnk06y0RIMvV8vpNcHXU +w6CjurDzxlOqfvipFTMFWNeZdmpPJ/sNFBno/PpdwcVavuIUP4L7r3o8l1PRcAid19VAuxmxLIiq Ms7VwP2U9F/t355hfSkg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pUmVH-00BzlM-Mk; Wed, 22 Feb 2023 10:37:40 +0000 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pUmG7-00BsEq-Hh for linux-arm-kernel@lists.infradead.org; Wed, 22 Feb 2023 10:22:09 +0000 Received: by mail-wr1-x42a.google.com with SMTP id i11so1020728wrp.5 for ; Wed, 22 Feb 2023 02:21:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; 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=A/j0BfnrCEhVdiOlio/nDMN6dumXmN70t4sL/nEbtGg=; b=GNmVNqegus0CkMHKZPlBIsyM8lqvJHnnghxp/kR0qt3wPYhVy7syqKVVpUbEuVSYHl h3ON4kUamqsUja0gB2puPO0PL8/riIyXemHSnZtXNzSvJGBvnwz5hNb+jzCDsrdpHNen Majnw0xt4GVNQi5SXv/j8nQj1+vZoM9HAxdO6cb1Q74BlBdmvFxlXYrPjKHhvmGDopJL 5NR6lC9IFzNzqsxYOgtPulFZlcrHf8bYs3KuXCEXnP5cy/GQGI0zBOD3vhw1mwNhn0DD yqEEqElvmi0OsdBpOvCtKI3l2b0GyeFNJ92kCZ/pUxa7zvKuBr9KxPUGhii4g/73b1kZ xVLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=A/j0BfnrCEhVdiOlio/nDMN6dumXmN70t4sL/nEbtGg=; b=0SL/xYNeu34HdwbSyghCcHq2/9rf6l6d/Deo66vTC5hofUoilplLmRhPN/cFDiPHkd 2xOK8jE6HytprCyWl9E5m1bUV1ANujoCGPF5GFkEBbOTICf8c8qko45UWp5DB4kqyran gklc1E9/XZQ8JT/IXqyx8lF9KbQLyS2ZrpQugm0zIOWkr6ek5o3GXX42X2+zYxw5jRck EgO1+gPVqf5MLPXmdKui6ghzPnW0hqXCgFrkLMXUHj6vNUeIgO0ClFhCN19oPcmgzqpC gEIuPSGqLgAasluK7NkyTzH0d8/6iAoFpUGXmQY/6ud9+NoB/2aDqJ5d6CUTo3SMmqG+ u6tw== X-Gm-Message-State: AO0yUKXDfxLpFLLdWZBP/8HJNhi920uhjhjFmtmT8/AZBzbLaMUjeFBB R95cLCLUDX3syobTtq9ZvW3zEA== X-Google-Smtp-Source: AK7set9mJGpo7aAMHeJCPmz7r3fDVsWDYZu57myyP0o6LfkR4NtiNQffpn1liMDoWlfe8foSFDc/Ow== X-Received: by 2002:adf:fb4b:0:b0:2c5:85ef:980f with SMTP id c11-20020adffb4b000000b002c585ef980fmr5648878wrs.49.1677061316323; Wed, 22 Feb 2023 02:21:56 -0800 (PST) Received: from [192.168.1.195] ([5.133.47.210]) by smtp.googlemail.com with ESMTPSA id m26-20020a7bca5a000000b003e20a6fd604sm6782962wml.4.2023.02.22.02.21.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Feb 2023 02:21:55 -0800 (PST) Message-ID: Date: Wed, 22 Feb 2023 10:21:53 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v10 15/26] gunyah: rsc_mgr: Add platform ops on mem_lend/mem_reclaim Content-Language: en-US To: Elliot Berman , Alex Elder , Prakruthi Deepak Heragu Cc: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Jonathan Corbet , Bagas Sanjaya , Catalin Marinas , Jassi Brar , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230214211229.3239350-1-quic_eberman@quicinc.com> <20230214212448.3318756-1-quic_eberman@quicinc.com> <963d84e8-7b91-c278-1978-4e73d73f7c6f@linaro.org> <7aa025a1-b211-f04c-9169-236102fe27fe@quicinc.com> From: Srinivas Kandagatla In-Reply-To: <7aa025a1-b211-f04c-9169-236102fe27fe@quicinc.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230222_022159_679016_63F31167 X-CRM114-Status: GOOD ( 25.66 ) 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 CgpPbiAyMS8wMi8yMDIzIDIxOjIyLCBFbGxpb3QgQmVybWFuIHdyb3RlOgo+IAo+IAo+IE9uIDIv MjEvMjAyMyA2OjUxIEFNLCBTcmluaXZhcyBLYW5kYWdhdGxhIHdyb3RlOgo+Pgo+Pgo+PiBPbiAx NC8wMi8yMDIzIDIxOjI0LCBFbGxpb3QgQmVybWFuIHdyb3RlOgo+IFtzbmlwXQo+Pj4gKwo+Pj4g K3N0YXRpYyBzdHJ1Y3QgZ3VueWFoX3JtX3BsYXRmb3JtX29wcyAqcm1fcGxhdGZvcm1fb3BzOwo+ Pj4gK3N0YXRpYyBERUNMQVJFX1JXU0VNKHJtX3BsYXRmb3JtX29wc19sb2NrKTsKPj4KPj4gV2h5 IGRvIHdlIG5lZWQgdGhpcyByZWFkL3dyaXRlIGxvY2sgb3IgdGhpcyBnbG9iYWwgcm1fcGxhdGZv cm1fb3BzIAo+PiBoZXJlLCBBRkFJVSwgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSBpbnN0YW5jZSBv ZiBwbGF0Zm9ybV9vcHMgcGVyIAo+PiBwbGF0Zm9ybS4KPj4KPj4gVGhpcyBzaG91bGQgYmUgYSBj b3JlIHBhcnQgb2YgdGhlIGd1bnlhaCBhbmQgaXRzIGRyaXZlciBlYXJseSBzZXR1cCwgCj4+IHRo YXQgc2hvdWxkIGdpdmUgdXMgcHJldHR5IG11Y2ggbG9jayBsZXNzIGJlaGF2aW91ci4KPj4KPj4g V2Ugc2hvdWxkIGJlIGFibGUgdG8gZGV0ZXJtaW5lIGJ5IEh5cGVydmlzb3IgVVVJRCB0aGF0IGl0 cyBvbiBRdWFsY29tbSAKPj4gcGxhdGZvcm0gb3Igbm90LCBkdXJpbmcgZWFybHkgZ3VueWFoIHNl dHVwIHdoaWNoIHNob3VsZCBoZWxwIHVzIHNldHVwIAo+PiB0aGUgcGxhdGZyb20gb3BzIGFjY29y ZGluZ2x5Lgo+Pgo+PiBUaGlzIHNob3VsZCBhbHNvIGhlbHAgY2xlYW51cCBzb21lIG9mIHRoZSBn dW55YWggY29kZSB0aGF0IHdhcyBhZGRlZCAKPj4gZnV0aGVyIGRvd24gaW4gdGhpcyBwYXRjaHNl dC4KPiAKPiBJJ20gZ3Vlc3NpbmcgdGhlIGRpcmVjdGlvbiB0byB0YWtlIGlzOgo+IAo+ICDCoCBj b25maWcgR1VOWUFICj4gIMKgwqDCoCBzZWxlY3QgUUNPTV9TQ00gaWYgQVJDSF9RQ09NCgpUaGlz IGlzIGhvdyBvdGhlciBrZXJuZWwgZHJpdmVycyB1c2UgU0NNLgoKPiAKPiBhbmQgaGF2ZSB2bV9t Z3IgY2FsbCBkaXJlY3RseSBpbnRvIHFjb21fc2NtIGRyaXZlciBpZiB0aGUgVUlEIG1hdGNoZXM/ CgpZZXMgdGhhdCBpcyB0aGUgcGxhbiwgd2UgY291bGQgaGF2ZSB0aGVzZSBjYWxsYmFja3MgYXMg cGFydCBrZXkgZGF0YSAKc3RydWN0dXJlIGxpa2Ugc3RydWN0IGdoX3JtIGFuZCB1cGRhdGUgaXQg YXQgdmVyeSBlYXJseSBpbiBzZXR1cCBzdGFnZSAKYmFzZWQgb24gVVVJRCBtYXRjaC4KCgo+IAo+ IFdlIGhhdmUgYW4gQW5kcm9pZCByZXF1aXJlbWVudCB0byBlbmFibGUgQ09ORklHX0dVTllBSD15 IGFuZCAKPiBDT05GSUdfUUNPTV9TQ009bSwgYnV0IGl0IHdvdWxkbid0IGJlIHBvc3NpYmxlIHdp dGggdGhpcyBkZXNpZ24uIFRoZSAKCkFtIG5vdCBzdXJlIGhvdyB0aGlzIHdpbGwgd29yaywgaWYg Z3VueWFoIGZvciBRQ09NIFBsYXRmb3JtIGlzIGRlcGVuZGVkIApvbiBTQ00gdGhlbiB0aGVyZSBp cyBubyB3YXkgdGhhdCBndW55YWggY291bGQgYmUgYSBpbmJ1aWx0IGFuZCBtYWtlIHNjbSAKYSBt b2R1bGUuCgpPbiB0aGUgb3RoZXIgaGFuZCB3aXRoIHRoZSBleGlzdGluZyBkZXNpZ24gZ3VueWFo IHdpbGwgbm90IGJlIGZ1bmN0aW9uYWwgCnVudGlsIHNjbSBkcml2ZXIgaXMgbG9hZGVkIGFuZCBw bGF0Zm9ybSBob29rcyBhcmUgcmVnaXN0ZXJlZC4gVGhpcyAKcnVudGltZSBkZXBlbmRlbmN5IGRl c2lnbiBkb2VzIG5vdCBleHByZXNzIHRoZSBkZXBlbmRlbmN5IGNvcnJlY3RseSBhbmQgCnRoZSBv bmx5IHdheSB0byBrbm93IGlmIGd1bnlhaCBpcyBmdW5jdGlvbmFsIGlzIGtlZXAgdHJ5aW5nIHdo aWNoIGNhbiAKb25seSB3b3JrIGFmdGVyIHNjbSBkcml2ZXIgaXMgcHJvYmVkLgoKVGhpcyBhbHNv IHJhaXNlcyB0aGUgZGVzaWduIHF1ZXN0aW9uIG9uIGhvdyBtdWNoIG9mIHBsYXRmb3JtIGhvb2tz IApkZXBlbmRlbmN5IGlzIGNhcHR1cmVkIGF0IGd1bnlhaCBjb3JlIGFuZCBhcGkgbGV2ZWwsIHdp dGggc3RhdGUgb2YgCmN1cnJlbnQgY29kZSAvZGV2L2d1bnlhaCB3aWxsIGJlIGNyZWF0ZWQgZXZl biB3aXRob3V0IHBsYXRmb3JtIGhvb2tzIGFuZCAKbGV0IHRoZSB1c2Vyc3BhY2UgdXNlIGl0IHdo aWNoIHRoZW4gb25seSBmYWlsIGF0IGh5cCBjYWxsIGxldmVsLgoKT3RoZXIgaXNzdWUgd2l0aCBj dXJyZW50IGRlc2lnbiBpcywgc2NtIG1vZHVsZSBjYW4gYmUgdW5sb2FkZWQgdW5kZXIgdGhlIApo b29kIGxlYXZpbmcgZ3VueWFoIHdpdGggTlVMTCBwb2ludGVycyB0byB0aG9zZSBwbGF0Zm9ybSBo b29rIGZ1bmN0aW9ucy4gClRoaXMgaXMgdGhlIGtpbmQgb2YgaXNzdWVzIHdlIGNvdWxkIHNlZSBp ZiB0aGUgZGVwZW5kZW5jeSBpcyBub3QgCmV4cHJlc3NlZCBmcm9tIGJvdHRvbSB1cC4KClRoZSBj dXJyZW50IGRlc2lnbiBpcyBub3QgcmVhbGx5IGNhcHR1cmluZyB0aGUgZGVwZW5kZWQgY29tcG9u ZW50cyAKYWNjdXJhdGVseS4KCkNvbnNpZGVyaW5nIHBsYXRmb3JtIGhvb2tzIGFzIGEgY29yZSBy ZXNvdXJjZSB0byBndW55YWggb24gUXVhbGNvbW0gCnBsYXRmb3JtIGlzIHNvbWV0aGluZyB0aGF0 IG5lZWRzIGF0dGVudGlvbi4gSWYgd2UgY2FuIGZpeCB0aGF0IHRoZW4gaXQgCm1pZ2h0IGJlIGRv YWJsZSB0byBoYXZlIFFDT01fU0NNPW0gYW5kIENPTkZJR19HVU5ZQUg9eS4KCgotLXNyaW5pCj4g cGxhdGZvcm0gaG9va3MgaW1wbGVtZW50YXRpb24gYWxsb3dzIEdVTllBSCBhbmQgUUNPTV9TQ00g dG8gYmUgZW5hYmxlZCAKPiB3aXRob3V0IHNldHRpbmcgbG93ZXIgYm91bmQgb2YgdGhlIG90aGVy Lgo+IAo+IC0gRWxsaW90CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==