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 97972C433F5 for ; Fri, 5 Nov 2021 19:18:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6666361051 for ; Fri, 5 Nov 2021 19:18:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233256AbhKETVI (ORCPT ); Fri, 5 Nov 2021 15:21:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233251AbhKETVH (ORCPT ); Fri, 5 Nov 2021 15:21:07 -0400 Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0815C061205 for ; Fri, 5 Nov 2021 12:18:27 -0700 (PDT) Received: by mail-qv1-xf2c.google.com with SMTP id b17so7932012qvl.9 for ; Fri, 05 Nov 2021 12:18:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=nMArXgyRFwIr/sExIAj6beitEUrgpBOeYC39dRrZA5I=; b=AdQbRzdKfXwzzyLDgZX1CPfVluGPIImeOYdxUdUmoANKwSq3VVvIoI6kyaAnAr41G9 eTMia7SAgT3ntSLmMnLcARVktjoaB/URXjZczXxIX2Pdqe2ZslrTJVRQmNWClpL8qVc7 GN4c7/Y4RX54uVCw03hywLK5VA1muBsdKTKK4sii0WmCQTf2H4TKV/ZMVfRa7MPOPEVG 2NafwD/0nNIfv++HAVDmLCC5IsRosfK/J0dgzQunzRqeruyXGa31dblkvYtfnB020zME dVUWUQ40aTvWgDngz9rc9/k8CfErRWkpKG3NnnVTcS5P8qeXI3ey09AFVq94lvQu1V5f TDBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=nMArXgyRFwIr/sExIAj6beitEUrgpBOeYC39dRrZA5I=; b=XgjVJh2yV5QZAMv6UKP+je/WXLzEc8x1cvEwjWbAW2Zxl2ZKm7y+SwxJg5FDdHQMeG 6TdOx4TGcJ1OY9tTFKTjDZu9XfDW/QzvtuzEPjhhOAtE4qbufisPp6u2hn8K2loA/N5T orIUB6engwBheb67svfVSTH4hMqLxMbxZz5fM4CLxnKyB8ZNFf4l7J3k2ks4WeMvS1Re v7Qyo0OgMDiTyPOwGBpsMDuM2GH4cpR7vPQwgj9FHdWTh0PY6iOG9OSJ9Hr2FTvH1040 cN5Qp2wyq5kkqW2HWX6U19rCOmJaELhdWx3Pa7nlXH2wgCfxPr9y2f7QS9jKInX7QnUO RqXQ== X-Gm-Message-State: AOAM532sFL3NN519kUZmSThKLnJCDuZ6j6mQf0n6RfAACT/4HnvYYdMs 14DnBUPWCLGb1L+Z5K2N+7iQkA== X-Google-Smtp-Source: ABdhPJwwN/1wpc/53ZbKLojNDqoWojpqgZ3ZfuRwqRFO27IFWzyS158WAM1g+eoCD7u2bFewNr246g== X-Received: by 2002:a05:6214:2429:: with SMTP id gy9mr10334015qvb.36.1636139906623; Fri, 05 Nov 2021 12:18:26 -0700 (PDT) Received: from [192.168.1.93] (pool-71-163-245-5.washdc.fios.verizon.net. [71.163.245.5]) by smtp.gmail.com with ESMTPSA id d203sm1001287qke.37.2021.11.05.12.18.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Nov 2021 12:18:25 -0700 (PDT) Subject: Re: [PATCH v3 0/5] Refactor thermal pressure update to avoid code duplication To: Steev Klimaszewski , Lukasz Luba Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, sudeep.holla@arm.com, will@kernel.org, catalin.marinas@arm.com, linux@armlinux.org.uk, gregkh@linuxfoundation.org, rafael@kernel.org, viresh.kumar@linaro.org, amitk@kernel.org, daniel.lezcano@linaro.org, amit.kachhap@gmail.com, bjorn.andersson@linaro.org, agross@kernel.org References: <20211103161020.26714-1-lukasz.luba@arm.com> <3cba148a-7077-7b6b-f131-dc65045aa348@arm.com> <9d533b6e-a81c-e823-fa6f-61fdea92fa65@kali.org> From: Thara Gopinath Message-ID: <74ea027b-b213-42b8-0f7d-275f3b84712e@linaro.org> Date: Fri, 5 Nov 2021 15:18:25 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <9d533b6e-a81c-e823-fa6f-61fdea92fa65@kali.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 11/5/21 1:33 PM, Steev Klimaszewski wrote: > Hi, > > On 11/5/21 11:26 AM, Lukasz Luba wrote: >> Hi Steev, >> >> On 11/5/21 3:39 PM, Steev Klimaszewski wrote: >>> Hi Lukasz, >>> >> >> [snip] >> >>> I've been testing this patchset on the Lenovo Yoga C630, and today >>> while compiling alacritty and running an apt-get full-upgrade, I >>> found the following in dmesg output: >> >> Thank you for testing and sending feedback! >> >> Are you using a mainline kernel or you applied on some vendor production >> kernel this patch set? I need to exclude a different code base >> from the equation, especially to the arch_topology.c init code. >> > This is stabe 5.15.0 tree with ~72 (including your 6 patches on top > (including the below as a patch).  You can find it at > https://github.com/steev/linux/commits/linux-5.15.y - the vast majority > are just various fixups for sdm845/sdm850 for the Lenovo Yoga (or crypto > since I'd like to see the crypto unit working). > > I did grep through my logs and it appears that this started after I > moved from v2 to v3 - I'd tested v2 and it didn't show this. > > [snip] > >> [snip] >> >> That's interesting why we hit this. I should have added info about >> those two values, which are compared. >> >> Could you make this change and try it again, please? >> We would know the problematic values, which triggered this. >> ---------------------8<----------------------------------- >> diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c >> index db18d79065fe..0d8db0927041 100644 >> --- a/drivers/base/arch_topology.c >> +++ b/drivers/base/arch_topology.c >> @@ -185,8 +185,11 @@ void topology_update_thermal_pressure(const >> struct cpumask *cpus, >>         /* Convert to MHz scale which is used in 'freq_factor' */ >>         capped_freq /= 1000; >> >> -       if (WARN_ON(max_freq < capped_freq)) >> +       if (max_freq < capped_freq) { >> +               pr_warn("THERMAL_PRESSURE: max_freq (%lu) < >> capped_freq (%lu) for CPUs [%*pbl]\n", >> +                       max_freq, capped_freq, cpumask_pr_args(cpus)); >>                 return; >> +       } >> >>         capacity = mult_frac(capped_freq, max_capacity, max_freq); >> >> ------------------------------>8--------------------------- > > Applying this to the above kernel.. will test... > > >> >> Could you also dump for me the cpufreq and capacity sysfs content? >> $ grep . /sys/devices/system/cpu/cpu*/cpufreq/* > > > /sys/devices/system/cpu/cpu0/cpufreq/affected_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq:300000 > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq:1766400 > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:300000 > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu0/cpufreq/related_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies:300000 403200 > 480000 576000 652800 748800 825600 902400 979200 1056000 1132800 1228800 > 1324800 1420800 1516800 1612800 1689600 1766400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:1766400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq:300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu1/cpufreq/affected_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq:300000 > /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq:1766400 > /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq:300000 > /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu1/cpufreq/related_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_available_frequencies:300000 403200 > 480000 576000 652800 748800 825600 902400 979200 1056000 1132800 1228800 > 1324800 1420800 1516800 1612800 1689600 1766400 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq:300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq:1766400 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq:300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu2/cpufreq/affected_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_cur_freq:300000 > /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq:1766400 > /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_min_freq:300000 > /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu2/cpufreq/related_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_available_frequencies:300000 403200 > 480000 576000 652800 748800 825600 902400 979200 1056000 1132800 1228800 > 1324800 1420800 1516800 1612800 1689600 1766400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq:300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq:1766400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq:300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu3/cpufreq/affected_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_cur_freq:300000 > /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_max_freq:1766400 > /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_min_freq:300000 > /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu3/cpufreq/related_cpus:0 1 2 3 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_available_frequencies:300000 403200 > 480000 576000 652800 748800 825600 902400 979200 1056000 1132800 1228800 > 1324800 1420800 1516800 1612800 1689600 1766400 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq:300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq:1766400 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq:300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu4/cpufreq/affected_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_cur_freq:1920000 > /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq:2956800 > /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_min_freq:825600 > /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu4/cpufreq/related_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_available_frequencies:825600 902400 > 979200 1056000 1209600 1286400 1363200 1459200 1536000 1612800 1689600 > 1766400 1843200 1920000 1996800 2092800 2169600 2246400 2323200 2400000 > 2476800 2553600 2649600 2745600 2841600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu4/cpufreq/scaling_boost_frequencies:2956800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq:1920000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq:2841600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq:825600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu5/cpufreq/affected_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_cur_freq:1996800 > /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq:2956800 > /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_min_freq:825600 > /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu5/cpufreq/related_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_available_frequencies:825600 902400 > 979200 1056000 1209600 1286400 1363200 1459200 1536000 1612800 1689600 > 1766400 1843200 1920000 1996800 2092800 2169600 2246400 2323200 2400000 > 2476800 2553600 2649600 2745600 2841600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu5/cpufreq/scaling_boost_frequencies:2956800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_cur_freq:1996800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq:2841600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq:825600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu6/cpufreq/affected_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_cur_freq:1996800 > /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq:2956800 > /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_min_freq:825600 > /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu6/cpufreq/related_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_available_frequencies:825600 902400 > 979200 1056000 1209600 1286400 1363200 1459200 1536000 1612800 1689600 > 1766400 1843200 1920000 1996800 2092800 2169600 2246400 2323200 2400000 > 2476800 2553600 2649600 2745600 2841600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu6/cpufreq/scaling_boost_frequencies:2956800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_cur_freq:1996800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq:2841600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq:825600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_setspeed: > /sys/devices/system/cpu/cpu7/cpufreq/affected_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_cur_freq:1996800 > /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq:2956800 > /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_min_freq:825600 > /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_transition_latency:0 > /sys/devices/system/cpu/cpu7/cpufreq/related_cpus:4 5 6 7 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_available_frequencies:825600 902400 > 979200 1056000 1209600 1286400 1363200 1459200 1536000 1612800 1689600 > 1766400 1843200 1920000 1996800 2092800 2169600 2246400 2323200 2400000 > 2476800 2553600 2649600 2745600 2841600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_available_governors:ondemand conservative > powersave userspace performance schedutil > /sys/devices/system/cpu/cpu7/cpufreq/scaling_boost_frequencies:2956800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_cur_freq:1996800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_driver:qcom-cpufreq-hw > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor:schedutil > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq:2841600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq:825600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_setspeed: > > >> $ grep . /sys/devices/system/cpu/cpu*/cpu_capacity > > /sys/devices/system/cpu/cpu0/cpu_capacity:377 > /sys/devices/system/cpu/cpu1/cpu_capacity:377 > /sys/devices/system/cpu/cpu2/cpu_capacity:377 > /sys/devices/system/cpu/cpu3/cpu_capacity:377 > /sys/devices/system/cpu/cpu4/cpu_capacity:1024 > /sys/devices/system/cpu/cpu5/cpu_capacity:1024 > /sys/devices/system/cpu/cpu6/cpu_capacity:1024 > /sys/devices/system/cpu/cpu7/cpu_capacity:1024 > > > In taking a look at cpufreq-info, one thing I noticed is that even > though I have 1 in /sys/devices/system/cpu/cpufreq/boost, I am *never* > hitting the 2.96GHz now > > cpufreq stats: 826 MHz:59.14%, 902 MHz:0.15%, 979 MHz:0.18%, 1.06 > GHz:0.11%, 1.21 GHz:0.49%, 1.29 GHz:0.26%, 1.36 GHz:0.12%, 1.46 > GHz:0.23%, 1.54 GHz:0.10%, 1.61 GHz:0.14%, 1.69 GHz:0.09%, 1.77 > GHz:0.28%, 1.84 GHz:0.64%, 1.92 GHz:0.23%, 2.00 GHz:0.05%, 2.09 > GHz:0.05%, 2.17 GHz:0.03%, 2.25 GHz:0.03%, 2.32 GHz:0.03%, 2.40 > GHz:0.03%, 2.48 GHz:0.02%, 2.55 GHz:0.02%, 2.65 GHz:0.03%, 2.75 > GHz:0.03%, 2.84 GHz:37.53%, 2.96 GHz:0.00%  (20854) > > Aaaand it looks like that is part of the deal - with your patch from > above applied, we get: > > [   22.487268] THERMAL_PRESSURE: max_freq(2841) < capped_freq(2956) for > CPUs [4-7] > [   22.487313] THERMAL_PRESSURE: max_freq(2841) < capped_freq(2956) for > CPUs [4-7] > [   22.508642] THERMAL_PRESSURE: max_freq(2841) < capped_freq(2956) for > CPUs [4-7] > [   22.552273] THERMAL_PRESSURE: max_freq(2841) < capped_freq(2956) for > CPUs [4-7] > > So, we're not able to hit boost frequencies with this applied? Hi Steve, Does your system have enough load to hit the boost frequencies ? I don't think this patch should affect hitting boost frequencies as there is no error being returned from topology_update_thermal_pressure. The warning you are getting is because you have boost frequency enabled and IIUC lmh enabled and thermal pressure framework bails out due to boost_frequency being greater than what is available in per_cpu freq_factor. This is because we do not recalculate freq_factor every time boost is enabled / disabled. IIRC there were some discussions around rebuilding scheduler domains and capacity with user space changes to max frequency but it has never proceeded much. Till that point, I think the right way, is to check whether the new capcity exceeds the max_capacity of the cpu and if yes use max_capacity in lieu of new_capacity to calculate thermal pressure. > > Thank you for the fast response! > > -- steev > -- Warm Regards Thara (She/Her/Hers) 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 304D8C433F5 for ; Fri, 5 Nov 2021 19:20:08 +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 EABB961052 for ; Fri, 5 Nov 2021 19:20:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org EABB961052 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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=JxTmpyyjdptrOb/D3fq/Ol3wFWXfg9vlNn77C7fovfw=; b=sU9Et/u3rip+6QlbnpsQ3CGGvQ JWHge5ivLn8vGE4zyQpSnHXONwSYMZfw2pC3+rGOQ7YF1Sxswp9jxAS+NvDbMmmteJkifi4PuTzO4 RZM1Xe1ukixub0VmlQ9qzzqOOckZ3GYlFeH/uF0ADYV5l830o+uy2aIgqfJe1zceo1hbnZqA57CU3 6m8DMPdz6smzWJ4OFr+9Se5NgPUHqF5OSrqbiK9Qk6ZZma5Mm+4gh2TMR2xrgYZ3rSMhOlqnJsWyX kHazpeWgAMU420YM2UdQSpPA93BMcKTx6I051I8KsDPBwP/FY7hPA44RFKQyacUS9/F3Ogh20ws+L dSla+C7Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mj4jT-00CC9o-9R; Fri, 05 Nov 2021 19:18:35 +0000 Received: from mail-qv1-xf34.google.com ([2607:f8b0:4864:20::f34]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mj4jO-00CC8X-BV for linux-arm-kernel@lists.infradead.org; Fri, 05 Nov 2021 19:18:32 +0000 Received: by mail-qv1-xf34.google.com with SMTP id s9so7907682qvk.12 for ; Fri, 05 Nov 2021 12:18:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=nMArXgyRFwIr/sExIAj6beitEUrgpBOeYC39dRrZA5I=; b=AdQbRzdKfXwzzyLDgZX1CPfVluGPIImeOYdxUdUmoANKwSq3VVvIoI6kyaAnAr41G9 eTMia7SAgT3ntSLmMnLcARVktjoaB/URXjZczXxIX2Pdqe2ZslrTJVRQmNWClpL8qVc7 GN4c7/Y4RX54uVCw03hywLK5VA1muBsdKTKK4sii0WmCQTf2H4TKV/ZMVfRa7MPOPEVG 2NafwD/0nNIfv++HAVDmLCC5IsRosfK/J0dgzQunzRqeruyXGa31dblkvYtfnB020zME dVUWUQ40aTvWgDngz9rc9/k8CfErRWkpKG3NnnVTcS5P8qeXI3ey09AFVq94lvQu1V5f TDBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=nMArXgyRFwIr/sExIAj6beitEUrgpBOeYC39dRrZA5I=; b=tRtskaTtACDUsmAC63qkEqAdKejYAo/9qeNZg4/x4tB7Gp+CVG6Bat0d08nHe7bTUZ 2fszMVI0nXsBLFnOx88FIrytekAW2QAwXWA1MNV2y6nhXDg1a4mTI3pcKb02DBvJqhzX 551G8rrHV8iy/83EbGMj3QDR2DuEKeCRjbezObmcLkCGq7KDxjQZypqgvpZx3m1X5seg e2bF97Gx670CaF51GPWWOTpyRih0JzLF9MI9W6rUBzo79wlfc/BfodBUdqAo1rvVB/2X Z1n4p4/kBKHfohXBEj+CO5+o0vt/7ZaiXWoZdn2fGcE34KO1Udb3sQXNIsocOB5uDVDR uGAA== X-Gm-Message-State: AOAM532Z9VTsqOzvzpyX48kAjHdxBfAzn+GOaf+ezIDINglzNVooe6UE 0fzbINNz/esN1GQfwXJEKdbQEw== X-Google-Smtp-Source: ABdhPJwwN/1wpc/53ZbKLojNDqoWojpqgZ3ZfuRwqRFO27IFWzyS158WAM1g+eoCD7u2bFewNr246g== X-Received: by 2002:a05:6214:2429:: with SMTP id gy9mr10334015qvb.36.1636139906623; Fri, 05 Nov 2021 12:18:26 -0700 (PDT) Received: from [192.168.1.93] (pool-71-163-245-5.washdc.fios.verizon.net. [71.163.245.5]) by smtp.gmail.com with ESMTPSA id d203sm1001287qke.37.2021.11.05.12.18.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Nov 2021 12:18:25 -0700 (PDT) Subject: Re: [PATCH v3 0/5] Refactor thermal pressure update to avoid code duplication To: Steev Klimaszewski , Lukasz Luba Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, sudeep.holla@arm.com, will@kernel.org, catalin.marinas@arm.com, linux@armlinux.org.uk, gregkh@linuxfoundation.org, rafael@kernel.org, viresh.kumar@linaro.org, amitk@kernel.org, daniel.lezcano@linaro.org, amit.kachhap@gmail.com, bjorn.andersson@linaro.org, agross@kernel.org References: <20211103161020.26714-1-lukasz.luba@arm.com> <3cba148a-7077-7b6b-f131-dc65045aa348@arm.com> <9d533b6e-a81c-e823-fa6f-61fdea92fa65@kali.org> From: Thara Gopinath Message-ID: <74ea027b-b213-42b8-0f7d-275f3b84712e@linaro.org> Date: Fri, 5 Nov 2021 15:18:25 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <9d533b6e-a81c-e823-fa6f-61fdea92fa65@kali.org> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211105_121830_437472_FA80B47E X-CRM114-Status: GOOD ( 27.63 ) 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 CgpPbiAxMS81LzIxIDE6MzMgUE0sIFN0ZWV2IEtsaW1hc3pld3NraSB3cm90ZToKPiBIaSwKPiAK PiBPbiAxMS81LzIxIDExOjI2IEFNLCBMdWthc3ogTHViYSB3cm90ZToKPj4gSGkgU3RlZXYsCj4+ Cj4+IE9uIDExLzUvMjEgMzozOSBQTSwgU3RlZXYgS2xpbWFzemV3c2tpIHdyb3RlOgo+Pj4gSGkg THVrYXN6LAo+Pj4KPj4KPj4gW3NuaXBdCj4+Cj4+PiBJJ3ZlIGJlZW4gdGVzdGluZyB0aGlzIHBh dGNoc2V0IG9uIHRoZSBMZW5vdm8gWW9nYSBDNjMwLCBhbmQgdG9kYXkgCj4+PiB3aGlsZSBjb21w aWxpbmcgYWxhY3JpdHR5IGFuZCBydW5uaW5nIGFuIGFwdC1nZXQgZnVsbC11cGdyYWRlLCBJIAo+ Pj4gZm91bmQgdGhlIGZvbGxvd2luZyBpbiBkbWVzZyBvdXRwdXQ6Cj4+Cj4+IFRoYW5rIHlvdSBm b3IgdGVzdGluZyBhbmQgc2VuZGluZyBmZWVkYmFjayEKPj4KPj4gQXJlIHlvdSB1c2luZyBhIG1h aW5saW5lIGtlcm5lbCBvciB5b3UgYXBwbGllZCBvbiBzb21lIHZlbmRvciBwcm9kdWN0aW9uCj4+ IGtlcm5lbCB0aGlzIHBhdGNoIHNldD8gSSBuZWVkIHRvIGV4Y2x1ZGUgYSBkaWZmZXJlbnQgY29k ZSBiYXNlCj4+IGZyb20gdGhlIGVxdWF0aW9uLCBlc3BlY2lhbGx5IHRvIHRoZSBhcmNoX3RvcG9s b2d5LmMgaW5pdCBjb2RlLgo+Pgo+IFRoaXMgaXMgc3RhYmUgNS4xNS4wIHRyZWUgd2l0aCB+NzIg KGluY2x1ZGluZyB5b3VyIDYgcGF0Y2hlcyBvbiB0b3AgCj4gKGluY2x1ZGluZyB0aGUgYmVsb3cg YXMgYSBwYXRjaCkuwqAgWW91IGNhbiBmaW5kIGl0IGF0IAo+IGh0dHBzOi8vZ2l0aHViLmNvbS9z dGVldi9saW51eC9jb21taXRzL2xpbnV4LTUuMTUueSAtIHRoZSB2YXN0IG1ham9yaXR5IAo+IGFy ZSBqdXN0IHZhcmlvdXMgZml4dXBzIGZvciBzZG04NDUvc2RtODUwIGZvciB0aGUgTGVub3ZvIFlv Z2EgKG9yIGNyeXB0byAKPiBzaW5jZSBJJ2QgbGlrZSB0byBzZWUgdGhlIGNyeXB0byB1bml0IHdv cmtpbmcpLgo+IAo+IEkgZGlkIGdyZXAgdGhyb3VnaCBteSBsb2dzIGFuZCBpdCBhcHBlYXJzIHRo YXQgdGhpcyBzdGFydGVkIGFmdGVyIEkgCj4gbW92ZWQgZnJvbSB2MiB0byB2MyAtIEknZCB0ZXN0 ZWQgdjIgYW5kIGl0IGRpZG4ndCBzaG93IHRoaXMuCj4gCj4gW3NuaXBdCj4gCj4+IFtzbmlwXQo+ Pgo+PiBUaGF0J3MgaW50ZXJlc3Rpbmcgd2h5IHdlIGhpdCB0aGlzLiBJIHNob3VsZCBoYXZlIGFk ZGVkIGluZm8gYWJvdXQKPj4gdGhvc2UgdHdvIHZhbHVlcywgd2hpY2ggYXJlIGNvbXBhcmVkLgo+ Pgo+PiBDb3VsZCB5b3UgbWFrZSB0aGlzIGNoYW5nZSBhbmQgdHJ5IGl0IGFnYWluLCBwbGVhc2U/ Cj4+IFdlIHdvdWxkIGtub3cgdGhlIHByb2JsZW1hdGljIHZhbHVlcywgd2hpY2ggdHJpZ2dlcmVk IHRoaXMuCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLTg8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9hcmNoX3RvcG9sb2d5LmMg Yi9kcml2ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5jCj4+IGluZGV4IGRiMThkNzkwNjVmZS4uMGQ4 ZGIwOTI3MDQxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5jCj4+ ICsrKyBiL2RyaXZlcnMvYmFzZS9hcmNoX3RvcG9sb2d5LmMKPj4gQEAgLTE4NSw4ICsxODUsMTEg QEAgdm9pZCB0b3BvbG9neV91cGRhdGVfdGhlcm1hbF9wcmVzc3VyZShjb25zdCAKPj4gc3RydWN0 IGNwdW1hc2sgKmNwdXMsCj4+IMKgwqDCoMKgwqDCoMKgIC8qIENvbnZlcnQgdG8gTUh6IHNjYWxl IHdoaWNoIGlzIHVzZWQgaW4gJ2ZyZXFfZmFjdG9yJyAqLwo+PiDCoMKgwqDCoMKgwqDCoCBjYXBw ZWRfZnJlcSAvPSAxMDAwOwo+Pgo+PiAtwqDCoMKgwqDCoMKgIGlmIChXQVJOX09OKG1heF9mcmVx IDwgY2FwcGVkX2ZyZXEpKQo+PiArwqDCoMKgwqDCoMKgIGlmIChtYXhfZnJlcSA8IGNhcHBlZF9m cmVxKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX3dhcm4oIlRIRVJNQUxf UFJFU1NVUkU6IG1heF9mcmVxICglbHUpIDwgCj4+IGNhcHBlZF9mcmVxICglbHUpIGZvciBDUFVz IFslKnBibF1cbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBtYXhfZnJlcSwgY2FwcGVkX2ZyZXEsIGNwdW1hc2tfcHJfYXJncyhjcHVzKSk7Cj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqDCoMKgwqAgfQo+ Pgo+PiDCoMKgwqDCoMKgwqDCoCBjYXBhY2l0eSA9IG11bHRfZnJhYyhjYXBwZWRfZnJlcSwgbWF4 X2NhcGFjaXR5LCBtYXhfZnJlcSk7Cj4+Cj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LT44LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gCj4gQXBwbHlpbmcgdGhpcyB0byB0aGUg YWJvdmUga2VybmVsLi4gd2lsbCB0ZXN0Li4uCj4gCj4gCj4+Cj4+IENvdWxkIHlvdSBhbHNvIGR1 bXAgZm9yIG1lIHRoZSBjcHVmcmVxIGFuZCBjYXBhY2l0eSBzeXNmcyBjb250ZW50Pwo+PiAkIGdy ZXAgLiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUqL2NwdWZyZXEvKgo+IAo+IAo+IC9zeXMv ZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9hZmZlY3RlZF9jcHVzOjAgMSAyIDMKPiAv c3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvY3B1aW5mb19jdXJfZnJlcTozMDAw MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvY3B1aW5mb19tYXhfZnJl cToxNzY2NDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL2NwdWluZm9f bWluX2ZyZXE6MzAwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL2Nw dWluZm9fdHJhbnNpdGlvbl9sYXRlbmN5OjAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUw L2NwdWZyZXEvcmVsYXRlZF9jcHVzOjAgMSAyIDMKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9j cHUwL2NwdWZyZXEvc2NhbGluZ19hdmFpbGFibGVfZnJlcXVlbmNpZXM6MzAwMDAwIDQwMzIwMCAK PiA0ODAwMDAgNTc2MDAwIDY1MjgwMCA3NDg4MDAgODI1NjAwIDkwMjQwMCA5NzkyMDAgMTA1NjAw MCAxMTMyODAwIDEyMjg4MDAgCj4gMTMyNDgwMCAxNDIwODAwIDE1MTY4MDAgMTYxMjgwMCAxNjg5 NjAwIDE3NjY0MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvc2NhbGlu Z19hdmFpbGFibGVfZ292ZXJub3JzOm9uZGVtYW5kIGNvbnNlcnZhdGl2ZSAKPiBwb3dlcnNhdmUg dXNlcnNwYWNlIHBlcmZvcm1hbmNlIHNjaGVkdXRpbAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1 L2NwdTAvY3B1ZnJlcS9zY2FsaW5nX2N1cl9mcmVxOjMwMDAwMAo+IC9zeXMvZGV2aWNlcy9zeXN0 ZW0vY3B1L2NwdTAvY3B1ZnJlcS9zY2FsaW5nX2RyaXZlcjpxY29tLWNwdWZyZXEtaHcKPiAvc3lz L2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvc2NhbGluZ19nb3Zlcm5vcjpzY2hlZHV0 aWwKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvc2NhbGluZ19tYXhfZnJl cToxNzY2NDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3NjYWxpbmdf bWluX2ZyZXE6MzAwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3Nj YWxpbmdfc2V0c3BlZWQ6PHVuc3VwcG9ydGVkPgo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2Nw dTEvY3B1ZnJlcS9hZmZlY3RlZF9jcHVzOjAgMSAyIDMKPiAvc3lzL2RldmljZXMvc3lzdGVtL2Nw dS9jcHUxL2NwdWZyZXEvY3B1aW5mb19jdXJfZnJlcTozMDAwMDAKPiAvc3lzL2RldmljZXMvc3lz dGVtL2NwdS9jcHUxL2NwdWZyZXEvY3B1aW5mb19tYXhfZnJlcToxNzY2NDAwCj4gL3N5cy9kZXZp Y2VzL3N5c3RlbS9jcHUvY3B1MS9jcHVmcmVxL2NwdWluZm9fbWluX2ZyZXE6MzAwMDAwCj4gL3N5 cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MS9jcHVmcmVxL2NwdWluZm9fdHJhbnNpdGlvbl9sYXRl bmN5OjAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUxL2NwdWZyZXEvcmVsYXRlZF9jcHVz OjAgMSAyIDMKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUxL2NwdWZyZXEvc2NhbGluZ19h dmFpbGFibGVfZnJlcXVlbmNpZXM6MzAwMDAwIDQwMzIwMCAKPiA0ODAwMDAgNTc2MDAwIDY1Mjgw MCA3NDg4MDAgODI1NjAwIDkwMjQwMCA5NzkyMDAgMTA1NjAwMCAxMTMyODAwIDEyMjg4MDAgCj4g MTMyNDgwMCAxNDIwODAwIDE1MTY4MDAgMTYxMjgwMCAxNjg5NjAwIDE3NjY0MDAKPiAvc3lzL2Rl dmljZXMvc3lzdGVtL2NwdS9jcHUxL2NwdWZyZXEvc2NhbGluZ19hdmFpbGFibGVfZ292ZXJub3Jz Om9uZGVtYW5kIGNvbnNlcnZhdGl2ZSAKPiBwb3dlcnNhdmUgdXNlcnNwYWNlIHBlcmZvcm1hbmNl IHNjaGVkdXRpbAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTEvY3B1ZnJlcS9zY2FsaW5n X2N1cl9mcmVxOjMwMDAwMAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTEvY3B1ZnJlcS9z Y2FsaW5nX2RyaXZlcjpxY29tLWNwdWZyZXEtaHcKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9j cHUxL2NwdWZyZXEvc2NhbGluZ19nb3Zlcm5vcjpzY2hlZHV0aWwKPiAvc3lzL2RldmljZXMvc3lz dGVtL2NwdS9jcHUxL2NwdWZyZXEvc2NhbGluZ19tYXhfZnJlcToxNzY2NDAwCj4gL3N5cy9kZXZp Y2VzL3N5c3RlbS9jcHUvY3B1MS9jcHVmcmVxL3NjYWxpbmdfbWluX2ZyZXE6MzAwMDAwCj4gL3N5 cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MS9jcHVmcmVxL3NjYWxpbmdfc2V0c3BlZWQ6PHVuc3Vw cG9ydGVkPgo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTIvY3B1ZnJlcS9hZmZlY3RlZF9j cHVzOjAgMSAyIDMKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL2NwdWZyZXEvY3B1aW5m b19jdXJfZnJlcTozMDAwMDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL2NwdWZyZXEv Y3B1aW5mb19tYXhfZnJlcToxNzY2NDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Mi9j cHVmcmVxL2NwdWluZm9fbWluX2ZyZXE6MzAwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUv Y3B1Mi9jcHVmcmVxL2NwdWluZm9fdHJhbnNpdGlvbl9sYXRlbmN5OjAKPiAvc3lzL2RldmljZXMv c3lzdGVtL2NwdS9jcHUyL2NwdWZyZXEvcmVsYXRlZF9jcHVzOjAgMSAyIDMKPiAvc3lzL2Rldmlj ZXMvc3lzdGVtL2NwdS9jcHUyL2NwdWZyZXEvc2NhbGluZ19hdmFpbGFibGVfZnJlcXVlbmNpZXM6 MzAwMDAwIDQwMzIwMCAKPiA0ODAwMDAgNTc2MDAwIDY1MjgwMCA3NDg4MDAgODI1NjAwIDkwMjQw MCA5NzkyMDAgMTA1NjAwMCAxMTMyODAwIDEyMjg4MDAgCj4gMTMyNDgwMCAxNDIwODAwIDE1MTY4 MDAgMTYxMjgwMCAxNjg5NjAwIDE3NjY0MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUy L2NwdWZyZXEvc2NhbGluZ19hdmFpbGFibGVfZ292ZXJub3JzOm9uZGVtYW5kIGNvbnNlcnZhdGl2 ZSAKPiBwb3dlcnNhdmUgdXNlcnNwYWNlIHBlcmZvcm1hbmNlIHNjaGVkdXRpbAo+IC9zeXMvZGV2 aWNlcy9zeXN0ZW0vY3B1L2NwdTIvY3B1ZnJlcS9zY2FsaW5nX2N1cl9mcmVxOjMwMDAwMAo+IC9z eXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTIvY3B1ZnJlcS9zY2FsaW5nX2RyaXZlcjpxY29tLWNw dWZyZXEtaHcKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL2NwdWZyZXEvc2NhbGluZ19n b3Zlcm5vcjpzY2hlZHV0aWwKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUyL2NwdWZyZXEv c2NhbGluZ19tYXhfZnJlcToxNzY2NDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Mi9j cHVmcmVxL3NjYWxpbmdfbWluX2ZyZXE6MzAwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUv Y3B1Mi9jcHVmcmVxL3NjYWxpbmdfc2V0c3BlZWQ6PHVuc3VwcG9ydGVkPgo+IC9zeXMvZGV2aWNl cy9zeXN0ZW0vY3B1L2NwdTMvY3B1ZnJlcS9hZmZlY3RlZF9jcHVzOjAgMSAyIDMKPiAvc3lzL2Rl dmljZXMvc3lzdGVtL2NwdS9jcHUzL2NwdWZyZXEvY3B1aW5mb19jdXJfZnJlcTozMDAwMDAKPiAv c3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL2NwdWZyZXEvY3B1aW5mb19tYXhfZnJlcToxNzY2 NDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1My9jcHVmcmVxL2NwdWluZm9fbWluX2Zy ZXE6MzAwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1My9jcHVmcmVxL2NwdWluZm9f dHJhbnNpdGlvbl9sYXRlbmN5OjAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL2NwdWZy ZXEvcmVsYXRlZF9jcHVzOjAgMSAyIDMKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL2Nw dWZyZXEvc2NhbGluZ19hdmFpbGFibGVfZnJlcXVlbmNpZXM6MzAwMDAwIDQwMzIwMCAKPiA0ODAw MDAgNTc2MDAwIDY1MjgwMCA3NDg4MDAgODI1NjAwIDkwMjQwMCA5NzkyMDAgMTA1NjAwMCAxMTMy ODAwIDEyMjg4MDAgCj4gMTMyNDgwMCAxNDIwODAwIDE1MTY4MDAgMTYxMjgwMCAxNjg5NjAwIDE3 NjY0MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL2NwdWZyZXEvc2NhbGluZ19hdmFp bGFibGVfZ292ZXJub3JzOm9uZGVtYW5kIGNvbnNlcnZhdGl2ZSAKPiBwb3dlcnNhdmUgdXNlcnNw YWNlIHBlcmZvcm1hbmNlIHNjaGVkdXRpbAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTMv Y3B1ZnJlcS9zY2FsaW5nX2N1cl9mcmVxOjMwMDAwMAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1 L2NwdTMvY3B1ZnJlcS9zY2FsaW5nX2RyaXZlcjpxY29tLWNwdWZyZXEtaHcKPiAvc3lzL2Rldmlj ZXMvc3lzdGVtL2NwdS9jcHUzL2NwdWZyZXEvc2NhbGluZ19nb3Zlcm5vcjpzY2hlZHV0aWwKPiAv c3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUzL2NwdWZyZXEvc2NhbGluZ19tYXhfZnJlcToxNzY2 NDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1My9jcHVmcmVxL3NjYWxpbmdfbWluX2Zy ZXE6MzAwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1My9jcHVmcmVxL3NjYWxpbmdf c2V0c3BlZWQ6PHVuc3VwcG9ydGVkPgo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTQvY3B1 ZnJlcS9hZmZlY3RlZF9jcHVzOjQgNSA2IDcKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU0 L2NwdWZyZXEvY3B1aW5mb19jdXJfZnJlcToxOTIwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9j cHUvY3B1NC9jcHVmcmVxL2NwdWluZm9fbWF4X2ZyZXE6Mjk1NjgwMAo+IC9zeXMvZGV2aWNlcy9z eXN0ZW0vY3B1L2NwdTQvY3B1ZnJlcS9jcHVpbmZvX21pbl9mcmVxOjgyNTYwMAo+IC9zeXMvZGV2 aWNlcy9zeXN0ZW0vY3B1L2NwdTQvY3B1ZnJlcS9jcHVpbmZvX3RyYW5zaXRpb25fbGF0ZW5jeTow Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NC9jcHVmcmVxL3JlbGF0ZWRfY3B1czo0IDUg NiA3Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NC9jcHVmcmVxL3NjYWxpbmdfYXZhaWxh YmxlX2ZyZXF1ZW5jaWVzOjgyNTYwMCA5MDI0MDAgCj4gOTc5MjAwIDEwNTYwMDAgMTIwOTYwMCAx Mjg2NDAwIDEzNjMyMDAgMTQ1OTIwMCAxNTM2MDAwIDE2MTI4MDAgMTY4OTYwMCAKPiAxNzY2NDAw IDE4NDMyMDAgMTkyMDAwMCAxOTk2ODAwIDIwOTI4MDAgMjE2OTYwMCAyMjQ2NDAwIDIzMjMyMDAg MjQwMDAwMCAKPiAyNDc2ODAwIDI1NTM2MDAgMjY0OTYwMCAyNzQ1NjAwIDI4NDE2MDAKPiAvc3lz L2RldmljZXMvc3lzdGVtL2NwdS9jcHU0L2NwdWZyZXEvc2NhbGluZ19hdmFpbGFibGVfZ292ZXJu b3JzOm9uZGVtYW5kIGNvbnNlcnZhdGl2ZSAKPiBwb3dlcnNhdmUgdXNlcnNwYWNlIHBlcmZvcm1h bmNlIHNjaGVkdXRpbAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTQvY3B1ZnJlcS9zY2Fs aW5nX2Jvb3N0X2ZyZXF1ZW5jaWVzOjI5NTY4MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9j cHU0L2NwdWZyZXEvc2NhbGluZ19jdXJfZnJlcToxOTIwMDAwCj4gL3N5cy9kZXZpY2VzL3N5c3Rl bS9jcHUvY3B1NC9jcHVmcmVxL3NjYWxpbmdfZHJpdmVyOnFjb20tY3B1ZnJlcS1odwo+IC9zeXMv ZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTQvY3B1ZnJlcS9zY2FsaW5nX2dvdmVybm9yOnNjaGVkdXRp bAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTQvY3B1ZnJlcS9zY2FsaW5nX21heF9mcmVx OjI4NDE2MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU0L2NwdWZyZXEvc2NhbGluZ19t aW5fZnJlcTo4MjU2MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU0L2NwdWZyZXEvc2Nh bGluZ19zZXRzcGVlZDo8dW5zdXBwb3J0ZWQ+Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1 NS9jcHVmcmVxL2FmZmVjdGVkX2NwdXM6NCA1IDYgNwo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1 L2NwdTUvY3B1ZnJlcS9jcHVpbmZvX2N1cl9mcmVxOjE5OTY4MDAKPiAvc3lzL2RldmljZXMvc3lz dGVtL2NwdS9jcHU1L2NwdWZyZXEvY3B1aW5mb19tYXhfZnJlcToyOTU2ODAwCj4gL3N5cy9kZXZp Y2VzL3N5c3RlbS9jcHUvY3B1NS9jcHVmcmVxL2NwdWluZm9fbWluX2ZyZXE6ODI1NjAwCj4gL3N5 cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NS9jcHVmcmVxL2NwdWluZm9fdHJhbnNpdGlvbl9sYXRl bmN5OjAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU1L2NwdWZyZXEvcmVsYXRlZF9jcHVz OjQgNSA2IDcKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU1L2NwdWZyZXEvc2NhbGluZ19h dmFpbGFibGVfZnJlcXVlbmNpZXM6ODI1NjAwIDkwMjQwMCAKPiA5NzkyMDAgMTA1NjAwMCAxMjA5 NjAwIDEyODY0MDAgMTM2MzIwMCAxNDU5MjAwIDE1MzYwMDAgMTYxMjgwMCAxNjg5NjAwIAo+IDE3 NjY0MDAgMTg0MzIwMCAxOTIwMDAwIDE5OTY4MDAgMjA5MjgwMCAyMTY5NjAwIDIyNDY0MDAgMjMy MzIwMCAyNDAwMDAwIAo+IDI0NzY4MDAgMjU1MzYwMCAyNjQ5NjAwIDI3NDU2MDAgMjg0MTYwMAo+ IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTUvY3B1ZnJlcS9zY2FsaW5nX2F2YWlsYWJsZV9n b3Zlcm5vcnM6b25kZW1hbmQgY29uc2VydmF0aXZlIAo+IHBvd2Vyc2F2ZSB1c2Vyc3BhY2UgcGVy Zm9ybWFuY2Ugc2NoZWR1dGlsCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NS9jcHVmcmVx L3NjYWxpbmdfYm9vc3RfZnJlcXVlbmNpZXM6Mjk1NjgwMAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0v Y3B1L2NwdTUvY3B1ZnJlcS9zY2FsaW5nX2N1cl9mcmVxOjE5OTY4MDAKPiAvc3lzL2RldmljZXMv c3lzdGVtL2NwdS9jcHU1L2NwdWZyZXEvc2NhbGluZ19kcml2ZXI6cWNvbS1jcHVmcmVxLWh3Cj4g L3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NS9jcHVmcmVxL3NjYWxpbmdfZ292ZXJub3I6c2No ZWR1dGlsCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NS9jcHVmcmVxL3NjYWxpbmdfbWF4 X2ZyZXE6Mjg0MTYwMAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTUvY3B1ZnJlcS9zY2Fs aW5nX21pbl9mcmVxOjgyNTYwMAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTUvY3B1ZnJl cS9zY2FsaW5nX3NldHNwZWVkOjx1bnN1cHBvcnRlZD4KPiAvc3lzL2RldmljZXMvc3lzdGVtL2Nw dS9jcHU2L2NwdWZyZXEvYWZmZWN0ZWRfY3B1czo0IDUgNiA3Cj4gL3N5cy9kZXZpY2VzL3N5c3Rl bS9jcHUvY3B1Ni9jcHVmcmVxL2NwdWluZm9fY3VyX2ZyZXE6MTk5NjgwMAo+IC9zeXMvZGV2aWNl cy9zeXN0ZW0vY3B1L2NwdTYvY3B1ZnJlcS9jcHVpbmZvX21heF9mcmVxOjI5NTY4MDAKPiAvc3lz L2RldmljZXMvc3lzdGVtL2NwdS9jcHU2L2NwdWZyZXEvY3B1aW5mb19taW5fZnJlcTo4MjU2MDAK PiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU2L2NwdWZyZXEvY3B1aW5mb190cmFuc2l0aW9u X2xhdGVuY3k6MAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTYvY3B1ZnJlcS9yZWxhdGVk X2NwdXM6NCA1IDYgNwo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTYvY3B1ZnJlcS9zY2Fs aW5nX2F2YWlsYWJsZV9mcmVxdWVuY2llczo4MjU2MDAgOTAyNDAwIAo+IDk3OTIwMCAxMDU2MDAw IDEyMDk2MDAgMTI4NjQwMCAxMzYzMjAwIDE0NTkyMDAgMTUzNjAwMCAxNjEyODAwIDE2ODk2MDAg Cj4gMTc2NjQwMCAxODQzMjAwIDE5MjAwMDAgMTk5NjgwMCAyMDkyODAwIDIxNjk2MDAgMjI0NjQw MCAyMzIzMjAwIDI0MDAwMDAgCj4gMjQ3NjgwMCAyNTUzNjAwIDI2NDk2MDAgMjc0NTYwMCAyODQx NjAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ni9jcHVmcmVxL3NjYWxpbmdfYXZhaWxh YmxlX2dvdmVybm9yczpvbmRlbWFuZCBjb25zZXJ2YXRpdmUgCj4gcG93ZXJzYXZlIHVzZXJzcGFj ZSBwZXJmb3JtYW5jZSBzY2hlZHV0aWwKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU2L2Nw dWZyZXEvc2NhbGluZ19ib29zdF9mcmVxdWVuY2llczoyOTU2ODAwCj4gL3N5cy9kZXZpY2VzL3N5 c3RlbS9jcHUvY3B1Ni9jcHVmcmVxL3NjYWxpbmdfY3VyX2ZyZXE6MTk5NjgwMAo+IC9zeXMvZGV2 aWNlcy9zeXN0ZW0vY3B1L2NwdTYvY3B1ZnJlcS9zY2FsaW5nX2RyaXZlcjpxY29tLWNwdWZyZXEt aHcKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU2L2NwdWZyZXEvc2NhbGluZ19nb3Zlcm5v cjpzY2hlZHV0aWwKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU2L2NwdWZyZXEvc2NhbGlu Z19tYXhfZnJlcToyODQxNjAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ni9jcHVmcmVx L3NjYWxpbmdfbWluX2ZyZXE6ODI1NjAwCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ni9j cHVmcmVxL3NjYWxpbmdfc2V0c3BlZWQ6PHVuc3VwcG9ydGVkPgo+IC9zeXMvZGV2aWNlcy9zeXN0 ZW0vY3B1L2NwdTcvY3B1ZnJlcS9hZmZlY3RlZF9jcHVzOjQgNSA2IDcKPiAvc3lzL2RldmljZXMv c3lzdGVtL2NwdS9jcHU3L2NwdWZyZXEvY3B1aW5mb19jdXJfZnJlcToxOTk2ODAwCj4gL3N5cy9k ZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ny9jcHVmcmVxL2NwdWluZm9fbWF4X2ZyZXE6Mjk1NjgwMAo+ IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTcvY3B1ZnJlcS9jcHVpbmZvX21pbl9mcmVxOjgy NTYwMAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTcvY3B1ZnJlcS9jcHVpbmZvX3RyYW5z aXRpb25fbGF0ZW5jeTowCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ny9jcHVmcmVxL3Jl bGF0ZWRfY3B1czo0IDUgNiA3Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ny9jcHVmcmVx L3NjYWxpbmdfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzOjgyNTYwMCA5MDI0MDAgCj4gOTc5MjAwIDEw NTYwMDAgMTIwOTYwMCAxMjg2NDAwIDEzNjMyMDAgMTQ1OTIwMCAxNTM2MDAwIDE2MTI4MDAgMTY4 OTYwMCAKPiAxNzY2NDAwIDE4NDMyMDAgMTkyMDAwMCAxOTk2ODAwIDIwOTI4MDAgMjE2OTYwMCAy MjQ2NDAwIDIzMjMyMDAgMjQwMDAwMCAKPiAyNDc2ODAwIDI1NTM2MDAgMjY0OTYwMCAyNzQ1NjAw IDI4NDE2MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU3L2NwdWZyZXEvc2NhbGluZ19h dmFpbGFibGVfZ292ZXJub3JzOm9uZGVtYW5kIGNvbnNlcnZhdGl2ZSAKPiBwb3dlcnNhdmUgdXNl cnNwYWNlIHBlcmZvcm1hbmNlIHNjaGVkdXRpbAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2Nw dTcvY3B1ZnJlcS9zY2FsaW5nX2Jvb3N0X2ZyZXF1ZW5jaWVzOjI5NTY4MDAKPiAvc3lzL2Rldmlj ZXMvc3lzdGVtL2NwdS9jcHU3L2NwdWZyZXEvc2NhbGluZ19jdXJfZnJlcToxOTk2ODAwCj4gL3N5 cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ny9jcHVmcmVxL3NjYWxpbmdfZHJpdmVyOnFjb20tY3B1 ZnJlcS1odwo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTcvY3B1ZnJlcS9zY2FsaW5nX2dv dmVybm9yOnNjaGVkdXRpbAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTcvY3B1ZnJlcS9z Y2FsaW5nX21heF9mcmVxOjI4NDE2MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU3L2Nw dWZyZXEvc2NhbGluZ19taW5fZnJlcTo4MjU2MDAKPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9j cHU3L2NwdWZyZXEvc2NhbGluZ19zZXRzcGVlZDo8dW5zdXBwb3J0ZWQ+Cj4gCj4gCj4+ICQgZ3Jl cCAuIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSovY3B1X2NhcGFjaXR5Cj4gCj4gL3N5cy9k ZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVfY2FwYWNpdHk6Mzc3Cj4gL3N5cy9kZXZpY2VzL3N5 c3RlbS9jcHUvY3B1MS9jcHVfY2FwYWNpdHk6Mzc3Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUv Y3B1Mi9jcHVfY2FwYWNpdHk6Mzc3Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1My9jcHVf Y2FwYWNpdHk6Mzc3Cj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1NC9jcHVfY2FwYWNpdHk6 MTAyNAo+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTUvY3B1X2NhcGFjaXR5OjEwMjQKPiAv c3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU2L2NwdV9jYXBhY2l0eToxMDI0Cj4gL3N5cy9kZXZp Y2VzL3N5c3RlbS9jcHUvY3B1Ny9jcHVfY2FwYWNpdHk6MTAyNAo+IAo+IAo+IEluIHRha2luZyBh IGxvb2sgYXQgY3B1ZnJlcS1pbmZvLCBvbmUgdGhpbmcgSSBub3RpY2VkIGlzIHRoYXQgZXZlbiAK PiB0aG91Z2ggSSBoYXZlIDEgaW4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1ZnJlcS9ib29z dCwgSSBhbSAqbmV2ZXIqIAo+IGhpdHRpbmcgdGhlIDIuOTZHSHogbm93Cj4gCj4gY3B1ZnJlcSBz dGF0czogODI2IE1Iejo1OS4xNCUsIDkwMiBNSHo6MC4xNSUsIDk3OSBNSHo6MC4xOCUsIDEuMDYg Cj4gR0h6OjAuMTElLCAxLjIxIEdIejowLjQ5JSwgMS4yOSBHSHo6MC4yNiUsIDEuMzYgR0h6OjAu MTIlLCAxLjQ2IAo+IEdIejowLjIzJSwgMS41NCBHSHo6MC4xMCUsIDEuNjEgR0h6OjAuMTQlLCAx LjY5IEdIejowLjA5JSwgMS43NyAKPiBHSHo6MC4yOCUsIDEuODQgR0h6OjAuNjQlLCAxLjkyIEdI ejowLjIzJSwgMi4wMCBHSHo6MC4wNSUsIDIuMDkgCj4gR0h6OjAuMDUlLCAyLjE3IEdIejowLjAz JSwgMi4yNSBHSHo6MC4wMyUsIDIuMzIgR0h6OjAuMDMlLCAyLjQwIAo+IEdIejowLjAzJSwgMi40 OCBHSHo6MC4wMiUsIDIuNTUgR0h6OjAuMDIlLCAyLjY1IEdIejowLjAzJSwgMi43NSAKPiBHSHo6 MC4wMyUsIDIuODQgR0h6OjM3LjUzJSwgMi45NiBHSHo6MC4wMCXCoCAoMjA4NTQpCj4gCj4gQWFh YW5kIGl0IGxvb2tzIGxpa2UgdGhhdCBpcyBwYXJ0IG9mIHRoZSBkZWFsIC0gd2l0aCB5b3VyIHBh dGNoIGZyb20gCj4gYWJvdmUgYXBwbGllZCwgd2UgZ2V0Ogo+IAo+IFvCoMKgIDIyLjQ4NzI2OF0g VEhFUk1BTF9QUkVTU1VSRTogbWF4X2ZyZXEoMjg0MSkgPCBjYXBwZWRfZnJlcSgyOTU2KSBmb3Ig Cj4gQ1BVcyBbNC03XQo+IFvCoMKgIDIyLjQ4NzMxM10gVEhFUk1BTF9QUkVTU1VSRTogbWF4X2Zy ZXEoMjg0MSkgPCBjYXBwZWRfZnJlcSgyOTU2KSBmb3IgCj4gQ1BVcyBbNC03XQo+IFvCoMKgIDIy LjUwODY0Ml0gVEhFUk1BTF9QUkVTU1VSRTogbWF4X2ZyZXEoMjg0MSkgPCBjYXBwZWRfZnJlcSgy OTU2KSBmb3IgCj4gQ1BVcyBbNC03XQo+IFvCoMKgIDIyLjU1MjI3M10gVEhFUk1BTF9QUkVTU1VS RTogbWF4X2ZyZXEoMjg0MSkgPCBjYXBwZWRfZnJlcSgyOTU2KSBmb3IgCj4gQ1BVcyBbNC03XQo+ IAo+IFNvLCB3ZSdyZSBub3QgYWJsZSB0byBoaXQgYm9vc3QgZnJlcXVlbmNpZXMgd2l0aCB0aGlz IGFwcGxpZWQ/CgpIaSBTdGV2ZSwKCkRvZXMgeW91ciBzeXN0ZW0gaGF2ZSBlbm91Z2ggbG9hZCB0 byBoaXQgdGhlIGJvb3N0IGZyZXF1ZW5jaWVzID8gSSBkb24ndCAKdGhpbmsgdGhpcyBwYXRjaCBz aG91bGQgYWZmZWN0IGhpdHRpbmcgYm9vc3QgZnJlcXVlbmNpZXMgYXMgdGhlcmUgaXMgbm8gCmVy cm9yIGJlaW5nIHJldHVybmVkIGZyb20gdG9wb2xvZ3lfdXBkYXRlX3RoZXJtYWxfcHJlc3N1cmUu CgpUaGUgd2FybmluZyB5b3UgYXJlIGdldHRpbmcgaXMgYmVjYXVzZSB5b3UgaGF2ZSBib29zdCBm cmVxdWVuY3kgZW5hYmxlZCAKYW5kIElJVUMgbG1oIGVuYWJsZWQgYW5kIHRoZXJtYWwgcHJlc3N1 cmUgZnJhbWV3b3JrIGJhaWxzIG91dCBkdWUgdG8gCmJvb3N0X2ZyZXF1ZW5jeSBiZWluZyBncmVh dGVyIHRoYW4gd2hhdCBpcyBhdmFpbGFibGUgaW4gcGVyX2NwdSAKZnJlcV9mYWN0b3IuIFRoaXMg aXMgYmVjYXVzZSB3ZSBkbyBub3QgcmVjYWxjdWxhdGUgZnJlcV9mYWN0b3IgZXZlcnkgCnRpbWUg Ym9vc3QgaXMgZW5hYmxlZCAvIGRpc2FibGVkLiBJSVJDIHRoZXJlIHdlcmUgc29tZSBkaXNjdXNz aW9ucyAKYXJvdW5kIHJlYnVpbGRpbmcgc2NoZWR1bGVyIGRvbWFpbnMgYW5kIGNhcGFjaXR5IHdp dGggdXNlciBzcGFjZSBjaGFuZ2VzIAp0byBtYXggZnJlcXVlbmN5IGJ1dCBpdCBoYXMgbmV2ZXIg cHJvY2VlZGVkIG11Y2guIFRpbGwgdGhhdCBwb2ludCwgSSAKdGhpbmsgdGhlIHJpZ2h0IHdheSwg aXMgdG8gY2hlY2sgd2hldGhlciB0aGUgbmV3IGNhcGNpdHkgZXhjZWVkcyB0aGUgCm1heF9jYXBh Y2l0eSBvZiB0aGUgY3B1IGFuZCBpZiB5ZXMgdXNlIG1heF9jYXBhY2l0eSBpbiBsaWV1IG9mIApu ZXdfY2FwYWNpdHkgdG8gY2FsY3VsYXRlIHRoZXJtYWwgcHJlc3N1cmUuCgo+IAo+IFRoYW5rIHlv dSBmb3IgdGhlIGZhc3QgcmVzcG9uc2UhCj4gCj4gLS0gc3RlZXYKPiAKCi0tIApXYXJtIFJlZ2Fy ZHMKVGhhcmEgKFNoZS9IZXIvSGVycykKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK