From patchwork Fri May 23 13:39:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892205 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 829DA29375B for ; Fri, 23 May 2025 13:40:42 +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=1748007644; cv=none; b=ULdzVYJOzsJlsDoevIJPZwqoEe2SVYQV91oGj4lprP/Smxgb9KdF/rqOEhFgoYK8kJMf0cGa2P5SYtIE0pjs17QQQolD5euAydIy1mr9CH2gKdG9qY41z1LiC3jFAD58vSpc6Wo8pXd6GMr8q8oZ3vju+kOnptTepL44HsdkP7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007644; c=relaxed/simple; bh=ZWuXoHRykjcQLvugNPxk6lMikozG+4QpwkTnChGz2TI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hE24sYJprzA/UG5pNf1G5Il5lrYAmAab8NrKKG/LA5cKKO5gy2tZReOOq3TqOAiIx7MCL/DVKztvw6Pwr/JAPUx29zTvSObM6h9T4XSMX2iZZ8WsFQdsdJid9/QnU57z0wZsJvV/oMp6mL2Ezmv7n94z2pN0+HrAresJ++aTtK8= 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=s5SO9le5; 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="s5SO9le5" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-551ed563740so8326583e87.2 for ; Fri, 23 May 2025 06:40:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007641; x=1748612441; 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=pVuyQaWXDo32LSLemr1Wiyb/FTBR994cD4zXDWOXk7w=; b=s5SO9le58+lcREccGO3MaZ3Nx2+KdSXzrVQbArBo4z61JHHrAOBhqqSYXX6up24zAJ +YcOiTuf6q4mTwzO4Xj+j1H0WZSL+YBaXmpTIiJYDw4X7PdcOpIDCbp48Vn92MKXpTR6 Xzh5kUB1zNtEa1WzfWZQfPOlQt6Qd23OgwXIy39LqJMax2+Fcz+8OXft8e594mheGooa pcj3++Cjh/+IbvacuYQg2l+CeYdLndpCI088jbEPjgUt78RRTR7t41H7Tbc5v5MdZNmk vK5Kaum5Vyl6a82bL7Mkt2foMr7B6Mj1L/7DMcoU8RFxo/m9wI1/WYgLuen7bfJ1HkP7 SmVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007641; x=1748612441; 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=pVuyQaWXDo32LSLemr1Wiyb/FTBR994cD4zXDWOXk7w=; b=dv8W6b3El7DXrk1Oneh44ai/56U9vt2lcg3drGJTrXv59+8r2PFXWIBey4Qh4dKFvt CYrO6E60zSzJxyvVEx1mbUhd/zea0/3xIy9mWXP7dgHI8WPTVduySgK63ca4v5CqwD27 xWtaKcXBZK+Drk/ljgjeiOK1m3NJd25Yw2/9l5UhMlVm5CafuRqJQA6iQN57adBP7xAv vynuGMveUTbA6OAD6ks5pFXzls0n2DHOKkbgDSu+6LtLfng9vdXGtCZ9CTBTB6ztmUgd NcRmLGu/4KPUZzUnjlkLKXDhi5Su3co/+VUgfwJSafrITQh07KGhfC0qWPVIbbRjPcUt vZNQ== X-Forwarded-Encrypted: i=1; AJvYcCW+8c3v2ZWfEMmqUM5iPqpsu9n5WPWKCNmIyZRxC7vuFhgvlphYc9smdhDIzDjw4aNHmHBaR/4pJw==@vger.kernel.org X-Gm-Message-State: AOJu0YzIy/HOB9RvBpkaF7xcIGAQnzeTgL2HmV/ZkUk3rs452T+307vF CKfyDGJQA7jQd8tXNtdaSWpQM8BfgdrHyEoTlWyDYSEazjNEkwhQp+hAhuVyqthDG6c= X-Gm-Gg: ASbGnctQv6IUy8/J+q7OhJaxjJTPJxhRFmi5lQFgnIMbEJx80aga0SVfJyFMpSuq6p5 UcVABIwHCKPNCaW7q7GwfpsJLi8xVL81ez60/sANcjRAK5Is2RM7wtPlr6RC/HDZm3VugMHa96x 20TQU1Nrl0iYubzVP2xchag0z7NHumcgAVXB2QSgM70dImFyq9+Cy3HIyLOx1fWoQxD2q49ty0f TaGKRzVvzNFvVp9OgbXMMk0aZiO4a+2bZszNYRqKIX07avQmHyV5uoBumNWx6rsic045GGfiLEF RgzbO8mRpcW1VroVl5xax3FzCb4Z9AP/50WQZZe/ZAgV8uSgj8sG42Or2HQUxMpT1Z5EPR1MkqI mP/0A4sXxSFyMNzyMFu2t+mL+iQ== X-Google-Smtp-Source: AGHT+IEVIbZ36oRuBgtUIV/gY2wrVcuoRcXYW2ew4UfjOMiCZ3z4VNYKumXWYXyWKY98xtuLk0dWog== X-Received: by 2002:a05:6512:22c9:b0:551:eb71:4aa8 with SMTP id 2adb3069b0e04-551eb714cbdmr4668192e87.25.1748007640612; Fri, 23 May 2025 06:40: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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:40 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 01/21] pmdomain: core: Use of_fwnode_handle() Date: Fri, 23 May 2025 15:39:58 +0200 Message-ID: <20250523134025.75130-2-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Let's avoid accessing the np->fwnode directly and use the common helper of_fwnode_handle() instead. Suggested-by: Saravana Kannan Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index ff5c7f2b69ce..9a66b728fbbf 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2557,7 +2557,7 @@ static int genpd_add_provider(struct device_node *np, genpd_xlate_t xlate, cp->node = of_node_get(np); cp->data = data; cp->xlate = xlate; - fwnode_dev_initialized(&np->fwnode, true); + fwnode_dev_initialized(of_fwnode_handle(np), true); mutex_lock(&of_genpd_mutex); list_add(&cp->link, &of_genpd_providers); @@ -2727,7 +2727,7 @@ void of_genpd_del_provider(struct device_node *np) * so that the PM domain can be safely removed. */ list_for_each_entry(gpd, &gpd_list, gpd_list_node) { - if (gpd->provider == &np->fwnode) { + if (gpd->provider == of_fwnode_handle(np)) { gpd->has_provider = false; if (gpd->opp_table) { @@ -2737,7 +2737,7 @@ void of_genpd_del_provider(struct device_node *np) } } - fwnode_dev_initialized(&cp->node->fwnode, false); + fwnode_dev_initialized(of_fwnode_handle(cp->node), false); list_del(&cp->link); of_node_put(cp->node); kfree(cp); @@ -2916,7 +2916,7 @@ struct generic_pm_domain *of_genpd_remove_last(struct device_node *np) mutex_lock(&gpd_list_lock); list_for_each_entry_safe(gpd, tmp, &gpd_list, gpd_list_node) { - if (gpd->provider == &np->fwnode) { + if (gpd->provider == of_fwnode_handle(np)) { ret = genpd_remove(gpd); genpd = ret ? ERR_PTR(ret) : gpd; break; @@ -3269,7 +3269,7 @@ static int genpd_parse_state(struct genpd_power_state *genpd_state, genpd_state->power_on_latency_ns = 1000LL * exit_latency; genpd_state->power_off_latency_ns = 1000LL * entry_latency; - genpd_state->fwnode = &state_node->fwnode; + genpd_state->fwnode = of_fwnode_handle(state_node); return 0; } From patchwork Fri May 23 13:39:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892392 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 6DCFA293B53 for ; Fri, 23 May 2025 13:40:44 +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=1748007646; cv=none; b=GMNn6osquFUYLZyGiiy2ZLjCf+RVcX29l9e+vlUfOxV2tTa+58ClM0LuRqKWOPx2haQMzpYHS9m6zVTRITx4Qh0AloXmfS9sXKVQWLmCPEoJ4B3FkeB8rCsz2PbsBYpcy+fD0JdUgim8bFg19Pq7j0CaLHtNwoSJPC0BsEvQnRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007646; c=relaxed/simple; bh=e1uaiNjXb5C8tSsGtflsn6CSqyt0d458eOACSxErWcQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uc0eONKLQwPqgRcGw6XX2qZgDRzZvmdmZtpV9TvupSRNORBG/3/pPFxfUnAVi7GPDTH+TPgzC5lKDDrPVjeib+e5eHNGUMIB/HjwwE+LY+rhj6lEc/bzpsZvBm4kuubh0oMrJ2zDBx//31BGSrhXd2zGLlbaMVCOe81Caind1+4= 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=QZ35XNrn; 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="QZ35XNrn" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-54c0fa6d455so11504958e87.1 for ; Fri, 23 May 2025 06:40:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007642; x=1748612442; 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=3YYTvqY48w7pyG/wWiP6f2TlpLJxz1KgObIIkEZbJpM=; b=QZ35XNrnV1AD43RI8Xkgnd+WNgIBwW6dinlZ+fDKlrGmhp4bNHNR2dc2nmMQ+GVeGj +Hl3OjDcBDkUrm1/XlGKZj2R+aXPnC6SP1hSCF3Ytf/OpixQck//HqQP9VvpLQyjYJm3 R/uYyM6tDOF6RNJQSGeoJAwJVb2oQ4P/dLdzdKRgL3uz1EiEEFnlXMpSvZ/LWDAwmIfu bf729An96AuCcJtCb2CLukYGNPjJMadAI+T1i58qkEpP0v35C0x6jZM5E2drT7quTS3x BO+f/vfHYPGFhzPRRaiJ0PV6H8JvWQTKuof/hB7gxSXk1YFc20vsqUKSE5w6bV4Sj+Bd dR7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007642; x=1748612442; 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=3YYTvqY48w7pyG/wWiP6f2TlpLJxz1KgObIIkEZbJpM=; b=QdBFnU9ZZ5gSFkXmnj1mPHr+P0wsEPwfaAIZqpY8wLcCjG8/7bBDzIg+LOj+AsNvX5 sK+KbpTW7kLgKQX60RHZU4097aweUxU/8u8Gzoxf6Xer5RL+T+FiSh8aCWYk1mQEdCeP 3q4EXcxVDHzRYyLfhs9iHtKoL7QkA+CgUcE24VWrixtGIB+VIqZrZnNnPOD9xHD6IQE5 KkXnD6Ta90dpu0FJOm8WRxT2KNSW/EvK0JTbewMIQwA9vaDpvJzjpU6lKRRTrNqxyHhd F6w2WbW3SLY+b/bpLdD/A4DxeJ6mzLU3GzZluHWqqOpS4TQVS8emsK73vScceOaHjVBF a/Rw== X-Forwarded-Encrypted: i=1; AJvYcCWAwwk5g1elHGQRmCkNq9IXhJpVNkIRy+hmDR/EEb8+J+uzJqqAVTN98/iDd5kfi0aMBVEWeD4zxA==@vger.kernel.org X-Gm-Message-State: AOJu0YwJKKmI7sbf/zE0aZ2zHyi42aZ91/WBuQljdYCt3i+AOOOhZc6L Xi7iWfIUuEy8F4UbAK8Z8Bt0lJj+zxs/he3pVwZwJmUbc/+hW+BKlgKNKx1qbL+4ayk= X-Gm-Gg: ASbGncuL3+eXzIjQP5aMOxWlBr+eKEage+ggiz6vZiYG1idwZSP1cAYYEcvRQW39x4A 3UQP7blUrfPUs+S6NUDAjg8HBQC8YcIWyL2R/0FEU0vfSLaca5A2IhkO9bF0jN8ePpjOzb1MBnR jPxR4h6Nq1gfVGxYhzXmtzjDmzNx8bjpX1A3ImjGoj8aUJgweqqudlem7eVxmAh6egqNDabP1RJ 9XIHOk8pZM48aWLqhKgos+XJVXp5s/pM2+xFJAeGuiK4rDQzbIRj4SrrUIeVr4kJOuXDd6rJkcy pdHmM6MFhI1t0k8rxVi7vQqInMPU3yqkmmduGutjEnig4KpMkS9JI0FPHX7OieeyhjzPFLZ0F4G gFGO4XJ5faUKNBdjeaPCdPUap6/36biU+E4Z9 X-Google-Smtp-Source: AGHT+IHOApUdbwQh8Jq2dmZDBk7bs8EbJneQ4drv7VpUV5nFeQnNH0S/KjC5HScjLN7hcK+M6+cnuQ== X-Received: by 2002:a05:6512:31d2:b0:54f:c3c3:beb8 with SMTP id 2adb3069b0e04-550e7246413mr10436047e87.46.1748007642410; Fri, 23 May 2025 06:40: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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40: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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 02/21] pmdomain: core: Add a bus and a driver for genpd providers Date: Fri, 23 May 2025 15:39:59 +0200 Message-ID: <20250523134025.75130-3-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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. Suggested-by: Saravana Kannan Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson --- 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 9a66b728fbbf..da515350c65b 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); +/* The parent for genpd_provider devices. */ +static struct device genpd_provider_bus = { + .init_name = "genpd_provider", +}; + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ #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); +#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 generic_pm_domain *genpd) return 0; } +static int genpd_provider_bus_probe(struct device *dev) +{ + struct genpd_provider_drv *drv = to_genpd_provider_drv(dev->driver); + + return drv->probe(dev); +} + +static void genpd_provider_bus_remove(struct device *dev) +{ + struct genpd_provider_drv *drv = to_genpd_provider_drv(dev->driver); + + drv->remove(dev); +} + +static const struct bus_type genpd_provider_bus_type = { + .name = "genpd_provider", + .probe = genpd_provider_bus_probe, + .remove = 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 = gd; device_initialize(&genpd->dev); genpd->dev.release = genpd_provider_release; + genpd->dev.bus = &genpd_provider_bus_type; + genpd->dev.parent = &genpd_provider_bus; 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 *dn, } EXPORT_SYMBOL_GPL(of_genpd_parse_idle_states); +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 = { + .drv = { + .name = "genpd_provider", + .bus = &genpd_provider_bus_type, + .sync_state = genpd_provider_sync_state, + .suppress_bind_attrs = true, + }, + .probe = genpd_provider_probe, + .remove = genpd_provider_remove, +}; + static int __init genpd_bus_init(void) { - return bus_register(&genpd_bus_type); + int ret; + + ret = device_register(&genpd_provider_bus); + if (ret) { + put_device(&genpd_provider_bus); + return ret; + } + + ret = bus_register(&genpd_provider_bus_type); + if (ret) + goto err_dev; + + ret = bus_register(&genpd_bus_type); + if (ret) + goto err_prov_bus; + + ret = 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); From patchwork Fri May 23 13:40:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892204 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 DCA2D293B7A for ; Fri, 23 May 2025 13:40:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007647; cv=none; b=nnHgCVYEtE61/YVnDtRRKMn/nnLT/5nWxMNBRw6TxuErI0KQMvBMVW8JV9JyMcq5VaBirggZnIX8GVPeNeJpWMWtFvalTf8cJ5FAaKgGuurOvpfFIbSU4SA4YtIPCAXs1jvDlHdkP7HtOV75BHChf+s0DA1gk26phgak/kOyVl8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007647; c=relaxed/simple; bh=rvDBm88S7HVgvVUDiuw3q7zPuLExbVy9UL4/VZLr+SY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=amGEehpKNC/k5vEr0XllCRGvE1vZftcOhKMEExiVHXwMbouwAl13erJxxUlFc1c8WIXJtVdsepxxUmhgO5qdwHrf4JsRa8zYz3KsoigUQe97Hlnd/2IQsn0jjnO+Q60YNlTemnwWu4EptE+yAjaz7IfCNmCY8heZxy7TS4S8pqA= 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=hZRBJL0P; arc=none smtp.client-ip=209.85.167.49 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="hZRBJL0P" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-551efd86048so7532782e87.3 for ; Fri, 23 May 2025 06:40:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007644; x=1748612444; 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=3dwV7gI+Nsvg70NFtF53M46En6xO9EIKkeyF4GjRazs=; b=hZRBJL0PCmBos6X357czaEbqtH3FAhvv4JD2xiorvpaPCBFcz3kFCgkv7AJHwe2XGJ 8Td/VvgUoeQEabpMiuHQpufyVu42slGfXiL/phdgxeo2Kc9ga7L+nR0oCPZB5Prdg6LO l5nmjfsv03aDFPun43w7KJb0zp+op92zT5mMXhSC+GE/i0SlWHiz5nvVenMCJHeL7t3N CeAb1Sw0kAR5ZRLHeSqQBvsAa2wWClyyQ6s4vQsaVt4nfnz7sdhqIurPV+g4/CdNTTfg 0wDuZz+QZMuSG/Kv2BEvVsb9SdL38r4YUfjAgJJOHBV22o66sdi4NuHwQHp2RB4ja+QB WtAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007644; x=1748612444; 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=3dwV7gI+Nsvg70NFtF53M46En6xO9EIKkeyF4GjRazs=; b=YBaTHsj7o2x8MqkRaZUO8jt2P3H2D8l7RCHirPcXPjgiF/ZtafANZeJz2GYJUUDv5d fUGSQlAPRTTq9r1y3rsZKyjHYC6qlBWncIncDajyBz/C2YR1fNHgawfUTxnO1XbjUAe5 VWau2zdsM6V/Koy6GCSzYbokSUuQKoE9daE99sAm9CNVURzSIc6znF8m2syLPlO1fza5 5DUrzoqHouowgYDzX26YA5Qc3/mht8sMJzRyu7wiJSOsIwP6FuCmI9E/SeO8ekz+umyv Z4Q7afSzth3GIUZ5Ah5ufwZ7zkXEhHmb6ayWQaHCwZJM5St5mQ1Q6uv/CsFHvnBUuPBL FRTQ== X-Forwarded-Encrypted: i=1; AJvYcCVeA/GBkFOR73XXV5EKvWbWLdtKiWSvKiGbjiY5gz29lUYET3+ISGBkNYJ7s+Bksyhhug4Ne+yeMA==@vger.kernel.org X-Gm-Message-State: AOJu0YzRyBukIRKSVsDj9PK1I2LE7obUBQJVVBxHr/PY6h0KHDuuwA3B AuOi7g4G7c8AejJQzzC0qVzSLvOhaFZA3+6+blfnbufLtcaBCMnKayIL/k0LumNH758= X-Gm-Gg: ASbGncsBdxF9qzGp7TxEJuoDxnUWmLe0gB1E0BEEI0HIz9FAAG4U+IQ+U2gQcUAGRYy ciMQDL1xiROiqIBkYURO0AnEkczKEp125xjTvwbuYpsA+lCU75WK7Dr282sY25WZ/gV7twEjsxV UsErLSAUIHxiT91b7E3AHmaTCuBVeTHbSiSgvIbjSZLWdyiQjLDXaIlb9GHt6pg9WWg5IaY2dBT 7+vynFu9AubnRhIQzxysWXZONB5wzW/VA1FOfG3fKSTIdVJkQ3ixZTgGzgFW3dVR/Vx7+Cs3T2Y hGpbYg0TLn4blcwoqSg6bPJ1rL7tS0N3MAYM9PVZ/UhWqa++ZpJfZgDm1CQqRabYEU45JfGGKk0 YD+g4n8ey0YlWWrh6TTmMpWH1Yg== X-Google-Smtp-Source: AGHT+IGBn6n6EgDrMlkJDyd0jqLFfex9/E7P3NJi4ff8Az72HWi1omtWGQrPu5v8XW0RIf89Dfo3KQ== X-Received: by 2002:a05:6512:6618:b0:549:c1e6:cbc9 with SMTP id 2adb3069b0e04-550e97a1835mr7651160e87.18.1748007643820; Fri, 23 May 2025 06:40: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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:43 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 03/21] pmdomain: core: Add the genpd->dev to the genpd provider bus Date: Fri, 23 May 2025 15:40:00 +0200 Message-ID: <20250523134025.75130-4-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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. Suggested-by: Saravana Kannan Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson --- 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 da515350c65b..8d5dca22e35e 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2637,11 +2637,17 @@ int of_genpd_add_provider_simple(struct device_node *np, genpd->dev.of_node = np; + ret = device_add(&genpd->dev); + if (ret) + return ret; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret = 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; + } /* * Save table for faster processing while setting performance @@ -2652,19 +2658,22 @@ int of_genpd_add_provider_simple(struct device_node *np, } ret = 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; genpd->provider = &np->fwnode; genpd->has_provider = true; 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); @@ -2696,12 +2705,17 @@ int of_genpd_add_provider_onecell(struct device_node *np, genpd->dev.of_node = np; + ret = device_add(&genpd->dev); + if (ret) + goto error; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret = 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; } @@ -2737,6 +2751,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); } return ret; @@ -2769,6 +2785,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); } } From patchwork Fri May 23 13:40:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892391 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 56E952949F0 for ; Fri, 23 May 2025 13:40:47 +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=1748007649; cv=none; b=qDnoSGtD8YP6VaMyJjCO560WCojjaqWCtEayEyvjWvVUt2C1gfJlJ8siHwkZhKZgi1Anu16lOMBZ6W5Gn7oiufJUFeIhQOWc3ArxIZvFHAcxqpGhje7S7eo7b6CeFCFZf9NOXX3j6/hQiR9R2CezCQzjp86TZpkmpgFRo3zF5IA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007649; c=relaxed/simple; bh=k/gokzrB+B3txUi/Vz2QwJ5ruZou9efWYDfsnSiPgWI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GJ7O0HeQYO1i+XDhR6doCh2cypMNwuZmnXBfmEbunEDqhH7ClNiOLqkEEyf4r/Ov90QxPhhhNQjfU+HAbJfLn8KbAvS/WB6s+y74UC6dKvt8CH9+LXY/RPNafRPq/3gNskC7H9MxQRjPZFvZW8OR5QItV/4cBEcn6YE81iDHi3I= 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=JXH2DuKX; 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="JXH2DuKX" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-54acc0cd458so11969970e87.0 for ; Fri, 23 May 2025 06:40:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007645; x=1748612445; 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=fWwLIPtTzxYEWEZZw852hEtxpMYtFzOXN6IU6m8GQeI=; b=JXH2DuKXyr9jsVGUSqNbU+LZWCXJ886YOAVc4/vG+Doqsb04P7Viip14eF1BSjVvJN IyQWQZNRaLbCVmSPDWstBOn8ZHhTjc5Q7hY/AP7dw+fVeHxl5oREcXxWX9VZ1DV4MIWi x+zQdkp14An6bsoQ1kq+0XwzvReukhIv+dF4t8fEyPn/sh+r793WlIqfhuFzO50HGTFx VhPJDZ1HFoOD0XN44eJXzd1ctBINqTUnYiAuwaDgh+qFKEvKHpr8bX4OTXyHSW93bw7e Zni7eHdjZHMB1cr+EAB+EIcPS60eyY/US8/2uK5hjJZ5Ia+vY/DjfllDVdqcn/sT1Qy9 bwHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007645; x=1748612445; 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=fWwLIPtTzxYEWEZZw852hEtxpMYtFzOXN6IU6m8GQeI=; b=XA2Q5PbdyVV9+cWhzn4uEO6P8Ejvrm0H7jUst2zOahEDv9NRykBfQu5yNyVjlb4Z2N ynovtooJnlnJsvaUfBeriZceeaz7+JmFgJsah/qWXcS2PEx0g9X46+aiNL2OCzRZxmq+ mLcI0X3+s3mWlGLs0bKrPMKnSeQf69v7Mrv11/8PmgHkIe7/7SuYJ5/qGUYTzZPKJfkL BEuKm07xFLYOmwdZE27JGVDI2QCG4XMm+WYeOltKNIaDSdDM7qgxl3o1hWRoL1cMqia2 2aEU+L+19IMMSoJbLTMtJSUvikHKbp+JjCyFJWHZ5Yc+tf1y2E0fRPRNDoTGKLu4CkZP z22w== X-Forwarded-Encrypted: i=1; AJvYcCWFJbRHY4phmMyYL3GN8dHBS1jPfvtXqmwDSRwFB3EUhelP6Gbml0mHjPOlR9s0qbXpQ1KnQkkfSA==@vger.kernel.org X-Gm-Message-State: AOJu0Yw5nNZZLrF0BdvJdZBWkMNzEf1YtvrkAzNWxdKHMPQMU4qYbkRT WDRg1LD23CpemQDJkmsUguTWAQuKH1w4rxmHjbN/aPsyqVgyKr57ptwKa4FY0eg8DVw= X-Gm-Gg: ASbGncsgPLviB9uOb8fRZbAPgMSXhZV+i8ovBVSrPmxIxt4mnl1CeodDG+x4M0FokZl Ibv8xWZiJoyUizK7HzJInr33VC7qFr5qcofnHBtUkNouOzxE67FAOiAtKTakPT96kGF+Vi88gIe 7g+NTx/4sn37y/VMvDZWuTGzJIyUDM9gHAJzBboKYBZAB7elgGxeTBgNeQqE4wC1Mg+x7D+aVm0 OZALdd/aK60vQquguQJgGw7tq0sHVRB+Th2K3qrTlvk50L5WTuRaf5YpLnX/h1aqeD7elV/ty2d 7+ofxjHJl8/k1FJx/LprtozQV3uXkYYsxBGfGq91t/tDazVJxWF6I3xGQmeidA3Td6CWX3m5T9Z gyJEqVmd1aschmBoETDXmqoqD+A== X-Google-Smtp-Source: AGHT+IGNGyKHt6rNzkDqqmR2aYUSiJolKpNdYz92YDpW2HCUQjN23ubBERBvBislD/qe18fWhnbOWw== X-Received: by 2002:a05:6512:2581:b0:54e:752a:ae5f with SMTP id 2adb3069b0e04-550e71938bfmr11180010e87.8.1748007645507; Fri, 23 May 2025 06:40:45 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40: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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 04/21] pmdomain: core: Export a common ->sync_state() helper for genpd providers Date: Fri, 23 May 2025 15:40:01 +0200 Message-ID: <20250523134025.75130-5-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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. Suggested-by: Saravana Kannan Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson --- Changes in v2: - Changed the in-parameter from a struct device* to a stuct device_node* --- drivers/pmdomain/core.c | 27 +++++++++++++++++++++++++++ include/linux/pm_domain.h | 3 +++ 2 files changed, 30 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 8d5dca22e35e..4047af5a275d 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -3408,6 +3408,33 @@ int of_genpd_parse_idle_states(struct device_node *dn, } EXPORT_SYMBOL_GPL(of_genpd_parse_idle_states); +/** + * of_genpd_sync_state() - A common sync_state function for genpd providers + * @np: The device node the genpd provider is associated with. + * + * The @np that corresponds to a genpd provider may provide one or multiple + * genpds. This function makes use @np to find the genpds that belongs to the + * provider. For each genpd we try a power-off. + */ +void of_genpd_sync_state(struct device_node *np) +{ + 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 == of_fwnode_handle(np)) { + genpd_lock(genpd); + genpd_power_off(genpd, false, 0); + genpd_unlock(genpd); + } + } + mutex_unlock(&gpd_list_lock); +} +EXPORT_SYMBOL_GPL(of_genpd_sync_state); + static int genpd_provider_probe(struct device *dev) { return 0; diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 0b18160901a2..3578196e6626 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -431,6 +431,7 @@ int of_genpd_remove_subdomain(const struct of_phandle_args *parent_spec, struct generic_pm_domain *of_genpd_remove_last(struct device_node *np); int of_genpd_parse_idle_states(struct device_node *dn, struct genpd_power_state **states, int *n); +void of_genpd_sync_state(struct device_node *np); int genpd_dev_pm_attach(struct device *dev); struct device *genpd_dev_pm_attach_by_id(struct device *dev, @@ -476,6 +477,8 @@ static inline int of_genpd_parse_idle_states(struct device_node *dn, return -ENODEV; } +static inline void of_genpd_sync_state(struct device_node *np) {} + static inline int genpd_dev_pm_attach(struct device *dev) { return 0; From patchwork Fri May 23 13:40:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892203 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 C92C5294A0B for ; Fri, 23 May 2025 13:40:48 +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=1748007650; cv=none; b=iSmWwlLw815kYMU6m3XtDw8G7hHjME4pNUjapvz3ZrLIw4hQB8Elw7MqAQeK0ZoeIBEgakBNgwzDhEgsTLSB7upF7jrZNhgDO0seEL9MMrxu0nlI93BngyBizK6TOTiitejW9mnrLPnVk9CKzpuRkJ46f5osYVMLW+XICpE3Ht8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007650; c=relaxed/simple; bh=nIpXaKo7UoYnucf3GuIfuZxsHV/DZVUWbfnVOjaAP7s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YhOgHnTtFk7DXZ2rYfmw2hSvtOxwOrzwHmqC7f3bbLJYvVqKUhc9/5Gs4w/1ZQ0P/0PRZPH7VGIdovREvfhyN8P3U0BzEKiFfde12/rqmmXBmzzLoioZ/a4Dib74oFqnOofIfxfiaxmrEmlWyIH+qwH6BD4hSzSR0xz7Eu8xb3M= 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=pbzUhY/k; 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="pbzUhY/k" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-551f00720deso5800985e87.0 for ; Fri, 23 May 2025 06:40:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007647; x=1748612447; 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=bRfyxZvH5+TpkOAftwgj9mo3UBVnLXBhqh8LLeaEC0o=; b=pbzUhY/kYRwEbbmAU2uxDtfT3SxQlZ8CYpJ0LU2P4+6dV+AUAjCVBOlWb2ONZoBopf TEhUQtkm0QixzG/L73rwY7sWHnb2tiUY9SUCXiw54ek6A2ZzfD1vAK6kae0nVZnAZXFR kCJZfTDR5bdQHNBtt08HsDIESR4nHeAE37VKZ/WDvljFp3O1hCDWgxYSOzComsBakjhN vFOmXvRX7UQO2TCfnxyPIhIsTrjAUin+IzBVt1kBXGXknVqzD9xq/FBcyOQ3CV0rXec4 KkO0GQsV8jSLCj8xZOJMXFWTUP9HvdasV4tM2PdVdeQPKaja4LLKOw0wfFethws15q1d 7TYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007647; x=1748612447; 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=bRfyxZvH5+TpkOAftwgj9mo3UBVnLXBhqh8LLeaEC0o=; b=E+lR0WIAcyK5Ssknp61gTjaXiEeJwKnp0itB6wIZwrRFfRK5m4SiLyxxYbmPY7W6ie sJhPNDJFZ5bsDSuAMiT7y2mG/Kaho7VPgLyGak/85YYJNQF5a6xOubUXedflTQTctWS5 OJ1V7f1d4/QZAV1qSeruc2Z4NuKKS/br1XvkQJEwMkC62XksEzgMB3fSROfrDFyE+HvX +eDGMhuZfXIhObmf2+0SozSL5F5QT0hw5sHFyXD7qA9t3TPFxzNHc7vLV5nq1Jg95ls8 cax9bVyH5yjLT2c3mJ6fHpiBQbf3ciyZaaswD5MIownkdD7IP3LtKgvJlTWbXYU8v4sV 21yQ== X-Forwarded-Encrypted: i=1; AJvYcCWq4Ms11yQqW4w1dMQHvMdh6Sfb21l2wWVax/HGnfpOEXyZhz76xs8ZVeSJVD4un2/txDz2jQ1iOw==@vger.kernel.org X-Gm-Message-State: AOJu0YzrQIUmX4gdlLxy44ZxumxE7dzifx81unFhcA8tVGjeli/63ngy xo7bLErsOjmZSxCMXqrhA86Ie4+76xEpPci/9x5roCnd93Gi0n3H/FebhTTYV+Su2Fw= X-Gm-Gg: ASbGncvZt+Ip+Kbc7v/2oWcJq0lM4uxp/CfcYw1KTYqHQjLRR93ND5EGDU02lXywfkC yB55tPv7mkEzBS2wQe+RSBCBvKyHSMfX7JN1lSW3lhyIK3oqHrnzBvcPwD8bQHETaQ58wM/YurG PkmUAHzq/PZDPOZJidkpqSkg6PYSWjK+We8FdB+8Gvp7epamBRirn1RvQr3RCB1x8oZGbzR6hYL 6MVwYE+oY+7Tfnutbu6bSpCy9S7/EaCDor7+QtKeHr04SWdAwCA1LYAbenWJ9JvNYF34NsG87cg XLabqsBto6CSlKjmfdf7HZ+pY3N1lN2jBEsojiVlpKNU/AX+N5YM8ZWTMoGbvfoY0BkVYuxuwuu 7U1SzBzlAuPxQusdDhyAtUtJhXQ== X-Google-Smtp-Source: AGHT+IEQ3+x5BM2uDN34zUdzxKW6ya4/VolG4ReWBxvxjZOXbRaDh6MY+jvSlnL1g35O0Meqr3/ZCA== X-Received: by 2002:a05:6512:22c4:b0:551:fd90:e4a9 with SMTP id 2adb3069b0e04-551fd90e544mr4364920e87.44.1748007647110; Fri, 23 May 2025 06:40:47 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40: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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 05/21] pmdomain: core: Prepare to add the common ->sync_state() support Date: Fri, 23 May 2025 15:40:02 +0200 Message-ID: <20250523134025.75130-6-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Before we can implement the common ->sync_state() support in genpd, we need to allow a few specific genpd providers to opt out from the new behaviour. Let's introduce GENPD_FLAG_NO_SYNC_STATE as a new genpd config option, to allow providers to opt out. Suggested-by: Saravana Kannan Signed-off-by: Ulf Hansson --- include/linux/pm_domain.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 3578196e6626..9329554b9c4a 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -104,6 +104,11 @@ struct dev_pm_domain_list { * GENPD_FLAG_DEV_NAME_FW: Instructs genpd to generate an unique device name * using ida. It is used by genpd providers which * get their genpd-names directly from FW. + * + * GENPD_FLAG_NO_SYNC_STATE: The ->sync_state() support is implemented in a + * genpd provider specific way, likely through a + * parent device node. This flag makes genpd to + * skip its internal support for this. */ #define GENPD_FLAG_PM_CLK (1U << 0) #define GENPD_FLAG_IRQ_SAFE (1U << 1) @@ -114,6 +119,7 @@ struct dev_pm_domain_list { #define GENPD_FLAG_MIN_RESIDENCY (1U << 6) #define GENPD_FLAG_OPP_TABLE_FW (1U << 7) #define GENPD_FLAG_DEV_NAME_FW (1U << 8) +#define GENPD_FLAG_NO_SYNC_STATE (1U << 9) enum gpd_status { GENPD_STATE_ON = 0, /* PM domain is on */ From patchwork Fri May 23 13:40:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892390 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 C799C2951B8 for ; Fri, 23 May 2025 13:40:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007652; cv=none; b=uX2KxEiSAjOahmlDoIUvI6EbqnAyuYXi6BO+7YBawCUWStTUCNQOwhrKgheh1HqCFcBJAwg99rfeSgj6Zua87WZo71E8/mAcfpCjR8/pyHvYXPNYm2trdqQD33jxLOyXVz7AfePT4saVyzVST51K8eyhv4pR9UgyVvfaDVpFVG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007652; c=relaxed/simple; bh=WcF75pnqXotEsYTaAIFVCeSXbuTwse28sKqnHWInBJo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FDkztZhCmHrVgqqhrSi8r936AL8meLqR15mWgtrpmhK7/LJRGwGlpm5aybykzd4V7Zo9MPW6J9BWWgmEl4sL79HLWP0FTIyxFBBk3eklaoq4c6oxA3fb60EOxLNbUzbHet88h/PyrSVCrrf+oE85mnYMicRQrGtqa+imrM7UCs8= 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=rt5Mf0Eg; arc=none smtp.client-ip=209.85.167.49 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="rt5Mf0Eg" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-54b0d638e86so13766875e87.1 for ; Fri, 23 May 2025 06:40:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007649; x=1748612449; 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=JMZdXJF8HQ4HBbVGnSNAyGkt9IprenNJaiH/9V7ofuE=; b=rt5Mf0Eg5tZEJJ+mdYv8QUxFbcJqhdsHxnKfo+vJ27/cBMgMs6Bj8ad7h2blhm+/GX 1tmGKMz+f1Ifz83EjfHEYiFlyfP4WANbOYAnSJ7QV0m5dicc7UxebJOC6hR9xZMJ1K4K Vc+AIfAANog00rhxQ9RhOH5NWqcPw3rP1XKQ7LuuScUjtVg5VtkXuHvSioG4IYHuzuHy rGcrmFxNfgX4SzQ0IJHUkrsvSB4FZr+VnxrWXbgWf0kFi7MfhcBdJn1OcgNKb5Ug28cn 2PKOFyGmEvrzWDVWr4TnRyfPxxTX8ElYoriE+rI0nsD+/9iMmYqdeucyp0M5f9KPFX4S HF9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007649; x=1748612449; 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=JMZdXJF8HQ4HBbVGnSNAyGkt9IprenNJaiH/9V7ofuE=; b=Q2nbR4TcpVFu8GTbC8PAofXY3v5ygWsd6GRTIFb+stEdFauA1BJJ1wTNEIQSWAc6I3 ynE6o+k5jpFy1WZN2DJ+61+RSb25cg94l42yIg69QnNA2+8QKzTPoMRy0CPJWMX+vvqg 9PQWAUPa42Z+rS8DGYjXJsd0s0Lqu4p+fkJ8xyTonYjU30D7b50/udITn1UWFHno0j3X GhPvJtp1C+oAjlO/3iQIirrO5vtmsI92VO3VoCfHtGKmccxrElvUX9I9OCNM3x6xfsLN qxWirPVJKNqgUoRO6YNP5/rrlenMhsRNYPUP1+7OJ6QfDzcz4l3k0zfVG5PpTPAPbm1q FM2A== X-Forwarded-Encrypted: i=1; AJvYcCU/fTUpyYc4KIw4EDSBIAYynPMtHCXGZ4cDLJXU6Clx7vFT5LNWq8Z/bjNIgPY3vi29cL6Zj+PVRg==@vger.kernel.org X-Gm-Message-State: AOJu0Yx5SCMZ0nvGUjKapwU5IfkEr7HGGeweOe6BQxyLidlPvz9VrHVP tJM50iUJXp8qW4ENr6GTVjVHn79iDUgqm7DV/NTLY4+3MdilZoOcf1EoXV7EJwl0gAI= X-Gm-Gg: ASbGnctqzi7j24fZSJwiyMrh6rTz6sUz63SPzmHFEH3A+c7wvZ1tUvBt1UsdlspWSLA 3dRF7qA+f2kH9dBUoxK2YzhVMJFcTQjNfZRIwB8gIKA7twxM2lNt6xfZsMk3p0Ng9VpmYpn//w4 wpd9V7o0EiO7FupWYh0fuB0lC3o3xIIDrvawuuw/BrsQG47VWSyScLBgGManL/tKFeDlp6140xm N7OdOrrXXzwDA3hSh4vyAZT4cxkFfUEHZHhsgUHvxqcLMvzB8QQvEfH0wydH1hp/6RsnVtE4aJ8 KsX94HPhePqvJf8q7KTs2xffy32lc+A4SZuo1qz+pd6biZWsg5bDNGj6cDf5yOoE4pQzJ7ZIcDG aScXR8hIcpdTQrzjcFLl/73NjkA== X-Google-Smtp-Source: AGHT+IGvEYgNGoCkD4rXMPLf1i5EyasJT4rgUzgZY4MikEpEuIPRUFRo0vKJ3KsJupVkoZwFT+4GMg== X-Received: by 2002:a05:6512:10cc:b0:54e:86f3:5e65 with SMTP id 2adb3069b0e04-550e9966d43mr9793624e87.56.1748007648818; Fri, 23 May 2025 06:40: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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:48 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 06/21] soc/tegra: pmc: Opt-out from genpd's common ->sync_state() support Date: Fri, 23 May 2025 15:40:03 +0200 Message-ID: <20250523134025.75130-7-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Tegra implements its own specific ->sync_state() callback for the genpd providers. Let's set the GENPD_FLAG_NO_SYNC_STATE to inform genpd about it. Moreover, let's call of_genpd_sync_state() to make sure genpd tries to power off unused PM domains. Cc: Thierry Reding Cc: Jonathan Hunter Signed-off-by: Ulf Hansson --- drivers/soc/tegra/pmc.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c index 51b9d852bb6a..ef486387ccd9 100644 --- a/drivers/soc/tegra/pmc.c +++ b/drivers/soc/tegra/pmc.c @@ -418,7 +418,6 @@ struct tegra_pmc_soc { * @irq: chip implementation for the IRQ domain * @clk_nb: pclk clock changes handler * @core_domain_state_synced: flag marking the core domain's state as synced - * @core_domain_registered: flag marking the core domain as registered * @wake_type_level_map: Bitmap indicating level type for non-dual edge wakes * @wake_type_dual_edge_map: Bitmap indicating if a wake is dual-edge or not * @wake_sw_status_map: Bitmap to hold raw status of wakes without mask @@ -462,7 +461,6 @@ struct tegra_pmc { struct notifier_block clk_nb; bool core_domain_state_synced; - bool core_domain_registered; unsigned long *wake_type_level_map; unsigned long *wake_type_dual_edge_map; @@ -1297,6 +1295,7 @@ static int tegra_powergate_add(struct tegra_pmc *pmc, struct device_node *np) pg->id = id; pg->genpd.name = np->name; + pg->genpd.flags = GENPD_FLAG_NO_SYNC_STATE; pg->genpd.power_off = tegra_genpd_power_off; pg->genpd.power_on = tegra_genpd_power_on; pg->pmc = pmc; @@ -1406,6 +1405,7 @@ static int tegra_pmc_core_pd_add(struct tegra_pmc *pmc, struct device_node *np) return -ENOMEM; genpd->name = "core"; + genpd->flags = GENPD_FLAG_NO_SYNC_STATE; genpd->set_performance_state = tegra_pmc_core_pd_set_performance_state; err = devm_pm_opp_set_regulators(pmc->dev, rname); @@ -1425,8 +1425,6 @@ static int tegra_pmc_core_pd_add(struct tegra_pmc *pmc, struct device_node *np) goto remove_genpd; } - pmc->core_domain_registered = true; - return 0; remove_genpd: @@ -4262,8 +4260,25 @@ static const struct of_device_id tegra_pmc_match[] = { static void tegra_pmc_sync_state(struct device *dev) { + struct device_node *np, *child; int err; + np = of_get_child_by_name(dev->of_node, "powergates"); + if (!np) + return; + + for_each_child_of_node(np, child) + of_genpd_sync_state(child); + + of_node_put(np); + + np = of_get_child_by_name(dev->of_node, "core-domain"); + if (!np) + return; + + of_genpd_sync_state(np); + of_node_put(np); + /* * Newer device-trees have power domains, but we need to prepare all * device drivers with runtime PM and OPP support first, otherwise @@ -4277,9 +4292,6 @@ static void tegra_pmc_sync_state(struct device *dev) * no dependencies that will block the state syncing. We shouldn't * mark the domain as synced in this case. */ - if (!pmc->core_domain_registered) - return; - pmc->core_domain_state_synced = true; /* this is a no-op if core regulator isn't used */ From patchwork Fri May 23 13:40:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892202 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (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 A7D7B29550D for ; Fri, 23 May 2025 13:40:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007654; cv=none; b=E4X0rJ7J6wgYUOKucKR15aU4x5csPr2LkU1xYfpikdTlhOQ/J+T5/nAvFGdrgptbQolpiFLAOZalltoOo42Zh4h6KaH5I8prbze04vJSBUlqmQXV4Qv2qnsTnRSMBKc/7nWDMybvisPY37wD3BairqVrdoCU+C+iov2ycxQmQNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007654; c=relaxed/simple; bh=KKNT1JhbaPmauJ6i6M1lbqlI91jHIa2Cm6I3t2dDms0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JJsdG0rmsriupVnOJGDktoZE0uu6DEfE7NzqpqDW66q8jxq2X2J8FOx/mStLJK2D46ewm1h99cFeY/FQnbVR+N0KfC4G7V/bYEpcC2k1JuVzbEvCCXzkGqHOCUGcQbvcw3OU5olGWcjHY/xnkoO8SRg2/lh7eGtVo0ao6X8OVoQ= 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=whCClBMY; arc=none smtp.client-ip=209.85.167.50 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="whCClBMY" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-551fe46934eso1062818e87.1 for ; Fri, 23 May 2025 06:40:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007651; x=1748612451; 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=JhgdoK3MpeYw+rOuxZhcYLfRQHzQPd8VTaoRAeP4HH8=; b=whCClBMYkRzNHXcdd4O0EvWWXePnsFuJMk2+j3lxEPIm7wFpzwh11hZiYn/xK6Rq+H u4EEDdMrOOAaj4Ygz9/C2Bp39pBOKM1IDpKOeHmthGxmntiYVNo9gbdm6WviVwjy3CSS Un57mbalkvh+VNocTjtlgt6Ft1nzSq2GG6pj1jytqDXQ5Tpc2VF08ZzKh/bWhx5qamd0 XABfgCQcYQ6M1hGh5lXOysNE3dhdRasPX5vFiTzlKD3Bg+cGDtN2FNruSPADkcFJm9kS 7/aEMBd5mP1HRe1OBW6zRH0WE66eeMCDadapmXwIlg769o4AH7MUFV/SoVtpnPll1Hzo zJXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007651; x=1748612451; 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=JhgdoK3MpeYw+rOuxZhcYLfRQHzQPd8VTaoRAeP4HH8=; b=jUuGkG4bVuAqaAYPGn85OQNn5RUs9dbZVpz4nmc3xC+Tqh8hV3Fu9SUS/mwEXtYjQA /QG54ZZS5DFbwIzyME1JAiG6qAb6ZcJwvnV6rl5fiF9ncbFP+sYzRuVL8163iDoWqvxj 2qHXGf2c63uQyiO8g76GqHE3gQQFZr0UYh8eLy3pqQ/kgbN3MQsQ3xnpaRxVCfJ19NNx 0QFRT3T+JtMt0n7yyKlscurkw9nTh7C8V805EPAenteGp2zFLqFHOUGpp7JPyuRKrAg1 59aOfYhrmKi6GHBhcY2W+XI5cthy1pZzrc9taeSaf7SbRLyRS78B1O1wawEQUU2Cr4X3 E7uw== X-Forwarded-Encrypted: i=1; AJvYcCX4vrswBRfbXnm8cdfVwQuWCXiZxlnJogd0lhe55LjoGZ0K7qwRs/liewMbRYLYFFzTOGbBk4JaEg==@vger.kernel.org X-Gm-Message-State: AOJu0Yx3CCdolzUPY42NYkByiQjsrHgf6r/wQtLi0Fug5iM1CgPvwBf6 OguRO74b4idp/0gucpJ+TNTqDNZGe2AYzcVSGSylqU91iMmnpCjY5q/PUIxL5QbBadE= X-Gm-Gg: ASbGncs1oHf/YVJg8aNc1MQKFpOKccsFU4dAeDQhoFUdFi5fMsG/FMpp15jleVH/gmw BfvtSKb0ReKPMroxkn9Ap+U29dqV89O596w8O9lNPZiIpdIQpFi7iSnFn1fEb9uU6LILISdoHwt IlFDDFW7Mpydd1P7rJRv8OEZ74JXYh7V9ABUJhY5iswsVlLT8FkCUutDulw17zJOPIZNqwUaz9B pwnDzeXKDwbRBRTzNnGQv5COtjLZjfktDmdygxi5L/4CiPQP0sQWK5FURwwjMo/ZU/04LAwIXwt hA92HwjLS4Izdb2QyeqAWvBUhFK3bl/Pp9Ob8sAlvo3yCLDPkNID2TMPnKddCQHloxATgjRFr4M 4ni1g8uWyxoUwq1Iw8tmgbu3/Lg== X-Google-Smtp-Source: AGHT+IGxKZRIYcmGHvMkuMsGKvsKXAq1cHpyxb57jcrvbj7O4xdTx/mj+TIt0JjLrEZhlxZqFEhQ/g== X-Received: by 2002:a05:6512:3b8c:b0:545:a70:74c5 with SMTP id 2adb3069b0e04-552156b0fa0mr1317620e87.13.1748007650658; Fri, 23 May 2025 06:40:50 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40: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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 07/21] cpuidle: psci: Opt-out from genpd's common ->sync_state() support Date: Fri, 23 May 2025 15:40:04 +0200 Message-ID: <20250523134025.75130-8-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The cpuidle-psci-domain implements its own specific ->sync_state() callback. Let's set the GENPD_FLAG_NO_SYNC_STATE to inform genpd about it. Moreover, let's call of_genpd_sync_state() to make sure genpd tries to power off unused PM domains. Signed-off-by: Ulf Hansson --- drivers/cpuidle/cpuidle-psci-domain.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidle-psci-domain.c index 2041f59116ce..b880ce2df8b5 100644 --- a/drivers/cpuidle/cpuidle-psci-domain.c +++ b/drivers/cpuidle/cpuidle-psci-domain.c @@ -63,7 +63,8 @@ static int psci_pd_init(struct device_node *np, bool use_osi) if (!pd_provider) goto free_pd; - pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; + pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | + GENPD_FLAG_NO_SYNC_STATE; /* * Allow power off when OSI has been successfully enabled. @@ -128,11 +129,16 @@ static void psci_pd_remove(void) static void psci_cpuidle_domain_sync_state(struct device *dev) { + struct psci_pd_provider *pd_provider; + /* * All devices have now been attached/probed to the PM domain topology, * hence it's fine to allow domain states to be picked. */ psci_pd_allow_domain_state = true; + + list_for_each_entry(pd_provider, &psci_pd_providers, link) + of_genpd_sync_state(pd_provider->node); } static const struct of_device_id psci_of_match[] = { From patchwork Fri May 23 13:40:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892386 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.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 D511A29671F for ; Fri, 23 May 2025 13:41:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; cv=none; b=sJrk2+azRQdB9vqejjgHqctA/segC3sDdurnT1mJk8xxi5GtzYLr5vGUs0SGyH8ZEMa7XNyBjfrRrNxCd6pXyLdegcAtf3FpYAQZFfUIe7dzqss5nPYeFZSWm0XvNs9b7ELJ8e5bL0MSOfXUop13EfmtExiu3ig992JH4PepkSQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; c=relaxed/simple; bh=k1WDqYJlMC23mNs1HIwLVzoqt5ssM4IDpkVZTQA6i3c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LHErfDLjmzmqCa8xM2zK5QTfRgr5ekJjdA6xV6uRB8V6AGoDCajg1TGS3EqbAXBvA4GGgesKfzkNuvdnsy9gkSYMmCbxooY4lR/Mvp9RJ2WAuEvmhSZ1HlCyo4vrfDGSRWE7bg3nesdQnS2A7i6o5lJ4oH2LKY1zI7F2UE+Y9iI= 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=Tgp1GeKJ; arc=none smtp.client-ip=209.85.218.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="Tgp1GeKJ" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ad5740dd20eso942369566b.0 for ; Fri, 23 May 2025 06:41:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007663; x=1748612463; 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=hUC/L//rK2/TTSf1Dzin38jZuZ6dxi7JPqJ0cw7AoiA=; b=Tgp1GeKJ1hwGxWrxPdgkBnuQAc7yT/F1x3yfA3W3tiKHaxn9LrcRBS4MWETWkzRfV6 +LhpPvtMZGR8qAiN8hWYWyGCAnAxLmgniiou0N/R8gEjKzpdlUIb/VVTfYt64FYcAH6N PYZOLhNjF36ypV/K73pRCH+cti50Dcb2k6KunRxSHj6QIv6NoM0rMIdGG1K+uneyeJ9m 47QbZrtS8QkG0W3q40cgMSCtj/8+qADF54PAb6S4rFj6MpCz/1gyBZ2nFHPAIJQt4qQj JgcIGKqDJSyDiKALg3gh8v0tl/6k396ZUImHCc5oXMTJ/Iv0fdKG4CbEzoO+Qp31fLd1 2NXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007663; x=1748612463; 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=hUC/L//rK2/TTSf1Dzin38jZuZ6dxi7JPqJ0cw7AoiA=; b=cGRrszWSbf4DlSPXPipwG+tgvndE/iQ4UElhOF690GgyruLKkgKgGMZmvpJwSSVBsV WSQree52DwDGLIjZNz2omEWlnc+Soz7ZCRRKGYTmF/TOCAJ09Urn5W9bUbKtHtHpe9Xz quW514bc6SPdqaeJLwIRcqvDDVDTc6X1Es9Ua1w4xmMo1AheZITXiH5QCub/INmkcTZ1 E54JPjHz/awc724JzjzSvGayS/WYoaU5idbTO4kGTTkjhLkleUIXtPmsjKXjE+LKYAkl if4OraWooEgdKSaxLrCN0rQn02tTHHROKwGNUmsU6g2BOO+59m+REqY7YjuE3PNmBAzx fHeg== X-Forwarded-Encrypted: i=1; AJvYcCUewvyDSg1ZHb015eGvi1NKiRx5B2rc4Dkr9o5dCMKyvBTxHehauXxDhaul4LJsTxdlTwGERjhhuA==@vger.kernel.org X-Gm-Message-State: AOJu0Yx1dul1EVGFP4f3KYS3tsPK5bazIlIwJGCk3A/z7Z9cRESU/r2C JSMFqXuzarrm6HnGW81W3ptApxHhG0gixNquOsg6qsEcQYu31oBWm17TQErdiMDyEfshPsbFNqK 2DnrNWXw= X-Gm-Gg: ASbGncsNAG2/VeaI+o2chZzdeeheC9HFmfMSKSCVhUza6+sofSi2hidjp5CJwhbYXIj cuLQ5QLQQM9QLhDKXtkRFc32p+n6gcL02V+k4Ar0gUI3t/bRdTfJimiXMD6ZeoKseiCqQwnpjvT 45aPxsMTC77V8orU33ebFkNLvQwqBSil9mnImjmmM3oMh0p9IjO8O5RO76PYBypsTskBALXeNvQ n/9+N69NpwYtk56O20FtFR4rbfN9v7G2aPGiFH5Zy8Op44fOSyq8N0U25b6FCeIzx7mOPPP0P+s WzJRch24dQij8cKCzfQU1LSFksyYD4pa5oA0piY9lRyjG7IdxQFW5Le4/qzHZlIR6ylEX/FHpZ+ n2d8Ut4QK4jUGuwkoAeehjrLiVg== X-Google-Smtp-Source: AGHT+IEHCYkYuWzR0+7rN1lJlnWJY9YunsWGOeHigvX1kOvGZwTPmtXZLbWPxdIRTzInet0tBxzveg== X-Received: by 2002:a05:6512:3d1d:b0:54e:90ce:3c34 with SMTP id 2adb3069b0e04-55216ebe5a0mr842172e87.55.1748007652469; Fri, 23 May 2025 06:40:52 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:51 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Anup Patel , linux-riscv@lists.infradead.org Subject: [PATCH v2 08/21] cpuidle: riscv-sbi: Opt-out from genpd's common ->sync_state() support Date: Fri, 23 May 2025 15:40:05 +0200 Message-ID: <20250523134025.75130-9-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The riscv-sbi-domain implements its own specific ->sync_state() callback. Let's set the GENPD_FLAG_NO_SYNC_STATE to inform genpd about it. Moreover, let's call of_genpd_sync_state() to make sure genpd tries to power off unused PM domains. Cc: Anup Patel Cc: linux-riscv@lists.infradead.org Signed-off-by: Ulf Hansson --- drivers/cpuidle/cpuidle-riscv-sbi.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/cpuidle/cpuidle-riscv-sbi.c b/drivers/cpuidle/cpuidle-riscv-sbi.c index 0fe1ece9fbdc..83d58d00872f 100644 --- a/drivers/cpuidle/cpuidle-riscv-sbi.c +++ b/drivers/cpuidle/cpuidle-riscv-sbi.c @@ -347,11 +347,16 @@ static int sbi_cpuidle_init_cpu(struct device *dev, int cpu) static void sbi_cpuidle_domain_sync_state(struct device *dev) { + struct sbi_pd_provider *pd_provider; + /* * All devices have now been attached/probed to the PM domain * topology, hence it's fine to allow domain states to be picked. */ sbi_cpuidle_pd_allow_domain_state = true; + + list_for_each_entry(pd_provider, &sbi_pd_providers, link) + of_genpd_sync_state(pd_provider->node); } #ifdef CONFIG_DT_IDLE_GENPD @@ -396,7 +401,8 @@ static int sbi_pd_init(struct device_node *np) if (!pd_provider) goto free_pd; - pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; + pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | + GENPD_FLAG_NO_SYNC_STATE; /* Allow power off when OSI is available. */ if (sbi_cpuidle_use_osi) From patchwork Fri May 23 13:40:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892389 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 AB12C2957A8 for ; Fri, 23 May 2025 13:40:55 +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=1748007657; cv=none; b=M91c+HGy5SSF+AVfiqD6rfm3aMtzqKrfK0ePHc3fkCHfaEEDm1Yh9M24C8thnIGhA7NusbJ1k0cbuOu53izEwyIiJFELmamKITFQx+lDKfCh1Qbakg5Dhz0Kpa/9XjruhHL8geiRI1RsDhDXLVt0/A4FcQOO1es391+iAs4o0NQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007657; c=relaxed/simple; bh=eQFb13pt3SMV+zjHPOqe2QvR/SdOjsFXtEEtguGWM4Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nN+Fns8JK6b2v8w8CtZx0TGbdRyunP2tS+KIbFSalHDCaUNxzEUuvsAxTzxwa1e+xHIPOnSr3dZg0bO2y5hWRVZImpy5gJUzkldpvmDLfPUNGtsDl8i38mfsu9LPc4fe5OD7CDefg64MYh+ORWCiDC25+TM/FLsvkGlOiU821MI= 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=vcySSXDa; 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="vcySSXDa" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-551efd86048so7532967e87.3 for ; Fri, 23 May 2025 06:40:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007654; x=1748612454; 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=gFJTs6Oe3tZDiqGEPhPZQpV8g2gqNJNZcx49AsG9G/8=; b=vcySSXDaEmyKLQNROiOx3LAt3/1GNq2ZFNmXBzxpqKjIfgJsR5X6CwRNO9ihMLUYET 5PnEyQz5vRKUgHUBSfPSCahbh5xDMRvnGziVVZaGisT3z6M3r7QUmvel7WMxBBp+eX2J LBZqTLawK4mv55uOu1JLiiKz1q8ri6MRaQQdgUkEzTQxdWQjzrO97SNRHRnpYdy2d8ZG h+TEXhZKOwYMTXUe+blLQ44RgaGqFL1o3G1wX6qjWsD2C89j+22O+gdZfvlsY6L1nR0b Y8bPTZYgdy4e4QXUEHK/K0XaFj+Ur5wh2qw+c2IzbMzdT3QMIwj+XiC30n30LxdJnNAn LozQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007654; x=1748612454; 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=gFJTs6Oe3tZDiqGEPhPZQpV8g2gqNJNZcx49AsG9G/8=; b=aG3KQ/95bLfJqv/Cgi8xVs0KDxYiJKAcPFQOUwVEccIOuwoZPeCPr8QXx0P3Es842r DvnKNBI5LzQy7VMce9oMXUythzCiVCZuzNu2qV6Z2a2uFvlz4RH+iIZYPP6vazquybjy qgjfnjeoujB+983tZEZ4UT/GLm51fOr7tsh+x1W4NapNRAISbyNW1TnFYYPC8BFe89cc pLueN8Vjh0ybC/FosIWxM57iQ8lsok/d55fm1BBcrrRbOdnRdcrBNFluolXwgE7Fi/qD 7sL7OKJC4Qoi7NkaA/3bCnWa0lxe4Hw0169Nrgd+cbnHwaqk13r7S6PjDlhQcNHWVJGl HlIg== X-Forwarded-Encrypted: i=1; AJvYcCX5pc2TSdIv9fsjTws7UnfaOW4m3PDIDTN5UG72Z79IoWVGkllejVKHTNQOQYiny7Yjz17/u4bL0w==@vger.kernel.org X-Gm-Message-State: AOJu0YxSQh+ErBjN/jlH3KUsByzRj3sIeGySnyF2lQU4V9bep8993EVz 3URcTmM03z1y/DPyYkrf5JozmMqWAG0vIOj0clZ09EWiOghFKYP3IkqeK+XP2BCrWCs= X-Gm-Gg: ASbGncsGA4VdYS86jAxlj3/hloBsg4LWVadfHHI1A/ETMKumyUMaeY6jWZynWY+XkFH FFUrRP2aa0TAKTd8CR674aDKpmEsFsGCJYpbVPMrnl0Ay51emznowDWLMBLcXCInhOa1zxhtj4j yc225AgVQwkyra6tahDO9rlVnzggpgeDkCp3o+Bm+sJUT108pw8DDRbLDdkOsx3uBsnA0abEq4v 3cOEM3K7RHId/zoQX0D55lQmN9GjuJ7yuDnVzfnfP/Em5cCCm90ryjmy08u9/XAJd8OV+BpEhuO 8Kx7rNkXVLpat39iWqPvYsuLVN+bhqbeoz3fvO+k9yHJaBbrvJ+l7670xZyagmPZ+LEJa6uKJfd hqV+Au7kIYJdC+whLA8FoRf93sg== X-Google-Smtp-Source: AGHT+IG9T3c3b5OoxUcS87R1wLRRFL3PdXpvlFYoXNj4F4WD4Ace3E+S/nh+np/agz5oYIx0/z8iEg== X-Received: by 2002:a05:6512:6802:b0:549:5850:f275 with SMTP id 2adb3069b0e04-550e990904dmr8181500e87.50.1748007653840; Fri, 23 May 2025 06:40:53 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:53 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 09/21] pmdomain: qcom: rpmhpd: Use of_genpd_sync_state() Date: Fri, 23 May 2025 15:40:06 +0200 Message-ID: <20250523134025.75130-10-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 To make sure genpd tries to power off unused PM domains, let's call of_genpd_sync_state() from our own ->sync_state() callback. Cc: Bjorn Andersson Cc: Konrad Dybcio Signed-off-by: Ulf Hansson --- drivers/pmdomain/qcom/rpmpd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/pmdomain/qcom/rpmpd.c b/drivers/pmdomain/qcom/rpmpd.c index 0be6b3026e3a..833c46944600 100644 --- a/drivers/pmdomain/qcom/rpmpd.c +++ b/drivers/pmdomain/qcom/rpmpd.c @@ -1144,6 +1144,8 @@ static void rpmpd_sync_state(struct device *dev) unsigned int i; int ret; + of_genpd_sync_state(dev->of_node); + mutex_lock(&rpmpd_lock); for (i = 0; i < desc->num_pds; i++) { pd = rpmpds[i]; From patchwork Fri May 23 13:40:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892201 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 92F3F2957DE for ; Fri, 23 May 2025 13:40:57 +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=1748007659; cv=none; b=VC3qzHUhJ/6b3N6hx89ZUe/wLdq/8Uopa0cHOouqYbI6QGDgRQFjujViaFd5BsDDL7HnBah57qn3IcBCi0l/76yDB/phrjKsigHzk0DEuILtHvHukaodrpIbH9XWtXZ/g42YPJYPwZdOUh0/3T7oY4e7Vw2NYYbCxsLPXg5d0x4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007659; c=relaxed/simple; bh=T1xgNZltAjtmifp4jfz/spATibuE2uO7MlAk8LyXjGQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nzOLhbg54dEfK12euCH7gEOYEWqA7djUci/fGxy/5HAMrUTlQDBlj7ecF6w+Yj3CO67KXpVV6W9l8lROhOtj24x/8HWsQTsHuKsyyCeNVMDMqYwQ5Pwe9yl1lISObBIyH1sgWwFy82VvDsyBUAmhki8aJRXGgVprSVjxvBn8jyA= 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=VAdVPC02; 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="VAdVPC02" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-551eb17123cso9062456e87.1 for ; Fri, 23 May 2025 06:40:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007656; x=1748612456; 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=3dLO5FUnZLNVebsG8JkJQYms3itDlHs2qdSFPmZ+ETY=; b=VAdVPC020GdSrjcE+qXPZG+A9jWKcqn+AQMO5uiC6J6suxmRFaz4yw4sCnXZy2PWbo K67MM4GuQSKFXDAAw9aYssCOQxb7rBHe12DOxvZuIPlbOcm/br+Kq79pFIGRk9+7QD/C 3f4T8m1TRE5KkjXJP+lDQAoECjgMb59Q978sNqCxIZ/cs/L2l74JFyaO3ICkU7dWKJYj aJG2IHAOeIb6Ee2CDY/k1pjnfSIuLJIr00q4Aik1UIXn8CrStMWqeYA8pyNedrOGS7cU Hq1nCodUf2IYTBg6ubGxW0b3dKJGRKJOfhCEfLJaGchmxyoxNz4cMERHkSObl6R/0MUK gx5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007656; x=1748612456; 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=3dLO5FUnZLNVebsG8JkJQYms3itDlHs2qdSFPmZ+ETY=; b=es1hK8PnxjKLn8OxSk6ihnZH+OVs/sPs3DQ6TI1/rRRN5m/jRbW1XbPuBJ3CeYRTRi 3GLre0c3jTj91Xek/bjb1xlOvZMTspjs/M6GuUsi5vPTTx7gQkJpHTVTdlbredP9o5sb E3WiHzEPOvSCxWnDVnp/5oQeNODX/6M+vEX3m+MeS1AWK8z38W2CKLloksRLklZceNg0 kqkYzxPNE/r2ovJeh/jKsIvCTAm9SFuSoGFbsAUbwh8rdRYTKKLCV+eDVXkl1BezkZ3c wMVAnC2Wwc1FE2rk5ZbO7+jpYm0iYOu7ANFJoPa9isLUTfZ1LMTxXfnEK64UmMyy8oKa o0qg== X-Forwarded-Encrypted: i=1; AJvYcCWP+vjb+pnkNDnBff1KrrHNNv71rNPHNLswWey+UqmNE7NJ2RH1IUum5SFNf2ZLM5f/Hd6dzek9DQ==@vger.kernel.org X-Gm-Message-State: AOJu0YwIlPpm+nPg4759YIr/COgIDaJYODvUfo8GtA/NiSJJgKUUQ1Pz kMuo2QKKE3sy2DsP2wfvdJAhbXhloqv+v8p/3fpbknVfIgLSKA6nRGeqUbfhJ9GqXiA= X-Gm-Gg: ASbGnctwziHIe1QDl1b8Y9ks0AULtp0GSTgIDIYyke7p/i8G1OWpiOV+xSVNHDvqfev cr4S+XzdmJPfTWA5xcoT8nfWwDpOqzGFn0OQFCNXpYNRWjQuOouw34y9vMsUj1+GFe6R5B9hdxb +N1lyKVVFDEI1EoNk6Miaa3FvxBmK8aH53aNbw2U6mWv0ayEY29pBcnUIAj1bp4yOA5yi8OtEN7 FaKG/UxYdf8YVHvNm6T4CMYv3q3w5nAR5W2pg9nsj4Ns+aAZ3zF7rSY3lphWYWm2x4xNoIvdanv Cu1Qm9RJKDhuJE8jXku4Jv6HGxQbZ5jXvFFywwnQLF49xpeK8NZy++WC5tey2vLBKGgGq1Rtu09 e/nXeotpzHpOE05/swZEYapFlOA== X-Google-Smtp-Source: AGHT+IFf5shMU44TNKwf2RFfAZvM/E6/6pPkbDTOgxsF8Wrk3SQBud7p3rswM2Pdzq/U1CzVLKmBdw== X-Received: by 2002:a05:6512:31d2:b0:545:3dd:aa69 with SMTP id 2adb3069b0e04-550e7245310mr10207937e87.36.1748007655625; Fri, 23 May 2025 06:40:55 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:54 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 10/21] pmdomain: qcom: rpmhpd: Use of_genpd_sync_state() Date: Fri, 23 May 2025 15:40:07 +0200 Message-ID: <20250523134025.75130-11-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 To make sure genpd tries to power off unused PM domains, let's call of_genpd_sync_state() from our own ->sync_state() callback. Cc: Bjorn Andersson Cc: Konrad Dybcio Signed-off-by: Ulf Hansson --- drivers/pmdomain/qcom/rpmhpd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c index 078323b85b56..d9ad6a94b3ab 100644 --- a/drivers/pmdomain/qcom/rpmhpd.c +++ b/drivers/pmdomain/qcom/rpmhpd.c @@ -1027,6 +1027,8 @@ static void rpmhpd_sync_state(struct device *dev) unsigned int i; int ret; + of_genpd_sync_state(dev->of_node); + mutex_lock(&rpmhpd_lock); for (i = 0; i < desc->num_pds; i++) { pd = rpmhpds[i]; From patchwork Fri May 23 13:40:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892388 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (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 3D931293B68 for ; Fri, 23 May 2025 13:40:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007661; cv=none; b=h4PA0/gBz0iHlQHVd4wufsxai5zLHLQUs1A5Q1k8SwnF5n0eEG5QWn4zB/kUA/2K+wSOIFC/4IOtf43twl/NUfWxTAd7G0KBEapt3euU1vwzIVg+Jnsk1JyU1JJL71F7xXRQZhZFRUlnY2KnAAnUzeEfLTviMT8mO6CA2rd42Es= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007661; c=relaxed/simple; bh=S60R5V/pPXQ74Qcu0WmrzCZGgGMF0WRf6YeAjT2i5xo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lnz6HfOvJ7dZWlON1gQF39qw+o1oo3A65VDuvOcb7AjSP4YRyajUMCb9a73SRPjbZrdBeUs2SWYVb4zxwCus9wQ5X7eGS4H9gHb0s+oFgf8gyiC1HvcFne6OcY3xX/YPTl0lE8VOOkzNVxN2zBu3Zy6swnk6zU88t7NihtpazvM= 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=l5IYs9xH; arc=none smtp.client-ip=209.85.167.50 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="l5IYs9xH" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-54998f865b8so10032067e87.3 for ; Fri, 23 May 2025 06:40:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007657; x=1748612457; 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=TaodTG452ygjUfeAqfzX0hcEID7mM0/biHJ7FoGpgVo=; b=l5IYs9xHkeDTDEX1Y8EiRhyWAbfS3gEwRpJ21TQV8IRGZoLRucYM7yk96NXVRCmI/X sAYXT+GGknL4RIUQcyjR9uOxkuEgf3RxkKquQqAdhGEB6DL7R2gfkZnYl1jtXLB0wxBw ogl0z6lnTz21MkboxUoKJnwy3S9DjSxYD3B1cjtsDr0eQMda0OzI0/MozsPjLJm2+w5W 0MUKsSgYlTDpJhNDD44audMgsuLT1bug/B/kJr1iU+gsOKovdoOznKGwnSuzWd/pQOTP j2zuQxTDpDAk9dVprexdE6HfW/PCIPJq2CN4sJfWuWa2MUm0KBUgN7rM2YtL0fR4ld7T lyyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007657; x=1748612457; 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=TaodTG452ygjUfeAqfzX0hcEID7mM0/biHJ7FoGpgVo=; b=oPhmBaV/lRu9AV45p3wNA/miHLfNfZ/VfSBby44en7GlxASsyP9/1kKi800rgAJwKW CNgS67Rbhr7lXGLvyUcxjVVGsyP+KWfcEabIOkojDU0d97E/A84GAsQHzudToLnpcq8Q YL3bO50Fo+dGOfcUuGxsPzbo8wWaa5rR8g7XzvnlVfhhfJW8ZaNb0Zi5FRkAYUAnfzxy A3zAd8Myvm4wkoTIV4hve8DJgDOKw4jxeEiSU4f9MVFI1nHXmKjJfi3gPWUStqONcR8j 5rXWWRZWjiqi3pDzG2lHV9bP42rRCWKRdfHJ0mAOX1pOmXRt6OdaZNB16QGe+F0ek1Rm qtgA== X-Forwarded-Encrypted: i=1; AJvYcCWMD6crISC/ewbzhO99lwtjjNCXsrXGhRF6EZenSCaXMwUiYR3toFIsz6LKSX7rNzJzLVtpPs1dxA==@vger.kernel.org X-Gm-Message-State: AOJu0YwcflwqP8wyP3uTXl1azJn0nN4mKxbjIXByL8S4JsPPD/raXWQ/ S23BZ9R55DY+ni9tXTNU7hVfrUg0YkQknVyZk3Vlp4yk5HHcHIvu4vc7oT6i8I+owC0= X-Gm-Gg: ASbGncuc+iVtWdbjGpvsD1/P0pXmQAIq7sExqoot2wvKKpl/JSN//5QVKNEFJeMNkGN XsbEcQPgByJY8SqTYLA+KxN+XgbxDCuGJVgnMjp0YBi0mQvSWBK3Sn8rFx2tXxp7jKzssfsD9uq 9NuREVSltCyCizp9p2Y1kB9oLNDQzDuA8dUhEq9kXjCGREh2IdfjJwGCiW4o2aatzaQF7qxWvhI Fkj/oI79+MWXSo32ERBmVdFG5Bed3b+4zLTlEciEkMM0JXMnDSpT7/HC2uy7/I1qjaUpZGyd4MI 8dM8igEWJwttZApbnqKEEmFrNBZX5K/CFe3/LZZ1T6fw+xzP8D9cpitiT9Nw3e3IsO/VoSA5fHN 7VIt8os+W4jQaKr4IT3zofFpR8w== X-Google-Smtp-Source: AGHT+IHrYinBpOd90/7cqZZUAtcZLCgKCB9acewmFqtCkeLzwOOJRxqmBPoVSqry9v+2LJB1zYOmGA== X-Received: by 2002:a05:6512:6081:b0:550:d534:2b23 with SMTP id 2adb3069b0e04-550e71d2719mr8188649e87.27.1748007657233; Fri, 23 May 2025 06:40:57 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:56 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Michael Tretter Subject: [PATCH v2 11/21] firmware/pmdomain: xilinx: Move ->sync_state() support to firmware driver Date: Fri, 23 May 2025 15:40:08 +0200 Message-ID: <20250523134025.75130-12-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Rather than having the genpd provider to add device_links for each device that gets attached, to implement the ->sync_state() support, let's rely on fw_devlink to do this for us. In this way, we can simplify the code by moving the ->sync_state() callback into the firmware driver, so let's do that. Cc: Michael Tretter Cc: Michal Simek Signed-off-by: Ulf Hansson --- drivers/firmware/xilinx/zynqmp.c | 10 ++++++++++ drivers/pmdomain/xilinx/zynqmp-pm-domains.c | 16 ---------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index 7356e860e65c..a91a0191c689 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -2100,6 +2100,15 @@ static void zynqmp_firmware_remove(struct platform_device *pdev) platform_device_unregister(em_dev); } +static void zynqmp_firmware_sync_state(struct device *dev) +{ + if (!of_device_is_compatible(dev->of_node, "xlnx,zynqmp-firmware")) + return; + + if (zynqmp_pm_init_finalize()) + dev_warn(dev, "failed to release power management to firmware\n"); +} + static const struct of_device_id zynqmp_firmware_of_match[] = { {.compatible = "xlnx,zynqmp-firmware"}, {.compatible = "xlnx,versal-firmware"}, @@ -2112,6 +2121,7 @@ static struct platform_driver zynqmp_firmware_driver = { .name = "zynqmp_firmware", .of_match_table = zynqmp_firmware_of_match, .dev_groups = zynqmp_firmware_groups, + .sync_state = zynqmp_firmware_sync_state, }, .probe = zynqmp_firmware_probe, .remove = zynqmp_firmware_remove, diff --git a/drivers/pmdomain/xilinx/zynqmp-pm-domains.c b/drivers/pmdomain/xilinx/zynqmp-pm-domains.c index d579220a4500..b5aedd6e33ad 100644 --- a/drivers/pmdomain/xilinx/zynqmp-pm-domains.c +++ b/drivers/pmdomain/xilinx/zynqmp-pm-domains.c @@ -153,14 +153,8 @@ static int zynqmp_gpd_attach_dev(struct generic_pm_domain *domain, struct device *dev) { struct zynqmp_pm_domain *pd = to_zynqmp_pm_domain(domain); - struct device_link *link; int ret; - link = device_link_add(dev, &domain->dev, DL_FLAG_SYNC_STATE_ONLY); - if (!link) - dev_dbg(&domain->dev, "failed to create device link for %s\n", - dev_name(dev)); - /* If this is not the first device to attach there is nothing to do */ if (domain->device_count) return 0; @@ -298,19 +292,9 @@ static void zynqmp_gpd_remove(struct platform_device *pdev) of_genpd_del_provider(pdev->dev.parent->of_node); } -static void zynqmp_gpd_sync_state(struct device *dev) -{ - int ret; - - ret = zynqmp_pm_init_finalize(); - if (ret) - dev_warn(dev, "failed to release power management to firmware\n"); -} - static struct platform_driver zynqmp_power_domain_driver = { .driver = { .name = "zynqmp_power_controller", - .sync_state = zynqmp_gpd_sync_state, }, .probe = zynqmp_gpd_probe, .remove = zynqmp_gpd_remove, From patchwork Fri May 23 13:40:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892200 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 C3A49296149 for ; Fri, 23 May 2025 13:41:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007662; cv=none; b=puXUguKWiU4x8svz/Geh+/NHONMHEgxWWfMNK9CEL2XA5EYWDl98ZK0PqddP3QshXm+cjQ2wPHYThgka14xoTmqYk2EGeLrWnh4Z/B4Fmxv0r6d6A6xYlTktcxHHLBSuCzX82aDKrZeCQo+d91+5coKf+R454fjdtmUssJBFCME= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007662; c=relaxed/simple; bh=IbI4P7dKS7WQ0XrlPSF2t8HlO3jco/Xh1Hv9yYR/Iy4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eBfp6/686TU250lk//SzbIBxaLG2jOUxjIqjRkb+Es5LYnfkbNNsYyIP0L2G83UWhnKZMDzqIq3gXGteS29oEYdy2dwQN8A8NOi+sJ0A3dPgslRssDMxCZoAEEXLoPPvrbmXbQLfnhezB3YLm33Nm8RoflIwDanyqtYGUT6j1w4= 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=tA6Wkz71; arc=none smtp.client-ip=209.85.167.46 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="tA6Wkz71" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-54d6f93316dso11146838e87.2 for ; Fri, 23 May 2025 06:41:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007659; x=1748612459; 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=z5aEp/8JtU93ixaErAVWqgNJDOtLrawJ3jNzY/478Oc=; b=tA6Wkz71avfc9s5Q6WJ4IBmdOP3IlHKiAO9Lx4A+485OsgaL7fAMHfnT3OzDk7R5Mx XBmpc6H9loiev3lw6X/ZVj8hKXsVEBt9WJpATlBTwk2Yo2spWZt/Os2qPq0tb8MSt349 0br6dXKpO0EOyT3j2TT3OI4UKew3tq+sxJo7nOLaaScTr4Mytl3BFhmk0UyKOCoUYvS8 npIEGHSHKDhxiD//W2gT7k0ffNWV6DmTcCFY++/7UqHog49PU7sfwdVt2pr9fq86afV8 yd8uKHYWb23sl75lNqXRV8Q9+YPDwW3D0OdQcZ1KAIC25xtvugiZVlaOhi3M5WIooJHG p0DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007659; x=1748612459; 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=z5aEp/8JtU93ixaErAVWqgNJDOtLrawJ3jNzY/478Oc=; b=kXhlwvRoTTzX4odKDxF9lZo0pY3RmVXmNiy0OOcbyIWnc9wJ5C2mTkw5hGCYihCpOu H84XynZ0pgMOiw9dgO86uuW7e1EzgFUnJ7wYg1Wf5DuZtjy882Z1XYPxxc5p6/wcXZqp EGZKC6MtJXf4x+6ixXdWnNFt8iP4KvYL04mgNnx6525p5/JQJZO4qCzENHi5oXo8MJ4G 6E5fMO2Yn9PGmIO9Icici1QhA2n5Tf4KmbJjZ9HpwZBHJwpLRQMe+RZ+L8OklBhhW4wj 2HaN19ewQA9KImtwxICZE2Cb+h5eXieocML9oTuAicsMh3MQ6o0uMyA1mG3gTSAhDXrt 03Kw== X-Forwarded-Encrypted: i=1; AJvYcCV6a2CkE9MPtP/Pwwzh22IaZZOOYknAkj68TIf8IO17yR2LFpFoCkjhA9+fiP04GeXWeUrXwi/+RA==@vger.kernel.org X-Gm-Message-State: AOJu0YyPXZdbzdAMA64nPjZxfWwX3lVjECuf0GMDZevReSEZPNy8w9Ou /S8x6ELuXVWPr9KrutE+gCt0sywkWsI6D72ycxNqrEsTFvfcfm9nqPr9E3+NPnzAP6a7jbsU+/F vSPK5EUQ= X-Gm-Gg: ASbGncvB+bHqR4+boqnIqqbQnS9tk2lWohEI6IUK+dE/xctl6adK2cgbPsLShkQRcq9 4S4+5+8MkSWlO5A+zCXponWwY3MIxnvyf65kVOE4vKsNiXK59iS/0nLUnR+5lmywsyacZkMkC1L D7byBIqPrWhANVKtUlM5EH6ZQAIsbjkCYlOfLMXvkD0kbNhYDIlzvoT2L4EXaqr1MPDdEfkWLzS 3QE54F0A4mdC9bm0YHqtDsSXsqG54oIceISSRJphMU53VOcr2pfN2z48vMx76dReR+p/CdYkleK K0sya8otCekSiXlXwFbTJ5NE8tD2UlfVEu5jVncS+e7AtnrfA9ckHvfWnbM0pybn7muZrHhlvEw avyhQuoOewdeyPQt14ofhhXWzyz5M1w+wSOmX X-Google-Smtp-Source: AGHT+IHew3rJAA3EL1rPz5CTB3uwQqlEQeWho80HyKc1TwZE2NDcF2OqAfkY0OELPgTm0zJ+F3OM6w== X-Received: by 2002:a05:6512:1196:b0:550:e3de:63bc with SMTP id 2adb3069b0e04-55216e456acmr896941e87.25.1748007658748; Fri, 23 May 2025 06:40:58 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:58 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 12/21] firmware: xilinx: Don't share zynqmp_pm_init_finalize() Date: Fri, 23 May 2025 15:40:09 +0200 Message-ID: <20250523134025.75130-13-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 As there no longer any users outside the zynqmp firmware driver of zynqmp_pm_init_finalize(), let's turn into a local static function. Cc: Michal Simek Signed-off-by: Ulf Hansson --- drivers/firmware/xilinx/zynqmp.c | 3 +-- include/linux/firmware/xlnx-zynqmp.h | 6 ------ 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index a91a0191c689..87ddbb7d11c2 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -1299,11 +1299,10 @@ EXPORT_SYMBOL_GPL(zynqmp_pm_bootmode_write); * This API function is to be used for notify the power management controller * about the completed power management initialization. */ -int zynqmp_pm_init_finalize(void) +static int zynqmp_pm_init_finalize(void) { return zynqmp_pm_invoke_fn(PM_PM_INIT_FINALIZE, NULL, 0); } -EXPORT_SYMBOL_GPL(zynqmp_pm_init_finalize); /** * zynqmp_pm_set_suspend_mode() - Set system suspend mode diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index 6d4dbc196b93..ae48d619c4e0 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -585,7 +585,6 @@ int zynqmp_pm_reset_assert(const u32 reset, int zynqmp_pm_reset_get_status(const u32 reset, u32 *status); unsigned int zynqmp_pm_bootmode_read(u32 *ps_mode); int zynqmp_pm_bootmode_write(u32 ps_mode); -int zynqmp_pm_init_finalize(void); int zynqmp_pm_set_suspend_mode(u32 mode); int zynqmp_pm_request_node(const u32 node, const u32 capabilities, const u32 qos, const enum zynqmp_pm_request_ack ack); @@ -746,11 +745,6 @@ static inline int zynqmp_pm_bootmode_write(u32 ps_mode) return -ENODEV; } -static inline int zynqmp_pm_init_finalize(void) -{ - return -ENODEV; -} - static inline int zynqmp_pm_set_suspend_mode(u32 mode) { return -ENODEV; From patchwork Fri May 23 13:40:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892387 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (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 A6F2529616B for ; Fri, 23 May 2025 13:41:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; cv=none; b=lg/MmMq4kT1+GM9oAoV63CIHfVNfwW3RhOKUH+0ZCmBFZPtWRuuxesH4deILxOg1xZhQ397XkZ0O2xUivVVKX1dx85pXoGCoRKe80PahL4WUyh8S8xXWRnfjUigetMU7rm3Z3oHZj9BCRAsTABPFLHfNl4cdJAoaoGeVQqmpj7U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; c=relaxed/simple; bh=ZG0wD/LR/YXT1TNvRGuMwWiwi7r8mDmA4GGyX/lU8x4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WGu6KT5B952cIqDFkk+INX7UDUvUdF329w115NlTO6Tr9/lTTK01TjS4EyN9eyD9/on3aLXmnlapmL5QW2hzkQlzyfDoZtxco+wqw6GTe96RbQfyMAJ/kdO0o9XyM3ELTlSNWoFjQtLVtgRSDy//P/EQRO1+ljSDpvjLIqpR5Ew= 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=F8dFzDMW; arc=none smtp.client-ip=209.85.167.45 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="F8dFzDMW" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-54ea69e9352so11683609e87.2 for ; Fri, 23 May 2025 06:41:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007661; x=1748612461; 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=x/aJJumEOcgP/SHpHSm52hNIxPzlDOJRQ3oP2wL6guI=; b=F8dFzDMWueM3RzDG+pwIcr8kODFajW1nlz6emSjIaAx0uTESKlM1cXof1XJJkWxP5v dQoZEeCdI9+LalcRvw0JvWfP4cozeYlzZtGfi/tA7Yh4KUn4aYxMjA6FcYCsJ3qywuls R36piBDoWo/6shjTFbys3VqPIG/0eI9+x6ubO9ljqP7j2l01rI2WlD6PpbbJ+F6S78S4 xp1MEZk2eVwP/0kVAdX68jdFbUXQeri/Lgr6fIJQs9CZQU6KMQCxl940BUHcr75JcDyU e8n4juD7RmJbtWq3dXsPtPztEGhoRRbqcptq1IQjc2yCrQpuHg9PbJk51ewcU+venwHx 2Biw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007661; x=1748612461; 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=x/aJJumEOcgP/SHpHSm52hNIxPzlDOJRQ3oP2wL6guI=; b=T5bd2oRoQ10GJMj1sX8MCLJi1kFI3NyjEnrR1l++xpwuwZOsrHtRzOcPtEDbFC4flu dU9CzulECI9VBJ1CnLN9apIQMqTA+5U+esi8dn1rq2/7bKk74sV927VO48Sbv5DXi4qA jhYAMQOk9wErDr9fqcJpDK4lsORiWpJJuqv6VK3yj23fJn6Ew0uZozonVOzFZDW7l3tA Ot2eOfAdLKD8Y1DBYuQORZ/z96AdiT7fB4GpCgb1bvkNV4EqB6jn32MsXeCnbWysMxx6 9P1P3Fn2KMDtrE/eV1AYprgpClbxkKJKHZOJ1oDicTnDE/Ga9MwSupMivuxJ8Zs90NnR Ituw== X-Forwarded-Encrypted: i=1; AJvYcCWR2hnb2ufHqRtWFaPwWhroZ6FPTsuPvQ8RbmhL78i+9Ua511zHwZMvfCXiACeo7aId2iA2/ZtA/Q==@vger.kernel.org X-Gm-Message-State: AOJu0YxIeXrVjfjOoZhOImirBqGACyHp07ZV8+aV8dLJAtgAEFSMeFg0 3xB1KzNHUNEz4B9Z9IE6SVj9slNMD+tIh5CHUHp9z7gIqDDMvHkrMEwKvQwRkPIrlmM= X-Gm-Gg: ASbGncu/cHtUoj9ZbP+jBiAYdVOjOSG/MTnlHMOExJSQMMAH8p8f07X/Wn9QFpccpEU fzdfCe/8adDgx8+WDhgHTC8jQRcQsmZBtQbLpINtG5G3CcYK0jeo1U88wDDxKEHJ0rmz2kqDpkN Na/PP/m1Qs8b0k+RI/5JP+DvBh/lk/l/Aie7WQydfj8H+r1mTDT98+8CPfw/t5m48gshy+olXbG Hp6QI8JUUwKqqglWq6xCHcxq1EnFFp0mcw6W0aFfLQME1jY2f9ARhkrx1Xr4UXjw8nC++KNdT/n UrYHYza94yPnY8oBA8Qy8ymu5Ld6yUA0dk+jY/zxJ3iSvF/i1sYb0ENkfkKl2zfHKYx44FG+Hsn 5wWqU0S4eBsROLnBW0Q/cM+jFCCgsCQCXNEuR X-Google-Smtp-Source: AGHT+IFqaMutTsheTfKkW2cqf5rtDAzYDo1ADk4nh7EfRPJsLI0D9Etd71qYegkMcQyfr86dVQn3qQ== X-Received: by 2002:a05:6512:2616:b0:54a:cbfd:5517 with SMTP id 2adb3069b0e04-550e99259b6mr6555792e87.53.1748007660645; Fri, 23 May 2025 06:41:00 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.40.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:40:59 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 13/21] firmware: xilinx: Use of_genpd_sync_state() Date: Fri, 23 May 2025 15:40:10 +0200 Message-ID: <20250523134025.75130-14-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 To make sure genpd tries to power off unused PM domains, let's call of_genpd_sync_state() from our own ->sync_state() callback. Cc: Michal Simek Signed-off-by: Ulf Hansson --- drivers/firmware/xilinx/zynqmp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index 87ddbb7d11c2..02da3e48bc8f 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -2101,9 +2102,13 @@ static void zynqmp_firmware_remove(struct platform_device *pdev) static void zynqmp_firmware_sync_state(struct device *dev) { - if (!of_device_is_compatible(dev->of_node, "xlnx,zynqmp-firmware")) + struct device_node *np = dev->of_node; + + if (!of_device_is_compatible(np, "xlnx,zynqmp-firmware")) return; + of_genpd_sync_state(np); + if (zynqmp_pm_init_finalize()) dev_warn(dev, "failed to release power management to firmware\n"); } From patchwork Fri May 23 13:40:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892199 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (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 8B847296715 for ; Fri, 23 May 2025 13:41:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; cv=none; b=J30kgdErndj8F6Yhh6Pp/uZEl9IhgaAgdZ0CsVhKPBFdalUuqaPesm4LcwKPqMMKNRHa+GwIoBkkr5NXOzxKtWUo+R6wT0c0iKuuDAE/JAAmvBAmV5pxnF9Xv6DiUIZ4kNJ/Es+oGt5bvsss6bMRCYuzCMQ/SwJSbvPdt1PCNXA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; c=relaxed/simple; bh=rKpQ93wGB3N2jcBrTcwJvgpog+JGf2BH59ObvzlpVTQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D5H+/ZIlkW/MfXzy/EaYFDhIOoEcgeJvDuXuDe4R+/NeV8BGzPAyI581nW5WO0VUfy48MPDta9CYfyITSvRDKfNPbphlGorCc/Mhlj4rjGMbJWorweMn6KCXcdPkZdFwdErab8FLPC9mEAAUDhgf0aIpf1n6/D72qmHIYCMlrpw= 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=riRxBLj9; arc=none smtp.client-ip=209.85.167.45 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="riRxBLj9" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-551eb17123cso9062609e87.1 for ; Fri, 23 May 2025 06:41:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007663; x=1748612463; 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=7ptipst+jgUVMZThwfnH2tLuY1vSwuKeNOIIYU0B7Lc=; b=riRxBLj93NWR2TUktrAfB7OMoau5ESJTZTigxcB8cvLQDGqIQNlkM1ju9LK3w1v/82 N7Q8ExKba1LQnfsgyw1MEg4GjmnsFBoSBd3dMGAQvn1E1W2JsBJyskAEaatUqFamjzXA oc7ZWcW7bec+a50NZRfQzUE1LgpNWQm/KWITJw6yArJ0Ecz/4Tv//qtdc+SQ0pmjNUvp +DzGInq5GRXlPXFsC0imkNiohSTbIsKMGTH9zURo9SvA5rTU0/rhAxqsuKqq8yVPjt5F KEp/5O1szwI7JZiuC5Vfaty6bONyH0UwB/0Ug59m/dNRZo98a8TkRiatHwdvH8ezSAoB h7Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007663; x=1748612463; 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=7ptipst+jgUVMZThwfnH2tLuY1vSwuKeNOIIYU0B7Lc=; b=ZjFcORDr9sElQlVLoOPaZFt5QsPtdOJ8mBedyUF8VRBWXujfGeyJXvMlZMTlSUpYyS wv30+zA2rfrvKkERs9sKw0/s4kRqeIFGYxYhP/TOn2rJadDRgb4tKJy+eUi3jI98E2z/ 9wOuImao0R0PbKAAXfPTPKts7o/ozgjVvkcUuPsMtM7odVc19S+ndoW+RLOZihIjUCCT lataJxujxEYAZ5q+zF2OWtqFUmJH9H+achx+BJJM0YJkE6PieND+1g4W0oyn25C1zPjX LxjgKt8lFpITJZQrUiH8TvJxbcq0mZsW1BFUfjfrPVZnu5PCOGW3u7VHHRloHgZEoRWd Id/g== X-Forwarded-Encrypted: i=1; AJvYcCV4xP7vShlyUZcYpHfptgJWkOPwfiGSSA94zyWf8Mbs3kPQ96HWNgW3lIVEztdAoKRasQSeq+A9JA==@vger.kernel.org X-Gm-Message-State: AOJu0YweGtNCpVjLNlpeHYHrUvN9ZH12Y19SDx+URspqKkW613lBmf3L s1JzxQ5BdLyUd0Rs/x0++dzsVEOGurk17M41lr5ZptL50FqSL9wZiq5YOGX9ybLkfBA= X-Gm-Gg: ASbGnctD+FLcGKGz5kW4HpTzTGQhxYH8ofjlxrBYbKeryzPdC6TiGEvMFxxXiWh63lg nsiOqEHWVgedZkFo+JD+hnr4DnjRGtew2PYJWP8tXqyD7VlSVaf/SaelDQqQc0MzSlAPoZAuCt/ 01sg8m4w3uQAaNZADjBk7ELHglqDWlUys1Z2CAj4p1T7uXHdwaucHCaGv3ldlzfb1t/aHD/GdkT p0ZKekEvaoiWpRRIy6nbGlPTx95dJYloYKgi+Z23E70aTamrvlZiLLhnDRydfOZC/gAAe8AaCVZ LQBJWzK9V/NBBtXPUxtfyykfzXDkVy1LyKc3FqQH4QMkUTFlQT0bZ9N7xPmkIRqQt47ZboaLuMh SkzUdX2DTVsUxof0ZQnU49Np+cQ== X-Google-Smtp-Source: AGHT+IGfBRDW1UMlFuEvFbwkjGLGnQiQkt71IPhxmMxhJWvlHH9jDUn6RGcLspRvscDDVp9YdgMBPw== X-Received: by 2002:a05:6512:39c9:b0:549:9143:4e8d with SMTP id 2adb3069b0e04-550e719835cmr10282215e87.8.1748007662658; Fri, 23 May 2025 06:41:02 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:01 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 14/21] driver core: Export get_dev_from_fwnode() Date: Fri, 23 May 2025 15:40:11 +0200 Message-ID: <20250523134025.75130-15-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It has turned out get_dev_from_fwnode() is useful at a few other places outside of the driver core, as in gpiolib.c for example. Therefore let's make it available as a common helper function. Suggested-by: Saravana Kannan Cc: Greg Kroah-Hartman Signed-off-by: Ulf Hansson --- drivers/base/core.c | 8 ++++++-- include/linux/device.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index d2f9d3a59d6b..51512ab8a6e9 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -1881,8 +1881,6 @@ static void fw_devlink_unblock_consumers(struct device *dev) device_links_write_unlock(); } -#define get_dev_from_fwnode(fwnode) get_device((fwnode)->dev) - static bool fwnode_init_without_drv(struct fwnode_handle *fwnode) { struct device *dev; @@ -5255,6 +5253,12 @@ void device_set_node(struct device *dev, struct fwnode_handle *fwnode) } EXPORT_SYMBOL_GPL(device_set_node); +struct device *get_dev_from_fwnode(struct fwnode_handle *fwnode) +{ + return get_device((fwnode)->dev); +} +EXPORT_SYMBOL_GPL(get_dev_from_fwnode); + int device_match_name(struct device *dev, const void *name) { return sysfs_streq(dev_name(dev), name); diff --git a/include/linux/device.h b/include/linux/device.h index 79e49fe494b7..f6ca813eebbe 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1086,6 +1086,7 @@ void device_set_node(struct device *dev, struct fwnode_handle *fwnode); int device_add_of_node(struct device *dev, struct device_node *of_node); void device_remove_of_node(struct device *dev); void device_set_of_node_from_dev(struct device *dev, const struct device *dev2); +struct device *get_dev_from_fwnode(struct fwnode_handle *fwnode); static inline struct device_node *dev_of_node(struct device *dev) { From patchwork Fri May 23 13:40:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892198 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 1C991296715 for ; Fri, 23 May 2025 13:41:05 +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=1748007669; cv=none; b=gSaUfFl/1orX8QEU9TpU4LmWoerUGOUVtDMLUvV1CuwrL/ttOhB3mYIDpkOJaYsPoIlP1El9/fE4UrCmnSEjM+In/xkNy/E76ic2jidVlkySxI3WrcfGgYTATq6dZQ4xWdCrLootcC91QIf3BufQeFU0WyZe3V1EfMkEp7ZjDdQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007669; c=relaxed/simple; bh=BNU9PuywstX6I+IaQZdoVQWmlolUJAYeaZv61hYLkg8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Vt6c7Q86Ayir7R+cq5ktS56KARSGfEveBCj9JWuXiqV0gQWJBcS4iTmIiVWI1DOB5DatHA3GFxLzOB1M6MplLaKeoTVJfSZfkR1sdQob2eB+B9N3ns9CYu4yFQ1pfNiII+yEFLa9qoKVERv8UyEruzK9OVzQ6gROXDYV2JbW4L4= 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=Na+Ihge0; 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="Na+Ihge0" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-550e2b9084dso10684657e87.1 for ; Fri, 23 May 2025 06:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007664; x=1748612464; 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=KC7YC2/v/hospjziwcUkovuFHlTjTAcy5Zz+vdo8lIo=; b=Na+Ihge0zpyigW7TNffIf+MostbKgczA/7bnqO6OV12TVeDFQvjG6GoFjDQ6lPAL1Y 3cLG4u6GSLBBbOQl0nEaXR2xVyaqsWDCzV6L/1o1YOSuagzB9FC1gD5cvuraOfYaHCzy hIjtN2vibL8XG2Ev0KAuqZ5wkflgKp5yZvpb7624AbVXfWE/PpJh4z/Jz52pA5et8fMN G/5X5EEOI/9yUEQNjiGPaVvzGPuzHSOOK3ZY0A7wAt7GTBgOtYKsSdIukGNJKTOGgYWG NvKKSStfgLirB4ej7QxTGZjYY0/Xy/UNHg+oYYSq9F8if8xuY+1sk6Ybsro9MyxrZtDh KoTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007664; x=1748612464; 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=KC7YC2/v/hospjziwcUkovuFHlTjTAcy5Zz+vdo8lIo=; b=OE+w5XIzH+gxDryXYOTt2BojiCMnQaTJWH77q44/nosu7xSRlpmoeTW4jR7DVXFCZF dIsA0LM81lFN0Q8qVU3asklCWQfLcQcK/gM/dBnDmQulXL7a8h6eZmWPUwaC1Llft/BR RAPcCiA0ZKIDEklkgdJy16m2Hz0F68nrR0B/WOUr9ilWIErRAhSWZkprXwRG6VR1JIRl q8F6HBFwQ2+5ZFvJTJ4do7upPsn7YlZDommQ3+5HWX9WzrPrUeNfwywqvej5G2MA8GuF dZdY+yL2ALAqsMAzKN7mBi8VPHIcknYEXsTKvYHjsRi4aUcUQcTWNgNKb7Ef9DVXNnGD uXsw== X-Forwarded-Encrypted: i=1; AJvYcCXKnPZmgaLAZ7axNdB7u5obk6FsUOKN33DPPnR2ukxEJaOBdG5TebDgI7f2Yc4KgQA46CPKIeINQg==@vger.kernel.org X-Gm-Message-State: AOJu0YwfBu3ZaxLlEEK9tA34qEc1DTOXjk3fid5fO0y1mDs0M4UILXVf oilcW0hadfxR2T3zDePIHx/4PhSvbhOaZReImO0S1iNpV0+yroZ0l0x6U6wW6wQB9CA= X-Gm-Gg: ASbGncuC4Cjbd/G6fryJRvrkWDzPLvpR02rf5mUe7SO8jejz+XqAvcpaVZOrNYl0O8x Tq5+fAx1VHLvUBzYpgDiUeVU23IbjPRoiX9oqhZXqeH36KJ1WFNRYUoENOXuP6zyQCoECg6GhAg XlHN2ZuDpetvlUXSM/a0cGreNpiwOPC4wyNbPwrgciXepcK1f6OsZSYBtPIWb5EJezxklAT8QRK tE2B4q4QJDJjS8JRytJzOl6Pk3t2JtogkRIU3InwEXWP/NZ5C18eYRSgBBy91ap30PkZZdz5W7g zBZSvusP3aG6LgKuF0PWigYVtCW3wt7q1phizmS81oSB02klNx9f04f8foD1XgCDn2DXrn09C2/ FnqCwY9EvRqrM82nkchqX6JyPKw== X-Google-Smtp-Source: AGHT+IEZ0JF0eQFf2usDsMtCl0D2zCseCjmw2y7+b0hDzAnm98HasW9P5zPUEvp49AX37vCRxzZGZQ== X-Received: by 2002:a05:6512:630e:b0:54f:c1ae:f1b6 with SMTP id 2adb3069b0e04-550e99648bemr7875417e87.56.1748007664022; Fri, 23 May 2025 06:41:04 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:03 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 15/21] pmdomain: core: Add common ->sync_state() support for genpd providers Date: Fri, 23 May 2025 15:40:12 +0200 Message-ID: <20250523134025.75130-16-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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. Note that, genpd providers may opt out from this behaviour by setting the GENPD_FLAG_NO_SYNC_STATE config options for the genpds in question. Suggested-by: Saravana Kannan Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 52 +++++++++++++++++++++++++++++++++++++-- include/linux/pm_domain.h | 7 ++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 4047af5a275d..c094ccbba151 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -189,6 +189,7 @@ static const struct genpd_lock_ops genpd_raw_spin_ops = { #define genpd_is_rpm_always_on(genpd) (genpd->flags & GENPD_FLAG_RPM_ALWAYS_ON) #define genpd_is_opp_table_fw(genpd) (genpd->flags & GENPD_FLAG_OPP_TABLE_FW) #define genpd_is_dev_name_fw(genpd) (genpd->flags & GENPD_FLAG_DEV_NAME_FW) +#define genpd_is_no_sync_state(genpd) (genpd->flags & GENPD_FLAG_NO_SYNC_STATE) static inline bool irq_safe_dev_in_sleep_domain(struct device *dev, const struct generic_pm_domain *genpd) @@ -2374,6 +2375,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 = is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->sync_state = GENPD_SYNC_STATE_OFF; genpd->device_count = 0; genpd->provider = NULL; genpd->device_id = -ENXIO; @@ -2627,6 +2629,8 @@ static bool genpd_present(const struct generic_pm_domain *genpd) int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd) { + struct fwnode_handle *fwnode; + struct device *dev; int ret; if (!np || !genpd) @@ -2637,6 +2641,15 @@ int of_genpd_add_provider_simple(struct device_node *np, genpd->dev.of_node = np; + fwnode = of_fwnode_handle(np); + dev = get_dev_from_fwnode(fwnode); + if (!dev && !genpd_is_no_sync_state(genpd)) { + genpd->sync_state = GENPD_SYNC_STATE_SIMPLE; + device_set_node(&genpd->dev, fwnode); + } + + put_device(dev); + ret = device_add(&genpd->dev); if (ret) return ret; @@ -2661,7 +2674,7 @@ int of_genpd_add_provider_simple(struct device_node *np, if (ret) goto err_opp; - genpd->provider = &np->fwnode; + genpd->provider = fwnode; genpd->has_provider = true; return 0; @@ -2686,8 +2699,11 @@ int of_genpd_add_provider_onecell(struct device_node *np, struct genpd_onecell_data *data) { struct generic_pm_domain *genpd; + struct fwnode_handle *fwnode; + struct device *dev; unsigned int i; int ret = -EINVAL; + bool sync_state = false; if (!np || !data) return -EINVAL; @@ -2695,6 +2711,13 @@ int of_genpd_add_provider_onecell(struct device_node *np, if (!data->xlate) data->xlate = genpd_xlate_onecell; + fwnode = of_fwnode_handle(np); + dev = get_dev_from_fwnode(fwnode); + if (!dev) + sync_state = true; + + put_device(dev); + for (i = 0; i < data->num_domains; i++) { genpd = data->domains[i]; @@ -2705,6 +2728,12 @@ int of_genpd_add_provider_onecell(struct device_node *np, genpd->dev.of_node = np; + if (sync_state && !genpd_is_no_sync_state(genpd)) { + genpd->sync_state = GENPD_SYNC_STATE_ONECELL; + device_set_node(&genpd->dev, fwnode); + sync_state = false; + } + ret = device_add(&genpd->dev); if (ret) goto error; @@ -2727,7 +2756,7 @@ int of_genpd_add_provider_onecell(struct device_node *np, WARN_ON(IS_ERR(genpd->opp_table)); } - genpd->provider = &np->fwnode; + genpd->provider = fwnode; genpd->has_provider = true; } @@ -3446,6 +3475,25 @@ static void genpd_provider_remove(struct device *dev) static void genpd_provider_sync_state(struct device *dev) { + struct generic_pm_domain *genpd = container_of(dev, struct generic_pm_domain, dev); + + switch (genpd->sync_state) { + case GENPD_SYNC_STATE_OFF: + break; + + case GENPD_SYNC_STATE_ONECELL: + of_genpd_sync_state(dev->of_node); + break; + + case GENPD_SYNC_STATE_SIMPLE: + genpd_lock(genpd); + genpd_power_off(genpd, false, 0); + genpd_unlock(genpd); + break; + + default: + break; + } } static struct genpd_provider_drv genpd_provider_drv = { diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 9329554b9c4a..d68e07dadc99 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -133,6 +133,12 @@ enum genpd_notication { GENPD_NOTIFY_ON, }; +enum genpd_sync_state { + GENPD_SYNC_STATE_OFF = 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); @@ -193,6 +199,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 */ From patchwork Fri May 23 13:40:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892385 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 B144B29374C for ; Fri, 23 May 2025 13:41:07 +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=1748007669; cv=none; b=GAZ/VMB+D+Lzs+vEcP9XXxCMNeDO9NQOaTNYEcHFFxs514QHEYBJWQ2/ERjCmpkxG2hDWrOVRlhDvp6mA/YxEcNioTRyiZpRp0xCXWzvQHpi7XDKPvUNMBpCq5STqboQKChyQf4Z4wL9319kLIXQIryKPt50Q03uyGTkbF0xMJI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007669; c=relaxed/simple; bh=pJSLQthsbZ1x5UaqwSUyIjHPGHXE3quITyYFZ8WQSC8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aQy9ZnnEjd5iadl+TRcVtR605+n32LCTH90IrHmcv+xBz+3q8MEHWPfEWOfI76GXdysk0nJviQ51RMWBgOYyWmikNqF36J3UzSiwzdI2zOY8XNhToayiOqlHFqBcHDcq0FM6i9T2Uf6/sJtipNPCeNbCx4HPWql/yteHpA1Dt3Q= 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=ep/ddSDV; 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="ep/ddSDV" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-54d6f93316dso11147007e87.2 for ; Fri, 23 May 2025 06:41:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007666; x=1748612466; 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=e+GVQQEW/Nx5/3Tw2jXG/FjfLcvR6Pq+aehkGjHuNLA=; b=ep/ddSDVVRlJQ8yD+RSZmdrgb7qjpJiomJ4UhC9j83V6yTN+mkJzUIKeJhLfZeSFdt B/s7mkn+7t53EwepuIeyu8wC4ZS12Tx5wMD8c764+35GzQQ0nIPKtt6AVGAQTtAUWQM/ Yjk+CTmhhIUJhHDBpurhAAw1ruGlVol9K0VOmIykgamgufoLUEnJ1IxrBkyZ8zuE2v0h Tc2H04BpJVySpm3MlzoKdM3X1vt+yYkCDX/FYEKAmT7kjnXz35ydC3IEYnCnVck5AesD bkV33OIia9dY4Ltcz3Qty2CRpcao8PZQNFEszx9ZxlTUain629U1zBjqctbz3woC1JzS IXBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007666; x=1748612466; 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=e+GVQQEW/Nx5/3Tw2jXG/FjfLcvR6Pq+aehkGjHuNLA=; b=syaNiO5zGUXho7SVLmgwuOkJiZKj24Fdg1njftUsLMgWBszxqoih/R1GnECuUON5nG bvuq8sCTje1vpG55YKuPTPeyhUl+q1RYGfey8Y5rcsZ+ObuOflT0Mn1Nw9uo8My7Nc+7 denhWswo7PDk8lhcNQLeV00glesv61/hkFCQa4dX+wpG84gkfokWpiW1DfMdWG9fMyfK MA0KOYf85k0QaxbxtlLsouUzngFCHSWAOlg8qvzEmG2iZDO/d55n0I4nuly+rffTKsPI xJGcR9DbxIJ9GTJwkc06pAWKvv6jrsPSncaFKru1WkQuSg+9vQu3CQrvZThOG5pxgfXu /4zw== X-Forwarded-Encrypted: i=1; AJvYcCWa7dgfSd1a5muRUTiufoROnBFnGCAPIVL+GT0SZI7kWJMD41lrrXojUTRXIVPfRrbzok525vbqTA==@vger.kernel.org X-Gm-Message-State: AOJu0YwQ8I6jmnGkLLnAXp4bvaLNt6Urq8YrPgNY1N9zCfSPRRHXAf/w +C9n0a7YV7zeudKBIHfDaML3NQhyV2SQLioPYRz7rWTBPrUB8yFJnPbinXWfs5j7ao0= X-Gm-Gg: ASbGncsyPBBHrEfavXP7KFTCyFQ+0uZrCkaq5+Gk8bIurCsiQYvvd/Y7ytHmLH8D8Hb QOEvkKwHlsdw+Eo/svvvhWZp6G5bbb6imQPmRPVTCnESK7966iByVpwbPcHLnr2SMWswVaV8vke +IiHcUfxatneInT4UBbbC8YmIcFCiscqfJiAW9MbsuTo7f1oMZkXqE2eDvMwgzbElLWCmalRmmA Jp0+kBYy2Jfba9uZK4FfE69H65QI7CmXpmbznFFnzd2U+Pzeld9pnSw7N9pqDa9QzTzd7TloVMH vcJtECGbLeBALKXqAKOE3bFT2lYjFL7Tk/ZarXg1EhMUqUl8xq/rGGHVNYJRRnT8mL6OuPNOCZb IQV/+SRPI64QBneIeOIcHmQdPhw== X-Google-Smtp-Source: AGHT+IFNmW5G55PYYj6h7M2zKXEklVPMXRP8NGNgucOTfaGyaIHNIHj2hhtdlXQWdhi0wo6WcDpLPQ== X-Received: by 2002:a05:6512:690:b0:54a:cc04:e77e with SMTP id 2adb3069b0e04-55216ec7d93mr957968e87.44.1748007665804; Fri, 23 May 2025 06:41:05 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:05 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 16/21] driver core: Add dev_set_drv_sync_state() Date: Fri, 23 May 2025 15:40:13 +0200 Message-ID: <20250523134025.75130-17-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson --- include/linux/device.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/linux/device.h b/include/linux/device.h index f6ca813eebbe..fd4300e17b17 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -955,6 +955,18 @@ static inline bool dev_has_sync_state(struct device *dev) return false; } +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 != fn) + return -EBUSY; + if (!dev->driver->sync_state) + dev->driver->sync_state = fn; + return 0; +} + static inline void dev_set_removable(struct device *dev, enum device_removable removable) { From patchwork Fri May 23 13:40:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892195 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.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 186E4294A07 for ; Fri, 23 May 2025 13:41:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007680; cv=none; b=lVPkWQ9zB34BhAoI33sle2MViWqp6Whu6dxXOJx66r937Dx9gKonFL2k0X1cGXWx8AHgUYUu7AP7YrYl2iqjuc6nOFt9UJk9GgNcmRWuTbRQd87T8gDnqNH5HHmpujJtZ7cOhYJK4zkkQm1vSBWRc1UFrcGbFCLhnfxcsMhJnCs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007680; c=relaxed/simple; bh=NN3Crtgicr2RANdkx4XpcfEgrbjiC/nyTFX0TvsgmcU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hq+mdkZwUjF6JPYeQm11ylIjl6ONh3VP02ncAQ4b0Uvprx4/GRaCKlZfF8rmEYlPQ2b15v8xiLXIrbC+2gxGnjFVjkgFCOdPYvgE5NuKyizb0zVqaAUe/1fHWBICvqV0x/y5iKhyNS7yBBaNJJdUAYHSrQ7LAy9cIKin+T5Q2s4= 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=QmOOZ6Hs; arc=none smtp.client-ip=209.85.128.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="QmOOZ6Hs" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-43cfe63c592so105666625e9.2 for ; Fri, 23 May 2025 06:41:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007677; x=1748612477; 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=71f6dv8Oj3Q5ky21qEIlnyYawuoQhOrGkPFVRB1RoRk=; b=QmOOZ6HsCKyJLrz1mLizI/tgjEbdw5BkTVRL+G8Z/34FC0PYAaU+lvVx9ui/xVMlse 4Gz22ERx5TDlx/8kutNUMOTdE+95JEkncjaQCzzcwqRcUIgXaSE+cKflFJKeCiQ7f4X8 LBFBG9w9gRsnM61XVCOt+4CHca8Zwwp2ossjh7gd5dIeuaH4pJZPeN0li0yVmKCjQnfL vsroWu0lbOAzFELcxdqUzVBGKDnOUDJYV562A8AFIUA2jDgGWm1smi5FRhXi1heVk5PR eOJgG9EO1+dLY2tiiIr+kQYZByLCQfSSVXOUxM/bsFrHyLP/tvTkIqK8iKED9z/L6Nen ZS+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007677; x=1748612477; 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=71f6dv8Oj3Q5ky21qEIlnyYawuoQhOrGkPFVRB1RoRk=; b=mq5PDvuO5JrytTHqm7OKU0QftGb8C4ZQ0Ssz+F00hk04yTI1rZsjixf42ER8iSEz6G j5xi58wOO3XWp8wHog6eqOvBTmwwPVhMmxwQZ6QEUig0txa84rYZAzZfEgojhntpmyaY umH/7EcEHijlyq6RHIgZo7zM5oBv7x0ISFAwsfTkHo0+uR70WaRn/7IbXZOLGJrLNeYF /aiLM0NE4yW/jxHYKvBXNrjHai3lT6fr/JPRbsEcZi+owa1DRedCW1tank9MD4RKAmyD 7SYjREnDgnHpHcyEV9kmWobrDAUA4Z9XoYhzWFSxpOVYGopFSkgR0lW075iQ2WrYKBoN 0Y5A== X-Forwarded-Encrypted: i=1; AJvYcCWgEkO1kZJ4GJ/osHF56gyn3VUTwwaCKk5kclI5BTKBRzDL1ZhWubWXstCbJYcD/Qy5UfTqIUYiHQ==@vger.kernel.org X-Gm-Message-State: AOJu0YzqE73TQpnjA5kMzlGZZ0f9G481vd0UCS8xijoFek6/74Z8MPTi NWvPwoghmM0qv7f4jzz7DOTLWyltLsTw2dgJ0Gibi4CmzzXFIRepkiQz61Y58UAdog6ACqI9smH GvZvnaBk= X-Gm-Gg: ASbGncu8Jahpu5gj3HUn/RG9yZZp5Ja/lOHMWhv21aGgfqLTGP18cL3bmKMNWo3oBTq YTWD6tSn/9qctSOnMA7sASRtZ+sTm8sHvNZxI0Kh2CtOCPzu9WbEGdaYXa4dwvUAh3v053DOk/i p/fiZ15ROQG+kC3RioUqzJLgqK9f9YSEiUE0Ym/OLN7e5Sx82yAmgiaGiG5szSQgJfGGBfPihZj UrfAW2T2RUy+edAsLWl75GSEhXL5t/IqObFCYZ3vODlVRS4+AR/Cfi+NsdBSa2QzYEk8mXXq4yy quV7piENxNtZn/PEp4XL2PFA0W0YVAvfD8ZOTSR42IaAW1c/dRa3RSKaZY7EJuaU8tYugmSxsen 7EhSl41fRv6vA+TVBKsRPpJywLw== X-Google-Smtp-Source: AGHT+IGFndHOIFZSsgQfYdZw+/8HGCKSecirkmKfEr0kpQ5LrWHxETwwaD5/Fwd9r/MLkzRBHLqG+Q== X-Received: by 2002:a05:6512:b9d:b0:54a:d68f:6ecc with SMTP id 2adb3069b0e04-55216df94b9mr843157e87.2.1748007667241; Fri, 23 May 2025 06:41:07 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:06 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 17/21] pmdomain: core: Default to use of_genpd_sync_state() for genpd providers Date: Fri, 23 May 2025 15:40:14 +0200 Message-ID: <20250523134025.75130-18-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 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. Suggested-by: Saravana Kannan Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index c094ccbba151..b39d06d3ad26 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2621,6 +2621,11 @@ static bool genpd_present(const struct generic_pm_domain *genpd) return ret; } +static void genpd_sync_state(struct device *dev) +{ + return of_genpd_sync_state(dev->of_node); +} + /** * of_genpd_add_provider_simple() - Register a simple PM domain provider * @np: Device node pointer associated with the PM domain provider. @@ -2646,6 +2651,8 @@ int of_genpd_add_provider_simple(struct device_node *np, if (!dev && !genpd_is_no_sync_state(genpd)) { genpd->sync_state = GENPD_SYNC_STATE_SIMPLE; device_set_node(&genpd->dev, fwnode); + } else { + dev_set_drv_sync_state(dev, genpd_sync_state); } put_device(dev); @@ -2715,6 +2722,8 @@ int of_genpd_add_provider_onecell(struct device_node *np, dev = get_dev_from_fwnode(fwnode); if (!dev) sync_state = true; + else + dev_set_drv_sync_state(dev, genpd_sync_state); put_device(dev); From patchwork Fri May 23 13:40:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892197 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 739D7296FD5 for ; Fri, 23 May 2025 13:41:10 +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=1748007673; cv=none; b=jgxkLsln8Ui9o/W88MLTkDj1Cj4VEuGNdmZp/thgS2g6O8KpCU6zwjqwjHzOXfMTJ6BFMcjjwgDwVC8MBiP8vXCwiGUjjslshqvdVIV4pbv1IkckNrnmC65+0T5QqLby4sHxmNSs4lGrWI4anY1y6yvRy86MW765C/3j+t+cm9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007673; c=relaxed/simple; bh=rJ1WF3jh53M3IFOFtyOo1l9fXgUPc2OdamLreAdGPrA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kTV0HQj71E835YvQq0Kw4CC2w44e8P2c63mBovcW4hR2wngSn1hO8D29Pb0LtzRKQqMnwM8S8x4DsafYvPWGCV8kCWpUKH2fQ6c897RnnDYY3MpgkuVJKc1MeZEFBPVmRAQqugDzBsx0tzJTBtWd/d6vuLj5VFGSO0JbJ9PDC94= 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=VC1r5AUx; 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="VC1r5AUx" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-551fb4d153dso5527959e87.3 for ; Fri, 23 May 2025 06:41:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007669; x=1748612469; 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=zTfJ/GeY/lTwR1D9VlQQIY/dt3W579Yxd9kJ3BXM+Hk=; b=VC1r5AUxPoDTsmH7yaDktjkCwQVJRgujT4RqqYiIfmycom5w2eToacpu7MevG+pDac M4JGRTFc/u3R4UzsymV+PTV4GMvTJTNHQRdyuKle0w/7QmHlSFYTRETrNUJu0nTV6fqw fxp6dXKs185yTlubedEleNlv6mmimn08Qq3++VHEtxvwnpXKR8ThXS+o+uQXs9shTBTf glux+tHh0ydLPHSI22Bnp7tJBLhl7t9jDZX4DZaJW019/VUywZrghUuiisNkH75l5Vxl dvk3UGYDzTL1WzVWJuKT6kYP29gMLEvpduSD1/VLABtjPshwC6Bs1CqC2V8vQOw8ctog v/Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007669; x=1748612469; 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=zTfJ/GeY/lTwR1D9VlQQIY/dt3W579Yxd9kJ3BXM+Hk=; b=CIxIaE4sXGABa3+JJ+zxonCGd89AXRXKsNj29ZbFvLHaqD/NlHj1MVmeuF2AObLPw1 bhH/U7IsjGk+kLDJ1cqujnOPiWBR7TAgAcrzsjvaoa/km62ixSb9P/YPmkZOL/oXpGP7 8ypjFEDN6Scige+BgzlvZj5GWXVXIfwj2/ZnKaqurLwpH7jGGZpRZ8Jv5slOXYj5Ml3c qKDwzNMfEmZeRGV63el4NPXGMfOjCo5mCncBv9sPEz0fhHTlQNeeb2aO13lYsVOAv98K ItuORIkrc08CdEoNZ2e386mXrdzTL4GposxqNXEf8y/BX2jnFkQVb9ABcmccATEJMvzK KLRQ== X-Forwarded-Encrypted: i=1; AJvYcCVzZq98P6t0s2wy7zueXbSX0IBbk86MnYDhECxo24k80UDeH3KVSt0uZP7cWohDKzypTVQ18qzTQw==@vger.kernel.org X-Gm-Message-State: AOJu0YybH6umEJlCTtZK2FU7NvwGvewKux12uiy87q6SgpM3bG1Q39Z8 sJscIoHCeGpgwxmYSBksy+BP3RBkoOdrBikPEh53JLwg8c2z07wd0xQ8BS3QEiPtBDA= X-Gm-Gg: ASbGncuzWdNGPI7d18eleexV2yPgqS2JHr+cw3OY6axK35Azl5r9PRUrsCNPjs0V6Qz 0HopcTUd28WaJN3qcN4wzY7BnXLY+dfmQz8MEjk2Vz73WJ3C/jWQa2oGilSm1K6Gjjxwa6ZcLbr qnvPUFZ6lhnYfckYth73yWS/hyc0y1SdV9M7RQPtCnPlFFiZL54yn927ZAp42By/9NJ1ykptson 6MCyxzekYHS9oF3iA7A35S3RP1Pn6qQDtllNjzZ0N8hacsB4BrpQwbWbRzElyuYtx3WvUOoDhpr IWfrUFgxMnxtcM14fNnI9RuF8sNIEDrtJffpnrgjmC0reM8Rr+MNIgrOvMJqMU7dV74exSbNqa5 vH52z2eQmdn1Qzd5utNeGRz10MMNb6xdoaqe5 X-Google-Smtp-Source: AGHT+IFDLfxM01YaBSflhZJhg763sDEi77sCbELPLz/NKFACM48uG4bkUP+LayfK8+cXACHnwwnbIg== X-Received: by 2002:a05:6512:4508:b0:54f:c049:4a54 with SMTP id 2adb3069b0e04-550e971afa4mr8711955e87.12.1748007668631; Fri, 23 May 2025 06:41:08 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:08 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 18/21] pmdomain: core: Leave powered-on genpds on until late_initcall_sync Date: Fri, 23 May 2025 15:40:15 +0200 Message-ID: <20250523134025.75130-19-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Powering-off a genpd that was on during boot, before all of its consumer devices have been probed, is certainly prone to problems. As a step to improve this situation, let's prevent these genpds from being powered-off until genpd_power_off_unused() gets called, which is a late_initcall_sync(). Note that, this still doesn't guarantee that all the consumer devices has been probed before we allow to power-off the genpds. Yet, this should be a step in the right direction. Suggested-by: Saravana Kannan Signed-off-by: Ulf Hansson --- drivers/pmdomain/core.c | 10 ++++++++-- include/linux/pm_domain.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index b39d06d3ad26..5d2ed4edffd7 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -934,11 +934,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; /* @@ -1349,8 +1350,12 @@ static int __init genpd_power_off_unused(void) pr_info("genpd: Disabling unused power domains\n"); mutex_lock(&gpd_list_lock); - list_for_each_entry(genpd, &gpd_list, gpd_list_node) + list_for_each_entry(genpd, &gpd_list, gpd_list_node) { + genpd_lock(genpd); + genpd->stay_on = false; + genpd_unlock(genpd); genpd_queue_power_off_work(genpd); + } mutex_unlock(&gpd_list_lock); @@ -2375,6 +2380,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 = is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->stay_on = !is_off; genpd->sync_state = GENPD_SYNC_STATE_OFF; genpd->device_count = 0; genpd->provider = NULL; diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index d68e07dadc99..99556589f45e 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -199,6 +199,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); From patchwork Fri May 23 13:40:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892384 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 D4520297116 for ; Fri, 23 May 2025 13:41:11 +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=1748007673; cv=none; b=RJhGKF4cyh3mNnbLXtoyc6XAS4MiUsoTj1E082+GYr76OZZY5HO0Lc/4NrIfInRxfJ9STKSo5PfXzXZOwgyvYcFz6L1jCH3TOMX1mWfkilRKWr9c8rJuz60L8g7bXerEGBudIj2kSN7Gk3ljWM+c4fIeIZnhGs4qavTlYu4Iy84= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007673; c=relaxed/simple; bh=SdIrTkzSEt461VDJ4UWso4pVdWU9yzD2AudkucqhnnM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=keISU0Ztvq2gHxEd4n/QN/vVIvEkEsPNQR6B1UDbF/TG/Emu5I6smeeSRT/1oWdrBdetDrTrELNwwc6a66wq+4k8AKxfvi3aJ9K6YgXN2N4z/9RI74sclSPvuov6WnCrjAVYbytX6QvMguqwg5T63XMhlzQDJvB/X5xAIAXRvQ8= 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=uhCKU3oL; 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="uhCKU3oL" Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-551ed563740so8327118e87.2 for ; Fri, 23 May 2025 06:41:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007670; x=1748612470; 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=D0aKf3r0veUqn1rT4el+1RxCAoZmF17+2VzJGANVxCI=; b=uhCKU3oL93S0hs/MEY40FEtREgBMhebkNIMCIjNvEq/9N343BDc1E+LPAPedcTOF/H zvlOTxfxD6pdQOxSSmrVzytAG9X2W/GKc+a98WW1hm5cCCNg/j4yUvHcf4KiBX1ssDni 70hZQUwTqz2AMUTiVTWB/gK2MfXOPZZ89fcM9t0ZV1pE/bVB7Vpsnm0JcfXaweptwVYq Ll8+bLaiLT67/aLrOF2o88rjTyrdd3g4yBEGD6wDSGVh9CMXjXGUtSZWacC6wDrPvA0/ JWrnzja3NIY3pJH8TMLYcp5j6tj+wClg9G2G32Wd1QXvcSSYHN64GmdnOuk33MLGcFU9 molQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007670; x=1748612470; 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=D0aKf3r0veUqn1rT4el+1RxCAoZmF17+2VzJGANVxCI=; b=dItLXVte8Ul117cbQBTkG1likA4aBiY5TyIGN5WwuQHCEOFOJ8Ny+Q/VddgEecFJQx YtP9Yz6AJQVzqQ/6yTSZic1EBQt5NJHh6qk3VFPKPl5LFRqnu6LsdRiuQqHDDHX0CboU l6wTaJkD3mkgIfqU/67L6f+uBpi8B+ZZQlAVszSWyn+UeDAOdtItd4kYPjwd9Ktg4em9 Lw4zrMDYu7kfxQAzPyfMW2ZCidS9he2x8TZzfbcFD24qxOiVNK5q5ER/3IAAVcC8k3Me AU+IDRt/UF2FxIduddyCt6fXNK+lG7KttRRrL5FwsSQj+jAhcgZnIBc7z48SXX7Gv7IH yxLg== X-Forwarded-Encrypted: i=1; AJvYcCUjzTEp7HdPMC09HRJOhsL+UUL1ymSMilnibq30ahl6/Z59Mrby7DGAj4AdLmloDcQ81BrEp/x1tQ==@vger.kernel.org X-Gm-Message-State: AOJu0YzENtI/B84GSvmYfCxza6R3L58wwaoirE3MsKR6JPZP5vAmRwFu v6ozMzoZ+nO/+rLtCjgQSoid+dvIOp0Am7YyNdJTPeRHR+vcqBR7X65XP2e7YfvApFE= X-Gm-Gg: ASbGncvCjbE4dTZ88GA4FidJcOYQ7Q2u0LMAgngSBPehlKITBTC7GN4yOhIS1D9nE+Q wVxnjDweT8ZBiE3zN4ofW7Tuuvs0oBoFBDDEO+SoAUogcz7M0uF9X56SdWmiA/LatVwAxrbrnnP c+pd86lk1wCLrRLb3I8O81vOjrLT3Uan1y92vo4gr55cJbhMgpS/GoBNC4CEnU+5dRT+0DrWKNm HU9StLsK4yoNzwyfxd/QPMgiwhhoAv7Q/HiFKMp+VSKOoUIZjRjDiAunbkjPK91hi0h8q5fqR0C yeO1/vjHqQgYuOvk364YilaUi2YiGORZ12wMKEhZJSznxMLxAHuN4bERKJz/1LoOG1yWyWz3yMI BRzHuoK2p6C7cFqVTeaPtmUGh+A== X-Google-Smtp-Source: AGHT+IEajquH8YxvUkbDSaTSmZKiibO3mtnqJl45yxSX8n0PgKqQyv3ngd+5PXGwnfc30g1Js1BKCg== X-Received: by 2002:a05:6512:3e04:b0:54b:f33:cc16 with SMTP id 2adb3069b0e04-550e71b2359mr11620509e87.16.1748007669877; Fri, 23 May 2025 06:41:09 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:09 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 19/21] pmdomain: core: Leave powered-on genpds on until sync_state Date: Fri, 23 May 2025 15:40:16 +0200 Message-ID: <20250523134025.75130-20-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Powering-off a genpd that was on during boot, before all of its consumer devices have been probed, is certainly prone to problems. For OF based platforms we can rely on using the sync_state mechanism that the fw_devlink provides, to understand when all consumers for a genpd provider have been probed. Let's therefore prevent these genpds from being powered-off until the ->sync_state() callback gets called. Note that, for non-OF based platform we will keep relying on the late_initcall_sync, which seems to be the best we can do for now. Suggested-by: Saravana Kannan 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 5d2ed4edffd7..6da25e2c81d2 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -1327,6 +1327,7 @@ static int genpd_runtime_resume(struct device *dev) return ret; } +#ifndef CONFIG_PM_GENERIC_DOMAINS_OF static bool pd_ignore_unused; static int __init pd_ignore_unused_setup(char *__unused) { @@ -1362,6 +1363,7 @@ static int __init genpd_power_off_unused(void) return 0; } late_initcall_sync(genpd_power_off_unused); +#endif #ifdef CONFIG_PM_SLEEP @@ -3471,6 +3473,7 @@ void of_genpd_sync_state(struct device_node *np) list_for_each_entry(genpd, &gpd_list, gpd_list_node) { if (genpd->provider == of_fwnode_handle(np)) { genpd_lock(genpd); + genpd->stay_on = false; genpd_power_off(genpd, false, 0); genpd_unlock(genpd); } @@ -3502,6 +3505,7 @@ static void genpd_provider_sync_state(struct device *dev) case GENPD_SYNC_STATE_SIMPLE: genpd_lock(genpd); + genpd->stay_on = false; genpd_power_off(genpd, false, 0); genpd_unlock(genpd); break; From patchwork Fri May 23 13:40:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892196 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 55A0B297136 for ; Fri, 23 May 2025 13:41:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007675; cv=none; b=SFWb2pMQ2W20pIrMf422uW/oZ9bhP11lnAlYd7V9m37YrWSuFjsmzBtlRknk7wCrfURjBVqfiksSEScRrMBmuZT+7ABESbAXZ4dj0xvbQvQwNHTIM663lcXH9nNBdsql8rz1MUwGAWQ74nxDKAggg6jqq4hfJD1iXFZKBq9dZ/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007675; c=relaxed/simple; bh=eMWGIDGG2xlLJR/Z5iDFdeDcOa6riWNWL1MAhPqMtR0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SsrTCPPVgbahm6Lf0HjVXKVhW+3HS0ynGGI/rHTW5xv1mKBvm3MkLDV5Mm/M/GM5Duk2aMr5G53hMTt4tD04zffMTapJHJACSH5n7psLXKwJz4E23iuOoPgOOAHeW9KvnceCKkzNbNUZzxGhGSQMjDiuc6MS6tSpDzAcrwfnOf4= 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=k0WKNeD2; arc=none smtp.client-ip=209.85.167.46 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="k0WKNeD2" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-551f00720cfso7706383e87.0 for ; Fri, 23 May 2025 06:41:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007671; x=1748612471; 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=hOoCE0j0+Nf7/A2FNrnJbBGarUG82qfn+WjoD3EiQd8=; b=k0WKNeD21YN74k0exTzTpTbMPhRc10L7moFPRP50QQsYfOYFQ77tOAzP7HbGCXGVBC kwnPCp7iYG6sDIghCtdPQD1ZrtFsj1BQboLgvP8U/hStz1NmfL9EkoWGg5vhgQAjC3da uOn6aCOpytU1y0SyPGocTk/RDLBlw/daMpMeiWKd+c/TMR4llZM+LF/+p7U+FbvCn7OI lnnq171366JCIbW3BSy+JQl5P9g8ig0T4g0ah6o2ebKks1++uCq4a/ev3uns/OAHmuxl DeC4kNqpZRTvzCRt2PyACkL8TPK8A1/r+rr0Kl0G/vyYiqoGnvSfCsRzxW8vgvfnzsfk 3rLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007671; x=1748612471; 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=hOoCE0j0+Nf7/A2FNrnJbBGarUG82qfn+WjoD3EiQd8=; b=DqjcZivniE1vyrd/kAOJYUPCte8v4e7QGnqL/MYjdrMSEprzDIiW21qRvocmEjn93B xalx/Fd7s1wc3nv/i+Q5pAOjKySi9RLYJJZIhwkGE5mbfGAfA/bBGSpZFgxZ7DRXPmuS zpiXKWptWKsEb0hqlCrCioTo2LauJD5Hy8x5+Dui+LAYOK0b8+QbBa0U7FvMt/62tdku FJQ8Lvw4jxeJZcOesFnnGLEbhyr1RXHoGYIybkB0F1lvxlL50ncLYRz4KK0s80Yz3OVc tDINjHdZDcQE+WklQwe9AKfWNMXwFxQUJ9ktagB/s1RKTZ7VBgz6MWPcBK251TLEAar9 8S6g== X-Forwarded-Encrypted: i=1; AJvYcCVUjjlId57XFpAI9g8pG8JCjnlnCZGn6iAIp7kVpg9hY/Yn7jpqhvap2Z8ARNvkb0GyJjVZ4LLJzQ==@vger.kernel.org X-Gm-Message-State: AOJu0YySDiiw+D4uF2RkvElu90JXqV8A6u/weKWruP4tJjklIidYz9f0 POEPRUB8Lz54AoS/0kq2rGXWTtKGfIuTsnFKAoqhnCaUYpU/MmbSIp3UeGzVJI76E3M= X-Gm-Gg: ASbGncvbxuLdlqOpolp0TuWvEnL5KnG5v/Uk7gadCMHv6TS/NrGeOxT1sWuULfySEPa rBnWAjLFKmL3Kf8fzl3S0EwwfELz35fzEF0sXb4p+R836WmE6czciPjWrfGGkyx8PCR42IPWIP4 7dvbm7vySZvLd7QcjWWcPtbmUui5xmpY+1Z9b3uIuRP//Fs7el1WD1/5i72sabR5Sg/LCIafGyS p2uJKXW8de6ozjoBsEWuJ4iq6WB7//OVUC3nJd+hQ1TcqmYIrRy0qQgM9zYVQTo95J1qeCO8CCD lJuqxqDOIVXP1WLy5aJAJ7diguD2B20ejWUl+o8KjfIdGMkwHePi9tFEe/zSAT6iTk5RBA+jrDt tRgkzjAvxeFWtBVxZUZ8kOF7gGw== X-Google-Smtp-Source: AGHT+IEVVVIanD+SM8PaeTS5BPNrUZEt3qImxQaWobI9SebxfHyiMxLEusYRHx51DE+mAPmIootadg== X-Received: by 2002:a05:6512:438c:b0:54e:a23f:82d9 with SMTP id 2adb3069b0e04-550e71d1472mr7232899e87.25.1748007671215; Fri, 23 May 2025 06:41:11 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:10 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 20/21] cpuidle: psci: Drop redundant sync_state support Date: Fri, 23 May 2025 15:40:17 +0200 Message-ID: <20250523134025.75130-21-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The recent updates to the genpd core, can entirely manage the sync_state support for the cpuidle-psci-domain. More precisely, genpd prevents our ->power_off() callback from being invoked, until all of our consumers are ready for it. Let's therefore drop the sync_state support for the cpuidle-psci-domain as it has become redundant. Signed-off-by: Ulf Hansson --- drivers/cpuidle/cpuidle-psci-domain.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidle-psci-domain.c index b880ce2df8b5..37c41209eaf9 100644 --- a/drivers/cpuidle/cpuidle-psci-domain.c +++ b/drivers/cpuidle/cpuidle-psci-domain.c @@ -28,7 +28,6 @@ struct psci_pd_provider { }; static LIST_HEAD(psci_pd_providers); -static bool psci_pd_allow_domain_state; static int psci_pd_power_off(struct generic_pm_domain *pd) { @@ -38,9 +37,6 @@ static int psci_pd_power_off(struct generic_pm_domain *pd) if (!state->data) return 0; - if (!psci_pd_allow_domain_state) - return -EBUSY; - /* OSI mode is enabled, set the corresponding domain state. */ pd_state = state->data; psci_set_domain_state(pd, pd->state_idx, *pd_state); @@ -63,8 +59,7 @@ static int psci_pd_init(struct device_node *np, bool use_osi) if (!pd_provider) goto free_pd; - pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | - GENPD_FLAG_NO_SYNC_STATE; + pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; /* * Allow power off when OSI has been successfully enabled. @@ -127,20 +122,6 @@ static void psci_pd_remove(void) } } -static void psci_cpuidle_domain_sync_state(struct device *dev) -{ - struct psci_pd_provider *pd_provider; - - /* - * All devices have now been attached/probed to the PM domain topology, - * hence it's fine to allow domain states to be picked. - */ - psci_pd_allow_domain_state = true; - - list_for_each_entry(pd_provider, &psci_pd_providers, link) - of_genpd_sync_state(pd_provider->node); -} - static const struct of_device_id psci_of_match[] = { { .compatible = "arm,psci-1.0" }, {} @@ -201,7 +182,6 @@ static struct platform_driver psci_cpuidle_domain_driver = { .driver = { .name = "psci-cpuidle-domain", .of_match_table = psci_of_match, - .sync_state = psci_cpuidle_domain_sync_state, }, }; From patchwork Fri May 23 13:40:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 892383 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 C1283297A4E for ; Fri, 23 May 2025 13:41:14 +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=1748007676; cv=none; b=RcD8a9YtscvbA/fz036W4RKdBArL+7Hs/zLk4wyKYzN2dop+JFfdIHaLVLRTAdsFbwWaUkKkE003zAti3elRiWktchMsvH4NjZMhTQMKrIXbN2ZdjetDcePbSlyaDF113V0EijEDgTiH6P1nwrTOT2cODpVsMOtgnWq4On41BNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007676; c=relaxed/simple; bh=cUPVPfOLqbKbGTZ9buOjuzMp47UCVQpzZR5BzbuI17A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K3dgeoA6jIW8gBpNJy1E0PTnuc9fs2jVfapqE3FTdtONalPXp2hy4OtCGIO/F4724NTuz/gjiQa1UurWz6+bc0EmchWm2oiI2kL/Os/Pri4r0PeqPUEIG01mjBGqDI3jG2AVoP7b637s6voeWfPW+ihQCacmIpDgjXE4PmWOZCY= 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=rQH4OHk2; 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="rQH4OHk2" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-551fe46934eso1063442e87.1 for ; Fri, 23 May 2025 06:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007673; x=1748612473; 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=HGyEwCJhPN1ZKDIimFxnLW+xEyMfXf8H84gi9aCiP1o=; b=rQH4OHk27026Huv+aUSNiCciMgwT+9NnCTPgwT2sr/OmHh5/Ly3bGay9CeMIOyRnvi zajmFV19CXTV1qVVg/gY69fAjeJMtdsMwHSovJrm4L8P+kyJAIZ5Qvru2A4e6VdcZWi4 C1CJN5lk14bLW2cdRsWshYVEkSiGFje/+dxz3qyBIrOWc1pQixhSnMVcwmYB2bNGBA3h 49Mqon4rlfzL7hml/Gwbkx3OFgktBwDjZFTYUJD9co4M9lUnXxU/OIrQ6NLrMnI4kLa6 i6/m4Zt1yNNdRstCv4h5l0a6s+URja6+KCEyjUVdOZJMJ/84kwdXFxTpw85laeDR+fo2 cYMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007673; x=1748612473; 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=HGyEwCJhPN1ZKDIimFxnLW+xEyMfXf8H84gi9aCiP1o=; b=mztdXNHoMnTqVSfFgh1uZ1iltrl8JJzEO9CdfH1o0U5WNmNKNfQZsUshiHdm38GJdT 8xvZZgRPAvQDrrJ1YJJkwQh6LBTBiksEAf/fMzNdHSb9OPkdAMowsberkE1ZZaMehJRK Qp1+o5WG19iBTxSGt2buXhrkfzcSEXs1MFHGPS7XKrHtytjeybkHa7hE4dkQLdymvJxJ V+RXaB4menoDO0j0kPlBZfanWd+9ak4Et3doeYFKr5IWiN/+FGFbqbAhxiaWeLelKAnV mFOpTCFIG7VmVfyE0CYZ+LLO7Qs3Rd6BLF5iR+2pQzLQ0ec1TX7CM+ilfgcRufXNPHq3 +Z4Q== X-Forwarded-Encrypted: i=1; AJvYcCUy8qmsPcKpscx2ENrjVmMeVDyOZhxykRwoSS7dqsvT6Rh32N4BWGUKSNz/N53U6uhS0EjJoGbRuA==@vger.kernel.org X-Gm-Message-State: AOJu0Yxg0RRQlqnJmv0rygGE7bmDjSbb9e/1NLF1IhIt4t9CrJR6RvvT l7cU7mYYdydHFTdoHkUjMiKs8uBsglBf2oWUyGXpB87N14UL+86pwaQDcqL7tC5dVNo= X-Gm-Gg: ASbGnctiKhXjl+OJWJaofQBHiVikeltGhaLfxieUquZl+VMN3VjvAHR9jRRzY2QUOJo Eg7udzBkCe3iriT+VmPcl5wl9ENzAbwnwwHQE5ycWfw8BzdkVPFPmnFgruO2wIuIUw2viPjQ2zO CUICIq/vnOYhkkiaScMtsItsJdbHX/7F94prXStmz7syQhzT68/sVDAwps+wLY/yvVq31ucI2ff jrjmO0PsGY+5YrCNmxykhfwkCubeves5F1TqqKaqzFP2EJ2fx2TdIIDIFhUuFTaJx2U8QXSKvDm 409X2zg3NWjTfwSmG9FQLzecQSIxrpeQc7h2PSrCjRbLQS2dBiG3xuzVV83u3PkcXBWD5MTtDJ6 yATwOjfCKMP5mF+MFSumE3FmPBA== X-Google-Smtp-Source: AGHT+IGPyCQFUdzHIALfteU0vTerPpV7oILLzxQIlLInZMqH94Tb+MaxZdvt9CEg2iCH7sWV6l9Bng== X-Received: by 2002:a05:6512:3ba7:b0:54f:c1cc:1241 with SMTP id 2adb3069b0e04-552156cc6a3mr1224907e87.25.1748007672736; Fri, 23 May 2025 06:41:12 -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-551fc0d473bsm1950609e87.244.2025.05.23.06.41.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 May 2025 06:41:12 -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 , Peng Fan , Tomi Valkeinen , Johan Hovold , Maulik Shah , Michal Simek , Konrad Dybcio , Thierry Reding , Jonathan Hunter , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Anup Patel , linux-riscv@lists.infradead.org Subject: [PATCH v2 21/21] cpuidle: riscv-sbi: Drop redundant sync_state support Date: Fri, 23 May 2025 15:40:18 +0200 Message-ID: <20250523134025.75130-22-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250523134025.75130-1-ulf.hansson@linaro.org> References: <20250523134025.75130-1-ulf.hansson@linaro.org> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The recent updates to the genpd core, can entirely manage the sync_state support for the cpuidle-riscv-sbi-domain. More precisely, genpd prevents our ->power_off() callback from being invoked, until all of our consumers are ready for it. Let's therefore drop the sync_state support for the cpuidle-riscv-sbi-domain as it has become redundant. Cc: Anup Patel Cc: linux-riscv@lists.infradead.org Signed-off-by: Ulf Hansson --- drivers/cpuidle/cpuidle-riscv-sbi.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/drivers/cpuidle/cpuidle-riscv-sbi.c b/drivers/cpuidle/cpuidle-riscv-sbi.c index 83d58d00872f..a360bc4d20b7 100644 --- a/drivers/cpuidle/cpuidle-riscv-sbi.c +++ b/drivers/cpuidle/cpuidle-riscv-sbi.c @@ -44,7 +44,6 @@ static DEFINE_PER_CPU_READ_MOSTLY(struct sbi_cpuidle_data, sbi_cpuidle_data); static DEFINE_PER_CPU(struct sbi_domain_state, domain_state); static bool sbi_cpuidle_use_osi; static bool sbi_cpuidle_use_cpuhp; -static bool sbi_cpuidle_pd_allow_domain_state; static inline void sbi_set_domain_state(u32 state) { @@ -345,20 +344,6 @@ static int sbi_cpuidle_init_cpu(struct device *dev, int cpu) return ret; } -static void sbi_cpuidle_domain_sync_state(struct device *dev) -{ - struct sbi_pd_provider *pd_provider; - - /* - * All devices have now been attached/probed to the PM domain - * topology, hence it's fine to allow domain states to be picked. - */ - sbi_cpuidle_pd_allow_domain_state = true; - - list_for_each_entry(pd_provider, &sbi_pd_providers, link) - of_genpd_sync_state(pd_provider->node); -} - #ifdef CONFIG_DT_IDLE_GENPD static int sbi_cpuidle_pd_power_off(struct generic_pm_domain *pd) @@ -369,9 +354,6 @@ static int sbi_cpuidle_pd_power_off(struct generic_pm_domain *pd) if (!state->data) return 0; - if (!sbi_cpuidle_pd_allow_domain_state) - return -EBUSY; - /* OSI mode is enabled, set the corresponding domain state. */ pd_state = state->data; sbi_set_domain_state(*pd_state); @@ -401,8 +383,7 @@ static int sbi_pd_init(struct device_node *np) if (!pd_provider) goto free_pd; - pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | - GENPD_FLAG_NO_SYNC_STATE; + pd->flags |= GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; /* Allow power off when OSI is available. */ if (sbi_cpuidle_use_osi) @@ -570,7 +551,6 @@ static struct platform_driver sbi_cpuidle_driver = { .probe = sbi_cpuidle_probe, .driver = { .name = "sbi-cpuidle", - .sync_state = sbi_cpuidle_domain_sync_state, }, };