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 C2C6DC7EE24 for ; Fri, 2 Jun 2023 13:12:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235259AbjFBNMc (ORCPT ); Fri, 2 Jun 2023 09:12:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236108AbjFBNMK (ORCPT ); Fri, 2 Jun 2023 09:12:10 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5BD2E5A for ; Fri, 2 Jun 2023 06:11:40 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id 2adb3069b0e04-4f5021faa16so2772345e87.2 for ; Fri, 02 Jun 2023 06:11:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685711499; x=1688303499; 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=fdOza1gLCalLSXkYNY4mfvWYzR4Q4eTY/qnCdvd8TFI=; b=OQG6NkGTY8w1iNprv3qIaPBF7ojyVzw2L0LdKDBQuojwW4n/Gwj2GkpkFfrtl4V2gI 2xrnUG/TogFtedY6rDXNS9MtJyr9C4KFoLSZayqrqdEBTj0RfS7YeAeJoCCQsmW8cjvs sdMhxEWwbQS0bFCJS/YJCKpxNoQdOEJpHnxSRuzLH2mw4e8rUaP775d897/oBebWdnN9 Ads0I/oo/n2vkWTkKmowPFMhpxThhbO5bXQIZZVINcEGx8MQX8qbaz9MGEUjpqhsdOE+ tJrzXcx+lLit2xsTI9zZ/hUIMESUEPdWE29IcxYRFqHYh6NpZlTpRY8wRhcxGzuRfQst OYUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685711499; x=1688303499; 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=fdOza1gLCalLSXkYNY4mfvWYzR4Q4eTY/qnCdvd8TFI=; b=EyRbqC6qtoItaCuiO+IwfQ4VeOCEzn9qOYP+rWRhqipwpF6hgkv/U6apquRUIOY5h8 LWI4bWv9aSntETMRRedUZ2REIt0saeu5OISBrbulmUpeftCK/ZkNP4GJhMc1YQiukoHe fOYM+lS6HurWOAEOnCSRzCFaS6pdDUh4ozcBBo1koVT0ZWLJbhmCOQ7d+wCCk1TIjDXG 8SBObdm2nmlzMzsih8LzipnjFUfrvr/kaXxUXio6JCE76+i2Ns3ysIJSW8l0IBwpEDED NJmuG7VUo2f/CaFrvcVEmjOEW/2zCcBZnhaSCu7zIOlRzjZy9hbpppXa+pL2PJ2BZKBj e2NA== X-Gm-Message-State: AC+VfDwLHijKTCCF/kE5PbpaXcMhV9Ptcq9iE6PqAiwiZcNxU0bjh4xI PeUOyzl3SiaXxUPYVlj9x1F1Mg== X-Google-Smtp-Source: ACHHUZ6pzMnLSLO1Ama3yhQyeYIg1fA+OJjI4CJNmdzdAHVyE5wYPdc1sGelcxVvpPlfy2h5ZJCI+w== X-Received: by 2002:a19:7014:0:b0:4f3:982a:8be1 with SMTP id h20-20020a197014000000b004f3982a8be1mr1894490lfc.69.1685711498965; Fri, 02 Jun 2023 06:11:38 -0700 (PDT) Received: from ?IPV6:2a05:6e02:1041:c10:40f6:d082:aa42:96f0? ([2a05:6e02:1041:c10:40f6:d082:aa42:96f0]) by smtp.googlemail.com with ESMTPSA id 24-20020a05600c22d800b003f3e50eb606sm1931739wmg.13.2023.06.02.06.11.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Jun 2023 06:11:38 -0700 (PDT) Message-ID: <0eb717ac-82b1-8a76-58a2-394167e69b28@linaro.org> Date: Fri, 2 Jun 2023 15:11:37 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH 2/3] thermal: qoriq_thermal: only enable supported sensors Content-Language: en-US To: Peng Fan , "Peng Fan (OSS)" , "rafael@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" Cc: "amitk@kernel.org" , "rui.zhang@intel.com" , "andrew.smirnov@gmail.com" , "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "linux-arm-kernel@lists.infradead.org" , Alice Guo References: <20230516083746.63436-1-peng.fan@oss.nxp.com> <20230516083746.63436-3-peng.fan@oss.nxp.com> <3c59c4e0-68eb-b778-6b12-9f9e331f81dd@linaro.org> <01197bb8-da0d-f726-79bc-d8ab7d3ea992@linaro.org> From: Daniel Lezcano In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org On 01/06/2023 11:52, Peng Fan wrote: > Hi Daniel, > >> Subject: RE: [PATCH 2/3] thermal: qoriq_thermal: only enable supported >> sensors >> >>> Subject: Re: [PATCH 2/3] thermal: qoriq_thermal: only enable supported >>> sensors >>> >>> On 31/05/2023 14:05, Peng Fan wrote: >>>>> Subject: Re: [PATCH 2/3] thermal: qoriq_thermal: only enable >>>>> supported sensors >>>>> >>>>> On 16/05/2023 10:37, Peng Fan (OSS) wrote: >>>>>> From: Peng Fan >>>>>> >>>>>> There are MAX 16 sensors, but not all of them supported. Such as >>>>>> i.MX8MQ, there are only 3 sensors. Enabling all 16 sensors will >>>>>> touch reserved bits from i.MX8MQ reference mannual, and TMU will >>>>>> stuck, temperature will not update anymore. >>>>>> >>>>>> Fixes: 45038e03d633 ("thermal: qoriq: Enable all sensors before >>>>>> registering them") >>>>>> Signed-off-by: Peng Fan >>>>>> --- >>>>>> drivers/thermal/qoriq_thermal.c | 30 +++++++++++++++++++---------- >> - >>>>>> 1 file changed, 19 insertions(+), 11 deletions(-) >>>>>> >>>>>> diff --git a/drivers/thermal/qoriq_thermal.c >>>>>> b/drivers/thermal/qoriq_thermal.c index >> b806a0929459..53748c4a5be1 >>>>>> 100644 >>>>>> --- a/drivers/thermal/qoriq_thermal.c >>>>>> +++ b/drivers/thermal/qoriq_thermal.c >>>>>> @@ -31,7 +31,6 @@ >>>>>> #define TMR_DISABLE 0x0 >>>>>> #define TMR_ME 0x80000000 >>>>>> #define TMR_ALPF 0x0c000000 >>>>>> -#define TMR_MSITE_ALL GENMASK(15, 0) >>>>>> >>>>>> #define REGS_TMTMIR 0x008 /* Temperature measurement >>>>> interval Register */ >>>>>> #define TMTMIR_DEFAULT 0x0000000f >>>>>> @@ -105,6 +104,11 @@ static int tmu_get_temp(struct >>>>> thermal_zone_device *tz, int *temp) >>>>>> * within sensor range. TEMP is an 9 bit value representing >>>>>> * temperature in KelVin. >>>>>> */ >>>>>> + >>>>>> + regmap_read(qdata->regmap, REGS_TMR, &val); >>>>>> + if (!(val & TMR_ME)) >>>>>> + return -EAGAIN; >>>>> >>>>> How is this change related to what is described in the changelog? >>>> >>>> devm_thermal_zone_of_sensor_register will invoke get temp, since we >>>> reverted the 45038e03d633 did, we need to check TMR_ME to avoid >>> return >>>> invalid temperature. >>> >>> >>> From a higher perspective if the sensor won't be enabled, then the >>> thermal zone should not be registered, the get_temp won't happen on a >>> disabled sensor and this test won't be necessary, no ? > > After thinking more, I'd prefer current logic. > > We rely on devm_thermal_of_zone_register's return value to know > whether there is a valid zone, then set sites bit, and after collected > all site bits, we enable the thermal IP. > > If move the enabling thermal IP before devm_thermal_of_zone_register, > We need check dtb thermal zone, to know which zone is valid for current > thermal IP. This would complicate the design. > > So just checking the enabling bit in get temperature would be much > simpler, and there just a small window before enabling thermal IP. If the thermal zone is not described, then the thermal zone won't be created as it fails with -ENODEV and thus get_temp won't be called on a disabled site, right? Having test in the get_temp() ops is usually the sign there is something wrong with the driver initialization. -- Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from 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 DE571C7EE24 for ; Fri, 2 Jun 2023 13:12:13 +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=BIeyPpgJnwdNVRbCHOuu/8Yi2/0isqsuNxVfm8z0h2c=; b=qW352wWRJ7yF+p I3PlYWEJ2T0pEq6YNI68rz/dL8YNOAlSJi2wdhiof+lKQDAV1IzphbaqshAypWPmMnRzbgE5hjZ3U ljgNKasdyYRsz+9MuFzdrQPix8Y3tIy9W/03jAefmGUgiHZ6lFsOXk8SX0VtZ60Bs3ng9kCKQ5+EI 7iFPRdygIsi+E3bBG9kDCJYwZMTo+jK4yJ60bjCiVtBczqtX7LdspwalBWYzVmo5ChRAsBSQAen0q TpD8m1scOvkMNzITRDsF6LpKwBWDsadllb5q0jjpy1+ZOwqk2eupCgtKcAFgFDUtUQBlk3+Q8QPsZ YRl6+ahMUi0c5TC1hx5Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q54ZF-006xwv-1O; Fri, 02 Jun 2023 13:11:45 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q54ZC-006xvs-0a for linux-arm-kernel@lists.infradead.org; Fri, 02 Jun 2023 13:11:43 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4f5021faa16so2772344e87.2 for ; Fri, 02 Jun 2023 06:11:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685711499; x=1688303499; 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=fdOza1gLCalLSXkYNY4mfvWYzR4Q4eTY/qnCdvd8TFI=; b=OQG6NkGTY8w1iNprv3qIaPBF7ojyVzw2L0LdKDBQuojwW4n/Gwj2GkpkFfrtl4V2gI 2xrnUG/TogFtedY6rDXNS9MtJyr9C4KFoLSZayqrqdEBTj0RfS7YeAeJoCCQsmW8cjvs sdMhxEWwbQS0bFCJS/YJCKpxNoQdOEJpHnxSRuzLH2mw4e8rUaP775d897/oBebWdnN9 Ads0I/oo/n2vkWTkKmowPFMhpxThhbO5bXQIZZVINcEGx8MQX8qbaz9MGEUjpqhsdOE+ tJrzXcx+lLit2xsTI9zZ/hUIMESUEPdWE29IcxYRFqHYh6NpZlTpRY8wRhcxGzuRfQst OYUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685711499; x=1688303499; 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=fdOza1gLCalLSXkYNY4mfvWYzR4Q4eTY/qnCdvd8TFI=; b=RqHYxczXjDw8OKkbjSGFxK1ZWFoZwZsoA7gll5uIdnjpWx8cASQJfuUpnDhiKnQJe8 GFyoYmcnE/U5ZJK9yOyZ9s+CeMq1Zc3s/r/NhykTGJG1vgFY1+wf9ANznLnwlxYzmbaN OakHDtH9C0GOyTxkOxNmcxWgvDrbR0kgpwoJsvy8J5HYPMlcc5gHJP9mKYQPtKQtFNUo 0qDkdM4X5ooUcgMzbSZ8CAhBiQi37fAidkMY87ZLCMkrRQEQo6MSQKXLAa/ZqlM6qx9K INx7eIGNt9qSRaCSYRpiQq8NwPvdxVYHjV/tfRF0SoKSgQ01BSiif/NBy2SdJRNAdUvg i2EA== X-Gm-Message-State: AC+VfDyEeIxQxly5U2X9uDo7HbTaF9hrFQval7vXTqtLjJ2u8VFTwmBz 6/harka9UM3nUAtIJiHIzNrDSA== X-Google-Smtp-Source: ACHHUZ6pzMnLSLO1Ama3yhQyeYIg1fA+OJjI4CJNmdzdAHVyE5wYPdc1sGelcxVvpPlfy2h5ZJCI+w== X-Received: by 2002:a19:7014:0:b0:4f3:982a:8be1 with SMTP id h20-20020a197014000000b004f3982a8be1mr1894490lfc.69.1685711498965; Fri, 02 Jun 2023 06:11:38 -0700 (PDT) Received: from ?IPV6:2a05:6e02:1041:c10:40f6:d082:aa42:96f0? ([2a05:6e02:1041:c10:40f6:d082:aa42:96f0]) by smtp.googlemail.com with ESMTPSA id 24-20020a05600c22d800b003f3e50eb606sm1931739wmg.13.2023.06.02.06.11.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Jun 2023 06:11:38 -0700 (PDT) Message-ID: <0eb717ac-82b1-8a76-58a2-394167e69b28@linaro.org> Date: Fri, 2 Jun 2023 15:11:37 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH 2/3] thermal: qoriq_thermal: only enable supported sensors Content-Language: en-US To: Peng Fan , "Peng Fan (OSS)" , "rafael@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" Cc: "amitk@kernel.org" , "rui.zhang@intel.com" , "andrew.smirnov@gmail.com" , "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "linux-arm-kernel@lists.infradead.org" , Alice Guo References: <20230516083746.63436-1-peng.fan@oss.nxp.com> <20230516083746.63436-3-peng.fan@oss.nxp.com> <3c59c4e0-68eb-b778-6b12-9f9e331f81dd@linaro.org> <01197bb8-da0d-f726-79bc-d8ab7d3ea992@linaro.org> From: Daniel Lezcano In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230602_061142_247437_2FD62CAA X-CRM114-Status: GOOD ( 20.48 ) 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 T24gMDEvMDYvMjAyMyAxMTo1MiwgUGVuZyBGYW4gd3JvdGU6Cj4gSGkgRGFuaWVsLAo+IAo+PiBT dWJqZWN0OiBSRTogW1BBVENIIDIvM10gdGhlcm1hbDogcW9yaXFfdGhlcm1hbDogb25seSBlbmFi bGUgc3VwcG9ydGVkCj4+IHNlbnNvcnMKPj4KPj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMi8zXSB0 aGVybWFsOiBxb3JpcV90aGVybWFsOiBvbmx5IGVuYWJsZSBzdXBwb3J0ZWQKPj4+IHNlbnNvcnMK Pj4+Cj4+PiBPbiAzMS8wNS8yMDIzIDE0OjA1LCBQZW5nIEZhbiB3cm90ZToKPj4+Pj4gU3ViamVj dDogUmU6IFtQQVRDSCAyLzNdIHRoZXJtYWw6IHFvcmlxX3RoZXJtYWw6IG9ubHkgZW5hYmxlCj4+ Pj4+IHN1cHBvcnRlZCBzZW5zb3JzCj4+Pj4+Cj4+Pj4+IE9uIDE2LzA1LzIwMjMgMTA6MzcsIFBl bmcgRmFuIChPU1MpIHdyb3RlOgo+Pj4+Pj4gRnJvbTogUGVuZyBGYW4gPHBlbmcuZmFuQG54cC5j b20+Cj4+Pj4+Pgo+Pj4+Pj4gVGhlcmUgYXJlIE1BWCAxNiBzZW5zb3JzLCBidXQgbm90IGFsbCBv ZiB0aGVtIHN1cHBvcnRlZC4gU3VjaCBhcwo+Pj4+Pj4gaS5NWDhNUSwgdGhlcmUgYXJlIG9ubHkg MyBzZW5zb3JzLiBFbmFibGluZyBhbGwgMTYgc2Vuc29ycyB3aWxsCj4+Pj4+PiB0b3VjaCByZXNl cnZlZCBiaXRzIGZyb20gaS5NWDhNUSByZWZlcmVuY2UgbWFubnVhbCwgYW5kIFRNVSB3aWxsCj4+ Pj4+PiBzdHVjaywgdGVtcGVyYXR1cmUgd2lsbCBub3QgdXBkYXRlIGFueW1vcmUuCj4+Pj4+Pgo+ Pj4+Pj4gRml4ZXM6IDQ1MDM4ZTAzZDYzMyAoInRoZXJtYWw6IHFvcmlxOiBFbmFibGUgYWxsIHNl bnNvcnMgYmVmb3JlCj4+Pj4+PiByZWdpc3RlcmluZyB0aGVtIikKPj4+Pj4+IFNpZ25lZC1vZmYt Ynk6IFBlbmcgRmFuIDxwZW5nLmZhbkBueHAuY29tPgo+Pj4+Pj4gLS0tCj4+Pj4+PiAgICAgZHJp dmVycy90aGVybWFsL3FvcmlxX3RoZXJtYWwuYyB8IDMwICsrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCj4+IC0KPj4+Pj4+ICAgICAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwg MTEgZGVsZXRpb25zKC0pCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1h bC9xb3JpcV90aGVybWFsLmMKPj4+Pj4+IGIvZHJpdmVycy90aGVybWFsL3FvcmlxX3RoZXJtYWwu YyBpbmRleAo+PiBiODA2YTA5Mjk0NTkuLjUzNzQ4YzRhNWJlMQo+Pj4+Pj4gMTAwNjQ0Cj4+Pj4+ PiAtLS0gYS9kcml2ZXJzL3RoZXJtYWwvcW9yaXFfdGhlcm1hbC5jCj4+Pj4+PiArKysgYi9kcml2 ZXJzL3RoZXJtYWwvcW9yaXFfdGhlcm1hbC5jCj4+Pj4+PiBAQCAtMzEsNyArMzEsNiBAQAo+Pj4+ Pj4gICAgICNkZWZpbmUgVE1SX0RJU0FCTEUJMHgwCj4+Pj4+PiAgICAgI2RlZmluZSBUTVJfTUUJ CTB4ODAwMDAwMDAKPj4+Pj4+ICAgICAjZGVmaW5lIFRNUl9BTFBGCTB4MGMwMDAwMDAKPj4+Pj4+ IC0jZGVmaW5lIFRNUl9NU0lURV9BTEwJR0VOTUFTSygxNSwgMCkKPj4+Pj4+Cj4+Pj4+PiAgICAg I2RlZmluZSBSRUdTX1RNVE1JUgkweDAwOAkvKiBUZW1wZXJhdHVyZSBtZWFzdXJlbWVudAo+Pj4+ PiBpbnRlcnZhbCBSZWdpc3RlciAqLwo+Pj4+Pj4gICAgICNkZWZpbmUgVE1UTUlSX0RFRkFVTFQJ MHgwMDAwMDAwZgo+Pj4+Pj4gQEAgLTEwNSw2ICsxMDQsMTEgQEAgc3RhdGljIGludCB0bXVfZ2V0 X3RlbXAoc3RydWN0Cj4+Pj4+IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgKnRlbXApCj4+ Pj4+PiAgICAgCSAqIHdpdGhpbiBzZW5zb3IgcmFuZ2UuIFRFTVAgaXMgYW4gOSBiaXQgdmFsdWUg cmVwcmVzZW50aW5nCj4+Pj4+PiAgICAgCSAqIHRlbXBlcmF0dXJlIGluIEtlbFZpbi4KPj4+Pj4+ ICAgICAJICovCj4+Pj4+PiArCj4+Pj4+PiArCXJlZ21hcF9yZWFkKHFkYXRhLT5yZWdtYXAsIFJF R1NfVE1SLCAmdmFsKTsKPj4+Pj4+ICsJaWYgKCEodmFsICYgVE1SX01FKSkKPj4+Pj4+ICsJCXJl dHVybiAtRUFHQUlOOwo+Pj4+Pgo+Pj4+PiBIb3cgaXMgdGhpcyBjaGFuZ2UgcmVsYXRlZCB0byB3 aGF0IGlzIGRlc2NyaWJlZCBpbiB0aGUgY2hhbmdlbG9nPwo+Pj4+Cj4+Pj4gZGV2bV90aGVybWFs X3pvbmVfb2Zfc2Vuc29yX3JlZ2lzdGVyIHdpbGwgaW52b2tlIGdldCB0ZW1wLCBzaW5jZSB3ZQo+ Pj4+IHJldmVydGVkIHRoZSA0NTAzOGUwM2Q2MzMgZGlkLCB3ZSBuZWVkIHRvIGNoZWNrIFRNUl9N RSB0byBhdm9pZAo+Pj4gcmV0dXJuCj4+Pj4gaW52YWxpZCB0ZW1wZXJhdHVyZS4KPj4+Cj4+Pgo+ Pj4gICBGcm9tIGEgaGlnaGVyIHBlcnNwZWN0aXZlIGlmIHRoZSBzZW5zb3Igd29uJ3QgYmUgZW5h YmxlZCwgdGhlbiB0aGUKPj4+IHRoZXJtYWwgem9uZSBzaG91bGQgbm90IGJlIHJlZ2lzdGVyZWQs IHRoZSBnZXRfdGVtcCB3b24ndCBoYXBwZW4gb24gYQo+Pj4gZGlzYWJsZWQgc2Vuc29yIGFuZCB0 aGlzIHRlc3Qgd29uJ3QgYmUgbmVjZXNzYXJ5LCBubyA/Cj4gCj4gQWZ0ZXIgdGhpbmtpbmcgbW9y ZSwgSSdkIHByZWZlciBjdXJyZW50IGxvZ2ljLgo+IAo+IFdlIHJlbHkgb24gZGV2bV90aGVybWFs X29mX3pvbmVfcmVnaXN0ZXIncyByZXR1cm4gdmFsdWUgdG8ga25vdwo+IHdoZXRoZXIgdGhlcmUg aXMgYSB2YWxpZCB6b25lLCB0aGVuIHNldCBzaXRlcyBiaXQsIGFuZCBhZnRlciBjb2xsZWN0ZWQK PiBhbGwgc2l0ZSBiaXRzLCB3ZSBlbmFibGUgdGhlIHRoZXJtYWwgSVAuCj4gCj4gSWYgbW92ZSB0 aGUgZW5hYmxpbmcgdGhlcm1hbCBJUCBiZWZvcmUgZGV2bV90aGVybWFsX29mX3pvbmVfcmVnaXN0 ZXIsCj4gV2UgbmVlZCBjaGVjayBkdGIgdGhlcm1hbCB6b25lLCB0byBrbm93IHdoaWNoIHpvbmUg aXMgdmFsaWQgZm9yIGN1cnJlbnQKPiB0aGVybWFsIElQLiBUaGlzIHdvdWxkIGNvbXBsaWNhdGUg dGhlIGRlc2lnbi4KPiAKPiBTbyBqdXN0IGNoZWNraW5nIHRoZSBlbmFibGluZyBiaXQgaW4gZ2V0 IHRlbXBlcmF0dXJlIHdvdWxkIGJlIG11Y2gKPiBzaW1wbGVyLCBhbmQgdGhlcmUganVzdCBhIHNt YWxsIHdpbmRvdyBiZWZvcmUgZW5hYmxpbmcgdGhlcm1hbCBJUC4KCgpJZiB0aGUgdGhlcm1hbCB6 b25lIGlzIG5vdCBkZXNjcmliZWQsIHRoZW4gdGhlIHRoZXJtYWwgem9uZSB3b24ndCBiZSAKY3Jl YXRlZCBhcyBpdCBmYWlscyB3aXRoIC1FTk9ERVYgYW5kIHRodXMgZ2V0X3RlbXAgd29uJ3QgYmUg Y2FsbGVkIG9uIGEgCmRpc2FibGVkIHNpdGUsIHJpZ2h0PwoKSGF2aW5nIHRlc3QgaW4gdGhlIGdl dF90ZW1wKCkgb3BzIGlzIHVzdWFsbHkgdGhlIHNpZ24gdGhlcmUgaXMgc29tZXRoaW5nIAp3cm9u ZyB3aXRoIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24uCgoKCi0tIAo8aHR0cDovL3d3dy5saW5h cm8ub3JnLz4gTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUgZm9yIEFSTSBTb0Nz CgpGb2xsb3cgTGluYXJvOiAgPGh0dHA6Ly93d3cuZmFjZWJvb2suY29tL3BhZ2VzL0xpbmFybz4g RmFjZWJvb2sgfAo8aHR0cDovL3R3aXR0ZXIuY29tLyMhL2xpbmFyb29yZz4gVHdpdHRlciB8Cjxo dHRwOi8vd3d3LmxpbmFyby5vcmcvbGluYXJvLWJsb2cvPiBCbG9nCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=