From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9832D29375E for ; Fri, 23 May 2025 13:40:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007644; cv=none; b=kp7zQh8B5nPdRtCCufYFPPd97hcDWQQaGrpRZ2BPKuO/W6tKVTgsuaQ0PhKlkHyaZ6KGeD3OL7JI2coad9fdzTI/3gcLXf0k4dq9Eg7NiPuOJZlP08oqpfy9m7nlwdJ5yS2qSTosSfvzJAPxbs0KwzuwFIKp6jHcCKXVj+9tVrs= 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.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="s5SO9le5" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-54afb5fcebaso10979766e87.3 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=HOvZ0R2qbl3diFc/xX2U5lyR5JBq4lPDVKajPy30cWwzsROiV2vm6eIZR8S8Z4oFuD btbc+JsIkGBg5fcnqD4PlTZMnIjC/txIEFuR34K2poPWvOvv5kodcJO3BQHeCmPzeojw 3tEZy1WPEFxAMJhVRksuauFPJulR70htKYDuwPMUTKcfMbBPBMQy48IsbcTiArBVLhL9 N4QrwYZnaVW3uofbXL766+vRgi88zGrE1oF5k9VwTRb0UK4MWI7mLuqt+FAq1uEElqG8 kGlUdWDtfnzAfgZ7/QNBpcBQ3Eh9E5ItZjeyIblBYXIUQ1SJJjGCeSAZUykexXwSdcoE V3MA== X-Forwarded-Encrypted: i=1; AJvYcCXHZZ5RgQwURZfx+wr55PTrnod9B23NCQnAJACh9XiWLzRdfddAhBZe+hOPDrIz/HoL2xeHJ8owtul9rCc=@vger.kernel.org X-Gm-Message-State: AOJu0YwwVj7f8LZGg5FCNZ0UDi/Wf1mQ7P1Z/bKnh2fTGH8ell6yc5P/ 7hL6VhI9UDtvrDpS0EBtCh04wQvbjrWYJLsC/yG4ZlRQuUQPonxSoKzETOE7iT+BYMU= X-Gm-Gg: ASbGncsEvg4MM3ktgtbCmVuCoA9N59n2AaelZuDAoM9bd153wMsWKpirTJPJeB2D0dO xKAumaanKGh2y5795ZpBiw6VSfMG0BoFxvcH40gSkzLs1lLRq5zSDq10+T/Lr092NZWnQLB/qB7 Vb23zc9LYdQpgYthuJ+rkEjrOGLAdvRDTTHOaOY0VWu9f6BlMohnbUYi3DNOlwzOdbI19nYN5jU ycYuSC7eg53vrmKoT/Jnc5YpGcBOLY38H50Yc3CWxuc/5iowF3A3o5Z3GQFJnd9TyfWg9UvBX38 ObUNr1aH6LsSH4djOfc+iTxl0BntMhUHMw71EllYUzCueYLRjorXO1u9pQ/yMyVusUs+5Nnkdw3 uRl4WuzUSdvFlBdKbe4tt5RDlvA== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Dhruva Gole Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 =3D of_node_get(np); cp->data =3D data; cp->xlate =3D xlate; - fwnode_dev_initialized(&np->fwnode, true); + fwnode_dev_initialized(of_fwnode_handle(np), true); =20 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 =3D=3D &np->fwnode) { + if (gpd->provider =3D=3D of_fwnode_handle(np)) { gpd->has_provider =3D false; =20 if (gpd->opp_table) { @@ -2737,7 +2737,7 @@ void of_genpd_del_provider(struct device_node *np) } } =20 - 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) =20 mutex_lock(&gpd_list_lock); list_for_each_entry_safe(gpd, tmp, &gpd_list, gpd_list_node) { - if (gpd->provider =3D=3D &np->fwnode) { + if (gpd->provider =3D=3D of_fwnode_handle(np)) { ret =3D genpd_remove(gpd); genpd =3D ret ? ERR_PTR(ret) : gpd; break; @@ -3269,7 +3269,7 @@ static int genpd_parse_state(struct genpd_power_state= *genpd_state, =20 genpd_state->power_on_latency_ns =3D 1000LL * exit_latency; genpd_state->power_off_latency_ns =3D 1000LL * entry_latency; - genpd_state->fwnode =3D &state_node->fwnode; + genpd_state->fwnode =3D of_fwnode_handle(state_node); =20 return 0; } --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F7ED293B5A for ; Fri, 23 May 2025 13:40:44 +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=1748007646; cv=none; b=unEuFVA79VDou51GfAmcyB+SLk5omuMEmiGmfywbq5KtthFL9XGsfp+wxo8H937Djzp5628/MFzMM4w4Wg0Hf+CojTtgkXhTxldyEV7HA65jKpYjnu5DisI62q0HUTlzwwbQNwDSwaSfQOeMAVtSTsmM3NpLZpMiS/zcp59wcJc= 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.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="QZ35XNrn" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-551f00720cfso7705782e87.0 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=KJ8PkDkc+qFFP/feMXeFjOAdidzu9XuOLJIcb4dBQFxF1D3C2JBeElgn45iRN28hQP Fy8x2PATSzlz2rxHHE4voXcTID8WiKZTaoH49lZ/y69Pvod9MvOIFo6GylOMZP7RKqHN EU+ijOo491DOh42dE7BClz6vygoV/lkCh6LbmL5yZAXk88nNB2HRdAbdGaqjcQcpE++O lQl+bCHE9TrfzxLqwKNprFUUO4Nxx2+R7+lFsJ6vCsr7Fn2oPzCZqRe0mxxVexpE2sOq 9dt7tRWHkEiyXXnEF6lnQg+DAcLVxOA99e7J9rfa1rvvvrYlNFtqCzKn/0yrGK8sf0NJ 2r5g== X-Forwarded-Encrypted: i=1; AJvYcCW5wxH2miPROEgOY+nxblrGNi403MzpOBss9Ock9RLPOq7S41nGQFtPD3j8j86HeRPXcBNkZbyCmehdL4A=@vger.kernel.org X-Gm-Message-State: AOJu0YzW+L9EbVb5gz3oNCiOMP9xpYRU1z5SWfCnaGdTkcCkrvF70oEw Vt4ONyqD9YXv8duxBSVWEnCqAvm0obeOHXWIRBMcFqXi6lv43n04wUGrlqWSG/zscN4= X-Gm-Gg: ASbGncuE8C29mU5Hog4IzLP/azdLnz4v0kxHpiq1hflIT4PYZrUOhnnOIqemTt5QdcY lqoUnsAzF4qDI39IGZnnB9EH1kLplrN8sjbqNWWoKoCAV2KrQppf0TUxYe9rG08QX43gK0oX3l9 jJeyAWvQ3wQ346LxBxtkjI2n1W/C1iVy13C1r9YULpW8WjHZBaLtUf+r+6jTsU2cAbYLXSovtxo jpbkOYSQ7wgTzcqKcTgpOWb8+gwZAJyv4V44wkhNxNutJRZo5M4mMx16Y2Z5KnaXOCg3DFfartF 1QJeZeSsLWiTU2D4ExzhxR7pYuo+TMR0/G0NzHPdo9vjGTCHuDFoGPDFHvA5Yf/pVGzmQNInG1A oSOB5TQSJ7G6vyxl0DhkzWW5KQ5VZDfRAqVo7 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When we create a genpd via pm_genpd_init() we are initializing a corresponding struct device for it, but we don't add the device to any bus_type. It has not really been needed as the device is used as cookie to help us manage OPP tables. However, to prepare to make better use of the device let's add a new genpd provider bus_type and a corresponding genpd provider driver. Subsequent changes will make use of this. Suggested-by: Saravana Kannan Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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); =20 +/* The parent for genpd_provider devices. */ +static struct device genpd_provider_bus =3D { + .init_name =3D "genpd_provider", +}; + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ =20 #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ @@ -44,6 +49,14 @@ static DEFINE_IDA(genpd_ida); static LIST_HEAD(gpd_list); static DEFINE_MUTEX(gpd_list_lock); =20 +#define to_genpd_provider_drv(d) container_of(d, struct genpd_provider_drv= , drv) + +struct genpd_provider_drv { + struct device_driver drv; + int (*probe)(struct device *dev); + void (*remove)(struct device *dev); +}; + struct genpd_lock_ops { void (*lock)(struct generic_pm_domain *genpd); void (*lock_nested)(struct generic_pm_domain *genpd, int depth); @@ -2225,6 +2238,26 @@ static int genpd_set_default_power_state(struct gene= ric_pm_domain *genpd) return 0; } =20 +static int genpd_provider_bus_probe(struct device *dev) +{ + struct genpd_provider_drv *drv =3D to_genpd_provider_drv(dev->driver); + + return drv->probe(dev); +} + +static void genpd_provider_bus_remove(struct device *dev) +{ + struct genpd_provider_drv *drv =3D to_genpd_provider_drv(dev->driver); + + drv->remove(dev); +} + +static const struct bus_type genpd_provider_bus_type =3D { + .name =3D "genpd_provider", + .probe =3D genpd_provider_bus_probe, + .remove =3D genpd_provider_bus_remove, +}; + static void genpd_provider_release(struct device *dev) { /* nothing to be done here */ @@ -2262,6 +2295,8 @@ static int genpd_alloc_data(struct generic_pm_domain = *genpd) genpd->gd =3D gd; device_initialize(&genpd->dev); genpd->dev.release =3D genpd_provider_release; + genpd->dev.bus =3D &genpd_provider_bus_type; + genpd->dev.parent =3D &genpd_provider_bus; =20 if (!genpd_is_dev_name_fw(genpd)) { dev_set_name(&genpd->dev, "%s", genpd->name); @@ -3355,9 +3390,61 @@ int of_genpd_parse_idle_states(struct device_node *d= n, } EXPORT_SYMBOL_GPL(of_genpd_parse_idle_states); =20 +static int genpd_provider_probe(struct device *dev) +{ + return 0; +} + +static void genpd_provider_remove(struct device *dev) +{ +} + +static void genpd_provider_sync_state(struct device *dev) +{ +} + +static struct genpd_provider_drv genpd_provider_drv =3D { + .drv =3D { + .name =3D "genpd_provider", + .bus =3D &genpd_provider_bus_type, + .sync_state =3D genpd_provider_sync_state, + .suppress_bind_attrs =3D true, + }, + .probe =3D genpd_provider_probe, + .remove =3D genpd_provider_remove, +}; + static int __init genpd_bus_init(void) { - return bus_register(&genpd_bus_type); + int ret; + + ret =3D device_register(&genpd_provider_bus); + if (ret) { + put_device(&genpd_provider_bus); + return ret; + } + + ret =3D bus_register(&genpd_provider_bus_type); + if (ret) + goto err_dev; + + ret =3D bus_register(&genpd_bus_type); + if (ret) + goto err_prov_bus; + + ret =3D driver_register(&genpd_provider_drv.drv); + if (ret) + goto err_bus; + + return 0; + +err_bus: + bus_unregister(&genpd_bus_type); +err_prov_bus: + bus_unregister(&genpd_provider_bus_type); +err_dev: + device_unregister(&genpd_provider_bus); + return ret; } core_initcall(genpd_bus_init); =20 --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 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 D6830293B79 for ; Fri, 23 May 2025 13:40:45 +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=1748007647; cv=none; b=sCcREWnAiFG33pPKt6QJMnJgYDuNT2Cx1bsABVeyrdNw+fTVd8vsnER8VYLue1GPj35kfx8sXjP+9OHkR9JYmSqaO63F9AtTb4DPPEImZzHpMooWr2KnQK4oQ1yBc9aHBr+yyPzq194USXjV1L7H4ylmSwfB3sPSdlT3YNdCuiU= 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.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="hZRBJL0P" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-550eb498fbbso8779807e87.2 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=MRY3MlvoFSR5Rm8xSnZd3U02JO/aYna582wcuTMHK9eeiPhD+fyn4Daa6iWGq1Oxal swo9FHKcZZxLVltx5yqj0pxoC9LQdD+DNwlI/pvwQpmX2rzEqpip6iypmLFbbNypAzNL 9PjApPJ3C13susnAw1YmNAAlIQuHs+Qt1/oIa2a9hDRw5ykTh+FvQRAPRAybBq8HunbG JzjP6Fz1Ph6dvkTcWRoOPtzfRvqWw4a6YAg6Dazs9TGy0sbmFh6w7p600aZu6A3J8pPU DdhYv43oO5UBMM22rd3dM21U8igdGBLkMLSmRI412dHOFa5hT38K1NBPDxkD9AUBjIHi v4Uw== X-Forwarded-Encrypted: i=1; AJvYcCVtW9g/+NqINDn+Drq+tBEhWNGejXwIJtfErKNkGYML5spESYlaU3sXptxdis1zGVXPuxsXy+B9LCSl+X0=@vger.kernel.org X-Gm-Message-State: AOJu0YwUTlrywY1RYMC0XsedGoxBEUImH74cA4X5K1yLs1iNc9MjGU69 lRGGesPpeaOPzU7aJvKqig/YMd0HbVr/bHC2qiGC3o7krs0/94TXBwfBUcyZIsjTakg= X-Gm-Gg: ASbGnctwex6eMbzFGU1xftLHKzy/PqCFAyt8d3tASc4S9kFTVCoNHZRqP11ry4RJXwE Fl1+6bb3dFiHewH1gSuvDfUdHufG696MVLcMj1AWnUaeFy1s6ddH6IOY0hG2glyDzX9nynQyy2g EpFUgg4Kj8cJ3VaTjvHx/B4cJ3DzueRMWuMC8DC4dvuvHoh7ooXTP40tOA3ftl+ZahXS5mwKgsP T0WttuWJAA2Se9Uy1baZFphlLGFcMwGgfRTTALQ9NiziB8hoKOJNbGr4j1f968ELOHOE5Uwdwof fwZBIiuI96LvS84rnBFemNHYzVUIECzi3i/Nv9qthbEwjQCkb50dFYtgjAFGSUPJhTOg0jXanWr hXMDjUkpLaNrI1uAP8ts4e5b2mg== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To take the next step for a more common handling of the genpd providers, let's add the genpd->dev to the genpd provider bus when registering a genpd OF provider. Beyond this, the corresponding genpd provider driver's ->probe(), ->remove() and ->sync_state() callbacks starts to be invoked. However, let's leave those callbacks as empty functions for now. Instead, subsequent changes will implement them. Suggested-by: Saravana Kannan Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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, =20 genpd->dev.of_node =3D np; =20 + ret =3D device_add(&genpd->dev); + if (ret) + return ret; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret =3D dev_pm_opp_of_add_table(&genpd->dev); - if (ret) - return dev_err_probe(&genpd->dev, ret, "Failed to add OPP table\n"); + if (ret) { + dev_err_probe(&genpd->dev, ret, "Failed to add OPP table\n"); + goto err_del; + } =20 /* * Save table for faster processing while setting performance @@ -2652,19 +2658,22 @@ int of_genpd_add_provider_simple(struct device_node= *np, } =20 ret =3D genpd_add_provider(np, genpd_xlate_simple, genpd); - if (ret) { - if (genpd->opp_table) { - dev_pm_opp_put_opp_table(genpd->opp_table); - dev_pm_opp_of_remove_table(&genpd->dev); - } - - return ret; - } + if (ret) + goto err_opp; =20 genpd->provider =3D &np->fwnode; genpd->has_provider =3D true; =20 return 0; + +err_opp: + if (genpd->opp_table) { + dev_pm_opp_put_opp_table(genpd->opp_table); + dev_pm_opp_of_remove_table(&genpd->dev); + } +err_del: + device_del(&genpd->dev); + return ret; } EXPORT_SYMBOL_GPL(of_genpd_add_provider_simple); =20 @@ -2696,12 +2705,17 @@ int of_genpd_add_provider_onecell(struct device_nod= e *np, =20 genpd->dev.of_node =3D np; =20 + ret =3D device_add(&genpd->dev); + if (ret) + goto error; + /* Parse genpd OPP table */ if (!genpd_is_opp_table_fw(genpd) && genpd->set_performance_state) { ret =3D dev_pm_opp_of_add_table_indexed(&genpd->dev, i); if (ret) { dev_err_probe(&genpd->dev, ret, "Failed to add OPP table for index %d\n", i); + device_del(&genpd->dev); goto error; } =20 @@ -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); } =20 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); } } =20 --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A3892949F5 for ; Fri, 23 May 2025 13:40:47 +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=1748007649; cv=none; b=dvlct9mmicLhAirugQ5Zwct6zW4cH9ZIKLSpQBUesXvNd/m+lOkZh7qBzPypKZOEvLVjaxAAP8Q4T8fo4lYsAGhByI4wt3mcQq/j0m0jxochRE9cofkbxMwg6fBdkyHLThEfzsI/YjhTZXIUQGLSejj0Bjsd7zGZKAlfj1LxoJQ= 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.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="JXH2DuKX" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-550e2ac6bc9so10061901e87.1 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=lW71HQnMd6zZRcHq3euBNf06sn/MaAwOuLGmNaj1K2b3earSFHQ7spdxKYq5sZBJla xKvtCllCoSAfhi8otDh7kgRjsdYSmxblXptLPxMtvwvUcpoe6HJa2TjrvaIVaKE7jZu0 d9YVXI0LZb1W2nPPvfEdLo+RIvPzGyqiXpgbD0netGVwauE+rRUdH//CXudGZbFMQWzR fW7hO8bWRgH88zHXZbmQs66xCOyQ/8cipkC9wPGQHVZ/R5pdn+NBlGhxYCMDKlvOY210 qicn5PD3IM8RcCfMK9H8piwMJrXyWPa2G3Ly/xfvx1ArBYDTGobaJ9WX02pflzZSykac /1xw== X-Forwarded-Encrypted: i=1; AJvYcCWTv4waIbwcuCXBWXSD9kMuVZBGHNifP+aMt0P3LV7uHHPrLLlcYZVHf0LQliyS7rm1cl/XvEyY7PPUbSU=@vger.kernel.org X-Gm-Message-State: AOJu0YxMelAXKAALVCAs1rS7MBop53XE+kVy6ZIe0FI1+NONbhf3nQZE ud4AX5w0c6eY0isCC/bNkMIbYTnIl7nD8uBNHl+p4iQLuyup1ynXmddQyipKn25wrJA= X-Gm-Gg: ASbGncvPtyjXjyzJcbb9hWKM99tranPV9muh2FEGbZHdRr7FGdzmntzRk3wawLgVvPj QHf00XPhenhNrhAebnGLw4cMlWQ8xs2I3auV7+bo4SncPNrgO5kr/28ido2wGu6FST7g6twb9+E WgFk6/lLrkXr3kjttSJP+Wrby10pUKSOP8IV1ij1k5c4Ru4gFe5Tp3Glkyzd7smOT4c5JlmCeuW hdGOnnrYMbTbItO/sxXvORgxElQ9Ag9gK2a3u7Q95nwbQZv4ncNXgGhdHLwoyl05NU57KyUPp65 8aKaBBm0fy1Z9a9mwANlk/J2qPLXBmTRP62g4ZX4aD5DgV1KDVOUHhq+FBmlK3IxckPGep19g4Z RXIghaG2tmXeGvPzLnY1xQi+03w== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In some cases the typical platform driver that act as genpd provider, may need its own ->sync_state() callback to manage various things. In this regards, the provider most likely wants to allow its corresponding genpds to be powered-off. For this reason, let's introduce a new genpd helper function, of_genpd_sync_state() that helps genpd provider drivers to achieve this. Suggested-by: Saravana Kannan Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 *d= n, } EXPORT_SYMBOL_GPL(of_genpd_parse_idle_states); =20 +/** + * 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 =3D=3D 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_a= rgs *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); =20 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 dev= ice_node *dn, return -ENODEV; } =20 +static inline void of_genpd_sync_state(struct device_node *np) {} + static inline int genpd_dev_pm_attach(struct device *dev) { return 0; --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 16528294A11 for ; Fri, 23 May 2025 13:40:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007650; cv=none; b=juCJeWC6IizrcQx2qKkKTEHjgzVIWBzPglNTmmB+mAEXSW0gej2fABo/8DlVqj7jwLWjZtDIu0GF6h/WCPxkilYgA3Y1b+xnHzVJwEP8utVRxBgXCNVd9YFnRKBmYcwJ8KWSaLM7Dl/xlnfmTwLPJFObxopNdF18ETuZEpRh21w= 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.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="pbzUhY/k" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-549b116321aso11081553e87.3 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=Ai3Khl2jiYUDbEjPyexRFqMk8WYrXU9GrzyUzHHK83NeseeirygFPHR1Kw/J3kpkE7 ZwUp7kt7n64WD8IIKpOS1xhZyUwiuUo7IOzK+2AzuZp+zE8XzDTgWvV9B9FliOb2I4ga GP71Ap6dSYzVOxqd88qSDgTtCQYjwFKpFa6EJCCZ7LBvMCz/rOfvN4i5W2++fO+Pg1vi OljnNHYXzwn7pgA6JUcvm7OHY7o9Eod7pQVCtgEVIt13/cwvg9MaFSfDN3iQlx/AJBEM Odu6nXuQ7sh+45WBRRJxR6GX6LaLbSB/SBcjbPUY5Z5JoRKh1BVvangeNixxRnvirmiq fWRQ== X-Forwarded-Encrypted: i=1; AJvYcCU1gqZ5Zb+J/bSbhVvYhLDQtfxfVokfCAKmPmT57dAdzMKPMV8imiMxgS1k9gSYW7rcBig3XkkqjHpXINw=@vger.kernel.org X-Gm-Message-State: AOJu0Ywcf+XJizOBeri/Nu5yOfFYtOjSWNExuAUZS5jKE7HgCURdOSoC KjRW/fuTwoIN1jnm+HLiKkuZs/dI4yqR4X/T/KRrabDuR/YdFZ5kvVj84QW07My1vU4= X-Gm-Gg: ASbGncs1ckoWOOErva2cqBpuvkhg6xjunfjSfgvWL/9NH6B9C32siK1WS+Rb5EP+5hP pu+NRrT9nnch3Sl1+/FRtLufk4VH9EbUxExFsB3anGHb/fIfjPVP2aDXHHN3CUEuoLe+gFIA3wB wqrcjoPGgmU+sRFl5GfcIjrM7ArB6Gn4+BNG0Pvvs2moCiuzwCED0IpOFZqi6Rug/06OBbQbWvT RcJiOfuatjRR7bydwD1YOdA6oPbp+HBaigQLUsIU+1Xa4WiX9s4JJiNJEovudDoZIjlqv3deHV/ dhAiCO3PYXQ1+IKKSfwMwgyI2lboBWdrNg+YkXavV3rZ3htgjX1f2t/VAfU8xxgfAnhTf5jK8sS FfD5p3AX3hGxsPXJTARaVTT+4fQ== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 na= me * 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) =20 enum gpd_status { GENPD_STATE_ON =3D 0, /* PM domain is on */ --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF7D02951B5 for ; Fri, 23 May 2025 13:40:50 +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=1748007652; cv=none; b=TThbGckemEKpUcdtN6P3UD2m96kRCnwjzSs87fDQBsV3dMReIOyYv1mem1K32JB/UH/j+CdcodmUaXn1twTYJC+sPi9AjUYAWspjr+0j/RUARhCtYR2ZtSGMFUdxtOslCpcFpleo1bEqeRih7c6SSTW+ld2EWBxjxmEneEuNXa8= 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.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="rt5Mf0Eg" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-54b0d638e86so13766874e87.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=ukijNbdlX/nTYbOprxOoqv/Qw7zdu69BPEXLexE7NbVym4Oh8QxGr0VfrKdjK8Jy9K /E3zaGvQAkdtZp78eu6ohA0eZSecLLGmMEiIjM/w/3SRrKLKtaQwvpbAXzsgtTVQam+O h/DJd1ujnqx0zDTthEdf3vmchiOsfe6qbYUuRcSUqFTvvSQYCZOjFjG1lWRQw6ceTUyQ pUWudEv2ZOC1wqepiyoONbKjp/O5FXbTU2dVEYGCYF0HcTTLJK9WV9WjBSxK05gSm4/X a7dw1dSkxWntVtm88iQ6DN+IUNmy47OtCLMhD58o2n4SpPGHiPzELcbqRRIDDuWC3Q/B gmBg== X-Forwarded-Encrypted: i=1; AJvYcCUQg3c4GL6xmf9PZHoxF9WHLQdiSyDEon9zJwnQmR1kQGj4qLHLiVvrp+o7woYAePq+nA5dxvYQkYtr/1U=@vger.kernel.org X-Gm-Message-State: AOJu0Ywfkzx8KudHYpTxs+2W3sanKStoBoeeiykvRXXzvLhW4lsKKkeJ 2+YPXpy4avsj1jQ8H+gySlhsFLhB3lQ7et2Y0/eTqxUm/Czh8PI0uxU9jxxZYR4zbPc= X-Gm-Gg: ASbGncuG0s1jPt1jnC5TWjvxo9AOuE0Y4DYHxACHwGBFp0r9lq84I/7eantzi8lWPHM 3Rco1LKY3H49Zydi5CnE50LdWohSpGKR2rT8xWiF+kaoxmEFSURbYb+Pz/he3GNgeur+A4YejQk UUHjwPvMBCK8IYofbV4nFrjrL9d9rzvPLf1Fpm7Sx7MyjSyfLu9II3mYlo4HD8mnfkEx/6PiCNt 5LfKT7MDtQV73zR6v+/ZUK9yNRqQx27PuX4b3EoulvXVuzupcwyizwo8FHzZb1dK3arlp/PHIXX psgNZEcpJk7oNxehnnt+w405gkFJ5DqkgtC2Y/xsKu1MxtaysAFf47wdP4dirW5Jiyw+OCo330a 1OLPJATexGtUyHMRPeJTkYG7YTw== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 sync= ed - * @core_domain_registered: flag marking the core domain as registered * @wake_type_level_map: Bitmap indicating level type for non-dual edge wa= kes * @wake_type_dual_edge_map: Bitmap indicating if a wake is dual-edge or n= ot * @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; =20 bool core_domain_state_synced; - bool core_domain_registered; =20 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) =20 pg->id =3D id; pg->genpd.name =3D np->name; + pg->genpd.flags =3D GENPD_FLAG_NO_SYNC_STATE; pg->genpd.power_off =3D tegra_genpd_power_off; pg->genpd.power_on =3D tegra_genpd_power_on; pg->pmc =3D pmc; @@ -1406,6 +1405,7 @@ static int tegra_pmc_core_pd_add(struct tegra_pmc *pm= c, struct device_node *np) return -ENOMEM; =20 genpd->name =3D "core"; + genpd->flags =3D GENPD_FLAG_NO_SYNC_STATE; genpd->set_performance_state =3D tegra_pmc_core_pd_set_performance_state; =20 err =3D devm_pm_opp_set_regulators(pmc->dev, rname); @@ -1425,8 +1425,6 @@ static int tegra_pmc_core_pd_add(struct tegra_pmc *pm= c, struct device_node *np) goto remove_genpd; } =20 - pmc->core_domain_registered =3D true; - return 0; =20 remove_genpd: @@ -4262,8 +4260,25 @@ static const struct of_device_id tegra_pmc_match[] = =3D { =20 static void tegra_pmc_sync_state(struct device *dev) { + struct device_node *np, *child; int err; =20 + np =3D 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 =3D 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 =3D true; =20 /* this is a no-op if core regulator isn't used */ --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D4FB29550C for ; Fri, 23 May 2025 13:40:52 +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=1748007654; cv=none; b=Hv7VQWkru2Ee567W9KrMMo2KZaX/rfx634THvspVWSHs3AtKB//00+eRtJeHAhrreSmhW5beMTi8Uc1Vl0mHtabDSA54pdqRgN6uz2yJp+BSiGmaufMNAgWAA2F0lYpNDNuVVBUCyKojlrVISyS5ou9v1QbdyPU6esPoe56N/jM= 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.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="whCClBMY" Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-551f0072119so1144654e87.0 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=n87lz293H1hBOMO6bcMm//aRKtqiwOmCPaW7uSrQ4NBK+FV+ALcJw5uGtUAGo8YVMb h9d5FFJHNTyYRHirzeALozXkqYhrP6zkl/sGP9WYrzOD9+7xKbzWVmbu+J8kbkoHCZHh 2+onXSfjEbGlO2PLC0gnoNrQrtYT7+1TW9iUkdYRFGgzkjGBoN0ka4JcU8XtR1v1qUhU oMPIXQyyYWZiVIGt8dBKSHvr9XNno6KA6iAtUvMWPGje7KrKQLx7wvhS93npss/CeeUs PJt0GPIIfo2asKlapNEoItHYGp5rPVbCwvi8iEbTTNTcJuk0JvUeakAmXrlXV5oz4FTj hUXA== X-Forwarded-Encrypted: i=1; AJvYcCVClL6g66QOtZImtuO7uy6OzcYnOXWyXNrQmqod27LwMeAvnb4p+KnuZAOsCmayFTDX1bBPbpcL7TGmDqo=@vger.kernel.org X-Gm-Message-State: AOJu0YyOb4YG4czNfaPKnYvj/6hvu2NUMAZ4fWncJrpB1NSRnXPzD7/N 7vDBvoYmCdCIcVa59fUERaNa8XUWq9Loubkq7sB0BUy4cuM4xQlGEOq7kR5Z83SLqWQ= X-Gm-Gg: ASbGncsLjdkfQx1+ExoCOlrrNlG8HWEGS1qRLn1RRAOmp+cFIrFnqZenVavf3DntW9+ UjR+vO5y1lTkZGZXYVO9KT1f+EzpdmMsUkNMTIQtqERfuXjR69vP4BrEZCu7ndntkKw4j835FXm gILwfBfNIrVjj6tkAtFpr2r4B7j4tofwQbhAC8XYivZCxQrGqfq5EJ0283GFHX9Z0S5xDMI2oQV tw85bKw6YSWnvDw74oaoQS2XGw0la6hs9PSw3WyVmmmdKwIKCPltgTcGgrB2RLfYa3rIH7b+CJZ 5ff8ayM1/2Dv8nt0N3pxi/i9rMADOMgCB+pnybmcYAqGmjBVjXHhFFSci+/PRizNP82mvu+wBDz xUPfODqMa46ve7TJw3BmydHF5Tg== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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/cpuidl= e-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; =20 - pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; + pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | + GENPD_FLAG_NO_SYNC_STATE; =20 /* * Allow power off when OSI has been successfully enabled. @@ -128,11 +129,16 @@ static void psci_pd_remove(void) =20 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 =3D true; + + list_for_each_entry(pd_provider, &psci_pd_providers, link) + of_genpd_sync_state(pd_provider->node); } =20 static const struct of_device_id psci_of_match[] =3D { --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 78450295D90 for ; Fri, 23 May 2025 13:41:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; cv=none; b=o4VlOSpKuEra7RmxMxoKYMRjJEL4mHb7W5t1Kw4peQUF3GaZrbKlim3t1+GLq6hz6BbUbhUcyhijrXodQVbTIJQ4JaPKLJWzUfqLrCvGDcU8ktzYdak/U6DeNaWd+90ivQVFh5d1VhNm3VDdzGsRAY+WKPowB4DPyDABadOCsQg= 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.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="Tgp1GeKJ" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-ad5740dd20eso942368566b.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=c3KWT3rq1zyuveEyQQEphU+KJ2gs1FoYeH0PjrMmsFJWZ7Tsq13OsRA91Der9eYlhX luZdrbnKO+RwN9/uGb3dTIERlPah7AtSA8fWlUegaH4leblrWEaR3kNgwcmRZqHmnS9r KGhLEA+qJ7ulv454d6bE1qjeOhF6RLLQ22x9Ql8UBhzDKAaU40wvHcK1v1Lb8Fc2OTBv 8GYX93j6vbza0kVw7xNKQdPpMMRE4acKiRLDtLS62BYGQGB74zn3O/B5zbrXbFiKW2w+ +k/30XDY45GRTGQ59T69ijggHsOQuDr5ltPMJMySq0bpr0HSWYYsNqLGFOkw4hI1/VSs e7Hg== X-Forwarded-Encrypted: i=1; AJvYcCWRDWuhtUsp1ZWvRaFa0F5uIc09Hc8oeYGTntcdMhU5udgSCxiq+Qobr/1pNxtPtzPi6NcMGuUNOHBYLY0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2H8c6WnNRjeV1A3hm5FZd6KlZ7mGruBzEcxfSnbQCp4HZ6jyI x/FrbSo7IjX8+lfH66LKrgtGDOmZkB+dOE+eDHzt4yN1p+V/nR57uE5EGwFXjZ93MON6vlxM5Ub YFWa9Uy0= X-Gm-Gg: ASbGncs2rLpU9+uhhysT5zTOnsA14Fbbj/s5qqp1jdxuepR6eE5hVeEDpNyEW9QcJo0 JuHzOBulX0qeqZaf/nj+vK0Zio5C2ReylvqWIUBlEaGzL+ACVYFHtrAxn/nV8U6+q4gxV8EEuMV S4+cSPZbADnS6d/AE5OJRfcVWtxOuvdLWcFIHEqSV6mF6cUmq7gmEJsHiUjVlFz50Z+vQyX7CfD YNp9lZrio3q5P1KPIQDotf6TBFfhyD+zzqdU0YuUXDgLPJPQJTZzI+jznlYdhZHAbMBlxcf+wiy BBrIgV61Fq5a+Ib0MvkQegb+KZ+0DnTNp+ab5p2DyMqlr0IFHomMWbgeEjZsaiEt0FolQwWXBL2 aBCqahBJXB6Vz9oEGAZwUMhgz8w== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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, i= nt cpu) =20 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 =3D true; + + list_for_each_entry(pd_provider, &sbi_pd_providers, link) + of_genpd_sync_state(pd_provider->node); } =20 #ifdef CONFIG_DT_IDLE_GENPD @@ -396,7 +401,8 @@ static int sbi_pd_init(struct device_node *np) if (!pd_provider) goto free_pd; =20 - pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; + pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | + GENPD_FLAG_NO_SYNC_STATE; =20 /* Allow power off when OSI is available. */ if (sbi_cpuidle_use_osi) --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 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 D4BB43C1F for ; Fri, 23 May 2025 13:40:55 +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=1748007657; cv=none; b=XL91EbOuP0ZnSv5Tl6lTdrRE/X4+G8IISgt8/3XAjtGvf4VimjpEA8giVl+iO7AM7vmy7kIOSkEdzuhaa6+xBljOS8Ixqh/m40rkGOVejiPLQ8zb9vbzrDSOLKYAAjXC1uUq3D5w7xq5Q6Z88WTK02ak9w0wBbk6Tz41Z3Y5nKM= 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.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="vcySSXDa" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-551fc6d4a76so5353253e87.0 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=W7gqSioPKIcM9odfsbKfzTB6vjvaPvonCT42eJtveNADGjhLxreD3zgCclx8dn6SCO z0ZGEPt+J8ckprOkF/DQt5Efbzo1T7J3/W5iiXLL97yvXr5zTSvQ/n4onCK56Eqi5SyK PylU+Xns4iFxhA2UEcjMGE0YvTOkITCoxkSgrSCXowSu/+RF4ExOXu9Elp4SI4t/k48U j/FJ8Xmd3yuYTg/YeRDJqBFF+VphKJSmFrmWAw9kphivpHVuwOVN9OYta/3wsClzFRPg aYdfMwwVOyTxm3v9WU+j4fV8WHXsUNI00fQxGrkhzFp8o9A1P3rEnWf+kwoPLDGLFQ12 rUtg== X-Forwarded-Encrypted: i=1; AJvYcCVmGyHTdqQRDcHjiZ+b/guyAYU0Zx8Kgux598+ZfveJ9fZUUdZ/jl1PKdrAhvjVL6GMDGwwQvAgLT9+ksM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9ly71FY+4JPdfvNM2Y1RfwDFPmezPNxhr118gTWfXaJDsH5iO uhiDDi8ZuCAq3YBlieX8F1Y3L9uywiDLkRc0ow43d1wtzpo3PX9ivX1izM5bCfs7ioE= X-Gm-Gg: ASbGncsdre08qD3Sg2lKGPgx3a+tg30Jb9MrdaTTZg5OIH7G5HCWveYmDT3OJm7Q0Q9 P8o1vEL+zw/wOA/Yy+RjYOIz2MSvgEmQxPKrdgnd77tjAhIdNE9bGsnTO21Hh98N5sNT4RMzqeI uuL402Vc6D5occrHGRXSy4OxBoxVIh1Tm7fs/lH5ya56PZnR40YTBoOf+asbSY8I+Jqw52pT8Rr hu81ufI4ZRpYj40YKRBxgT3fWYIupV0YCW9kiYEQ04zriYHnIsqqUz5gnDzVe37tFvg/kkwpd2C NbtjnWnlkvOZnjtaQEy1e5msO7VpNSDBjNfGKBP/TpWu6tTAYphc6nb/ZS+B1OICmT3YQRilJu+ 4DhBrSbKm1YuPvp2VKG/gfIgY9g== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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; =20 + of_genpd_sync_state(dev->of_node); + mutex_lock(&rpmpd_lock); for (i =3D 0; i < desc->num_pds; i++) { pd =3D rpmpds[i]; --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 89BEC2957D4 for ; Fri, 23 May 2025 13:40:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007659; cv=none; b=KK8haolvIz6erFmf+66KYWpQ+hdJDAV/yM9+vXbG3/0LzFrMpCJNGF5jm9a9kNv3EDItAgbr/RB25yUQ8rsVd8p2n6dG5qt2GTnDQbhqZBkEFrbyPy7y86AsyrWMaXuKqwlLQeLkLUjr+1slV5kYdiA5EEv3GwfwoQ1nfPLH2XQ= 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.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="VAdVPC02" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-54e816aeca6so12729797e87.2 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=TgPtBHv0TmllHAJARMelUP20JqvU/pek0oUWMlVO9zfA2vFxrKFPlHmhAqcRoDHNcn 9hQ0bazG8Hgm0NBdGcSA00EguuPVF3w0Zo/nTt8r2dmLXKZ8w5KB2ERRtsDAF/GXpWxV qaHDeb9T8KkKpC+GCNen8hgaQDKji6mW4JTNugDpwojRTQm36GhD1tgQdcUK8cjhA0Fg OsvawVkw6hLJ5PWBV7LIoA0r22QsupbmMGL8LisGk/SzPZ+VBV1rKXP22DmswAOaREP3 NmtRxGGlx6t82Kqh1lAUfC+kvuru7s91/F8Z5v4wd7ccCyDuH+esoBoMFZik6p0L21Od YVeg== X-Forwarded-Encrypted: i=1; AJvYcCVryj5KPzymxD7U98gk2ZpqbieT3DCbjMyvjkyXhjfYZ+wXp+zKsN2JyGxcdc/T8RG5lGG04mEfgILyC6A=@vger.kernel.org X-Gm-Message-State: AOJu0YyrX4nthwKTG2jK3GsULYfgaVABpAIOBdNQBfszb2XgmFuHrYOI XgefQ1exlKMCiO6Lrvq0E1b4MzbB8C4ClxJ+ixRaEqXGUpFmngwKugVB8nSiHSx18YU= X-Gm-Gg: ASbGnctM34SEgxm1vauT4z66ixmzyd+vG6VywhcEXHMiXjGWNkHkqBrcRz0VLlzWPWZ YIwryB/xQWqXVfmh8OgPVvNMehlXesmrxBUN6Hk5oRA+lMl+8sGCNBWtDWzjkjdx/Cxxag0/GkW t9x4RrwP6kD+ve1QNJN3d81iA2pjfYcDLVChh0WyC29Rvo0+Cht/ZerXdzsDI98SuutsWaxP8wt gkRdvzjvvLuKvkqpcCJeaewFDNXMCSBeh+zjr4SxadQgUhvaidSiqj+rarxMpLhclqfbDi+/UI0 LBxzww66QOaFmr1KXPRNoJBz88eFp11jw0ntbBPwIFzbfI1tRkbS9F9/N9RNGfLlRSLCuVz9S7s MFCBzVF96gXd8V7j8PClDRx6Mkg== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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; =20 + of_genpd_sync_state(dev->of_node); + mutex_lock(&rpmhpd_lock); for (i =3D 0; i < desc->num_pds; i++) { pd =3D rpmhpds[i]; --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 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 3D99C295D97 for ; Fri, 23 May 2025 13:40:59 +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=1748007661; cv=none; b=c3D1WEWgwfrs1WdEe5hY1DP5JrjY/glfRsjnmGJAPz+h4mhkeiH7Ng+/3wQkyvUDZT4bBV9wYMQepH4vqWYsv5kivrEPU7nCJEZFMEVZ3HUCiE+62VJM7SsoRiDFA4xOOoXwLd/LpYvB5ymOGzhovPW7nLTAWVsVO2mjG3N5cHU= 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.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="l5IYs9xH" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-54e816aeca6so12729845e87.2 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=g72ISZxcbOxng6gQU24WIAqTm07LUGi2UgHXnPo0FJZqrf3whsfoWftoo2jUsTYckd ETqo9B85K5SgmIt7knjCmB4PXaJAyqcy6tPzUmBh2mHPgFomA932tTe7PLMF6Dk5q6k4 dVpDSdWOafnSfZBo3u3Zf24e3d3ef6CGjvbicS+O0W9NK4L+zVIiKhP2sHANTiHg2efH 3ogeJWfuN+bU7jiKeZeeUgjUSJk+hPfQfv5q2ZozMCD4KzGbXsdxZWhm8a/mwI17k5WS zRCnzVZAVOdq2t6ulM8tjllKYo3YoIK4gIxF7H6sGRo/SYDvSPYeHBKXochkhcmEI44t g08w== X-Forwarded-Encrypted: i=1; AJvYcCVyE4tsKVBQSGGIQbi6UvruLn6h8H3TnLp2KCpsJSEa92LEWRbSv3hQaL0b9gy33h2HlGSl/8BgWzymqhY=@vger.kernel.org X-Gm-Message-State: AOJu0Yxcz7kjvmY2GyNZI1Un17Q6SPQ5cORxqfufwaiZIygaUW6hvs5E gq+W035FIaz9aXhtZoXF/e/a7/0pBkefqLyZB2j7eU2/3eeB8tJT9lgQZux6rSPLPvE= X-Gm-Gg: ASbGnctdqFlZAVF3xt0YBUb3rVs0hGQ8wDu3amMcW7kph7EmwPQoxU8hyCxnHLvoRsA F7EAgTD0JRhhbSi/oysKcAFSaNyVr/IH4XFsOQVj2v7yrZ82b7g/jgTIx3WkPsVHGKvQ936vVWL 9H1SWniEELuN6xkYmfWjqTg1EXLwgfQuSk1yXOHOKEvkAWNPtADyijzkL62b5Vb4LWfAdS67lSm V7HQ2sA4ky7yJ39qRlqw8uogW16+9rDonC8AyfGN0KYw5m841eKCEhbgjC/A+pAzIJf+ZLB6XZD fNjrNviQz5D1YHiiN7uumP+IRRRsKWF/PNmTGi7eP/ZcNcnXYcVLe9PTmZelyW53JSlezwwYnq0 F9lwMcaepeYiJLMMEPPLuETC9sA== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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/zyn= qmp.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_d= evice *pdev) platform_device_unregister(em_dev); } =20 +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[] =3D { {.compatible =3D "xlnx,zynqmp-firmware"}, {.compatible =3D "xlnx,versal-firmware"}, @@ -2112,6 +2121,7 @@ static struct platform_driver zynqmp_firmware_driver = =3D { .name =3D "zynqmp_firmware", .of_match_table =3D zynqmp_firmware_of_match, .dev_groups =3D zynqmp_firmware_groups, + .sync_state =3D zynqmp_firmware_sync_state, }, .probe =3D zynqmp_firmware_probe, .remove =3D 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_dom= ain *domain, struct device *dev) { struct zynqmp_pm_domain *pd =3D to_zynqmp_pm_domain(domain); - struct device_link *link; int ret; =20 - link =3D 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); } =20 -static void zynqmp_gpd_sync_state(struct device *dev) -{ - int ret; - - ret =3D 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 =3D { .driver =3D { .name =3D "zynqmp_power_controller", - .sync_state =3D zynqmp_gpd_sync_state, }, .probe =3D zynqmp_gpd_probe, .remove =3D zynqmp_gpd_remove, --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8FF2296147 for ; Fri, 23 May 2025 13:41:00 +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=1748007662; cv=none; b=OrxH6xoTWQbv86JgZ+HviLylSOMl1Vyvqb23M4PArL0skXbBB+XYzC2F4yrMydZG3O+mYvOWy8UnugRg4CpLL3MDHGoODI1uVbTyULV52vaBuoWxDDNBAkBZqR6WhXZLE5EbfUYYcc4UsVO7EO+szZANLKbdEmIWVfd5kdwPDuo= 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.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="tA6Wkz71" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-54b10594812so10956715e87.1 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=Ef3uEajyvdaHHlYOqpg+PbWBfsStEiRaKtBkc7HTYrSGYiBG1w5d4WE03MAAPVobLu gbbzRVyAZjSokVoDIKTKJXQmR0MOtjh+7Ry2W15uuFb/fEIPRXwFUf/gqBpYDqKrSWg5 KK60Tm30pNMRu+oZFaazl4s2oNyVf4JKWudFo2dqP+JsMejKjw8plrz9MQY7ztQ07B3p 2+KLfvke88rb6+QyunPz6fvE2ED57sTFdd4wPTbg5OqnkPY6cXMurzBPm5RHrtrM/Fxp Ced2jI9m1tC63JE9pLvTqcymLEBTRNhkUTMBn/5Ur37wCJJujWk22nBhggaARLZmN8EF MvuA== X-Forwarded-Encrypted: i=1; AJvYcCWMREkg75nvpx+0qYJiuW83dYS5nvSMssz6C+R5jeahp2KoOgBDO4se3WOwee1K19L0JK3Vzfemds35GT4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+ElDjtOBzoGN7uaQXPZzJDBmOl2B+k72OKpHRoAfw6TCKFD1x 4GZmQj5IAY3wtUYPY3MoN88jOkVVZn03oYjyUW4pboABQbpnwb2uDbuMhCw8fR8oNzQ= X-Gm-Gg: ASbGncvS4LZL6kbIjYXxDJl19n2p4FZBtyTBKTQvDiS+xB8SnngMCMR7IKq3Unj8xg3 /sDzQJ6IFavjXCJeS0TvnckP7rSyLeJNkqx34pIdBfZ3g1PA8Vc1GN/0YT0wyrdDdrSfy+vovoG qt6VhL8pZK7h9T7hh7J7/uOWrvbhei761k35THdbQB44v7lRdTmAgLgdroAGQyNUCCOSXL8PJcv 0eMjdLnmvtvmVw21XOJJkZzCleX74sdn3re6PD/W3lti4E8PyEnofZG3kWNBsq0/h5Ps6K8EcyL 0+K5y/Emaz7jAg0Xmfrn+tEemgeLKRcewRfucaEEJFymbCQmc0XL3fceT3qPC9Zs9VETcpDhJ2W 319l8QcKIgX0AVp3NX3LiJiQ+Pm8wcCODIwKT 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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/zyn= qmp.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 control= ler * 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); =20 /** * 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; } =20 -static inline int zynqmp_pm_init_finalize(void) -{ - return -ENODEV; -} - static inline int zynqmp_pm_set_suspend_mode(u32 mode) { return -ENODEV; --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B8AC29616A for ; Fri, 23 May 2025 13:41:02 +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=1748007664; cv=none; b=ZtDbgp6NqtQ3Y60AP3F0P+2WohXHUPqWzlKfSAZdGmUJM0RuXxOanPVNqIkUl3VKQB8kCpvMlIlSSfizlSfSv/OTQubf4an96HqdMGt8y88zNWMpia0pqmbwJhth5xngK+sOx2Tg4KPPy4X0rmhGZ2InBC74uqaI4/nnxgxwgkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007664; c=relaxed/simple; bh=ZG0wD/LR/YXT1TNvRGuMwWiwi7r8mDmA4GGyX/lU8x4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HEOyqe/B4bWHmkl5WIV6DrKq2wv1NzpX/jqzlw6aDgABgK3Cs1YyptqqzNRpGK/Szu+9oOjx+qWz2NA8rGJ0vuxFLysGOOFWrIKjjGpO9NOwcrKpKsmXZeVorm+aH4ktJJerFA65XDvQC9x/sjIM2YMY7+LKNvUykqUbcU6yAog= 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.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="F8dFzDMW" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-551fe540b74so4398342e87.0 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=CBc4688397qD8A834GuZI0KlcWlgZTQwnvWi87fbIwiPio17h0DOOgNc87plYB9O/H xYMhg9b7HkmcXFnZkcmQiVP2o1l/1HyoedsCIYiGSBm7auQ/8ykMWzsJkwHeaM0Y99w5 gHAGzqCvKFkmvEi21dZODo4my2u8SAHcuZHOmsqHmyswzujjy1acs20SkwFZJyVHxSTY cPeyiubzSDsg1lW+e3P0q5GIH5kM8eiEqnUXNECZXiTVrUchtWS4kYZXnCU0v0gJB2kL kGaI9aG/A35RRK140bUFptNvBLKzhtt/Qu6sM/zCj+k4k7tFomlqPt0wZ3IXbBmcM9zO nUmA== X-Forwarded-Encrypted: i=1; AJvYcCU5Y/xIX/oTsVGUzMLHlilLh1toSu1tttfhC+bVh4h8Qys58Yi7Qotpqv1ywStti6q3k3wK+vh5V9gNZIo=@vger.kernel.org X-Gm-Message-State: AOJu0Yz76WJJiYxxMrv0yWHHrdUOzan3ZMBvy9AhLBjLViEHVYQWmIA8 xQCJMWv26ibxvLnW+V1suA3glZHN8W7OrXSfvGSg9ZDz1d42ekZa0SRL/Kf2bo19DMo= X-Gm-Gg: ASbGncvnz38cX6z3WwmHfqZYo/98COy3O5Vmwr6ZiVlK9lLJivcJKUjD05NGUR18hhy 0UXa+oRZXHODLggvHSE5Sx7s79RqcbHZotYQ7NhZVCqXW2NJqTNaUH5iEVheahcM6UdJBnYjYDs rIID75WxybgL8Ei441j2svDdAoBmz1+4x8zyErjQ/FlJnOPzKqLHC3a/k5g5X8yFX0ItMul/oAd n+kKv/3JnypMvbiSruucztvH79w5P/lnafpi+6d5R4XZdzbNYfQpeNkytojRJuNbdLprt631L5B MIzH08XQeFdMiP5d5nvLNf9OArZWQXM8/QRKL58o10/WZrBsXtKfDc9swKthxvaKmkhJZVRo1JV EdiJCZNXz7pP88CSwauMGY/IxVfogVf3WMTUE 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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/zyn= qmp.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_d= evice *pdev) =20 static void zynqmp_firmware_sync_state(struct device *dev) { - if (!of_device_is_compatible(dev->of_node, "xlnx,zynqmp-firmware")) + struct device_node *np =3D dev->of_node; + + if (!of_device_is_compatible(np, "xlnx,zynqmp-firmware")) return; =20 + of_genpd_sync_state(np); + if (zynqmp_pm_init_finalize()) dev_warn(dev, "failed to release power management to firmware\n"); } --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (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 821F8296712 for ; Fri, 23 May 2025 13:41:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007666; cv=none; b=s50zZBEAYL4tO1ymHeJ5uA9C6YGsMNkCP6VOU2Jsb2zfA+f/n00dDZtDmhfk81RGUrIc+2FNgTzvf695nz9N15UsUOz3v/4jTHxXb8SPqF2ALJ1QhHLfI0Sk++neFat/FJKoEjde0jkDjESY3mEC+2eMTrYTqBomSAkpmkEp+mY= 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.42 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-f42.google.com with SMTP id 2adb3069b0e04-54e816aeca6so12729981e87.2 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=dERG4bEA8jOeR/xbv5hr1lYt2M3UJl0TheZ/NYU/HcEDfIlNO94T5lGt3cNJdTLfnI IZfNG1ZgYR8DuOGcznym7Qw1rJlBbao+t7nwuDsojWmHEOIUPQ8wqkrl/1YaCVqdc8tf cT514S3cBOlLKtb0IwxDc4CkP1U4MpYVP462GoFwZ9JgXkxECR8vW4YVPtgJ5ZA4bVf2 v863GI6Cf31Jyo0LPPfTPdDNiTn/SrmlrPrcIyJKBcP/wm6XfYQiVFJBF3PYcXKKOXVe vepJo4VN24XRaLBGiwpe+LWttvvjxThjStCAYf+yTlk5gaiv4orWKrZfHepR9ZysOpCt Fewg== X-Forwarded-Encrypted: i=1; AJvYcCUMmw5LaWtslleSiV3drWGNjHOIN+FkmZ2C23gbwvrXSDzS1w6CDWU0pRpR3AGi7/kVT7zGbq7nk+Uiz8Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4mf2lv8KeBXQbAizPg/efVZ8Cq7lCbuX1X2Ge90skAqUF4v/E XewgZT6uUzKEAlZSMSIDLk8slTnkK6kXS9/p+hHPBT8OLqtWtjZvguRKYpEXAasJL4k= X-Gm-Gg: ASbGncu0PeOq79IDinE9UoPKajCstOJ3zA/pTTQxAsvV9LI5ocpl+osdcl+bbv3P+SA FtgOhIpIwrB5dNJmu+oqrPinDq/3mje/jjdN4d5W5kwG5YVitMieyQX1SrcBKT5L3qGjUVYESwl Oym5NCVy8hbbelfVG5nzo/lKAOTlTy4aszvNzbmuaNjGCB328xkt5b8cnAq94hWtQdkrWBw1et+ M8QqDXgiBvMqmwJ4peUnQn3xx6iwlkT5s91UWpNrQ/2ndfKQeVB0N0VeRHoNvuts9Y7KD7UZA3n JCR+DTohttdEdu3eRFqRhxsaC5kzHCFPun8VbRKFYO7pwYSanmfRAMrlLotse5/IIGVNnVupgAd h4r1mHF6zGzxflKjb/rmmLiGQrw== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 devic= e *dev) device_links_write_unlock(); } =20 -#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 fwno= de_handle *fwnode) } EXPORT_SYMBOL_GPL(device_set_node); =20 +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 fwnod= e_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); =20 static inline struct device_node *dev_of_node(struct device *dev) { --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 16B222949E4 for ; Fri, 23 May 2025 13:41:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007668; cv=none; b=tlPnbmunvQO0G9p0QFkC3lL3slaNAJOelfw6r9Sfl8YYXleJkOKQSUTVMNz5TWF7/XIrdoIJ0Qp0PzL83muBYa9ERcC3F14WWw58qVOheH1jwUL4klb/5kbTEi1tj1ESVkzSl7WzR8kloe8D9cX7TVP2tfv/11pE9nExKpU5PN0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007668; c=relaxed/simple; bh=BNU9PuywstX6I+IaQZdoVQWmlolUJAYeaZv61hYLkg8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LZppLmyJ0aQCQD2xTlUgmrX4KI5B1yP6sxAe9JejPQbKVQfVEoEnFnFVaiVivC//i63MQIMm7dx1DrE2hrtnKAoAron9nt9XdMdmSyQWjNp8tVwxPpzlF+XKv6HEGRDINeAa1RtFxCmdoyoDJEeq6BAnBQPM5Kldqx2qKDLlTOM= 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.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Na+Ihge0" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-551fc6d4a76so5353422e87.0 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=qg/jsyCYLpoJqsH9wmDZ+70db7AbOe8v2aiSCqCzIArguKuIa8RHftZShOaAwnbrzt /vdV+lHBoQZ+HqGwi3LjKwA8+J/AyfrpZL40fi0cNKe28hqCgaWDZXxfMR5zFfx79V04 aF4lKI32HJKEjdQeNUf/6dvz0D28iQDs2aizR0Ri63pf9DfP+vuxvCy2Hb3mtf5URBHG Kt3WBmEvMajoneJHftyo1yNMyejvMSMSP5PFT/HovySSf3KJg7WOLqYv8IM8YYQKwNyB UNfEUFA6/y6aYWXIthbwdWCqZW1Zk2gwy6dgZ5FUNTzEi8tJR9MUWayFRf7d8hZ6MIiP Mvjg== X-Forwarded-Encrypted: i=1; AJvYcCUPzDqwxPiIHGWbg6mHI3//ixitTR8XWjp709P5q26EkVz/Rz64IvJZw9Qvzo2IaHZ/WA1AO60DyFKcPqw=@vger.kernel.org X-Gm-Message-State: AOJu0YwOKsD82dlPYbKqopFVvPnaC+9Leql8HuF9oPuAfHeHOQJpLljK lKMj+MW3joWasbgQshLLfqWBx5abhT9K6S0V5CQZBjnM4p7GvfaRk+zyXx1zqryArUw= X-Gm-Gg: ASbGnctiYmIJg4WYCSiUJp7s+rqKXuUvj0VQS5hnO0jElf9U5Tpfzw5+Ze67UeoGSn9 3QKd6S4QL+lBaG6SeaEn+8acOdcW/9DE59Ssl/3PFBk3QA4MOoyQCoFddTikzBe5mx+tDE9XERm JcabjIj7duK8IV7Cj4oMtI1gzdOsn+dwQu/WO6g+qwNq4/4r5ivIVWx094aQ49oeFUnqAU70SHm juP1gsz68lSFI4FMSAw4GLbxyBZtaliafAPi0xT+eJgU7HkJ13W0gGg9SmBgjcWHsVq/5sG+fgj vWLNloC0rCrRu1qE+qhi16Fl2t/wruoybwri81iiMKVP9hWAsxeWUPME4oXXvUqfaRMm0vSpge3 KUDmfTJ46NBMpctcw+Zk21LHDnQ== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If the genpd provider's fwnode doesn't have an associated struct device with it, we can make use of the generic genpd->dev and it corresponding driver internally in genpd to manage ->sync_state(). More precisely, while adding a genpd OF provider let's check if the fwnode has a device and if not, make the preparation to handle ->sync_state() internally through the genpd_provider_driver and the genpd_provider_bus. 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 = =3D { #define genpd_is_rpm_always_on(genpd) (genpd->flags & GENPD_FLAG_RPM_ALWAY= S_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_S= TATE) =20 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 =3D is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->sync_state =3D GENPD_SYNC_STATE_OFF; genpd->device_count =3D 0; genpd->provider =3D NULL; genpd->device_id =3D -ENXIO; @@ -2627,6 +2629,8 @@ static bool genpd_present(const struct generic_pm_dom= ain *genpd) int of_genpd_add_provider_simple(struct device_node *np, struct generic_pm_domain *genpd) { + struct fwnode_handle *fwnode; + struct device *dev; int ret; =20 if (!np || !genpd) @@ -2637,6 +2641,15 @@ int of_genpd_add_provider_simple(struct device_node = *np, =20 genpd->dev.of_node =3D np; =20 + fwnode =3D of_fwnode_handle(np); + dev =3D get_dev_from_fwnode(fwnode); + if (!dev && !genpd_is_no_sync_state(genpd)) { + genpd->sync_state =3D GENPD_SYNC_STATE_SIMPLE; + device_set_node(&genpd->dev, fwnode); + } + + put_device(dev); + ret =3D 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; =20 - genpd->provider =3D &np->fwnode; + genpd->provider =3D fwnode; genpd->has_provider =3D true; =20 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 =3D -EINVAL; + bool sync_state =3D false; =20 if (!np || !data) return -EINVAL; @@ -2695,6 +2711,13 @@ int of_genpd_add_provider_onecell(struct device_node= *np, if (!data->xlate) data->xlate =3D genpd_xlate_onecell; =20 + fwnode =3D of_fwnode_handle(np); + dev =3D get_dev_from_fwnode(fwnode); + if (!dev) + sync_state =3D true; + + put_device(dev); + for (i =3D 0; i < data->num_domains; i++) { genpd =3D data->domains[i]; =20 @@ -2705,6 +2728,12 @@ int of_genpd_add_provider_onecell(struct device_node= *np, =20 genpd->dev.of_node =3D np; =20 + if (sync_state && !genpd_is_no_sync_state(genpd)) { + genpd->sync_state =3D GENPD_SYNC_STATE_ONECELL; + device_set_node(&genpd->dev, fwnode); + sync_state =3D false; + } + ret =3D 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)); } =20 - genpd->provider =3D &np->fwnode; + genpd->provider =3D fwnode; genpd->has_provider =3D true; } =20 @@ -3446,6 +3475,25 @@ static void genpd_provider_remove(struct device *dev) =20 static void genpd_provider_sync_state(struct device *dev) { + struct generic_pm_domain *genpd =3D container_of(dev, struct generic_pm_d= omain, dev); + + switch (genpd->sync_state) { + case GENPD_SYNC_STATE_OFF: + break; + + case GENPD_SYNC_STATE_ONECELL: + of_genpd_sync_state(dev->of_node); + break; + + case GENPD_SYNC_STATE_SIMPLE: + genpd_lock(genpd); + genpd_power_off(genpd, false, 0); + genpd_unlock(genpd); + break; + + default: + break; + } } =20 static struct genpd_provider_drv genpd_provider_drv =3D { diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 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, }; =20 +enum genpd_sync_state { + GENPD_SYNC_STATE_OFF =3D 0, + GENPD_SYNC_STATE_SIMPLE, + GENPD_SYNC_STATE_ONECELL, +}; + struct dev_power_governor { bool (*power_down_ok)(struct dev_pm_domain *domain); bool (*suspend_ok)(struct device *dev); @@ -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 */ --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 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 C2C59296D27 for ; Fri, 23 May 2025 13:41:07 +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=1748007669; cv=none; b=KstIMEjv8+LtGlVl30J/dq43aHePBAsEklQdf8oFUOaDBsfK8yrxHwb0YARlwWff7XuClwqDzLEDx2qb3y6Baqj0nyUSGMI6soT8puaQ5JtGe/ZLpDhYVkXXdU7kVjBZkD4Vc3vVyWlLf3mzd6H2r/afJOkVP0UH8CVNUk91sXU= 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.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="ep/ddSDV" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-5499614d3d2so11187451e87.3 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=Hn561mZf1C65bBrXbXAJRH0czxH74nqJGrOjFoY7+s10LIZ+eyzTtvwSCEkwhKRSvj x8Z+i7ikgHQGDAm0rLTKM//jOBfo3Dt+81fyPa6gdK1ci4dH1SiX7/CWSWMBx9ZuvkjF H3F5XGr3EhvQ8b2DIhuR5InBGgt4dBoGAQYevbbVr9/wgYUo9lVTsfS1olLLDDgFEB31 9EhIdP5DOa1ACq8kJT83OCcKpNtkQaP57OZAmdk7zb97qDz734kXzIi0+r/79ewQZoDW 62KyKJnZMzfufRnoExxoeZU0Qk5A/87owU8ueBGTUjfunLl4WmGiZVyCJRYJRMee+IoH IZLg== X-Forwarded-Encrypted: i=1; AJvYcCXNcGLN5Wcj5OhOWWCoQk9qYjL2bn0lMPuuZqjyeS4EzUcvJ3gUykEDMyEZzXuVSa2vFRHnsoz86JNAe3U=@vger.kernel.org X-Gm-Message-State: AOJu0YxH3HLbFQ+W2MBX8GHgbRWShG5/oesVFMHVJ30dPkfMg0HUzul9 58xSj7BIF+7C/AtB19FoB7ddrUP451gOjWlKB0IHgGxZ4hV93He11cGByGNze0tJKQw= X-Gm-Gg: ASbGnctoHFI/TnXpVvbH05sxYoBxeCJ4XGRY47bT4tMDWVlr2fGUEd2Vm3D8TWhFcp/ wPfSZ4wDbCjiW4QSz3JdVZqn4cLWFcOCpB0q00A8N+QlSisCpygaXINeJn5cnTmnU8haZ47QZx7 YaPAAfqN/L41REfvT5QF0cG09tS0v1/dsCF/9BL5Ny2fgDaoehPufeiH4d+kkT6B7A7j3t0q532 TCynvsSWv88ByIkNtk/fJEshg5jarvSstkNLv4+GJKWxZuv2aOW5PndRo1U0O+CVxvPeLV8K6lZ 6zV8JK88Guil/sHizZN6/KUV5wChGtHPrcfR1/2QQRdykRWak+iPuPw2Mh0p3fuVWpTSxtgWs/s 0q1AAf2+o/haOJnQ4DN26mzf5PQ== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Saravana Kannan This can be used by frameworks to set the sync_state() helper functions for drivers that don't already have them set. Signed-off-by: Saravana Kannan Acked-by: Greg Kroah-Hartman Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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 *d= ev) return false; } =20 +static inline int dev_set_drv_sync_state(struct device *dev, + void (*fn)(struct device *dev)) +{ + if (!dev || !dev->driver) + return 0; + if (dev->driver->sync_state && dev->driver->sync_state !=3D fn) + return -EBUSY; + if (!dev->driver->sync_state) + dev->driver->sync_state =3D fn; + return 0; +} + static inline void dev_set_removable(struct device *dev, enum device_removable removable) { --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AAB622949F9 for ; Fri, 23 May 2025 13:41:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007682; cv=none; b=IuZ/w125Qi3sYM+TVds2MMvtWyDraQ0HeCJdVT4NrNixUOsA6+ZijQ3qoaH8wNT1s6qnEEt51VILs5FBqptyTLx6nF5O0ZyzrActxnyjSeeKw5ATnnE4en0CzkQ4ZBkIOPZKLBd3rDenbLbYwvhl8/M6h4MztTWdbjB9IwPT06Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007682; c=relaxed/simple; bh=NN3Crtgicr2RANdkx4XpcfEgrbjiC/nyTFX0TvsgmcU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ha1HH62XYsO9CKVTml6Kc+jIje3mANExnuaVO4DMb3y72XEgLH+3MucqaUWyTllrvmD7yqC36TW7nvaMF3I+QLsW4dAKXYh7w10B6kEQ1AJk2xkAF4617XoEyWeES+5LR9FArn8EayZCV1yGkzKYpwhOdnpshZpE/Xa9cV0zXDU= 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=g1N1+RtS; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="g1N1+RtS" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3a3683d8314so5794839f8f.3 for ; Fri, 23 May 2025 06:41:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1748007678; x=1748612478; 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=g1N1+RtS2Ef4xFhuExSzrtAQVKw+b6+pvCIMVRhBH3oSi20cd5lyfuhp5fP3NsFBFH OqeAZmCO2lQAwCSk6daaVXRmMWwG0VQ4U22E+SX4Zs1bvqrGSZXR6PtqqxEt7qz75OOD mtfeiH92i1ZrMAq2s91ABryOsr3a8nLsArhKlGPdqrMLYX74SEtFf6uHuITPxhgrSOH+ lAeU+sKGdq2g36lSUaPKHyAgQJTcrFtmOVuzPDm9C5GuJ/e9ZMT+SJuAIux6VxJJvx/e w8h/5gv30Vd2gyV90e/D9xpKs1vI9kiZU/4LCWY2teK71NRNWDIaFBflmCmqS2VCdGYB sYDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748007678; x=1748612478; 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=l/9ndeEEHPgCr1mn4TWKjc984pBVILrHbmLny5PFJ9Mq+T/mvfpCO1Lfi6a+kz21uW /uvpacIpKkn7yBGfoCspRuyDnd+RKt4ZoRMB9+jkbXYXgiw++MdMKmD6EKSnEtAcUhKu ppeJI9HkVk0KhSmBw6ttJtRpXurzTIoCbM+5tIrI6iAtrOpJXsgxYArqhWmD8/kX7hLz qVDgMkCqLgdiKPKAQVcS1OjHaGHutHd3FAAJMNzVRXGFfoQqjCqUGVYsSpi/XHNe2xeV ojmcUMMfOYN20DL3VYPhmBhq30kSSG/ZWsA0IwL5zi8W/QIO/txUMqI9yO2MCIhXd/5l oP7w== X-Forwarded-Encrypted: i=1; AJvYcCXNCCljHMY8FvPK74cPTHbhaQ4piMgjqPq7p82kOnfSmBimiU8XIW8NEFIlEb+0WVnEEpb6P5cMkNQbqNM=@vger.kernel.org X-Gm-Message-State: AOJu0YxPnyy2ARHFgLqJecAZWXrDhSl7JZZtZiUPSyKSef1Vq0zHw3Nf 4gbaGYmNkHMk/UwQ2TmIFUhg63DZeXLjL5HW0C3WlfxP3ZCuricIuQE+6TFKwjca5+4HmJAj83G Hq++cFT8= X-Gm-Gg: ASbGncsg4dVOcjvJ4Z5mQz8jEjTK1ZYdV1KaWtZSc2ltTBRTdqv2zeZ9iraxEFwiwZf RGuSuzd1n3XfW5f9/IaeOeg5pnIa7gShLtCu7WbKomAc9O5+0oyovCIGo1OcnbO+4mFOKpKqCpI cJ3Ih/C5C0cROFwP/YDjrqlU7a9wFBO4UU8JgqMeigZcc01T7/H208kFQNuQyGst+8xzrWTdwCN WL6f75SS14ZaoNlc7MOiR9exdDHdFecxT4432k/Uqo5NQpqkzIKuLrGr6ZmJ6wAC3eoPeKdZk50 2qNpltIOJgaBbdj+lhiX329P9o1FaKCZqF86SaS0dpWDQO8r/QPHZ2kryph4p+5hugVB+LRqurA j3oEbaPlHEIAHKl9qWyCZjlB5iA== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Unless the typical platform driver that act as genpd provider, has its own ->sync_state() callback implemented let's default to use of_genpd_sync_state(). More precisely, while adding a genpd OF provider let's assign the ->sync_state() callback, in case the fwnode has a device and its driver 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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_do= main *genpd) return ret; } =20 +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 =3D GENPD_SYNC_STATE_SIMPLE; device_set_node(&genpd->dev, fwnode); + } else { + dev_set_drv_sync_state(dev, genpd_sync_state); } =20 put_device(dev); @@ -2715,6 +2722,8 @@ int of_genpd_add_provider_onecell(struct device_node = *np, dev =3D get_dev_from_fwnode(fwnode); if (!dev) sync_state =3D true; + else + dev_set_drv_sync_state(dev, genpd_sync_state); =20 put_device(dev); =20 --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7396B296FD4 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=1748007672; cv=none; b=Xfa1fzTJwOQzJSbyqIp45oncqVCHAWD/YFSUBmr/tm5WfGMMXIzaSbuVsSdPYWAuqFazee6gl5QCSCtBgo0jcPuvdB2n7JrEwfBbrX+iwbXTDEXvAUCz0D+gGB52O+8VNL5NWf00doXtkf9JElfrYAI6O7PYwtJYiHyPk94uq2E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007672; c=relaxed/simple; bh=rJ1WF3jh53M3IFOFtyOo1l9fXgUPc2OdamLreAdGPrA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EUCy4P+68qeXX1JZlJdGZELZgS2XBMP7MVyfhOjVrMalskDTKOa46FsOJTaiYuO880HoBbInoD3ouLZbXsYBa2Nt2M+IqtNt8e4sOXQb3Yso122X1UmMu24X4c6uNiw769tQwGNIaDofyBl6qgXtCqRPKstJ44xLxrWwLRSbZsU= 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-54d6f933152so14445707e87.1 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=XVdrRDCa0wnXhgArVfT1tkKyTazCzsJJSWZBQGlebMCQLXxVOMnn6I8VABG/CCKTFm 5h60VZPmX6mTiOR0wewdPsmS4NAZCrEfMFKm/vnTHi/dYecAtOPCSvz3Uox1J1A9jcJx Z7S18nAzTLJGhlHWEVEFFLa38CTeCYaG8mzHh3Afi4VgrW9cD4YGcrt2MhDzVNNqNHZc LWXqV7LmohTUBZkmN3ym+SwWhuFVLlbU83is/khVnqyNlL0etxSNAKZok+32EFbs/uyB E7kP0n+mI9PlyndK8zP5jFzUfxDxHHy0Y3JiUqgY91soL9GnfFr41/QYe/pe8vw5hkAr xYAQ== X-Forwarded-Encrypted: i=1; AJvYcCVnlcc4xiTpj1db+H9MFBY3bvQg4JNII0aoU0qGQMe1SAY49w2oXTAfH7UBx3abnvqC7OUN2m80A65mRCo=@vger.kernel.org X-Gm-Message-State: AOJu0YzLaogLapL1RfBD90aV84FXmMh0wTzhWC+r54YDEDEx6acF8mur 5ouQY8fuh7BialXa5VcO0l9Pn2GkgBJfrt3FzPeN+O5jHGv3b5o7/IWXvZljtistFZM= X-Gm-Gg: ASbGncsMHSqfLFjIMnV+bV896IhGwtGmsuj5MLha47EVeQBp+5bWg0l1YrKPAbrP1QU tr7ttZldxBStUPivrEQDTtAR3Qi/ybV/kvmxys/GqJKPutUMineshfGcquwUTV0M6vVHnmKJZq0 vTByt3h6yz9KjQMOCBQFx3WqzzF5jdOFxXbrobwvoeUbkZO3a2O9neHGEOZ44J3IdbpPkz/o2VT S0Umf5HDAOh0ex31DMRJOa1vWAzZQXT8VvOxk7mTZMw+NzibqEnaAN04XdAvTVPsm9QdJs4sKff wHaa0c2e3XW4Z0M4FIbHVx1DAe7bKzCZbdf2AGuou5tZtwV5BiOWcoScC8apb736nofqO53IABD Y4LyIBLmQk+09JXhnRMqQEgxvFx2rXL9I/aD8 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Powering-off a genpd that was on during boot, before all of its consumer devices have been probed, is certainly prone to problems. 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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; =20 /* @@ -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); =20 - 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 =3D false; + genpd_unlock(genpd); genpd_queue_power_off_work(genpd); + } =20 mutex_unlock(&gpd_list_lock); =20 @@ -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 =3D is_off ? GENPD_STATE_OFF : GENPD_STATE_ON; + genpd->stay_on =3D !is_off; genpd->sync_state =3D GENPD_SYNC_STATE_OFF; genpd->device_count =3D 0; genpd->provider =3D 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); --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 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 D4B6F297117 for ; Fri, 23 May 2025 13:41:11 +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=1748007673; cv=none; b=dV+uwT6CXEO1y3loImIiutVHux+OppOlr3IEf0z3vmeToXcX84PSy9y03V+CfqyFQyIOz1BFvcWHTC956M9Pvht6Vy23QTqP9RgXKeGZQ6xe9M4w7hzfB8E4fBnS+rWFtFw1Zqn7vye2ZT7oVkW+ibQHgYYSPztU8GzeE9WosTk= 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.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="uhCKU3oL" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-54acc0cd458so11970332e87.0 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=WkHXMtr4I7ytbaUh13PYN/BD8UjQoKiMOaN9EO7JiSAdsV5brwMzb8nzgzsE98ccbe k0o4bUOX+oLVWpCiD0A4yc1o4y+s4KZo7ZsECQ1UdK0fcP05k0H3683SJ6dU4eiy3y7y oZTmwqrS4g2VV8ECC42GLp4JaPqiM7gwr79bDmj2jyWSz+0gNL5pPWA1zMW5+P2HFKUw RpkuY97szR5/PCq35K+DGoWAA3xkeSyGHYM3KaYrPqfKE/6OxHlfeTkBKwBuiYi6lHDJ Mk6GRkF3mvTl4EqqblOc1f4ZtuIC/Xxn0e0Xogs3tggHOpeMtY+Xc1bQr3GXNOEkkugH sPKg== X-Forwarded-Encrypted: i=1; AJvYcCU6rDHu03IsByGCsjNhFdYOMT40kTCaGr7RsHoE5U7bDjaZSLl98FQLI7M6/EbMF0RFWysacQRCleDATJI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7j2St3cSBqwB2L6W9uKYlVtI2KyAHJKMIiJW58YSoXdNz4whF tbIcIaOurvWc8J3jxjnOgsyxq/IcPMm4ubrv1UCYUqwXgbAnMM+/8dS6JhlCKMjoUhw= X-Gm-Gg: ASbGnctXnW8b31IhRhjy5uh6BGHlzHVFqjpNgrqNE7ob/uyDBl045abcMTRUokz/TF8 9rKSzJAimoZlELG7wwyTpuRu2UKSCWGSIQhqED5FOf+xOl6BCVog0THR6pNYTp8dxYKPB5odKOp slmFTvNyFp5Jb74+ryIo0kt2W9a+aYtSh2I/4QU7hW3uYDIltBrK9PzsDXOTNHqp12sPwWOvAT3 URXYV2Pqppxx2zAXHq2OKT5gf8wp65qLDhMzp5XgM8EP0b1yMh/hZeaVo5vfMznWBw76Bff3CcZ dwEpsU9sO5WUpdLbJBnAWCZevPAtOi4C2LA/oYiZGYYxpKcixuFtnCQ7QndPWuaoj7AtAotlu5h 7Pw2SdXD2fDFsYQ0/yxG55lbiFw== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Powering-off a genpd that was on during boot, before all of its consumer devices have been probed, is certainly prone to problems. 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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; } =20 +#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 =20 #ifdef CONFIG_PM_SLEEP =20 @@ -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 =3D=3D of_fwnode_handle(np)) { genpd_lock(genpd); + genpd->stay_on =3D false; genpd_power_off(genpd, false, 0); genpd_unlock(genpd); } @@ -3502,6 +3505,7 @@ static void genpd_provider_sync_state(struct device *= dev) =20 case GENPD_SYNC_STATE_SIMPLE: genpd_lock(genpd); + genpd->stay_on =3D false; genpd_power_off(genpd, false, 0); genpd_unlock(genpd); break; --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 26A002949F9 for ; Fri, 23 May 2025 13:41:12 +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=1748007675; cv=none; b=RQi1w8M585/INuXKkbBqz7I46samjqDcbsfnMgl8VlBzenR50Vbo8NUrRho4dM1uRy9HY2EcDPWkXMvD4MWAaMrn7ew6yHeLJFTcX7L0MdbAPMnNngQRE4Mc02kxDwLVQwJDcsP1Aw2RbnY42ejmmrzq6cmDKTFFaLFJxpN1Dq0= 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.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="k0WKNeD2" Received: by mail-lf1-f41.google.com with SMTP id 2adb3069b0e04-551efcb745eso7555204e87.2 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=X5NsSW4mOCPxISJer4JAwrthkMdkfUA1HljhMQwTiZqBjzRBqcSvuz4m4cMH6Rk/aL bRH1tl4X9+FL9yCdRMao/zE7iKZ9ac3snH5tDxxB1ekuN1XiNDaez2n62DvVaDENV1fv 4C5AJ0crcjVN5rmnPo2CH7er0ODDPmKGnIEFBJ7Hb56RbXIzya3W1FNlvFDqByuHR7cZ zzyRuoqTuVadLl01uZIiqFnCZ//jDgDq4lhhz52s7+ppCyhm2rdyawK1lxFoN7k4XpMr NQv8oOHFC0Teo6s766T0kOWMgVtMHlV+vihui6ibchQi60HH1zp23Et68G/l0wepjlTW rC8w== X-Forwarded-Encrypted: i=1; AJvYcCXmEaMXkOlDeQH6TCTjNZjls25RBJpLyBoobrHBb8NtRM5/zk5pGW9vOyaQ3m80E2HaK67C3bDHBGFVEqQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyHPKgtJLK0mpokPkLkLFC6fZLL2gLXVIkSodZ7DW4O1OWmSi5E ZQRTvZ95Q0iUFiOqWzDqK/w6HycFw/w25K2kE+/6pS2VmRWgGWfcHPXAHU0bZyAqs3A= X-Gm-Gg: ASbGnctTqzZmBBMojCIvlOZUjWg+GLj5aQuk9jMjeEEinsR7wUQljQy3Q/JpcoKmuEz AESghy15WPrXVkm7IwTgqVWk0FEW/nU6RsdWT5we6u1LB1XcdcnUjzboAHyMqJSHa+tx0plyvNt YiUVNHUJT3jj1heDaiTD62rZHQz/1uRYQMjbLhwKodaHs20lnGupmLXEQtE83jujgCyuxqWuJR9 6Uh7fF/meXovyib37MjWEDuAaXOTnYPRL885dqryG3QXmSV0kpizAFT9ITjGzac+6OUwY+pB1fS KjNzEwugIMZF6lqh3yg1DLsyYW4oPAWioWznWZvBQnai/jfg3IhNAOwUNvbzhSGtdtpfH4EKaTM n4CUmidDoxZezr8an/CWzxiRGGw== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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/cpuidl= e-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 { }; =20 static LIST_HEAD(psci_pd_providers); -static bool psci_pd_allow_domain_state; =20 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; =20 - if (!psci_pd_allow_domain_state) - return -EBUSY; - /* OSI mode is enabled, set the corresponding domain state. */ pd_state =3D 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; =20 - pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | - GENPD_FLAG_NO_SYNC_STATE; + pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; =20 /* * Allow power off when OSI has been successfully enabled. @@ -127,20 +122,6 @@ static void psci_pd_remove(void) } } =20 -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 =3D 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[] =3D { { .compatible =3D "arm,psci-1.0" }, {} @@ -201,7 +182,6 @@ static struct platform_driver psci_cpuidle_domain_drive= r =3D { .driver =3D { .name =3D "psci-cpuidle-domain", .of_match_table =3D psci_of_match, - .sync_state =3D psci_cpuidle_domain_sync_state, }, }; =20 --=20 2.43.0 From nobody Sun Dec 14 19:21:38 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6F08297A51 for ; Fri, 23 May 2025 13:41:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748007676; cv=none; b=mnMebA7vKGrbJUkddQngbU/LGeGqDVcQewU6mZb+8fANpmR1nrV9HYUjn3K2xq1SPJ3USuz1s33Sr3G78COhXJnzoajvzgOdHuRb7YktDpsG3ZEQI07nShSiuxwyVHCmrH+sZOp/uFRiGyMNnts45IIJLI151GJ1pCRG7rME/q8= 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.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="rQH4OHk2" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-551f0072119so1145151e87.0 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=evuSFLdeojzqa8P+cGWvhbtuHoNcE8p+Sqf3Wg64QKqKvurgrGlQUZwU0DkFEWd415 xEyHndo3UwFxX3uQiLAHOtNU3ye2lxWaP9kxHZ+LSlSFxeLyeCqWhuB6CFn4GiwGmcoE wzunW3/6u6pMHKyYGHHV4iB+Q4ssSHRqoj9IBFgL6dKPEQpTWK4SRQpc6mQVSCLrw7Mr Ue46KQr8UvDFTPJI6UZnIiu8kq0CnpVsOY54XTrqDWkqpnUp6wxeFSG5W0DzKV4crw6G kpDu8pjzEdKTM7nDNRLc6niq6TyS1NXDL8kI6m4htosW0eyQyQKUf8ANRHlaK9rxJp5F Zj+w== X-Forwarded-Encrypted: i=1; AJvYcCWRmFARdPFwWVhdgm5+60YwOgT7DkgCN8wAMk87cBGXPn+4r7p440fgxDz6rx/jFS7sUAk9Nyt6glVnZvg=@vger.kernel.org X-Gm-Message-State: AOJu0Yyu3jldy46XtmFtQWTIj7NkETSN2zZ509jcvq45fmfzmkMv06Rj 7LUhvjb2kOVhjJArtqy6/WyZVF3jgVj+C5OtOOscrm3MjByzDE0tlfCuo72EsJPX+Ww= X-Gm-Gg: ASbGncsQCYujlofnx7lWm1ATy+CkAa4iyfzdhvZUytKs6N4aKdeQM+wd+MhIlY45gBs stmNKihPAwvsUyQWHX0VcmbijNoNJOJGoqvfp0vBInViWoKliJl/ziqMHKWDCQTGgGS31tdR1r7 vyzTu6sBPH0Y8OIPRfJrALrjqM56ZSrs9zI0ikh7vwTNi4SSAymhRdfyZedd3ZWqlqX43SZN45Z 3P7kE0bDw4HPgO6XPqIS/4NEaQfPN99D/26t5ZJvj1UXMh092/S8E6LEJLBhrRBOZlcH4VI/6Sk MH8PBuybpJxiw/f5b0tCgpCh/8DulxOvkAljoUXws1Kue34zyFCyIaRjuTemhVW+orYByO4EwF2 VzYyt1wxm7LIo1A19lrD47Mhp1g== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Hiago De Franco # Colibri iMX8X Tested-by: Tomi Valkeinen --- 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; =20 static inline void sbi_set_domain_state(u32 state) { @@ -345,20 +344,6 @@ static int sbi_cpuidle_init_cpu(struct device *dev, in= t cpu) return ret; } =20 -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 =3D true; - - list_for_each_entry(pd_provider, &sbi_pd_providers, link) - of_genpd_sync_state(pd_provider->node); -} - #ifdef CONFIG_DT_IDLE_GENPD =20 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_d= omain *pd) if (!state->data) return 0; =20 - if (!sbi_cpuidle_pd_allow_domain_state) - return -EBUSY; - /* OSI mode is enabled, set the corresponding domain state. */ pd_state =3D 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; =20 - pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN | - GENPD_FLAG_NO_SYNC_STATE; + pd->flags |=3D GENPD_FLAG_IRQ_SAFE | GENPD_FLAG_CPU_DOMAIN; =20 /* Allow power off when OSI is available. */ if (sbi_cpuidle_use_osi) @@ -570,7 +551,6 @@ static struct platform_driver sbi_cpuidle_driver =3D { .probe =3D sbi_cpuidle_probe, .driver =3D { .name =3D "sbi-cpuidle", - .sync_state =3D sbi_cpuidle_domain_sync_state, }, }; =20 --=20 2.43.0