Received: by 2002:a05:7412:a9a8:b0:f9:92ae:e617 with SMTP id o40csp38833rdh; Wed, 20 Dec 2023 15:18:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IFuUjxShc+5QytXi/bOCDzh1W/QwHCAfsSn+7EGSv8jGZIvg+uey7S4mQ/PJ4PM7hpMkOFK X-Received: by 2002:a05:6602:1546:b0:7b7:d220:9e3d with SMTP id h6-20020a056602154600b007b7d2209e3dmr9512024iow.2.1703114318391; Wed, 20 Dec 2023 15:18:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703114318; cv=none; d=google.com; s=arc-20160816; b=GnKcFTG18ymi80NkX3lZqg677bfdXG61d5axg3l7FzGsr0mrFVgUK2ao4Mcf5AUMJi 3XS9G+N+uuXNBRzonP5N2gdbQgSAT5PTyMI55KpDnGnoqIiMfgB0uCEFjI5lmN+hyMru jx9/vLS6/GFexy7y3g6InWgdtaiTtXoFCBpOrTUgjkmycPIX/YR6el+53yCldVVJ+xC1 p4oAKC4KlQhOmAbR+/0nUdB7BnnWLIfULhBBVJJJU+s/tq9Gn+OhPzUZrmzwJmeWJAH6 L7jskWvkIvIIMw9SE1fAhU9GIFb1GlLD/8OMjf6PQoV1L2mqN+1Tg+bugGA7E2Z7oVVv P1CA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=vwMaY0xi5CiWrDUJJo6REXdurmAUKUlFm+TJtK22jwk=; fh=BLXDRFxX5XTO46cEytehPgkEKhEpfPIIZAXbZsHkuJk=; b=XpNTK64j77S64uCZ7PTFrEGpBi7Oj9+HTcPFLgDs22pP9nQPgP+eBw1h8AZ9u83gPR ci0XPanunWJflp8qs8rA1hWrQ1t19MaOHFy9zwbFhD14dNQBWUSWyCSJTnAQ7MV9WXcc F8BKrgl77vTIA6B35cRXQONpcd+Qv4rWfdi/UoxnGecLlqcItjdi1oaFBWqVcFLrr63J +8tBFRHQ58d2gSqvLHMKoH+/WSrTieHzuaGPOOQRNWGR1vIA48btDB1VlxpLvNzNWGv7 2uzPpoDUAX77Z1JKijr2Cf48zPXFrOQQOep7fDkj/Ac9tRnUJAvrTWdjv5iVZ2rT5bdr 2r2g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-7628-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-7628-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id g5-20020a056a00078500b006ce010d03d3si441598pfu.303.2023.12.20.15.18.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 15:18:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-7628-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-7628-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-7628-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 0CDDF2875BD for ; Wed, 20 Dec 2023 23:18:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C063E4CB49; Wed, 20 Dec 2023 23:17:04 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CAC8F4C61C; Wed, 20 Dec 2023 23:17:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com 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 91E6A152B; Wed, 20 Dec 2023 15:17:47 -0800 (PST) Received: from e129166.arm.com (unknown [10.57.82.217]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 629193F64C; Wed, 20 Dec 2023 15:17:01 -0800 (PST) From: Lukasz Luba To: linux-kernel@vger.kernel.org, rafael@kernel.org Cc: linux-pm@vger.kernel.org, daniel.lezcano@linaro.org, rui.zhang@intel.com, lukasz.luba@arm.com Subject: [PATCH v3 6/9] thermal: gov_power_allocator: Simplify checks for valid power actor Date: Wed, 20 Dec 2023 23:17:50 +0000 Message-Id: <20231220231753.1824364-7-lukasz.luba@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231220231753.1824364-1-lukasz.luba@arm.com> References: <20231220231753.1824364-1-lukasz.luba@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit There is a need to check if the cooling device in the thermal zone supports IPA callback and is set for control trip point. Refactor the code which validates the power actor capabilities and make it more consistent in all places. No intentional functional impact. Signed-off-by: Lukasz Luba --- drivers/thermal/gov_power_allocator.c | 40 ++++++++++++--------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c index 626c635f137f..b5ec60ae7efd 100644 --- a/drivers/thermal/gov_power_allocator.c +++ b/drivers/thermal/gov_power_allocator.c @@ -93,6 +93,13 @@ struct power_allocator_params { struct power_actor *power; }; +static bool power_actor_is_valid(struct power_allocator_params *params, + struct thermal_instance *instance) +{ + return (instance->trip == params->trip_max && + cdev_is_power_actor(instance->cdev)); +} + /** * estimate_sustainable_power() - Estimate the sustainable power of a thermal zone * @tz: thermal zone we are operating in @@ -113,14 +120,10 @@ static u32 estimate_sustainable_power(struct thermal_zone_device *tz) u32 min_power; list_for_each_entry(instance, &tz->thermal_instances, tz_node) { - cdev = instance->cdev; - - if (instance->trip != params->trip_max) - continue; - - if (!cdev_is_power_actor(cdev)) + if (!power_actor_is_valid(params, instance)) continue; + cdev = instance->cdev; if (cdev->ops->state2power(cdev, instance->upper, &min_power)) continue; @@ -409,8 +412,7 @@ static int allocate_power(struct thermal_zone_device *tz, int control_temp) return -ENODEV; list_for_each_entry(instance, &tz->thermal_instances, tz_node) - if ((instance->trip == params->trip_max) && - cdev_is_power_actor(instance->cdev)) + if (power_actor_is_valid(params, instance)) total_weight += instance->weight; /* Clean all buffers for new power estimations */ @@ -419,13 +421,10 @@ static int allocate_power(struct thermal_zone_device *tz, int control_temp) list_for_each_entry(instance, &tz->thermal_instances, tz_node) { struct power_actor *pa = &power[i]; - cdev = instance->cdev; - - if (instance->trip != params->trip_max) + if (!power_actor_is_valid(params, instance)) continue; - if (!cdev_is_power_actor(cdev)) - continue; + cdev = instance->cdev; ret = cdev->ops->get_requested_power(cdev, &pa->req_power); if (ret) @@ -459,10 +458,7 @@ static int allocate_power(struct thermal_zone_device *tz, int control_temp) list_for_each_entry(instance, &tz->thermal_instances, tz_node) { struct power_actor *pa = &power[i]; - if (instance->trip != params->trip_max) - continue; - - if (!cdev_is_power_actor(instance->cdev)) + if (!power_actor_is_valid(params, instance)) continue; power_actor_set_power(instance->cdev, instance, @@ -548,12 +544,11 @@ static void allow_maximum_power(struct thermal_zone_device *tz, bool update) u32 req_power; list_for_each_entry(instance, &tz->thermal_instances, tz_node) { - cdev = instance->cdev; - - if (instance->trip != params->trip_max || - !cdev_is_power_actor(instance->cdev)) + if (!power_actor_is_valid(params, instance)) continue; + cdev = instance->cdev; + instance->target = 0; mutex_lock(&cdev->lock); /* @@ -648,8 +643,7 @@ static void power_allocator_update_tz(struct thermal_zone_device *tz, case THERMAL_TZ_BIND_CDEV: case THERMAL_TZ_UNBIND_CDEV: list_for_each_entry(instance, &tz->thermal_instances, tz_node) - if ((instance->trip == params->trip_max) && - cdev_is_power_actor(instance->cdev)) + if (power_actor_is_valid(params, instance)) num_actors++; if (num_actors == params->num_actors) -- 2.25.1