Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp1202794rda; Mon, 23 Oct 2023 05:58:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGX9xNhIS2bEeGoeNfiG/D4ROrX1ZiD6xyyO4PqdJXtf5FoVJ6YVKS8OQyNJ2i8xsNHj65L X-Received: by 2002:a17:903:1246:b0:1ca:28f3:5690 with SMTP id u6-20020a170903124600b001ca28f35690mr11437918plh.46.1698065924184; Mon, 23 Oct 2023 05:58:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698065924; cv=none; d=google.com; s=arc-20160816; b=WyhyfJ9XyQfqsGSdwwxsBEAnCwvoWvMTI/yqlyS21d9X1GZqx2h9xXs2o+UI/0ucam ELVuG5832hEVIfFg2XbabfrWqmmD+MOaavQnQaVdJW+U5nHxdTp6r/5yX1bUR+jdK767 4bgA3mjZrDwmEaVj57jRVOdLDhgprPDtUNezbYwW8ciCQWgYxX/Q84XAUeQX7xi+mOde htxdfkzBUCugBH3/D4nRpPzHRn0+vqRpLcicCJfGxGLLTcYfCvdpu76mYtHyx1eB6TZ2 n4AtuMrs7g82+vO/IJdwa18SwKK3tnLdL/XTo65mtH50uYhztymnx9uAj210g7mnRDzW 4l0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=VCskniQ2XRkvwK4vC4b6weDFjkkLt0t/XzjgwH7bSNM=; fh=JDOsiNNvSMoFegCovCCps/AfGRGgLc4088Vj28BpSdU=; b=c66Ns22YDehHCA5rCsKYqKx4Cnh1aEBrjerFZUjfnxBeLTkiBG/P5WKoSPt0wy8tGb 8o5X/C2Zq0V6+9jAaFlyppeLva+VEnaWGF6lPUqL+K5nL9aKXErwSaSSKVTPBGqPESwY F70BjmusZYchaYy+nw/0A894z0260eFAiFstf2K3jCan2co9JO7sShnKPGZ6dq9+Wn3f k7kULXJI/iOTSnikkVNZqBy9dUEGlI5qP7BsoDGSEAQnblpCyrX/nlj5v6WNJVOYmEF0 axApVrYjkwEFCVkG5pOmo1JMdWYQahbzbmukBNd6CMyJuejgS52CXOiquy7uy1p/MSzC NIrg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id i9-20020a17090332c900b001c62b51ac0fsi6513710plr.306.2023.10.23.05.58.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 05:58:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id B0CB9806510A; Mon, 23 Oct 2023 05:58:41 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230108AbjJWM6W (ORCPT + 99 others); Mon, 23 Oct 2023 08:58:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229956AbjJWM6V (ORCPT ); Mon, 23 Oct 2023 08:58:21 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 5DAE9C4; Mon, 23 Oct 2023 05:58:19 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 02FED2F4; Mon, 23 Oct 2023 05:59:00 -0700 (PDT) Received: from [10.57.82.113] (unknown [10.57.82.113]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8A5A03F762; Mon, 23 Oct 2023 05:58:16 -0700 (PDT) Message-ID: <91b3ff5a-cfdf-4bba-806e-093a90746d86@arm.com> Date: Mon, 23 Oct 2023 13:59:07 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 7/8] thermal: exynos: split initialization of TMU and the thermal zone Content-Language: en-US To: Mateusz Majewski Cc: Bartlomiej Zolnierkiewicz , linux-pm@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Krzysztof Kozlowski , "Rafael J. Wysocki" , Daniel Lezcano , Amit Kucheria , Zhang Rui , Alim Akhtar , Liam Girdwood , Mark Brown , Marek Szyprowski , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20231003111638.241542-1-m.majewski2@samsung.com> <20231003111638.241542-8-m.majewski2@samsung.com> From: Lukasz Luba In-Reply-To: <20231003111638.241542-8-m.majewski2@samsung.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Mon, 23 Oct 2023 05:58:41 -0700 (PDT) Hi Mateusz, On 10/3/23 12:16, Mateusz Majewski wrote: > This will be needed in the future, as the thermal zone subsystem might > call our callbacks right after devm_thermal_of_zone_register. Currently > we just make get_temp return EAGAIN in such case, but this will not be > possible with state-modifying callbacks, for instance set_trips. > > Signed-off-by: Mateusz Majewski > --- > v1 -> v2: We take clocks into account; exynos_tmu_initialize needs both > clocks, as tmu_initialize might use the base_second registers. However, > exynos_thermal_zone_configure only needs clk. > > drivers/thermal/samsung/exynos_tmu.c | 104 +++++++++++++++------------ > 1 file changed, 60 insertions(+), 44 deletions(-) > > diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c > index 7138e001fa5a..343e27c61528 100644 > --- a/drivers/thermal/samsung/exynos_tmu.c > +++ b/drivers/thermal/samsung/exynos_tmu.c > @@ -251,25 +251,8 @@ static void sanitize_temp_error(struct exynos_tmu_data *data, u32 trim_info) > static int exynos_tmu_initialize(struct platform_device *pdev) > { > struct exynos_tmu_data *data = platform_get_drvdata(pdev); > - struct thermal_zone_device *tzd = data->tzd; > - int num_trips = thermal_zone_get_num_trips(tzd); > unsigned int status; > - int ret = 0, temp; > - > - ret = thermal_zone_get_crit_temp(tzd, &temp); > - if (ret && data->soc != SOC_ARCH_EXYNOS5433) { /* FIXME */ > - dev_err(&pdev->dev, > - "No CRITICAL trip point defined in device tree!\n"); > - goto out; > - } > - > - if (num_trips > data->ntrip) { > - dev_info(&pdev->dev, > - "More trip points than supported by this TMU.\n"); > - dev_info(&pdev->dev, > - "%d trip points should be configured in polling mode.\n", > - num_trips - data->ntrip); > - } > + int ret = 0; > > mutex_lock(&data->lock); > clk_enable(data->clk); > @@ -280,32 +263,63 @@ static int exynos_tmu_initialize(struct platform_device *pdev) > if (!status) { > ret = -EBUSY; > } else { > - int i, ntrips = > - min_t(int, num_trips, data->ntrip); > - > data->tmu_initialize(pdev); > - > - /* Write temperature code for rising and falling threshold */ > - for (i = 0; i < ntrips; i++) { > - > - struct thermal_trip trip; > - > - ret = thermal_zone_get_trip(tzd, i, &trip); > - if (ret) > - goto err; > - > - data->tmu_set_trip_temp(data, i, trip.temperature / MCELSIUS); > - data->tmu_set_trip_hyst(data, i, trip.temperature / MCELSIUS, > - trip.hysteresis / MCELSIUS); > - } > - > data->tmu_clear_irqs(data); > } > + > + mutex_unlock(&data->lock); > + clk_disable(data->clk); > + if (!IS_ERR(data->clk_sec)) > + clk_disable(data->clk_sec); In all other places the clock is strictly protected inside the critical section, but not here. In this code in theory on SMP (especially with big.LITTLE system with different speeds of CPUs) this could lead to disabling the clocks just after other CPU acquired the mutex and enabled them (in order to use the HW regs). Please put those two clocks before the mutex_unlock() and in the reverse order. Regards, Lukasz