From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3ABDE2512F8 for ; Thu, 17 Apr 2025 14:25:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899938; cv=none; b=J8qEOTDCt/Kh1TmvvYRW3NR+n7eG9tn/WdV0g8byyg/CTfzSdeLl+aWCnG6Ee9pHT5HpHBGQywL8xAWtFmjjsZhCLSFheOCSJjPvaq/yNyXtb+VjBjce5ebsUzquK1Qxg0ePHQIyMAtoaAf+jAXX2FDVJQwgvADmNO9grzu8pNQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899938; c=relaxed/simple; bh=Cori/y8yi7jlnunZM7z+pNAx55LfzsPSrBTLfWbNPD8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=az6f4v5+j/sShGApSoVm8ZFi8mQ6mPg23i8JQAGmoL9SONwtMoEb3UDDXHEAtU6d2RPDx9BT7tVBANf4MHVSU30C/ATwb2f+yFy07AkQada7Su3PLYZXNdJii2fyfkDQNa+4ztVe2dcCy5yiVdX0LxOqg5iuq1w+uJHcvsAV3D0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=pizVthba; arc=none smtp.client-ip=209.85.167.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="pizVthba" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-54d3ee30af1so916615e87.0 for ; Thu, 17 Apr 2025 07:25:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899933; x=1745504733; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kLoMIJgubi/4cvpvs3WmBPRGnJMeyrBZc1JViSgU2O8=; b=pizVthba8+pnJGt3T9nM9h26Ez1wiFVShQPbS0AWEbGogg5JwrNginydzARfIEP2/D 31ITHCc/Icsdf/bN7qO7Iw1VsAfQ2iwvrcDQxsmgvv8LSQskweK+tcOP9vremxfEjYkO U5EGjuUdvrcdzZH/6zrxgmf3pkPop+cdsSKeuN2FyGla7NJteGkY2BnUZps+rmzOxl4O NaxuMuHN+xu0DjCbn0In0q5b/GMzb1PAtlTpXXFGo31uCBZ4mA7FLv2IIfO9xvXkDHr0 5kBU2/njNCeQ7365zeTGAVAqp+vW69WZsoL633xLjsKTV8cgQR4AmfA32QIZFgx2A8Bc sKnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899933; x=1745504733; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kLoMIJgubi/4cvpvs3WmBPRGnJMeyrBZc1JViSgU2O8=; b=SrN4TM5GcEAtjvhpB313OaQYWtze/I2Si0JHOup0jT8SXl+1Mb6H3AZ5vMWcptLxne fVfvVMfpFuiMt6HW6Zdnt7rqaqHN3yukNuSSh6DuTHtIO6P8Bkt5qJqwzMnEXyHj0vAt mR9DZC2EsqoTvmKQdQIfy1sqpMTeI7LH0ua6EefGkaRQZKf2lUkR/px/oyhiJUA/4e54 C3M6G4nVL2wVySkHldVAeSr9k1IbH1FSqzMQSU5A6A4TL0BqlW4Jl+EgQymcYBwg8/fQ XDie+jD/Fkkoac3kDS3m/D78wpyCeU9oboYALxxdr9x/C37Pl0mdoXXbz1hwbCWZvIxZ 1pcA== X-Forwarded-Encrypted: i=1; AJvYcCWJRQYm2Wc1sD09wMwTRKHxF1JLKU3dB4uYZN2kJeDJnDPwFobUHxXj+NNeyC684ULRP7an2GWyrpWsRT0=@vger.kernel.org X-Gm-Message-State: AOJu0YzeXzdv5IeoMkUJ5AcxEn5t/Nntu5EA3ZzlZFSo3EyP+t353FS1 aUE766gb8dBmrID2oleekArYdYmbv5cAuClu7LbYGFhTQh6mDKRxoen0I4DSyrQ= X-Gm-Gg: ASbGncvr+A9/LwsOHcl8huJ7ZdBv3SmCykqGHi6GcyTksXvoE4dezbOsfKOt/3pfzv6 XqwydZ2tJMQo3y8YiOqxaO+1XOdPBcPrEDssPUa3a2Qv3jg6c+Qg4alSlcv1VFFjcmq7Shgtqx6 QIiT3Us4Dxg99P6rGX8n18BUMT8m3ca9ZD8M0EKbC2IFmIv5Own5VhB4/pMT7ktpbBgvpWon3H1 r3hwbIBNwjG48NY1EWU6pvATaWW4zITSHK0iWExK3U0x+v8k/mWj3w+xOOVWP8qZtRCuf6y0FAl UAnXuqbE4U1xa3S31N14SKcea49fDti8vcdXWB/XtVB+hnF3h4oRnNAnk/iVfE9yIf8WWVL866d PPE9wSQWo8Oe2Tfc= X-Google-Smtp-Source: AGHT+IGEHywzk0Uvrr5vva6qwKhkHAMRzineGZ+Ie2tYZ9oqV2dzLL/IgZ7exOPJtd8mc3KpgoduVg== X-Received: by 2002:a05:6512:3a93:b0:549:8809:ee32 with SMTP id 2adb3069b0e04-54d64a9d570mr2067636e87.22.1744899933071; Thu, 17 Apr 2025 07:25:33 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:32 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 01/11] pmdomain: core: Convert genpd_power_off() to void Date: Thu, 17 Apr 2025 16:24:59 +0200 Message-ID: <20250417142513.312939-2-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" At some point it made sense to have genpd_power_off() to return an error code. That hasn't been the case for quite some time, so let's convert it into a static void function and simplify some of the corresponding code. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 3523d0331cec..574a0de1696a 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -908,13 +908,12 @@ static void genpd_queue_power_off_work(struct generic= _pm_domain *genpd) * If all of the @genpd's devices have been suspended and all of its subdo= mains * have been powered down, remove power from @genpd. */ -static int genpd_power_off(struct generic_pm_domain *genpd, bool one_dev_o= n, - unsigned int depth) +static void genpd_power_off(struct generic_pm_domain *genpd, bool one_dev_= on, + unsigned int depth) { struct pm_domain_data *pdd; struct gpd_link *link; unsigned int not_suspended =3D 0; - int ret; =20 /* * Do not try to power off the domain in the following situations: @@ -922,7 +921,7 @@ static int genpd_power_off(struct generic_pm_domain *ge= npd, bool one_dev_on, * (2) System suspend is in progress. */ if (!genpd_status_on(genpd) || genpd->prepared_count > 0) - return 0; + return; =20 /* * Abort power off for the PM domain in the following situations: @@ -932,7 +931,7 @@ static int genpd_power_off(struct generic_pm_domain *ge= npd, bool one_dev_on, if (genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd) || atomic_read(&genpd->sd_count) > 0) - return -EBUSY; + return; =20 /* * The children must be in their deepest (powered-off) states to allow @@ -943,7 +942,7 @@ static int genpd_power_off(struct generic_pm_domain *ge= npd, bool one_dev_on, list_for_each_entry(link, &genpd->parent_links, parent_node) { struct generic_pm_domain *child =3D link->child; if (child->state_idx < child->state_count - 1) - return -EBUSY; + return; } =20 list_for_each_entry(pdd, &genpd->dev_list, list_node) { @@ -957,15 +956,15 @@ static int genpd_power_off(struct generic_pm_domain *= genpd, bool one_dev_on, =20 /* The device may need its PM domain to stay powered on. */ if (to_gpd_data(pdd)->rpm_always_on) - return -EBUSY; + return; } =20 if (not_suspended > 1 || (not_suspended =3D=3D 1 && !one_dev_on)) - return -EBUSY; + return; =20 if (genpd->gov && genpd->gov->power_down_ok) { if (!genpd->gov->power_down_ok(&genpd->domain)) - return -EAGAIN; + return; } =20 /* Default to shallowest state. */ @@ -974,12 +973,11 @@ static int genpd_power_off(struct generic_pm_domain *= genpd, bool one_dev_on, =20 /* Don't power off, if a child domain is waiting to power on. */ if (atomic_read(&genpd->sd_count) > 0) - return -EBUSY; + return; =20 - ret =3D _genpd_power_off(genpd, true); - if (ret) { + if (_genpd_power_off(genpd, true)) { genpd->states[genpd->state_idx].rejected++; - return ret; + return; } =20 genpd->status =3D GENPD_STATE_OFF; @@ -992,8 +990,6 @@ static int genpd_power_off(struct generic_pm_domain *ge= npd, bool one_dev_on, genpd_power_off(link->parent, false, depth + 1); genpd_unlock(link->parent); } - - return 0; } =20 /** --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 80A37251799 for ; Thu, 17 Apr 2025 14:25:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899938; cv=none; b=BRkK+4U1shqiM2pbehorRvixfV2L4WAhD0Xk87SIMISkT4S5x+SDgAZYTNOnnOXMPsXXBp2tzUIOXxerhLmoLVXlZb5h4O68NmC15O9g1tXHxBj4xWlSssetfobQmhDDZBqAAF00za+ktnwrCo4xXUXRbRF+VuYnLp/HmRTk9tg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899938; c=relaxed/simple; bh=XlSonSv9LviP5yU3Iu5BfSf+jtHN/4GkokQYgxmFxEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EJ/NJqKlJVhCN3KD7GzKQWjQcb33+T+l5yRdo3/cngkLgZSWuUC9WtdMevAZZT+UETbibinksMnS2ZUqbbrwVDtIkTs5Hj2nIQlyGktuLrdK4GghAGgrZZJo3wIX/sQc5/9ks/Bhe14vZ0MQaiFWhW8GOhWiho1YmzejzrqjhLw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=DLnqK4P4; arc=none smtp.client-ip=209.85.167.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="DLnqK4P4" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-5499d2134e8so1015023e87.0 for ; Thu, 17 Apr 2025 07:25:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899934; x=1745504734; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VAv5QpD/3W+QIUIAEsxCNkQa5aZqJu5jR8/2XBRcQ9U=; b=DLnqK4P4iIAM2ihwg+U77jmEfycxjz1IL8tCwfuLx7HzSb6RPN0HBG93fz6urzaFjx hKDex43/Ng2fUEWpo6t4Dg7PPWSxiSRtRl2LSTlZ4IbQc7GgY4AVsBGcUh3aVQ7zd2KR g89k6P7XhW38H7CAYymtMj0Ggkk3ghuKt94qE/LlHP73/Km5ksSH7VRDuY5bDN4EuDFS rn7dC+mAm8Mr9NI6tj9BXmfmux2Wg2ExniQrDRY04A3XhgiS8Kak6I5mDx8X9Iknu3WK CKfBDO5+1qGf1594i/bJwlmiO6uQMsoKNwkVYs9vaQCTIdL3bdyR8Xflmt692pRWMHcu rLww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899934; x=1745504734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VAv5QpD/3W+QIUIAEsxCNkQa5aZqJu5jR8/2XBRcQ9U=; b=Bt0eKRWesA0kVf68avTCEn8iQ860UtFfKufy3X4vEihNDhUHeXaADTjLrBgkIZzHXU OEGF3TrSd8jJDTSJXUB9oq8u/ES4A9UznDf59YQ12/fzxdPz+rV4BAq8y/9ziBHWUIW6 /79bFn36/Tp+4x82N3zEDxRaE7t7NFnDjq3K2r87J6WJgwMSaqwY4Zy/gGe1LbjazvSv TbcS7kvMXaXT5lQYJ3drJQLmDgx4U6/SujKbu9MthyG+kgRAyVgZSbtYztZXxVZWUuxn BigEwtYjBNTD2ziIXW3HvDBruWjHfpN78DCQijiT0xkTSlo1HCzVVhlgFpbHLcViLqov dukg== X-Forwarded-Encrypted: i=1; AJvYcCXPiiXG68c6A1mltnpr7V2XlnfAHWUpEl5igZArNgncqkVW6PiMwlG/HU5NodA/nUnvwU+QW5q5aboOPCk=@vger.kernel.org X-Gm-Message-State: AOJu0YyzKYh8UbgC6GteA+Egih+DE6VoESsTlqcX3E/7irQMiWNask/d zVtF3a5PU8PZFSShwLreeRXTPKOy2zVpaRXSMh6g7mxsMeOkx4UkAyFok1SQqWs= X-Gm-Gg: ASbGncsnfLkAfopGzaoeCsiLWx++GS8b59Kpxo70A876sbjikmy4pMHDbJHYh21V6ic ilXjOl9CRtEhlvJLhgbPJfBs59Uhk5/qoAtqUxht3QKu6amtpRRPzYHXLSCo0tgV1wh3OeLCk0W pslEZRvZdewKVWFoRkkKCM+rJy6lS+UevEEztnHrppR65e5pBsTMme4kaVAy2ScjpYNGFdQWhDi KLDmOYlJF6EZxIiC+35wd26PS0362CTFTjSlxvrb3hyA0fYCF3lvUYnRnjr1kqMAbDCSYqb9VZ0 TE1dJQslimvstYICqDGBI/VzMIEVx8wWkuMuUXI0WY1HgBF6Du5zqdxwKYtVodhdnyybgzRrA9G Cy0v59zNgPdLTjb0= X-Google-Smtp-Source: AGHT+IEdRb+byxDtsaF938ihBQexYxdm23PnPrnwFBeiHnuU4i+1SkPOaDcL0cyZpoToJUlNYAezMQ== X-Received: by 2002:a05:6512:334c:b0:54d:68b7:86da with SMTP id 2adb3069b0e04-54d68b78b62mr1388539e87.42.1744899934579; Thu, 17 Apr 2025 07:25:34 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:33 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 02/11] pmdomain: core: Simplify return statement in genpd_power_off() Date: Thu, 17 Apr 2025 16:25:00 +0200 Message-ID: <20250417142513.312939-3-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than using two if-clauses immediately after each to check for similar reasons to prevent the power-off, let's combine them into one if-clause to simplify the code. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 574a0de1696a..34a85bf347ad 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -917,20 +917,14 @@ static void genpd_power_off(struct generic_pm_domain = *genpd, bool one_dev_on, =20 /* * Do not try to power off the domain in the following situations: - * (1) The domain is already in the "power off" state. - * (2) System suspend is in progress. + * The domain is already in the "power off" state. + * System suspend is in progress. + * The domain is configured as always on. + * The domain has a subdomain being powered on. */ - if (!genpd_status_on(genpd) || genpd->prepared_count > 0) - return; - - /* - * Abort power off for the PM domain in the following situations: - * (1) The domain is configured as always on. - * (2) When the domain has a subdomain being powered on. - */ - if (genpd_is_always_on(genpd) || - genpd_is_rpm_always_on(genpd) || - atomic_read(&genpd->sd_count) > 0) + if (!genpd_status_on(genpd) || genpd->prepared_count > 0 || + genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd) || + atomic_read(&genpd->sd_count) > 0) return; =20 /* --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD1652517AB for ; Thu, 17 Apr 2025 14:25:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899939; cv=none; b=XE8FMbpAToh4LQUCv4BD3SVAebXNSegYm9PXHCiMNnvBqBYgDH3wjTxTOWdxsALKniEMlizHVpU3lNZXoYwslo7F0PSfp7DXWPVfPk+KKRgoTmpSn/IK95xz95hqka6b5g060iBJzZihkw+qbq1/vd2Z3Kf1p5TCQ+ZwkJ25L78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899939; c=relaxed/simple; bh=N9bh2sDAqWIi8kjkl/KRpShW+sOiFuj+Ys/q11FogxA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Umxu3GZXTxkp1MylOpfyPHD64PThuhG0Orgbo60UyBoGnYtBb/MstfRpfGb6Ouo9Ny0s8p/brYDx+nUg3vJFe9we0vMf+e1u7lce1DIXVkrVhKQHlg8/T3AhrwLr6oDlE/RyVmBGcxBrHBfkC0O7d9SY8mHGQwHXGzCVUxQxAlI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=vmwlZ0LP; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="vmwlZ0LP" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-548409cd2a8so1153618e87.3 for ; Thu, 17 Apr 2025 07:25:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899936; x=1745504736; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LWK6OGQUPtJsrWaqiRqfJ/zsH5wseFrp650Wv3Bg60w=; b=vmwlZ0LPlPe8HaIUcfLQVLJkNPZvu6OOt7f8Ie76eTZVUyN/0gIBqzgcT8i0l5p/WG UAod08jCNl6UNGn76MKaw5detGjx+u72Fij+1cG1/oE3GThB+PBreNqkYxvdHiCksGAt evlpL7oKzOHvmpIs5QgUBLDvhkQIuEA5PA/jzQv/y9XrD+vOvk7enxIHkq9wcafxAyZs XhyWYHCk1CzDttsia70FWK8UOt4YO0/CIrbIgyQBgY/4rkQEd1/Yq+OSQzF5nxypeFi5 4VXWkjJzqK2JFMoKECysW7kspCok/5TkeOppGBqtxBN9pntvsRVCFIo1SFQSkofbm7WT PyNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899936; x=1745504736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LWK6OGQUPtJsrWaqiRqfJ/zsH5wseFrp650Wv3Bg60w=; b=m6jwr03jXFFu3QBQVUWNEvR1ure2uIPkINwxVauKV1WPEIMVBNaybPCnaPdn5m5CJ7 dfNMAaJUsxIihwTf2M5WZD6MuuShyBQLb9K34GPLDstctyTjtwNxXanQWMPsDVN5OwfP +S6DX1EgLkrobsDt/mkID1nfGjeB7dAXoTuBU7kzyYwfkpQqdCyzK30IljhLyQMuglto rm7sdLPCCPAo5fkEuoeXmSAKqjHX8tHPZ+kgUBgcCvtcMYXrO3cFSX6pIoeoDuDe9+uL c9Q/czCl+kKAtVm365mdiZPI/haM2LJfAAz9HkIHDvwxHfnX3fOd3RLwL3tKVx1/LmnP Py7Q== X-Forwarded-Encrypted: i=1; AJvYcCXKcREVv1Xkv2emxnVuRyjvTRUbPMSF4xVgjiVpA7xS0OAABDOT3iDbDp/lvcq8prHXCjWxy3vEqncaSyw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9iXp856ijGIAu2nJmr/seGyBXVreooSXHZSIE4t8hYLDCHuQw iz5eB44k+j5eem6FK24jPHQ8O4LA4MUnwLESO6gwW6odcSucFGiWYMRGTab5gHY= X-Gm-Gg: ASbGncvQ0ml1GoO5nm3yF5XWmEW5aYRbIInC15vm4jk5nJFY671YYmH+By3XuD+caqN ujTpiuxw99Y61cv7hU8Tm6ofNxL6hgIrS3VD21qHk2/p9HZ/ObkdMhSpRQxiL0S2bIzj3yej5px K9/ZjdOmcEJDjOK+XNh7IsbK/vlw+354TxInK15KW+zg68wpstF2MHjkEXRBxtMml2nAbwYiMnH QhlAKwK4PMaCYlltcTlCP7LXc8GMLL9Eqy4iN3I+qm0k9DNb3oXH0hSVkR7wfYvzsBW6s+sdzkn MA14ZBmv3cM7s1X5IR4KF7HJiKVF1xbV+Ngf23j3dpbxAQC6mboyvj5ZYo8PHC0/0a3Y9gFNkQ1 SCmQcouqJKkTqoMI= X-Google-Smtp-Source: AGHT+IFMIMS9W78LDELYwj19yc/UbKsawjkHWp2lDcIWNSaSrbDAkmZeYKJckcObhsbeji26HeVx/Q== X-Received: by 2002:a05:6512:33d1:b0:549:91c6:96a8 with SMTP id 2adb3069b0e04-54d64a7b359mr1644875e87.7.1744899935896; Thu, 17 Apr 2025 07:25:35 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:35 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 03/11] pmdomain: core: Use genpd->opp_table to simplify error/remove path Date: Thu, 17 Apr 2025 16:25:01 +0200 Message-ID: <20250417142513.312939-4-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" While we add an OF-provider we may, based upon a specific condition, also assign genpd->opp_table. Rather using the same specific condition in the error/remove path, let's check genpd->opp_table instead as it makes the code easier. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 34a85bf347ad..035b65563947 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2343,6 +2343,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd, genpd->provider =3D NULL; genpd->device_id =3D -ENXIO; genpd->has_provider =3D false; + genpd->opp_table =3D NULL; genpd->accounting_time =3D ktime_get_mono_fast_ns(); genpd->domain.ops.runtime_suspend =3D genpd_runtime_suspend; genpd->domain.ops.runtime_resume =3D genpd_runtime_resume; @@ -2617,7 +2618,7 @@ int of_genpd_add_provider_simple(struct device_node *= np, =20 ret =3D genpd_add_provider(np, genpd_xlate_simple, genpd); if (ret) { - if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { + if (genpd->opp_table) { dev_pm_opp_put_opp_table(genpd->opp_table); dev_pm_opp_of_remove_table(&genpd->dev); } @@ -2697,7 +2698,7 @@ int of_genpd_add_provider_onecell(struct device_node = *np, genpd->provider =3D NULL; genpd->has_provider =3D false; =20 - if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { + if (genpd->opp_table) { dev_pm_opp_put_opp_table(genpd->opp_table); dev_pm_opp_of_remove_table(&genpd->dev); } @@ -2729,11 +2730,10 @@ void of_genpd_del_provider(struct device_node *np) if (gpd->provider =3D=3D &np->fwnode) { gpd->has_provider =3D false; =20 - if (genpd_is_opp_table_fw(gpd) || !gpd->set_performance_state) - continue; - - dev_pm_opp_put_opp_table(gpd->opp_table); - dev_pm_opp_of_remove_table(&gpd->dev); + if (gpd->opp_table) { + dev_pm_opp_put_opp_table(gpd->opp_table); + dev_pm_opp_of_remove_table(&gpd->dev); + } } } =20 --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 032C8252284 for ; Thu, 17 Apr 2025 14:25:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899940; cv=none; b=FKqNqjbu7dUhiNKZiTJfwoTd4ATqIWK9mT8Ro8sUZkMhWMq20jIxaw7T33ZlrhAUYJDQcf4qd3F5ghqtUkfCwYQ7MMcKKWJVwnIG4lupc/mkRKfR/vUtjuRpr40937cP40te6U9YuAOVzqXocvONbElyVIZAS0QLKIL3XBy8R98= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899940; c=relaxed/simple; bh=9Au4Fe2OLSeRsUR1xwYHxdSnAkAsfOjjKZwl2VCoWc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qLfRGM0bYzgrx2UawoIfF6T+mn369q7q1py4Bb7RZms/gUPUiqCTGESi1Q64oBto0sn1LB7YScEtVujOW7a7LoWXDTsf0+Y1ET2s7NbYLTW1P/mRztuq+dyE49ZtMhsmU7gPRm/HNT8lfRdvRI4XEjQOpJQuU9X7hvW1DgX06eE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ijiDNEaB; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ijiDNEaB" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-54d42884842so1113205e87.2 for ; Thu, 17 Apr 2025 07:25:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899937; x=1745504737; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J79qRcZGJZJmCItGNs9XR09SxwFcm6gRBRDcexcVIfk=; b=ijiDNEaBaxLMYig1oNR9LWDd2a1dIGwM9A8nWnjLQkun68n+s0wh1avqAqo8GHOuO8 T5nsMhnjs0lRWoV7I8ayUpgtmvo+483R0M46LOlAREimkJOi9lnu4lPNgapEnZhn+YWT wT1MucED4DaSYGbhXNna0P1XSv3o+dCOzLaFGmwVzryKNk1Fct3xLxndNP3dsfmtz51e b0JkdyqN6GzRuxD8BtuVc9PdHmQ3c7KNwNvjGwZQvY+rRt4EL9EuHN7GYPF4oOkeH4Lz gn+eQczWUlalS8PbbqQ3v7Os4KJmqNjGdBq89Vv5DgG6bYYz6CjnTuD+JhvOJerDEFgu BZdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899937; x=1745504737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J79qRcZGJZJmCItGNs9XR09SxwFcm6gRBRDcexcVIfk=; b=JctAocEEDGSEjtfeaUuU5TP+UXWiqsXqMNYyQbeffmy1rToKcwZenN206BIPZqKUbv wQA/AcRmSvzGmsNPlys0nX0dkwcdzJckTLut2aXaDEAlHB7quNmZH87mzJeF7wPMz9Mt ojCNEOFdlNsKCHENMHHPvgLEUy/T1Ry4WGfH+9Je5EasbQKO3+mU60BAPNds1uZZsXiW p1/6vENc7I18SBRYLiaQrGADvdpRvacrzzUJmjmJosBteNf6aYKktDMyVcK1dqWKiENj Vf3F+7UU0Q4wFkIir/hFr/HMYHuqhTYFIotrhO+Vu1+Qs9kVamTWib3jUbxVuiHmDkdQ YrMw== X-Forwarded-Encrypted: i=1; AJvYcCV3IUxVixxdEEmbdSfS9e6yMKg8YqNDmX1KYFQazUhDIpgwf12FQ4tuaqG9CtzCQnStLUiuE6NoDMGalmg=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/PTPHv6ebfyNofcSS03edp8bw+uMwJE160q4YisUBVK97aBJR yadMNXnwmAbfZAFC4+32BwbvzTv7W8HlhD5QJadJDBVJiByZj3wCZ5PbgCjfDLI= X-Gm-Gg: ASbGncvJzhcJSyd2y0MnJ3WIWiEYT9/lXTjY0Y3LBgijF//9rytNAYSDytyhx92bIjE XxxBdDgfHf36wLKQKlghMgjc+3aX8IUcSkhB7e75Wih9dv24sgqz6rOLiorpTm7jH2kDF/+8PLv POVZF1rw746v1hK14SXjsYaEJk7H0XQeDkLgpy+uuG0c+wJcZY1XroAdeIUF+USgkzLgD9D/BXT AjFIF4oCpjQQpiQv7eNyxzZvc3RNuG7lelV9DOVslDJV88wvOwKvvS8jD6ubYpyt56U8Dj+Rv1M Bas1ZpaChNbQSd34HAQf7dW9bBAKt8PAZ2Yb5gsmtwVC7otdWHjGsa8GELx50bXGwmlc5QKfldM LBqQvcXKdS1ku/pIs6LsdjUu2ZA== X-Google-Smtp-Source: AGHT+IFiUhuBtQQApad2nNH4tL0zFojb+VPiB8t6cSOcnI01Uz7KMV7xXLgUmCgNPnGefcFd0iptEA== X-Received: by 2002:ac2:4e0b:0:b0:54a:cc11:b558 with SMTP id 2adb3069b0e04-54d64ab204amr1985603e87.33.1744899937335; Thu, 17 Apr 2025 07:25:37 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:36 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 04/11] pmdomain: core: Add a bus and a driver for genpd providers Date: Thu, 17 Apr 2025 16:25:02 +0200 Message-ID: <20250417142513.312939-5-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When we create a genpd via pm_genpd_init() we are initializing a corresponding struct device for it, but we don't add the device to any bus_type. It has not really been needed as the device is used as cookie to help us manage OPP tables. However, to prepare to make better use of the device let's add a new genpd provider bus_type and a corresponding genpd provider driver. Subsequent changes will make use of this. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 89 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 035b65563947..da51a61a974c 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -27,6 +27,11 @@ /* Provides a unique ID for each genpd device */ static DEFINE_IDA(genpd_ida); =20 +/* The parent for genpd_provider devices. */ +static struct device genpd_provider_bus =3D { + .init_name =3D "genpd_provider", +}; + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ =20 #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ @@ -44,6 +49,14 @@ static DEFINE_IDA(genpd_ida); static LIST_HEAD(gpd_list); static DEFINE_MUTEX(gpd_list_lock); =20 +#define to_genpd_provider_drv(d) container_of(d, struct genpd_provider_drv= , drv) + +struct genpd_provider_drv { + struct device_driver drv; + int (*probe)(struct device *dev); + void (*remove)(struct device *dev); +}; + struct genpd_lock_ops { void (*lock)(struct generic_pm_domain *genpd); void (*lock_nested)(struct generic_pm_domain *genpd, int depth); @@ -2225,6 +2238,26 @@ static int genpd_set_default_power_state(struct gene= ric_pm_domain *genpd) return 0; } =20 +static int genpd_provider_bus_probe(struct device *dev) +{ + struct genpd_provider_drv *drv =3D to_genpd_provider_drv(dev->driver); + + return drv->probe(dev); +} + +static void genpd_provider_bus_remove(struct device *dev) +{ + struct genpd_provider_drv *drv =3D to_genpd_provider_drv(dev->driver); + + drv->remove(dev); +} + +static const struct bus_type genpd_provider_bus_type =3D { + .name =3D "genpd_provider", + .probe =3D genpd_provider_bus_probe, + .remove =3D genpd_provider_bus_remove, +}; + static void genpd_provider_release(struct device *dev) { /* nothing to be done here */ @@ -2262,6 +2295,8 @@ static int genpd_alloc_data(struct generic_pm_domain = *genpd) genpd->gd =3D gd; device_initialize(&genpd->dev); genpd->dev.release =3D genpd_provider_release; + genpd->dev.bus =3D &genpd_provider_bus_type; + genpd->dev.parent =3D &genpd_provider_bus; =20 if (!genpd_is_dev_name_fw(genpd)) { dev_set_name(&genpd->dev, "%s", genpd->name); @@ -3355,9 +3390,61 @@ int of_genpd_parse_idle_states(struct device_node *d= n, } EXPORT_SYMBOL_GPL(of_genpd_parse_idle_states); =20 +static int genpd_provider_probe(struct device *dev) +{ + return 0; +} + +static void genpd_provider_remove(struct device *dev) +{ +} + +static void genpd_provider_sync_state(struct device *dev) +{ +} + +static struct genpd_provider_drv genpd_provider_drv =3D { + .drv =3D { + .name =3D "genpd_provider", + .bus =3D &genpd_provider_bus_type, + .sync_state =3D genpd_provider_sync_state, + .suppress_bind_attrs =3D true, + }, + .probe =3D genpd_provider_probe, + .remove =3D genpd_provider_remove, +}; + static int __init genpd_bus_init(void) { - return bus_register(&genpd_bus_type); + int ret; + + ret =3D device_register(&genpd_provider_bus); + if (ret) { + put_device(&genpd_provider_bus); + return ret; + } + + ret =3D bus_register(&genpd_provider_bus_type); + if (ret) + goto err_dev; + + ret =3D bus_register(&genpd_bus_type); + if (ret) + goto err_prov_bus; + + ret =3D driver_register(&genpd_provider_drv.drv); + if (ret) + goto err_bus; + + return 0; + +err_bus: + bus_unregister(&genpd_bus_type); +err_prov_bus: + bus_unregister(&genpd_provider_bus_type); +err_dev: + device_unregister(&genpd_provider_bus); + return ret; } core_initcall(genpd_bus_init); =20 --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D63E2512F8 for ; Thu, 17 Apr 2025 14:25:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899944; cv=none; b=nfAm0QyxmrSi/w7hMxo9Esl9Y3+BAY6LwbZw0tTfezreyaO8dq1Eco80JpwgldLsoMgzfAfVpvimE5MAuXnRX0xC4ycNdSt8aS0JrYV2pQA3LiZdDxmN06NdNYxznhr8Sntxdb98gEYY0N16JYiPvciNrvsvM4GrK3PkHHsY9iA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899944; c=relaxed/simple; bh=hGEGke+YeMNPuG7Ik9fetNSAb/9H7liP355EVYXpzPI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZQg+7N+WwBvyRWRHhq2T5mINQIukPu24BRuRNogPm9qH7BrUPQ/cdFrWZgsakqpeU9fSfTPFYrGo//SCqh4Rrs1FUXr4Qh/VNB/ASsusEGNne2eoUmTBXThcjSwSAXQjD4BvGOxtR3RZFSXEsI5Ibty6oUH6BTPJVXWr8PkTycQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=OJE6Cpff; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="OJE6Cpff" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-549b116321aso969254e87.3 for ; Thu, 17 Apr 2025 07:25:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899940; x=1745504740; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BsxBU0bGS5KqHJ803b5B2Fj0PSRviE9NZjBErJhiWF0=; b=OJE6Cpff9qR0c5sdMWMW12TACVifchxkMfkpP24AJp7/p9GXHetnbfIfMUlwzNDLkW 6rVv6Kj7Ja4ZbkpFG8QReb+jAUMT8vnaCti5Js9Vffx6yGYK/mVjW4ktHK2SLC8jMEL3 zgk4qkKKV9h1A4+cwHon77gTOHTOCNt3qhCAcYjgUEpdQhoQbKQXoZG/yMxanTsLknGa SLCXqpQW1VhSLB4W6cFW90vdNgF4ZtYXrc9GSvYc51NY9F9vW6GDmMO2QLAjnPkFxJZY fRSanCIvU4X8OjDgBIdEGfT9J3W/SJv7M8B5VpJrCs4p6eAcBXmpT9hadmMOpnD5ZpeW TyDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899940; x=1745504740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BsxBU0bGS5KqHJ803b5B2Fj0PSRviE9NZjBErJhiWF0=; b=eCO0VYgMHHYveFeDjxzcC/4JhU84qBHYCz+XfL8KmqPLVa2mbkY/pRfRIrX0AIw2bl Mj924oJ3gjGQIzYMD8R6875LmyrGqUuQjemiuD6HpW3OqDLDAEMgirhtu5CFABY8CFqq oXVLjEnfUZEtkHelDL/AlUSMw1ChzfPbTajb5yd/afMKYHPSTozcD9EOdefYcvFo27SJ gcNtL0O45SyzB+STKlO8deC4aJ9+uIRFETltj5aNmMsCvxYwZlOU/rP57BOkl5OJIqhq iuGZvaqNekmYIhBa6mo7d8L+6aprPXAbdj+Wp0NaXxqYH+OH0l/AgNxs5hG0K5RDohzY GKiQ== X-Forwarded-Encrypted: i=1; AJvYcCVydTkhvxXXUF7K6y7nswHsjiNMJLtpH6aVbM6EVGWMAnOKwTG7SnkRbw+61SlpwXO6j148xCwIZa+AGVI=@vger.kernel.org X-Gm-Message-State: AOJu0YyjrOCqMEf+F5EIQD87cYF8jsCQLrBFeKqw3JhZhVeCiSl7a4GW CTIGQLc7gL21E4XgnoZxPN7FtJDBYxfEILjiewuXo8s3C9wm5+N4MZTRTESk9ww= X-Gm-Gg: ASbGncvs1bZr8MyaSxyhYksEg2WFirbRQkAsBWxeCvlE+J6Rhbyfo3a35qyognSqKBb Dxt3ZTK6g5bvknJ4CzBj652GOP/Eec80OfvhrK0NLZYNJMokVKI0dYccsa86R/GgxYLQZRpTqsG /bRYEBHLUvPgwyJ6bEU7emW9NpC+w+LqUcC5d1wAf02R3X+bBR3FL2BOOSFJx7nnbBzzJAWCXE1 acK0q+P3u6lC01i1uFXFJaonzybLVnPia94xtAO8xdkQ+FNEI+JW3UCCOxIhZ1Qz3UUsCv6wJHT AVtB4/B/Wy3BeH8OHcFpVmARGK/ZA1VAFk1qEsQQYZKFtJkonFQ4xt0hBggabzfBJeNqoVtnqyU FgHEQzMnjLjlFlFI= X-Google-Smtp-Source: AGHT+IEWl4UhmNQk6NGrzL0Iqf0HFQV64z24gz6YKYgW7OTjKrIcQquUG8drUV+xQ2lv6sucMcxvpQ== X-Received: by 2002:a05:6512:304a:b0:549:8c86:9bf6 with SMTP id 2adb3069b0e04-54d64ae80e7mr2023094e87.39.1744899940189; Thu, 17 Apr 2025 07:25:40 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:38 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 05/11] pmdomain: core: Use device_set_node() to assign the fwnode too Date: Thu, 17 Apr 2025 16:25:03 +0200 Message-ID: <20250417142513.312939-6-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than just assigning the dev->of_node for the genpd's device, let's use device_set_node() to make sure the fwnode gets assigned too. This is needed to allow fw_devlink to work correctly, for example. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index da51a61a974c..3911d3e96626 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2627,6 +2627,7 @@ static bool genpd_present(const struct generic_pm_dom= ain *genpd) int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd) { + struct fwnode_handle *fwnode; int ret; =20 if (!np || !genpd) @@ -2635,7 +2636,9 @@ int of_genpd_add_provider_simple(struct device_node *= np, if (!genpd_present(genpd)) return -EINVAL; =20 - genpd->dev.of_node =3D np; + fwnode =3D &np->fwnode; + + device_set_node(&genpd->dev, fwnode); =20 /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { @@ -2661,7 +2664,7 @@ int of_genpd_add_provider_simple(struct device_node *= np, return ret; } =20 - genpd->provider =3D &np->fwnode; + genpd->provider =3D fwnode; genpd->has_provider =3D true; =20 return 0; @@ -2677,6 +2680,7 @@ int of_genpd_add_provider_onecell(struct device_node = *np, struct genpd_onecell_data *data) { struct generic_pm_domain *genpd; + struct fwnode_handle *fwnode; unsigned int i; int ret =3D -EINVAL; =20 @@ -2686,6 +2690,8 @@ int of_genpd_add_provider_onecell(struct device_node = *np, if (!data->xlate) data->xlate =3D genpd_xlate_onecell; =20 + fwnode =3D &np->fwnode; + for (i =3D 0; i < data->num_domains; i++) { genpd =3D data->domains[i]; =20 @@ -2694,7 +2700,7 @@ int of_genpd_add_provider_onecell(struct device_node = *np, if (!genpd_present(genpd)) goto error; =20 - genpd->dev.of_node =3D np; + device_set_node(&genpd->dev, fwnode); =20 /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { @@ -2713,7 +2719,7 @@ int of_genpd_add_provider_onecell(struct device_node = *np, WARN_ON(IS_ERR(genpd->opp_table)); } =20 - genpd->provider =3D &np->fwnode; + genpd->provider =3D fwnode; genpd->has_provider =3D true; } =20 --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2CD27253329 for ; Thu, 17 Apr 2025 14:25:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899946; cv=none; b=Rc9NtV3ZpzTH37fy7LWMThOSB8sGNkNx+MVRSWB6aHWUXTuJH2q6OKpTW3Gengd3JYCOQ/ohOMqLbgOFrcpTXjfr4j4QPpvg92KQJu9nEXlATPxmhaHks0UC5RcfgSN+0WjN7U1G3vQ2bc/gdQR7LGousMPqIrb0SVrehV0f3sk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899946; c=relaxed/simple; bh=mCvK16gSgEDQy1+5bYn7FFtCLXuKxhPqDJ3FRjReYEA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NRWe0Dw8gYebJOhFmyA9W+0SauO2wjMUmUdnGVqWqHGuYZXpldwydbE9aqwtm3Ed7OXFONNE1O1tyr8dqwHR1mtLIiOjPwB3k91+tf+4gL2lJ0lMWMgTMWoMPBX9LkVuivZ2tHnJ7nik5vnVI4wVmZyed7oJcEvZkXe3y3KUI2E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=YhmeIm5G; arc=none smtp.client-ip=209.85.167.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="YhmeIm5G" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-54954fa61c9so1118894e87.1 for ; Thu, 17 Apr 2025 07:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899942; x=1745504742; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IhCzeeuIRn9U4lLFeFB39wEFdroIdbbgBLNLNN654Y4=; b=YhmeIm5Gv+7KPC7WLKw4TTfzlaVcxpqkiHsyMEDZaBV2xsaHhfV9xgH3WpL1WIaKtW eAVoTBxfiZfWZsErRI2Tg6ajPU2wH+WPqae2x1s2rJdSb6lT1ZV2oXsxNUvNBXW+drII ExfeJ7zk3xKLyIPV9uvOnSfvZOj92GlwWYce8PgvMCLVs9sx5bURTZi7ORXKZPgRufLd 55hnG75pfgVeGhoQhmEnNadY2gpxe6IHlJIWGJMWRAZT+hSTNsnfNX/CsF9VkuzAC7ba t3IEck7D7wF/xFgxHNZIY/Ia6uSnH059t2eUnJBAyJvJF6uNFC7Dyhb1qiQ9JaQWVQJi z9WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899942; x=1745504742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IhCzeeuIRn9U4lLFeFB39wEFdroIdbbgBLNLNN654Y4=; b=JDvvtx4fxpKr5HuP9jRMo2D00eLpA7rHAYApWUuSjbJACwEUntAuE3s+bVUsTIe3fE x2uTSWGfynvDUAonLntW/KTUKMeUgnAeSl5KnZjCWYvfDJBEFBE8iXlHOqbRzSDc9KJs Z0cyEOqrvsMfq0Z5OwP/jBLkMcbYBT1UEQM2uug+bM+7mhfU38E/xtkfmvflJ0rdWz2w M1PUCbXGWcY2a05mmQZn0mQONjZiCcb5mQdZOHJOrzqncetMZnujUhjO2Xj0ht/kEpX5 cL/RmLEGcp0hyXg7GpblY9aYWeu5smMbxTz94cMaVo+LhB9zdOxPvlbx4rDo2RT8V4Jw jX1Q== X-Forwarded-Encrypted: i=1; AJvYcCURLaFp26Nl2+2MdwcjT02dlqeGqhWAqxSDfqcm9g8k8L+CaT6d8y2rt1MmBsLog2X7no1O1xUEhfHrxoo=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/Y3EVsctU4xjaJQBYMlDxTiKz6VrndHH+0cUn7wCoEYG9s1Ct 7B93/3Yu1OiEft6+v5HnTX3rYndiqOt4gOfqIO5CAWxrvk5Of0WgDjOscnB4GmE= X-Gm-Gg: ASbGncu70FSpUGB/lEc6YQipoGGPSS+TA8DY4yqS3tSDfbJ5me2OeAm219IKIKJrDZO pVlZxPKNTB6iqYzMPjJOopkgJ55fPIhhKGaUieDr89vNrKs+fWiQOB/eumC+p+Cd9c3bTeHwa/+ 4vu49LuxXm5Lf7tDS0Bu3hDKVovnABDfB033wQEVw9/0ozyK5CznkGatjlO3+TCQcTly+9If+2o rhZlwsHTMwW+G7fznOxh/C2J2cuY/Vikw+MHAEza04xmuAio3gJ3CyZzB0cURV5kbZIuNYNRvPh hFSQJXcb18MU6hAuC3lLXGWCYUa+45/AUst1HUekPYQAhf9XMZ9c9/or8wqr4vToJQ/4M5FnxyK lrqFbfpU640ECEZ8= X-Google-Smtp-Source: AGHT+IEKg2sAljzc60RG1x7zQS31Y71/y6HRPvtwzajn+isSwZjg667wjhQKlzCNX2y4YKOKam9UjA== X-Received: by 2002:a05:6512:10d5:b0:549:8675:c388 with SMTP id 2adb3069b0e04-54d64af3fbbmr2088472e87.52.1744899942203; Thu, 17 Apr 2025 07:25:42 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:41 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 06/11] pmdomain: core: Add the genpd->dev to the genpd provider bus Date: Thu, 17 Apr 2025 16:25:04 +0200 Message-ID: <20250417142513.312939-7-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To take the next step for a more common handling of the genpd providers, let's add the genpd->dev to the genpd provider bus when registering a genpd OF provider. Beyond this, the corresponding genpd provider driver's ->probe(), ->remove() and ->sync_state() callbacks starts to be invoked. However, let's leave those callbacks as empty functions for now. Instead, subsequent changes will implement them. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 3911d3e96626..5aba66ac78f1 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2640,11 +2640,17 @@ int of_genpd_add_provider_simple(struct device_node= *np, =20 device_set_node(&genpd->dev, fwnode); =20 + ret =3D device_add(&genpd->dev); + if (ret) + return ret; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret =3D dev_pm_opp_of_add_table(&genpd->dev); - if (ret) - return dev_err_probe(&genpd->dev, ret, "Failed to add OPP table\n"); + if (ret) { + dev_err_probe(&genpd->dev, ret, "Failed to add OPP table\n"); + goto err_del; + } =20 /* * Save table for faster processing while setting performance @@ -2655,19 +2661,22 @@ int of_genpd_add_provider_simple(struct device_node= *np, } =20 ret =3D genpd_add_provider(np, genpd_xlate_simple, genpd); - if (ret) { - if (genpd->opp_table) { - dev_pm_opp_put_opp_table(genpd->opp_table); - dev_pm_opp_of_remove_table(&genpd->dev); - } - - return ret; - } + if (ret) + goto err_opp; =20 genpd->provider =3D fwnode; genpd->has_provider =3D true; =20 return 0; + +err_opp: + if (genpd->opp_table) { + dev_pm_opp_put_opp_table(genpd->opp_table); + dev_pm_opp_of_remove_table(&genpd->dev); + } +err_del: + device_del(&genpd->dev); + return ret; } EXPORT_SYMBOL_GPL(of_genpd_add_provider_simple); =20 @@ -2702,12 +2711,17 @@ int of_genpd_add_provider_onecell(struct device_nod= e *np, =20 device_set_node(&genpd->dev, fwnode); =20 + ret =3D device_add(&genpd->dev); + if (ret) + goto error; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret =3D dev_pm_opp_of_add_table_indexed(&genpd->dev, i); if (ret) { dev_err_probe(&genpd->dev, ret, "Failed to add OPP table for index %d\n", i); + device_del(&genpd->dev); goto error; } =20 @@ -2743,6 +2757,8 @@ int of_genpd_add_provider_onecell(struct device_node = *np, dev_pm_opp_put_opp_table(genpd->opp_table); dev_pm_opp_of_remove_table(&genpd->dev); } + + device_del(&genpd->dev); } =20 return ret; @@ -2775,6 +2791,8 @@ void of_genpd_del_provider(struct device_node *np) dev_pm_opp_put_opp_table(gpd->opp_table); dev_pm_opp_of_remove_table(&gpd->dev); } + + device_del(&gpd->dev); } } =20 --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C3E0251790 for ; Thu, 17 Apr 2025 14:25:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899947; cv=none; b=ZRQ+N3ge9kiCHD1DDMgdJqzUgy9ZEc6BNYOrZNnvZZiGoH6omOPZoxxB66ddueq1faEVD77HnA7wL4tMXpxDJCOzuSaK5h+UP+iv9Jl/Ak8GIf2WnYW11KM1BA3J1pEM7C1MsWYjWVQntA2Q6Wu0A/fIoV8qM5MwDmcZbVk5pL0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899947; c=relaxed/simple; bh=FqR3ie5m0T6TcJOI5Kn3DIPxCD+sBdJQs7QWqLz654U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IOENhCZmB4RPBdQGlgawi9kpjaOXjP32ckZlQa3r5sTx0kOP/SL7HRhNR35UF+DdqV5tA1kgbdROQkffglI9oMPc6NFCvbt6/u4stUSDfe+GVZZzYwqXCmbcSZUV9Vrxrs7uW7tuuvVolu4n+zCYNt0kI/SRvvKMOYyRrBvidDk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=YqrtB9e/; arc=none smtp.client-ip=209.85.167.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="YqrtB9e/" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-549967c72bcso989150e87.3 for ; Thu, 17 Apr 2025 07:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899943; x=1745504743; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zs1DiDLKgL3lDGnxl5GpSbOlFK1Fei/oMNx+3W/PVKs=; b=YqrtB9e/dAIQd68nqjFw+ZhU5O6J8ph+hwiTU2zM+nnYJDz38FYcEyvM1hzRMkingf FaKDMWdDnkt/UItpPReuufZxklkw78xT/Pge2adoHgMCDlvJbUp9zL+Tqg4NToeeXu7K +rlv61dmedqmJlDbO1cFVBtL0Ht94lvXskO614M7Z3s533glvg6gms0vunDP25IfQ8BQ rRwgu7VOCXO89fGRQGJ+CWCqjVOi/DFjK1A/afgpPQrxmOr8qDfVzQoXqLLpdijfHSvl zsptgAauzDTXAVKpya8/sCEetQb634YcE8fw8WEOmSaHbEGvoOlE7DiyhaICJyZ37UfZ fTwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899943; x=1745504743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zs1DiDLKgL3lDGnxl5GpSbOlFK1Fei/oMNx+3W/PVKs=; b=atdRiwIA+C9om2rMfg58jcjQJip+cLRVgXAgzpCLiHCjaMRGvtGGqgvKX6hFQXJXrX 7vM4r4SOM7PoMcvifDhadUwViyRSYWxKAGS7MDmwt2MMT+zNgW4Gq3YUsWA+3H8jdxCU kAXu2lx2CbONriRzSJcYNTSdO0sjznnzWmGaeuebvtZLnaI5YJC2ZH+qo8wEDrk9KLqu NtDcrUE/fOZ+dyba2cD8+mn2Rg2uR7WfSd9qd4HSetNW5vNFXBSiaTZxDcnJTZhRx419 sGUJV+jsWqbC+KQQDZCBwR21MBscSIHtDxH9ozwEvPWfR21YRyZwkOOAS8Vf9+OmAJVH Caeg== X-Forwarded-Encrypted: i=1; AJvYcCWkp0t22CmNx/6GP6DWX9/pBu5IFTFxmxs2IC2Eyhh5nYBHSP6O0FWww3sZ1qCH6gNN3ziY27tbbxH45XQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxOe/NRC+d9ZdG7+NjUy/+tPe7tGWLPlZn9gLx3SCF4ceQFDZfo 98sMIYKpOBejlGnP7ZB90+wB37xqHfnnMv3d2FotyRcQZy0lz3RWwG0EXeDCXB0= X-Gm-Gg: ASbGncvCiq4wAYRqPoog380zR5A+ZJcZe0SJOcEpojWK4qlpr9Bpisd1CmeqYJWoz7N H49t9ND4Jp4sIyw7RC1PM13pyU/6z7zaGlHdgJHKma/Tz0TSp0DEyWGuY1YY7FOfzAAzX9NZaJv +Ou+7V+GEfETy0+TvZHebTkKddaq2Izyy9JyVpZgEmJp+z1/WgkEcIcHrFXvQLD2a8H9WPSE48z azBcK+zhis+0hggU5NKQ3OTV9bKoPlShV53J901yLP5SC7Vdx8BKHRA5/TV0Wab7wb08R7/kFyT eGb15w5gSlCdngzpGoPqFp2qz3CMnSuhYFqnvY+Lslg0jpBNt3dzc+THpdf3MS0AfmnvmWSjwHg g8dObPwg5Q/2W1vk= X-Google-Smtp-Source: AGHT+IFUfAkPBWbRU7FiTAZgfCwrsStrMYMu+aAN9vO0F45zoHnvuEwiowloBQTqx+0Po2lAcPUf0g== X-Received: by 2002:a05:6512:3d0d:b0:549:39b1:65c2 with SMTP id 2adb3069b0e04-54d64af049dmr2076429e87.48.1744899943408; Thu, 17 Apr 2025 07:25:43 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:42 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/11] pmdomain: core: Export a common ->sync_state() helper for genpd providers Date: Thu, 17 Apr 2025 16:25:05 +0200 Message-ID: <20250417142513.312939-8-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In some cases the typical platform driver that act as genpd provider, may need its own ->sync_state() callback to manage various things. In this regards, the provider most likely wants to allow its corresponding genpds to be powered-off. For this reason, let's introduce a new genpd helper function, of_genpd_sync_state() that helps genpd provider drivers to achieve this. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- drivers/pmdomain/core.c | 28 ++++++++++++++++++++++++++++ include/linux/pm_domain.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 5aba66ac78f1..512f89e6d302 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2619,6 +2619,34 @@ static bool genpd_present(const struct generic_pm_do= main *genpd) return ret; } =20 +/** + * of_genpd_sync_state() - A common sync_state function for genpd providers + * @dev: The device the genpd provider is associated with. + * + * The @dev that corresponds to a genpd provider may provide one or multip= le + * genpds. This function makes use of the device node for @dev to find the + * genpds that belongs to the provider. For each genpd we try a power-off. + */ +void of_genpd_sync_state(struct device *dev) +{ + struct device_node *np =3D dev->of_node; + struct generic_pm_domain *genpd; + + if (!np) + return; + + mutex_lock(&gpd_list_lock); + list_for_each_entry(genpd, &gpd_list, gpd_list_node) { + if (genpd->provider =3D=3D &np->fwnode) { + genpd_lock(genpd); + genpd_power_off(genpd, false, 0); + genpd_unlock(genpd); + } + } + mutex_unlock(&gpd_list_lock); +} +EXPORT_SYMBOL_GPL(of_genpd_sync_state); + /** * of_genpd_add_provider_simple() - Register a simple PM domain provider * @np: Device node pointer associated with the PM domain provider. diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 0b18160901a2..e9a1f8975c4f 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -418,6 +418,7 @@ struct genpd_onecell_data { }; =20 #ifdef CONFIG_PM_GENERIC_DOMAINS_OF +void of_genpd_sync_state(struct device *dev); int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd); int of_genpd_add_provider_onecell(struct device_node *np, @@ -438,6 +439,8 @@ struct device *genpd_dev_pm_attach_by_id(struct device = *dev, struct device *genpd_dev_pm_attach_by_name(struct device *dev, const char *name); #else /* !CONFIG_PM_GENERIC_DOMAINS_OF */ +static inline void of_genpd_sync_state(struct device *dev) {} + static inline int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd) { --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4DD725392F for ; Thu, 17 Apr 2025 14:25:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899949; cv=none; b=qnN1U/DXp/22cI99r37pYF7KwRAddIxiwOd+tfqhX2VI2avTPHKJZpLPAoY2/5ML/svGfpKdhWWSXtOeVCAyOwctgrafUxOKR7HartqyDOiokCv6GnNQZV0lbjNnB5/T8JPRW2TWA+k0IhDbaxMTflwz92PA7PkDfniRqMtL0oI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899949; c=relaxed/simple; bh=aN8FEk2gTwraQmA2Okw28VZvXnn4IpMUEhiRqft6pRM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dmDuvejiqz1hV51kWdBS3oC1y+YfnZogLaM0zfL107z9uUdXzHD7SXeUMgh4JwNM3JocCAhR0e6RV6ZRn1B6YN7WwTupaPBVel8z1x6tUU+qHxxabcmV28MLGR32wIzz3ETLx1JZfJr7jacUyBu2kqhJabHsNKDgBKVx9aVPyBI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=yVy5L502; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="yVy5L502" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-5497590ffbbso820404e87.1 for ; Thu, 17 Apr 2025 07:25:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899945; x=1745504745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/DgFXHRgSnMuDIPCx1JNgWD3fMJlP6odjvf+kJnYpPA=; b=yVy5L5027EaTAPgylmnLEUY4rL1ClD7aXMlPabQGjdrOWE3+rJHrvCarDc1m1xPcUM yOciC6OW8iEeQ04/nYzhTtDI+SK8I9yOdIX3JR2WRnQY00VNz8NnJw6z83j81GGa4YKG 0kcpmfruS7MiTPIUNjKoo+oPgfDXyDk4Q1A2mKGSY3Q9VEyza/ES5bmgcdCRrL9qzkuc gPAt5DO1fRLK+bD3TXEnD8aFD6CFFVBeagf2Bdvujg8x6YhUd1K/q08u6jRPHsy+dHVP 1bAbsT/buFntkLuF0M4AAgSeyeeilCBtLjlwuEp9ZVXt3GliXvHO7kce5tE272FmXUq6 sD/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899945; x=1745504745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/DgFXHRgSnMuDIPCx1JNgWD3fMJlP6odjvf+kJnYpPA=; b=hOZ/9qetl7ZIQop7M4TLvRiEU5Mn3EMsuQJ0RB2ecxucR/hLTxqJp6FzuPCvCykVy7 PHn4++7laZnbrjK7+A+CbkjmSabbS5Tkz9rKDvYH5Gw0AStBsxG5YgOc4DrsfX6wB9Tj oihv+Hh8gVrHf8UWhym3j2j9WO0zkKPkv1jW3g+EFFuoVjS2aK7NH/BpJnNV/KFhlz18 xEWL/QfDMcVph+hF0Elz6PZqKTOOnqqEo0nUxvJ9z9uBPscT3bE3WN6JmhvHbKS1anUt srd/X/cEvXBEGf04P7zxuyZGDtMEdqXcbbnM50ZkcWPrJDTD3EYcJgHQm9FBTHFaCQ6t lKWg== X-Forwarded-Encrypted: i=1; AJvYcCV5SHSZyoj27TxUKASfHtvndKlzA16xSzuJeKBZWhgqAfUqS94sLKGCexrywsSEGHgH3A85V1P667xK7Ss=@vger.kernel.org X-Gm-Message-State: AOJu0YzM/0mt0Fw40bkVZAzc/DPl4QyJ5XbWaef8N23E0FTRjDCBPNKN +F/umdne3EQdgsUosm52fqMwpz5HBDB+zXHgIujqsyHZy6+8uTV1gMbQj2rvlgM= X-Gm-Gg: ASbGncvFNsCwkE4srD/lzGu+QQw8MI2PqnMLlbLb7r9VxudGDTH3i7/QDeSF2uBbm8s pXjb0i7KGW1D/NhxZ9N+ujgrLimLJ7PBn1nqlwTjZT/bDrZeCOoSn7lOaTA0Q2btzKNwHbRtU+j G9+fJ4ijI/heJVow8Bq3eo5zGprVRSn5ukPRTTF7dtLGu7KTRteHqy/w40woKA69pSyA7xnoXFk MN+PcbNic1Onp+kt/jvTmp0mOT5KOLCvwj00REqwFoY68t4x22AL7UXzs1jQtXth5H1ScXB00Yo sX9dBZ6hrkJa4wE79VP97wnjD6K9De/E2JbpLsd+CmvUB9CDc8wpiioQosI9V171kMoKGar+FjD bmoEhjt3Hsf3+Tt8= X-Google-Smtp-Source: AGHT+IHdJaQxomsfYSS+f0K9itIKdmZijhFhwWEW6ghpA5npqy5MAC8rCQkmORhb5jt3ng77hEg7hw== X-Received: by 2002:a05:6512:3055:b0:54b:117c:a070 with SMTP id 2adb3069b0e04-54d64af157dmr2157090e87.57.1744899944885; Thu, 17 Apr 2025 07:25:44 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:44 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 08/11] pmdomain: core: Add internal ->sync_state() support for genpd providers Date: Thu, 17 Apr 2025 16:25:06 +0200 Message-ID: <20250417142513.312939-9-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If the genpd provider's fwnode doesn't have an associated struct device with it, we can make use of the generic genpd->dev and it corresponding driver internally in genpd to manage ->sync_state(). More precisely, while adding a genpd OF provider let's check if the fwnode has a device and if not, make the preparation to handle ->sync_state() internally through the genpd_provider_driver and the genpd_provider_bus. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/pm_domain.h | 7 +++++++ 2 files changed, 43 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 512f89e6d302..9c5a77bf59d2 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2374,6 +2374,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd, INIT_WORK(&genpd->power_off_work, genpd_power_off_work_fn); atomic_set(&genpd->sd_count, 0); genpd->status =3D is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->sync_state =3D GENPD_SYNC_STATE_OFF; genpd->device_count =3D 0; genpd->provider =3D NULL; genpd->device_id =3D -ENXIO; @@ -2656,6 +2657,7 @@ int of_genpd_add_provider_simple(struct device_node *= np, struct generic_pm_domain *genpd) { struct fwnode_handle *fwnode; + struct device *dev; int ret; =20 if (!np || !genpd) @@ -2665,6 +2667,10 @@ int of_genpd_add_provider_simple(struct device_node = *np, return -EINVAL; =20 fwnode =3D &np->fwnode; + dev =3D fwnode->dev; + + if (!dev) + genpd->sync_state =3D GENPD_SYNC_STATE_SIMPLE; =20 device_set_node(&genpd->dev, fwnode); =20 @@ -2718,8 +2724,10 @@ int of_genpd_add_provider_onecell(struct device_node= *np, { struct generic_pm_domain *genpd; struct fwnode_handle *fwnode; + struct device *dev; unsigned int i; int ret =3D -EINVAL; + bool sync_state =3D false; =20 if (!np || !data) return -EINVAL; @@ -2728,6 +2736,10 @@ int of_genpd_add_provider_onecell(struct device_node= *np, data->xlate =3D genpd_xlate_onecell; =20 fwnode =3D &np->fwnode; + dev =3D fwnode->dev; + + if (!dev) + sync_state =3D true; =20 for (i =3D 0; i < data->num_domains; i++) { genpd =3D data->domains[i]; @@ -2737,6 +2749,11 @@ int of_genpd_add_provider_onecell(struct device_node= *np, if (!genpd_present(genpd)) goto error; =20 + if (sync_state) { + genpd->sync_state =3D GENPD_SYNC_STATE_ONECELL; + sync_state =3D false; + } + device_set_node(&genpd->dev, fwnode); =20 ret =3D device_add(&genpd->dev); @@ -3453,6 +3470,25 @@ static void genpd_provider_remove(struct device *dev) =20 static void genpd_provider_sync_state(struct device *dev) { + struct generic_pm_domain *genpd =3D container_of(dev, struct generic_pm_d= omain, dev); + + switch (genpd->sync_state) { + case GENPD_SYNC_STATE_OFF: + break; + + case GENPD_SYNC_STATE_ONECELL: + of_genpd_sync_state(dev); + break; + + case GENPD_SYNC_STATE_SIMPLE: + genpd_lock(genpd); + genpd_power_off(genpd, false, 0); + genpd_unlock(genpd); + break; + + default: + break; + } } =20 static struct genpd_provider_drv genpd_provider_drv =3D { diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index e9a1f8975c4f..2185ee9e4f7c 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -127,6 +127,12 @@ enum genpd_notication { GENPD_NOTIFY_ON, }; =20 +enum genpd_sync_state { + GENPD_SYNC_STATE_OFF =3D 0, + GENPD_SYNC_STATE_SIMPLE, + GENPD_SYNC_STATE_ONECELL, +}; + struct dev_power_governor { bool (*power_down_ok)(struct dev_pm_domain *domain); bool (*suspend_ok)(struct device *dev); @@ -187,6 +193,7 @@ struct generic_pm_domain { unsigned int performance_state; /* Aggregated max performance state */ cpumask_var_t cpus; /* A cpumask of the attached CPUs */ bool synced_poweroff; /* A consumer needs a synced poweroff */ + enum genpd_sync_state sync_state; /* How sync_state is managed. */ int (*power_off)(struct generic_pm_domain *domain); int (*power_on)(struct generic_pm_domain *domain); struct raw_notifier_head power_notifiers; /* Power on/off notifiers */ --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF098253954 for ; Thu, 17 Apr 2025 14:25:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899950; cv=none; b=rJdalH5RddBQ3p9hhIdEY7fRFoTDXG/bsE00ZMW0seukmqvO5kJfGFVuqNooJXL4hDmLlAnEn+vqV3gQ/6vUZoWzVSCv8NytqsEivZGTIbj0egiPPoRGgOsS3lqwFYUX+pBzafzbmo+/Mv7i0pzdEbBLSQoI0NPwt1CYY/6434o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899950; c=relaxed/simple; bh=fVOeMtkqjek3/va66TnjrcaUKzQdloU7XDRJcBxC3H8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VbBDcxnrTHsRKYZYvcYfxNdFIZBN0IxKGXeuyZ6kEzNZmGPk7s9H6sPRlHb2vFfMTSzVkzisu8QhBfPDpisZx5DmBkiSmd52+H47M1QmXPCWhd+6E903wTu7bJl/5ck8R+OX2Wh7BojdO3a4cnVSRQ1Fvx2/pVxjYpg94RKK9fo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=nnmAvIuy; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="nnmAvIuy" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-54d42884842so1113428e87.2 for ; Thu, 17 Apr 2025 07:25:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899947; x=1745504747; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nBLgNziettBNC+dAZgZIrrnObr0T+wTrJghaGzbU3RM=; b=nnmAvIuydCXtWwD1grDsFhp5Le0cw/ICVu9Jg9bwodajYV3mxUyFSNwKAzesCEWuCp Uy4rTmyBY2Q7FyAr8FoSFRTsY78LxQk8yDSmlzR3DdYQvQmIdYsAKkSDPfiJkTNneefb fW07slVpTB9dm00NnYDi7PTnuoZuEOflitANXNbtuFkKmdcvqofNRa4L9oLt8LaEiO48 qjdoNOFSmAH+ZFaSLEKylhdj+k1fCydVXWPoxEjR2MFEI9B3OUxAo+1zRaREGB5F8PyB pF/MBU8iNgwKco3p6Q+3JH3U2rfyH2xsEwzSNszluEsBZz/B/EjSq0QsaecxRP//iR2i STQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899947; x=1745504747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nBLgNziettBNC+dAZgZIrrnObr0T+wTrJghaGzbU3RM=; b=qfqIvN7YEKp6VjSXnH9v1W66oWxXOEHjcN2WQcgcvJrjZrWmeJzqBOF1slxgFHJU8c FvfXpd4huaS1+VqM1L2A3ehuEdFI2DWbcvS/l4Vq2ZT5U25iMXs9cdRIhCjj1OyXQ4cf xpJ8Ikmfea6f8h2s+v3NRP0CD1KASjsrAQFtW2PU1IgTz7ATdCbz1lRTdtmdrvTd6uTK zl6wvAVMJcxL0D5PG8p6X/BVGobkYY/4YV6KZiL7uU7IXDEm2Wfjfza9CQ3JIuzWFr3d Ilr2V89C+Slp6X0zQEQdlOc8wcJGrcFkI9fO2jjQYMeYSVXzIbLU9jY5rS18L8CKboIt Rfaw== X-Forwarded-Encrypted: i=1; AJvYcCU972PZgKBekBdpx4aa0DFvFYqShDqRXVTk/soV665bZ7kDsDdfdQz2y6oIcdQJnT0t4DV0ZgU5kVf3zp8=@vger.kernel.org X-Gm-Message-State: AOJu0YzO3sZcyTvbmBucpY2rgeHQ4HAs/mOCiotkGwtbNFEn4MsOs4wC 6oRSKuJFuOZLOyuG6C1f3hTkLnt/ICzRdHmPLlP+FgnDBAJixvnWYhxmilwYoSE= X-Gm-Gg: ASbGnctbD4nKP7Sp7TQvaYInDtX2oKXVcSxc7DLiDVt9Vcg5TaDZ04BpcZWQUnUrzYY 3mawA631+qNL+S0kjZ0CSi9Q4K1hf/hEcOFQkhyvETgPsvpywrp5TileZqBsd4/BbawbqzBE07I JB/kvwcItvHAfpJRVa8G90bupowAJOu4gaDF9yYLJ76vYYXWVUUWlVGxvD5js17Imntjjlk/DUB MaPWqN/G3IQMqoUuEr71cU1UK3wDY+GVtyCxkdKHYSX7ScGccmL4xd83cIzwy5RJdrwvr8d7I4R cJ78CkCPMIWfbjOOQMD+TF1kfoeFaISTdwzQOkv2kNUaOTvo8DpTzOlY8GfpCXaRzrDTGQGELAy mS7+kAJ5riwLAEZA= X-Google-Smtp-Source: AGHT+IGdzxUvJDdD8yKezIscrWK2RHUkT2/k01YPoiwp/s9fHB9GDRUF1BZX1s3xswvvS2oLa5JAdg== X-Received: by 2002:a05:6512:2206:b0:549:8b24:9894 with SMTP id 2adb3069b0e04-54d64aa65bbmr1947682e87.15.1744899946966; Thu, 17 Apr 2025 07:25:46 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:46 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 09/11] driver core: Add dev_set_drv_sync_state() Date: Thu, 17 Apr 2025 16:25:07 +0200 Message-ID: <20250417142513.312939-10-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Saravana Kannan This can be used by frameworks to set the sync_state() helper functions for drivers that don't already have them set. Signed-off-by: Saravana Kannan Acked-by: Greg Kroah-Hartman Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa --- Note that, I have picked this patch from another series [1] that are about = to be re-freshed. [1] https://lore.kernel.org/all/YG6lhT7vuiCNvvDg@kroah.com/ --- include/linux/device.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/linux/device.h b/include/linux/device.h index 79e49fe494b7..544523d48cd4 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -955,6 +955,18 @@ static inline bool dev_has_sync_state(struct device *d= ev) return false; } =20 +static inline int dev_set_drv_sync_state(struct device *dev, + void (*fn)(struct device *dev)) +{ + if (!dev || !dev->driver) + return 0; + if (dev->driver->sync_state && dev->driver->sync_state !=3D fn) + return -EBUSY; + if (!dev->driver->sync_state) + dev->driver->sync_state =3D fn; + return 0; +} + static inline void dev_set_removable(struct device *dev, enum device_removable removable) { --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D277253B46 for ; Thu, 17 Apr 2025 14:25:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899951; cv=none; b=MbETCgRsNtSyfFytSyxsnSGTaBRjk6BPgTivLZ8Grr8w16VcxsU5PGmiPl50IxlLjJwdVYfaMnIMs9zgHWWWBdwU7HJvo0mhimnK47RnFZ83DG+4HfZg44FsmUuS905aa5nfTiPEAQQ7P5xLYcLnn5S1CEt6mYAxiv5njWq9xlQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899951; c=relaxed/simple; bh=qufReoonGhxKbTrj9KGiMOUNKUggmPheexh2sLrPrQE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I6y5tZe68a3o6SKg/lpN0rLJ/ekcHrOqhpl4a2BehKzEiQkm1LjkC++Z5RS2pTll8Neb/5ZCzLJGUDhfPczqPQfOxmPUawo1IoqtF9WqtX9AWxNWsEnJiqLPA9J+6o1kLitNCR9UeZi2Ek5VIVvhFH1g+1NjS4FAWuVAoWZA9S8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=XSz5gDD/; arc=none smtp.client-ip=209.85.167.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="XSz5gDD/" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-54af20849adso887787e87.1 for ; Thu, 17 Apr 2025 07:25:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899948; x=1745504748; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8TjEcikoo6DSPkHDkOpmkpqUSlM//3uPYTFXI+t8fY4=; b=XSz5gDD/eUy8E/wN11YQasrdC1RN+9ZKaKBcYBaZ6C7i9QXro9HpQuHKGLRWYgLZSw we9J3j0MDCm2LrACBdpt0aMiOTlNXLkAENzuZnBoLBiptBBapXMSCgZ7IEo2RBlbrLdv lrpY++ZDI8Mahsmmb8MIGUTi/POrNH4Z1oyPtvZtfZ+PFmmkzolO0m6B8kGjqE1B6njb drljXOdtTdaTEvy+zdFi9g78la7Ia+IMzHgC1qG1H9F6ihJ/Ugk6QFDdKyWK0dG5susi OBk9Qre87MI8n0tMIHYtebv9X65Ti6fvJyq3Gnf/8LD6dbcA7h/324yhajRF8SaNQ0VU yFug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899948; x=1745504748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8TjEcikoo6DSPkHDkOpmkpqUSlM//3uPYTFXI+t8fY4=; b=oyN+CjnLGJfdef/EhA5sXf59TtD1iYptf/lRfmMEYqPRhAqEyHBkwe5Tb28u7gy6Cx kURxMPeNeWcdaXjn8ZIWc8N5hzpsmRCpxd3optxhrJAaJ0+wS7SXUPg6cgtFWBq22ACQ pOgWYHGBZTSxKDOstg1l30RTkV67p9zizmeBTcbWbFKbUxLiouhrlx8KWW9V2c27/bO/ D/CXSEuFG3YY1S2ALgpesOtCOTzUF6cPd5UF7q5wPD11axc8u0IwcCr/2U69HVoZbKGu Ezd+TTO1OOPkRRjmK91VuQTkX3pAJWosWmf84xZTwoH9cUFHHjpcSCo7HTVcyfZV/p7H 33lg== X-Forwarded-Encrypted: i=1; AJvYcCV6aOwgOx0agq9Sh/pSveYtxihz5qClR2CWTnWn1etiid6Ic9MzZ6G6z6QlsB7rrNxq16akxZOgdaDC+UQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzwI6PPuf0ndpeWrrRn8LszbekDnRadrsslMC7inaMovONJpiRI IY8CXKZ+fyEQ44hXJJadhhdF+MN0FTAW+/N6OeqZUsPxxqtreXZHgf9xLma1lbc= X-Gm-Gg: ASbGncvC64SrqErQkOXMuSRq/rHKgSAMnS8iYeVvV/7K35q1WY06wZg8R6eOPvyBv97 bwMTkW+CrxiMdTC5SF5tMJOxlPoGR+c2BrSAZi0Lf03nfWeeBudqVwpPp5OjNCEAT1UgO0jmoVE eOkhriEvFLdue8D8m5saH8sWPZ478ChQHzQpFldwtigxW+uZVI7Iyd/ypGaJdvm5Q9nED4XS9Aj 6Bkw71HMcgBmOyx6j/TmrbR654rCB1uFrYgbu55DFptGH5Hw6AEZwJtkYnMi457aw8DHkgQZKvY ISPqWZ3QBzug4qoY6eBqhRdWFEbprMc9uq16J/Y8uGqJ5t8VChDtyXrybTcUsrKK1h3qJ5igIcF kb9VwwRu0qb/wNRk= X-Google-Smtp-Source: AGHT+IHqso8NP2mkjGd2codcc9AYXMx3rITJMfiumhfwHLFCKjgzoXmRta3CnFxIynd4smfXKHkXFg== X-Received: by 2002:a05:6512:3e01:b0:54b:117f:686f with SMTP id 2adb3069b0e04-54d6dc1df78mr5182e87.28.1744899948235; Thu, 17 Apr 2025 07:25:48 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:47 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 10/11] pmdomain: core: Default to use of_genpd_sync_state() for genpd providers Date: Thu, 17 Apr 2025 16:25:08 +0200 Message-ID: <20250417142513.312939-11-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Unless the typical platform driver that act as genpd provider, has its own ->sync_state() callback implemented let's default to use of_genpd_sync_state(). More precisely, while adding a genpd OF provider let's assign the ->sync_state() callback, in case the fwnode has a device and its driver/bus doesn't have the ->sync_state() set already. In this way the typical platform driver doesn't need to assign ->sync_state(), unless it has some additional things to manage beyond genpds. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 9c5a77bf59d2..695d7d9e5582 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2671,6 +2671,8 @@ int of_genpd_add_provider_simple(struct device_node *= np, =20 if (!dev) genpd->sync_state =3D GENPD_SYNC_STATE_SIMPLE; + else if (!dev_has_sync_state(dev)) + dev_set_drv_sync_state(dev, of_genpd_sync_state); =20 device_set_node(&genpd->dev, fwnode); =20 @@ -2740,6 +2742,8 @@ int of_genpd_add_provider_onecell(struct device_node = *np, =20 if (!dev) sync_state =3D true; + else if (!dev_has_sync_state(dev)) + dev_set_drv_sync_state(dev, of_genpd_sync_state); =20 for (i =3D 0; i < data->num_domains; i++) { genpd =3D data->domains[i]; --=20 2.43.0 From nobody Sun Dec 14 19:19:40 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D9BC253B5E for ; Thu, 17 Apr 2025 14:25:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899953; cv=none; b=IekVLlD/fULloayZu2UcmUjqrBkrwT509PrYFB1HDvkhBy6uOp3tXTIegKs5BepcIgXtQOkmWHnUYcbQjYS/aQFq/qd8Mns7FHr0b9D6H0YZqksUocnuueUpL2CKfQ9zq36vdzVXWnRMQp+yMNFICsrNGG0DXZULSUHpdQ3wJco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744899953; c=relaxed/simple; bh=48SzkSnXlpWKVmmQp8Xqs1VLpprH9LVATX3NaTD9rCM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Pfyc2XwhqEcgr7c0YSoa9wAp1hbx5giNl8EWTKNStQIPpv9dDfKfSCMwnAlDRHCQDC8OFIqD/ZTVuNQpVbtgZ81B6CzqUwA8GUZF5FM5gap6sZtu0RpCnoQmmuf9/Yg8ReeeFsefu0fmfQR+QYMDVUCCIQiSLYD9y8w8R2XeJnQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=q/xXi1vh; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="q/xXi1vh" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-54954fa61c9so1119047e87.1 for ; Thu, 17 Apr 2025 07:25:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1744899950; x=1745504750; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q4svnLFbJnv3zIx0N7VYQw66/h1rJWDrzgMSBi0aPAY=; b=q/xXi1vhy8qZNIKGxy0KduFJ4Mn6lZAR+KFfwpi9cP4Unjvs4leHFgWkWkPCYS/btJ KziYMUTLjbUPzYtbU0k6NekMsaiLTKPScdlSFa1NaHfkvmwKaQrqE7YXBFnMjlnm8IV8 Qi1le9H+d2WyR3Up84Lzoqb52jVzxPqKLFTUHdlvI6iwFmZ4Qbiij2oYgqCq4s29BYx7 XEXkxxXHpxl39zp29ZqlSkyD7ys9lrThI7fonwe07XkzBXdkdAZQe+o6WHt/1qDSJ16N zsh5mp86Vz1i0WE4T+FAcJ3RGuh9+lPNoZWuwlSC04XXe4TUDL+KZ4kA3plpntTdPbMr uKfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744899950; x=1745504750; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q4svnLFbJnv3zIx0N7VYQw66/h1rJWDrzgMSBi0aPAY=; b=eVAynNKw1BFLluW4efGsO1WaFmubxwv3LwAv643g9M3050tql2iEPvl9OQXgavKHMq JvB73RnNVeUUlXMuNnScUkFEtOYkSh1N/cYrZt+FKhDsnTZ+z91EcT9cDzvvjuf2ZXBo zmiZ4nVsbOXYI0BakvaIDCZI2vRTVsy+Vzz9+6EeDLe5rCmyFuN6gUfqIxpwZXHcSHwT UWEcXjRdt1vHHm3lC5shTOW7UGBC/mlAqMtkqV8/UqWA/QUAkNQKK9qYoOW4SCe+d1ja W2Ch2BSIbhzBlKVUhiqEmAatUed7Sh+Fg9+zsC3U8DNBdiPSg8toLBIRJPqY0rl2F7xP AxaA== X-Forwarded-Encrypted: i=1; AJvYcCW0zvkNh6Gy4wYcnwlsXiAH2Trz2IJ4d3tCpmJ/W/TwRwCw/khEUul1NqnRLz6eo+HZw3Ai7CxmSVObg3c=@vger.kernel.org X-Gm-Message-State: AOJu0YxkIfOG1jwyal0ivRZbSkOBHYqsFA/3z4kjtonGe1567/UWvP9B QCTA8OXGcCG0wmfAnY18qppKCIuU0zTXdt7L4ReyGvlP1Vr+pXInA16na8c7Dn8= X-Gm-Gg: ASbGncsNREzceycOQK7IG/crTMjOyBRlirmgAXvwsDO2nIIwa18K4X7rUNhgKe443+j KYvxbhuBoiPNp/lZxl7LtoU3wSvLJq418pWIRs+zHJzhkJTyJA19Qfe3qvxh94go2yJ5DGDhGXV pkd4KcLJm48ZrHErrE06HGevGm0xbEXGSy7knLGY1Y0QZNf7P/hD23hTm3xtu4llriYfhNpgAKN wfyNfx/5lo1oMpNLshunm80KUKfLx785txcCF/6r7X+a86P4Es0CIw3vpv8pYNN0kaio+N2KRHg gqGUirCbheIbFpiLcFqllZeGrNctsujniy8fLgunt05dSUIqvjKDcgqCrYSIHPDsd/x4Dveqxzw BFvGCJE0pH4LVikA= X-Google-Smtp-Source: AGHT+IFLZC+7o/XwKN7xuIyMZVwhsS5rHckZLNTwrcJeTbAwEvd5hmVT1e+JUJqkIv5jp8W5a7Ps7g== X-Received: by 2002:a05:6512:2310:b0:54b:117c:1355 with SMTP id 2adb3069b0e04-54d64af41c9mr2069093e87.55.1744899949638; Thu, 17 Apr 2025 07:25:49 -0700 (PDT) Received: from uffe-tuxpro14.. (h-178-174-189-39.A498.priv.bahnhof.se. [178.174.189.39]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d65e43647sm370096e87.58.2025.04.17.07.25.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Apr 2025 07:25:49 -0700 (PDT) From: Ulf Hansson To: Saravana Kannan , Stephen Boyd , linux-pm@vger.kernel.org Cc: "Rafael J . Wysocki" , Greg Kroah-Hartman , Michael Grzeschik , Bjorn Andersson , Abel Vesa , Devarsh Thakkar , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 11/11] pmdomain: core: Leave powered-on genpds on until ->sync_state() Date: Thu, 17 Apr 2025 16:25:09 +0200 Message-ID: <20250417142513.312939-12-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417142513.312939-1-ulf.hansson@linaro.org> References: <20250417142513.312939-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Powering-off a genpd that was on during boot, before all of its consumer devices have been probed, is certainly prone to problems. Let's fix these problems by preventing these genpds from being powered-off until ->sync_state(). Note that, this only works for OF based platform as ->sync_state() are relying on fw_devlink. Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 12 +++++++++++- include/linux/pm_domain.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 695d7d9e5582..a8c56f7a7ba0 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -212,6 +212,12 @@ static inline bool irq_safe_dev_in_sleep_domain(struct= device *dev, return ret; } =20 +#ifdef CONFIG_PM_GENERIC_DOMAINS_OF +static bool genpd_may_stay_on(bool on) { return on; } +#else +static bool genpd_may_stay_on(bool on) { return false; } +#endif + static int genpd_runtime_suspend(struct device *dev); =20 /* @@ -933,11 +939,12 @@ static void genpd_power_off(struct generic_pm_domain = *genpd, bool one_dev_on, * The domain is already in the "power off" state. * System suspend is in progress. * The domain is configured as always on. + * The domain was on at boot and still need to stay on. * The domain has a subdomain being powered on. */ if (!genpd_status_on(genpd) || genpd->prepared_count > 0 || genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd) || - atomic_read(&genpd->sd_count) > 0) + genpd->stay_on || atomic_read(&genpd->sd_count) > 0) return; =20 /* @@ -2374,6 +2381,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd, INIT_WORK(&genpd->power_off_work, genpd_power_off_work_fn); atomic_set(&genpd->sd_count, 0); genpd->status =3D is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->stay_on =3D genpd_may_stay_on(!is_off); genpd->sync_state =3D GENPD_SYNC_STATE_OFF; genpd->device_count =3D 0; genpd->provider =3D NULL; @@ -2640,6 +2648,7 @@ void of_genpd_sync_state(struct device *dev) list_for_each_entry(genpd, &gpd_list, gpd_list_node) { if (genpd->provider =3D=3D &np->fwnode) { genpd_lock(genpd); + genpd->stay_on =3D false; genpd_power_off(genpd, false, 0); genpd_unlock(genpd); } @@ -3486,6 +3495,7 @@ static void genpd_provider_sync_state(struct device *= dev) =20 case GENPD_SYNC_STATE_SIMPLE: genpd_lock(genpd); + genpd->stay_on =3D false; genpd_power_off(genpd, false, 0); genpd_unlock(genpd); break; diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 2185ee9e4f7c..c5358cccacad 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -193,6 +193,7 @@ struct generic_pm_domain { unsigned int performance_state; /* Aggregated max performance state */ cpumask_var_t cpus; /* A cpumask of the attached CPUs */ bool synced_poweroff; /* A consumer needs a synced poweroff */ + bool stay_on; /* Stay powered-on during boot. */ enum genpd_sync_state sync_state; /* How sync_state is managed. */ int (*power_off)(struct generic_pm_domain *domain); int (*power_on)(struct generic_pm_domain *domain); --=20 2.43.0