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 60265C4167B for ; Thu, 6 Oct 2022 06:55:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229659AbiJFGzT (ORCPT ); Thu, 6 Oct 2022 02:55:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56898 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229666AbiJFGzR (ORCPT ); Thu, 6 Oct 2022 02:55:17 -0400 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E82F2F67E for ; Wed, 5 Oct 2022 23:55:14 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id w18so1145666wro.7 for ; Wed, 05 Oct 2022 23:55:14 -0700 (PDT) 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=mpnbl0sOHmjZXpRaPHZuxhEh+P6N/msQTLYNVhfBBe8=; b=MiPZCFMrd8ZJnITo2QNV97U1PS/R+5ZaOpCPg1dg0ozuIl6v8QxOhznFxmMRbJFt61 +KQ26aFgOClHddDkzpBN5Ti5bjTzZazFn9IOccCqYNGZm83luL0MAi2ZIMoiLBhbdpI9 ErI4nhBYVAiDsh8U0oXUCxVcV8bop7IuJT7Ik70JSybZ18r2+2UEeGXI8zLnhalxuyPK D72/xbL0hdoGvzz5uUDTnekoAkjXs/FrL4Ugud+EDDTaZGiQrY2Xuz1ety4QCzOavUyl +n3MfQtsIn5LI92EpTTgt2DO7DNNtKRNghaJz8p+7n59IVXb/QZmDJ0puWLNYB+9gbop agyQ== 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=mpnbl0sOHmjZXpRaPHZuxhEh+P6N/msQTLYNVhfBBe8=; b=ToJA+j+z5PSoYFD9xWkRJLN4h4/rOxgDglH+RXvUJeY76zhGodSOZDu4Z11sxK1UAN UZVSeGzN2+UCylW1PFg05fi2MGsss1wdjArXNndvryKiMxDC6pXFPcSlxwRPWtQCmA18 Ppk3JN7t3f65XyA8XEsmRqaqQKqSuik3KbXTBPv2KwxeegUBFlyGFOrlg/1VX6s44dPQ ZRxFxcQQu5IkdSKQnteGl25CCwKMKcrRU01Fxpwy7LUDtKba5l+OOqoWUF/CmZNE8hc6 5+l53kLcCiRSX4UBiKDdiYreIxs8QEt/fwfMzBMR9agLnxkKqBBD7Qk5XI1FO+ectflu Xjag== X-Gm-Message-State: ACrzQf2HaugMx5mlC0ELc2CiUVlxnd1Y01tmv6JZWLDhespK9Cf3OPSM 400DVkko8BzUwOSLEcRQVmVFWw== X-Google-Smtp-Source: AMsMyM4tUv+yoGLPcmLIx0TCLkILd2ZuyZqPgL+k6wTXzf/o8aVrTs7qe5sYTzmE/qACZEBJdXpwZw== X-Received: by 2002:a05:6000:806:b0:22a:36df:2663 with SMTP id bt6-20020a056000080600b0022a36df2663mr1873670wrb.423.1665039312765; Wed, 05 Oct 2022 23:55:12 -0700 (PDT) Received: from ?IPV6:2a05:6e02:1041:c10:86cc:fff3:d44b:9793? ([2a05:6e02:1041:c10:86cc:fff3:d44b:9793]) by smtp.googlemail.com with ESMTPSA id a5-20020adfeec5000000b0022e2c38f8basm14459474wrp.14.2022.10.05.23.55.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Oct 2022 23:55:12 -0700 (PDT) Message-ID: <97201878-3bb8-eac5-7fac-a690322ac43a@linaro.org> Date: Thu, 6 Oct 2022 08:55:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH v8 00/29] Rework the trip points creation Content-Language: en-US To: Marek Szyprowski Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rui.zhang@intel.com, Broadcom Kernel Team , Support Opensource , Pengutronix Kernel Team , NXP Linux Team , Andy Gross , Bartlomiej Zolnierkiewicz , Krzysztof Kozlowski , Alim Akhtar , netdev@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-tegra@vger.kernel.org, linux-omap@vger.kernel.org, rafael@kernel.org References: <20221003092602.1323944-1-daniel.lezcano@linaro.org> <8cdd1927-da38-c23e-fa75-384694724b1c@samsung.com> <851008bf-145d-224c-87a8-cb6ec1e9addb@linaro.org> <207c1979-0da2-b05d-fead-6880ad956b90@samsung.com> From: Daniel Lezcano In-Reply-To: <207c1979-0da2-b05d-fead-6880ad956b90@samsung.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 Hi Marek, On 05/10/2022 15:05, Marek Szyprowski wrote: > > On 05.10.2022 14:37, Daniel Lezcano wrote: >> >> Hi Marek, >> >> On 03/10/2022 23:18, Daniel Lezcano wrote: >> >> [ ... ] >> >>>> I've tested this v8 patchset after fixing the issue with Exynos TMU >>>> with >>>> https://lore.kernel.org/all/20221003132943.1383065-1-daniel.lezcano@linaro.org/ >>>> >>>> patch and I got the following lockdep warning on all Exynos-based >>>> boards: >>>> >>>> >>>> ====================================================== >>>> WARNING: possible circular locking dependency detected >>>> 6.0.0-rc1-00083-ge5c9d117223e #12945 Not tainted >>>> ------------------------------------------------------ >>>> swapper/0/1 is trying to acquire lock: >>>> c1ce66b0 (&data->lock#2){+.+.}-{3:3}, at: exynos_get_temp+0x3c/0xc8 >>>> >>>> but task is already holding lock: >>>> c2979b94 (&tz->lock){+.+.}-{3:3}, at: >>>> thermal_zone_device_update.part.0+0x3c/0x528 >>>> >>>> which lock already depends on the new lock. >>> >>> I'm wondering if the problem is not already there and related to >>> data->lock ... >>> >>> Doesn't the thermal zone lock already prevent racy access to the data >>> structure? >>> >>> Another question: if the sensor clock is disabled after reading it, >>> how does the hardware update the temperature and detect the programed >>> threshold is crossed? >> >> just a gentle ping, as the fix will depend on your answer ;) >> > Sorry, I've been busy with other stuff. I thought I will fix this once I > find a bit of spare time. Ok, that is great if you can find time to fix it up because I've other drivers to convert to the generic thermal trips. > IMHO the clock management is a bit over-engineered, as there is little > (if any) benefit from such fine grade clock management. That clock is > needed only for the AHB related part of the TMU (reading/writing the > registers). The IRQ generation and temperature measurement is clocked > from so called 'sclk' (special clock). > > I also briefly looked at the code and the internal lock doesn't look to > be really necessary assuming that the thermal core already serializes > all the calls. I looked at the code and I think the driver can be simplified (fixed?) even more. IIUC, the sensor has multiple trip point interrupts, so if the device tree is describing more trip points than the sensor supports, there is a warning and the number of trip point is capped. IMO that can be simplified by using two trip point interrupt because the thermal_zone_device_update() will call the set_trips callback with the new boundaries. IOW, the thermal framework sets a new trip point interrupt when one is crossed. That should result in the simplification of the tmu_control as well as the tmu_probe function. As well as removing the limitation of the number of trip points. In order to have that correctly working, the 'set_trips' ops must be used to call the tmu_control callback instead of calling it in tmu_probe. The intialization workflow should be: probe->... ->thermal_zone_device_register() ->thermal_zone_device_update() ->update_trip_points() ->ops->set_trips() ->tmu_control() Also, replace the workqueue by a threaded interrupt. Does it make sense? -- 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 1E541C433F5 for ; Thu, 6 Oct 2022 06:56:25 +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=Lw64lAMTdufXHz1FpWrbRUFCHxhG3y9frnbfRroZGbQ=; b=Qs6WOADr2wbFtl jCQXO2jla+pPx82S7xpyb6uNrLnRXPKadYEzTKaKI1p3QTK2R3L4P5plScn0q9jrtbs1jGWGr0xr0 QAW/dgU6laUvRXnacbrQodJdE7kq4l/I4gAWua+CaCYuoWQ1KzI2lZta4hU0QHj2q8lQd6Q0FEfH0 YUFPEUI9H+UQHQ5u0CPq0uFLWfto9VFrmmJn1w3s5FWtZSMyYi9NyeAwh56tY2Yl8lMTJpe8AUk55 zVK9LkIi/L5b3CMfsBQ6nYw6ybHF9RB6r8aBfxIzknUrnU6U5JBtKbJXP/A9z79kX4v//z5jq3NWz Y2hDrYS01LORPtTPr5yA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ogKmu-000HfQ-0Q; Thu, 06 Oct 2022 06:55:20 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ogKmq-000HdN-Hr for linux-arm-kernel@lists.infradead.org; Thu, 06 Oct 2022 06:55:18 +0000 Received: by mail-wr1-x42e.google.com with SMTP id bk15so1119016wrb.13 for ; Wed, 05 Oct 2022 23:55:14 -0700 (PDT) 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=mpnbl0sOHmjZXpRaPHZuxhEh+P6N/msQTLYNVhfBBe8=; b=MiPZCFMrd8ZJnITo2QNV97U1PS/R+5ZaOpCPg1dg0ozuIl6v8QxOhznFxmMRbJFt61 +KQ26aFgOClHddDkzpBN5Ti5bjTzZazFn9IOccCqYNGZm83luL0MAi2ZIMoiLBhbdpI9 ErI4nhBYVAiDsh8U0oXUCxVcV8bop7IuJT7Ik70JSybZ18r2+2UEeGXI8zLnhalxuyPK D72/xbL0hdoGvzz5uUDTnekoAkjXs/FrL4Ugud+EDDTaZGiQrY2Xuz1ety4QCzOavUyl +n3MfQtsIn5LI92EpTTgt2DO7DNNtKRNghaJz8p+7n59IVXb/QZmDJ0puWLNYB+9gbop agyQ== 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=mpnbl0sOHmjZXpRaPHZuxhEh+P6N/msQTLYNVhfBBe8=; b=bviuFnQgtK9u4mWnQv3bdyiU6adCp9GzqlCVIKD3MZ6U/iRfD6YNSYRnRsBrH2JcsB +2wlRPkp4dp55930KtocRDTKOc3WAmHelGS2vpSJUFmm5SO0h72BZNGu90JjvaiAFNhd gJZkMzAz6PeZrLCKDMuQG9rYeizGLWvpqvHCbRh3bHLokebB/zghMUUH88WGKFvFO8Jy Ljuqi4LH7dVAtuCWKrNUVTDWrjcuQ+ZEvR9+9RUL1OrFCJ7xZlT6VrGivMofMV48U5jg FwatiERmnfYFtgys2vlwtfBzo7MRFODp1CIVjhj+wmjh/zBiG/DeZinMtYmlPvUyWbMi C8ZA== X-Gm-Message-State: ACrzQf0Cs7ZBBSNRp1R5X9CV/y4u5IOXI8t2iQxjVJSCCoRI6/S5ooe7 jc4FQkFS0YBzy/L6vWGm6JLsVg== X-Google-Smtp-Source: AMsMyM4tUv+yoGLPcmLIx0TCLkILd2ZuyZqPgL+k6wTXzf/o8aVrTs7qe5sYTzmE/qACZEBJdXpwZw== X-Received: by 2002:a05:6000:806:b0:22a:36df:2663 with SMTP id bt6-20020a056000080600b0022a36df2663mr1873670wrb.423.1665039312765; Wed, 05 Oct 2022 23:55:12 -0700 (PDT) Received: from ?IPV6:2a05:6e02:1041:c10:86cc:fff3:d44b:9793? ([2a05:6e02:1041:c10:86cc:fff3:d44b:9793]) by smtp.googlemail.com with ESMTPSA id a5-20020adfeec5000000b0022e2c38f8basm14459474wrp.14.2022.10.05.23.55.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Oct 2022 23:55:12 -0700 (PDT) Message-ID: <97201878-3bb8-eac5-7fac-a690322ac43a@linaro.org> Date: Thu, 6 Oct 2022 08:55:10 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH v8 00/29] Rework the trip points creation Content-Language: en-US To: Marek Szyprowski Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, rui.zhang@intel.com, Broadcom Kernel Team , Support Opensource , Pengutronix Kernel Team , NXP Linux Team , Andy Gross , Bartlomiej Zolnierkiewicz , Krzysztof Kozlowski , Alim Akhtar , netdev@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-tegra@vger.kernel.org, linux-omap@vger.kernel.org, rafael@kernel.org References: <20221003092602.1323944-1-daniel.lezcano@linaro.org> <8cdd1927-da38-c23e-fa75-384694724b1c@samsung.com> <851008bf-145d-224c-87a8-cb6ec1e9addb@linaro.org> <207c1979-0da2-b05d-fead-6880ad956b90@samsung.com> From: Daniel Lezcano In-Reply-To: <207c1979-0da2-b05d-fead-6880ad956b90@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221005_235516_600757_B4A2328C X-CRM114-Status: GOOD ( 23.75 ) 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 CkhpIE1hcmVrLAoKT24gMDUvMTAvMjAyMiAxNTowNSwgTWFyZWsgU3p5cHJvd3NraSB3cm90ZToK PiAKPiBPbiAwNS4xMC4yMDIyIDE0OjM3LCBEYW5pZWwgTGV6Y2FubyB3cm90ZToKPj4KPj4gSGkg TWFyZWssCj4+Cj4+IE9uIDAzLzEwLzIwMjIgMjM6MTgsIERhbmllbCBMZXpjYW5vIHdyb3RlOgo+ Pgo+PiBbIC4uLiBdCj4+Cj4+Pj4gSSd2ZSB0ZXN0ZWQgdGhpcyB2OCBwYXRjaHNldCBhZnRlciBm aXhpbmcgdGhlIGlzc3VlIHdpdGggRXh5bm9zIFRNVQo+Pj4+IHdpdGgKPj4+PiBodHRwczovL2xv cmUua2VybmVsLm9yZy9hbGwvMjAyMjEwMDMxMzI5NDMuMTM4MzA2NS0xLWRhbmllbC5sZXpjYW5v QGxpbmFyby5vcmcvCj4+Pj4KPj4+PiBwYXRjaCBhbmQgSSBnb3QgdGhlIGZvbGxvd2luZyBsb2Nr ZGVwIHdhcm5pbmcgb24gYWxsIEV4eW5vcy1iYXNlZAo+Pj4+IGJvYXJkczoKPj4+Pgo+Pj4+Cj4+ Pj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cj4+Pj4gV0FSTklORzogcG9zc2libGUgY2lyY3VsYXIgbG9ja2luZyBkZXBlbmRlbmN5IGRldGVj dGVkCj4+Pj4gNi4wLjAtcmMxLTAwMDgzLWdlNWM5ZDExNzIyM2UgIzEyOTQ1IE5vdCB0YWludGVk Cj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+Pj4gc3dhcHBlci8wLzEgaXMgdHJ5aW5nIHRvIGFjcXVpcmUgbG9jazoKPj4+PiBjMWNl NjZiMCAoJmRhdGEtPmxvY2sjMil7Ky4rLn0tezM6M30sIGF0OiBleHlub3NfZ2V0X3RlbXArMHgz Yy8weGM4Cj4+Pj4KPj4+PiBidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRpbmcgbG9jazoKPj4+PiBj Mjk3OWI5NCAoJnR6LT5sb2NrKXsrLisufS17MzozfSwgYXQ6Cj4+Pj4gdGhlcm1hbF96b25lX2Rl dmljZV91cGRhdGUucGFydC4wKzB4M2MvMHg1MjgKPj4+Pgo+Pj4+IHdoaWNoIGxvY2sgYWxyZWFk eSBkZXBlbmRzIG9uIHRoZSBuZXcgbG9jay4KPj4+Cj4+PiBJJ20gd29uZGVyaW5nIGlmIHRoZSBw cm9ibGVtIGlzIG5vdCBhbHJlYWR5IHRoZXJlIGFuZCByZWxhdGVkIHRvCj4+PiBkYXRhLT5sb2Nr IC4uLgo+Pj4KPj4+IERvZXNuJ3QgdGhlIHRoZXJtYWwgem9uZSBsb2NrIGFscmVhZHkgcHJldmVu dCByYWN5IGFjY2VzcyB0byB0aGUgZGF0YQo+Pj4gc3RydWN0dXJlPwo+Pj4KPj4+IEFub3RoZXIg cXVlc3Rpb246IGlmIHRoZSBzZW5zb3IgY2xvY2sgaXMgZGlzYWJsZWQgYWZ0ZXIgcmVhZGluZyBp dCwKPj4+IGhvdyBkb2VzIHRoZSBoYXJkd2FyZSB1cGRhdGUgdGhlIHRlbXBlcmF0dXJlIGFuZCBk ZXRlY3QgdGhlIHByb2dyYW1lZAo+Pj4gdGhyZXNob2xkIGlzIGNyb3NzZWQ/Cj4+Cj4+IGp1c3Qg YSBnZW50bGUgcGluZywgYXMgdGhlIGZpeCB3aWxsIGRlcGVuZCBvbiB5b3VyIGFuc3dlciA7KQo+ Pgo+IFNvcnJ5LCBJJ3ZlIGJlZW4gYnVzeSB3aXRoIG90aGVyIHN0dWZmLiBJIHRob3VnaHQgSSB3 aWxsIGZpeCB0aGlzIG9uY2UgSQo+IGZpbmQgYSBiaXQgb2Ygc3BhcmUgdGltZS4KCk9rLCB0aGF0 IGlzIGdyZWF0IGlmIHlvdSBjYW4gZmluZCB0aW1lIHRvIGZpeCBpdCB1cCBiZWNhdXNlIEkndmUg b3RoZXIgCmRyaXZlcnMgdG8gY29udmVydCB0byB0aGUgZ2VuZXJpYyB0aGVybWFsIHRyaXBzLgoK Cj4gSU1ITyB0aGUgY2xvY2sgbWFuYWdlbWVudCBpcyBhIGJpdCBvdmVyLWVuZ2luZWVyZWQsIGFz IHRoZXJlIGlzIGxpdHRsZQo+IChpZiBhbnkpIGJlbmVmaXQgZnJvbSBzdWNoIGZpbmUgZ3JhZGUg Y2xvY2sgbWFuYWdlbWVudC4gVGhhdCBjbG9jayBpcwo+IG5lZWRlZCBvbmx5IGZvciB0aGUgQUhC IHJlbGF0ZWQgcGFydCBvZiB0aGUgVE1VIChyZWFkaW5nL3dyaXRpbmcgdGhlCj4gcmVnaXN0ZXJz KS4gVGhlIElSUSBnZW5lcmF0aW9uIGFuZCB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudCBpcyBjbG9j a2VkCj4gZnJvbSBzbyBjYWxsZWQgJ3NjbGsnIChzcGVjaWFsIGNsb2NrKS4KPiAKPiBJIGFsc28g YnJpZWZseSBsb29rZWQgYXQgdGhlIGNvZGUgYW5kIHRoZSBpbnRlcm5hbCBsb2NrIGRvZXNuJ3Qg bG9vayB0bwo+IGJlIHJlYWxseSBuZWNlc3NhcnkgYXNzdW1pbmcgdGhhdCB0aGUgdGhlcm1hbCBj b3JlIGFscmVhZHkgc2VyaWFsaXplcwo+IGFsbCB0aGUgY2FsbHMuCgpJIGxvb2tlZCBhdCB0aGUg Y29kZSBhbmQgSSB0aGluayB0aGUgZHJpdmVyIGNhbiBiZSBzaW1wbGlmaWVkIChmaXhlZD8pIApl dmVuIG1vcmUuCgpJSVVDLCB0aGUgc2Vuc29yIGhhcyBtdWx0aXBsZSB0cmlwIHBvaW50IGludGVy cnVwdHMsIHNvIGlmIHRoZSBkZXZpY2UgCnRyZWUgaXMgZGVzY3JpYmluZyBtb3JlIHRyaXAgcG9p bnRzIHRoYW4gdGhlIHNlbnNvciBzdXBwb3J0cywgdGhlcmUgaXMgYSAKd2FybmluZyBhbmQgdGhl IG51bWJlciBvZiB0cmlwIHBvaW50IGlzIGNhcHBlZC4KCklNTyB0aGF0IGNhbiBiZSBzaW1wbGlm aWVkIGJ5IHVzaW5nIHR3byB0cmlwIHBvaW50IGludGVycnVwdCBiZWNhdXNlIHRoZSAKdGhlcm1h bF96b25lX2RldmljZV91cGRhdGUoKSB3aWxsIGNhbGwgdGhlIHNldF90cmlwcyBjYWxsYmFjayB3 aXRoIHRoZSAKbmV3IGJvdW5kYXJpZXMuIElPVywgdGhlIHRoZXJtYWwgZnJhbWV3b3JrIHNldHMg YSBuZXcgdHJpcCBwb2ludCAKaW50ZXJydXB0IHdoZW4gb25lIGlzIGNyb3NzZWQuCgpUaGF0IHNo b3VsZCByZXN1bHQgaW4gdGhlIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSB0bXVfY29udHJvbCBhcyB3 ZWxsIGFzIAp0aGUgdG11X3Byb2JlIGZ1bmN0aW9uLiBBcyB3ZWxsIGFzIHJlbW92aW5nIHRoZSBs aW1pdGF0aW9uIG9mIHRoZSBudW1iZXIgCm9mIHRyaXAgcG9pbnRzLgoKSW4gb3JkZXIgdG8gaGF2 ZSB0aGF0IGNvcnJlY3RseSB3b3JraW5nLCB0aGUgJ3NldF90cmlwcycgb3BzIG11c3QgYmUgCnVz ZWQgdG8gY2FsbCB0aGUgdG11X2NvbnRyb2wgY2FsbGJhY2sgaW5zdGVhZCBvZiBjYWxsaW5nIGl0 IGluIHRtdV9wcm9iZS4KClRoZSBpbnRpYWxpemF0aW9uIHdvcmtmbG93IHNob3VsZCBiZToKCnBy b2JlLT4uLi4KICAtPnRoZXJtYWxfem9uZV9kZXZpY2VfcmVnaXN0ZXIoKQogICAtPnRoZXJtYWxf em9uZV9kZXZpY2VfdXBkYXRlKCkKICAgIC0+dXBkYXRlX3RyaXBfcG9pbnRzKCkKICAgICAtPm9w cy0+c2V0X3RyaXBzKCkKICAgICAgIC0+dG11X2NvbnRyb2woKQoKQWxzbywgcmVwbGFjZSB0aGUg d29ya3F1ZXVlIGJ5IGEgdGhyZWFkZWQgaW50ZXJydXB0LgoKRG9lcyBpdCBtYWtlIHNlbnNlPwoK LS0gCjxodHRwOi8vd3d3LmxpbmFyby5vcmcvPiBMaW5hcm8ub3JnIOKUgiBPcGVuIHNvdXJjZSBz b2Z0d2FyZSBmb3IgQVJNIFNvQ3MKCkZvbGxvdyBMaW5hcm86ICA8aHR0cDovL3d3dy5mYWNlYm9v ay5jb20vcGFnZXMvTGluYXJvPiBGYWNlYm9vayB8CjxodHRwOi8vdHdpdHRlci5jb20vIyEvbGlu YXJvb3JnPiBUd2l0dGVyIHwKPGh0dHA6Ly93d3cubGluYXJvLm9yZy9saW5hcm8tYmxvZy8+IEJs b2cKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK