From nobody Sat Sep 26 13:08:30 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B2DF547D45C for ; Tue, 1 Sep 2026 11:14:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261295; cv=none; b=kXkDSW8Yq5PiXTZdwF1uaXPErdh7dVtCavksWEyi+2VDxigQu4geIOpE5BalRvuIT71mVl+DFvP6zas431M8PT8/zFMfGGZuYbcAmqlojdVwcwHCLfQPoIWiHZQNEdVnVSEjnY7DpvQ93NcPTZpoDR2APmQFoVzA+GZXjsg5UI8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261295; c=relaxed/simple; bh=+TFWrdtWp4yq9TSRBo1jbNDXLlE0Vb3QAFNEGSmbVOU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tdqgML3pFOi2Qnff6QBeVm8M/r5jLES/s6O/vktOlCpNbKVh/8oisMvBtgJ/cEY2/wK52SmDWfXeBmVhom23jbu8gm89kq4AlkP8YZKuJSLgf7uD4YPUmQzXcBqyfmTJFmRGfpukq44Tud6l15hLPLgn7K8lrfmIBS/9XEqrvj8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=ZtjxUl+T; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Kbz7NjhB; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZtjxUl+T"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Kbz7NjhB" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681AJexK2141678 for ; Tue, 1 Sep 2026 11:14:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Wgxn1wZhT0N rhGkRx1mSbVXgq+sQ60RV9XXpk9+v1FM=; b=ZtjxUl+TZMYLq8Cqrgv7Pc3hAlg T5L5/NhQiGa5Alp+8xCacMPuHvkSxsRHBbEr2CRdHT8RAdsGXkgtoiq7yu0F6Wme Y00DUGZ3sVLDQf+mG4/Jo1nP6wAGtEQZ8iZkhHjq3KT1P4+/YNBCceyjkkc0ebhU 1wbboXW5GZzgdOPBlyUk1mr35dWXakRuFrUbD04D/ImDRHyPjaqVUt9H949c6RxV nh3SempganQ9T7QgtwnPzEvk1AUxemB8k4hdppVPFLWj6Jb10YcChtSrXok1M2lB FZuPRG5zqTA4bcCxSdJs6LUHSdYvJApwNLHdlPs22LYUp5qOVL6AqcVucxw== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdp8fsy19-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 11:14:52 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-934963b2bc0so730966785a.3 for ; Tue, 01 Sep 2026 04:14:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788261292; x=1788866092; 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:content-type; bh=Wgxn1wZhT0NrhGkRx1mSbVXgq+sQ60RV9XXpk9+v1FM=; b=Kbz7NjhBr4XCBrITt3RLRvtUO4Q91KrwiBERzcZ/rf8REB5NNu9FtFPN7qaDKVeBvP 5eNWhYVmoI5UnCp+ENlMW69AurUxJh53wXB3qP83mxOcVujzmDGBvbUhwObYZTBHZEF+ UkCSkn9w+BwjgWeTEm0K/DNsamy4C3c15HqsFbz07aFM5lA2M8eYA97O+AWTluPGvWqY tPHZuRoMTeSPbdcLdxvJkfTZ6DmqxG8GH1bJ4zawop/OUywNF43nCvcbaIPMRmH8AXjj WDXUAYbc9HmpjwlkY12vjXh0U/PArlj7YyrAQkyPcA6Gz3Qq9yDmm8O4GHOJAS6h5hSV 0frg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788261292; x=1788866092; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Wgxn1wZhT0NrhGkRx1mSbVXgq+sQ60RV9XXpk9+v1FM=; b=fFPWEogyMF+DvAUuwB3wZeNxRkAn79c3j//suXbKgssPyLwXzQCglWbwg96pB244UH UAuzAysFVS3AaTU7IGue+otaQHT8hjmiMYqv3kHnM8MJUr9R7Rk87kjn+ED3luw7y5es kwlzi+Q4lMTUIQXP7QelXobwEr6IQjq0hYbugnFCQi2Ie3xMi4KONnfNwajK4Moiz6Cx U2fwNO1J5LxrnS7eR8P6WdeAzY9wFM3aHM59eaID5s4ht7YdVU3QJGKnbciIVA46O+fg 5ssLBlqMCpK2qxdekMlkCjJZabY14xskEzGgqRrLZ/D6B9j8kaHjtk+S2ThS7zYDbb/z nvEg== X-Forwarded-Encrypted: i=1; AHgh+RrE+sL0aMKVRgA0AnYvQ79QCMdML1jbOXjGvd5NuXz9jj1Tgj+pBjpZoYYl1XoIXlfdRCflriUsRU8N5+g=@vger.kernel.org X-Gm-Message-State: AFuF++lfUreYRLsHE4VT/l3UieP7Lz3DzvOZF6GKJ5y54HdLbymInGTh 2eTWjwP0wcIqS2/fAWeS50rqof5VLSyKker7+eVC7kWsSrJcFGYN4YLcSdcRqD3udByTg2eajAn JXQCDk9F9ZUPlt9M0fByRM9YOM7DKApfZVXr5U+JGV/q7ltOqPqopM1XWq7m0kqRXDD4= X-Gm-Gg: AR+sD12rpr+AYQ2+4f8hvPoxFay4ERehE5p1Eu01k2tJNsWG6Zq8Md06kdIFx+vmEid nJhj60MM9ESAjtZ+Ap8eE6eQOsPX80gI2rBJ450AeY9NnfRAKezwejuiMgGZ5eIllFZHi5czqvN JdkCp5RgEY26lP1DoCj/zRluxaIsVuW3Gx3pgbj/8PTy6ZiIedgJT/75H40adPvFK9EQlaF1u2C Rea7QsE4+6YW0FcVYn8EUHtWqT7reJOkZS1L5Rw73hvQWg227mmABjTAzdcsYXtw5dnmi5vELrO nMVuPa0Sb6IGS0EBEkB6OkKVCKVB+W1UZ9DN7XQ8FO+m2DmYYepz729SxdJa4v2ZvtrQgpXJmep 9NwHkMxhqvLjYhLxeTNoWGp+6HCjf8V4frR7lkJ9rTy/LJ+xYVbf7AM9qHw== X-Received: by 2002:a05:620a:4391:b0:915:c4de:7ac0 with SMTP id af79cd13be357-939481572fcmr979052285a.31.1788261291447; Tue, 01 Sep 2026 04:14:51 -0700 (PDT) X-Received: by 2002:a05:620a:4391:b0:915:c4de:7ac0 with SMTP id af79cd13be357-939481572fcmr979045885a.31.1788261290897; Tue, 01 Sep 2026 04:14: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 a640c23a62f3a-c25878ba94csm380686366b.47.2026.09.01.04.14.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 04:14:49 -0700 (PDT) From: Ulf Hansson To: Sudeep Holla , "Rafael J . Wysocki" , Daniel Lezcano , linux-pm@vger.kernel.org Cc: Abel Vesa , Lorenzo Pieralisi , Christian Loehle , Maulik Shah , Yuanfang Zhang , Sneh Mankad , Suzuki K Poulose , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/5] pmdomain: core: Rename genpd_status_on() Date: Tue, 1 Sep 2026 13:14:04 +0200 Message-ID: <20260901111441.122436-2-ulf.hansson@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> References: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> 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 X-Proofpoint-GUID: cyjCDn9hfdB3uHaM7rz16jcOYhFlSRXe X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfX7asBcoYtF7D7 fayTDxwVYvAN+W0VzIkV7FaT9NQr2oOU6FXwub1v0XDPwLa+pYSmWb1EdB1is/cYcH/jA/kzS/2 5YoVSkX1nDaMvdrObCvm807PYvdKCls= X-Proofpoint-ORIG-GUID: cyjCDn9hfdB3uHaM7rz16jcOYhFlSRXe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfX8r6Zr4W1sQ3D dMbWCMXPJ1fyIT5XihDKt3LkfNroDG7ejDztkGSocZyHv+kyfSo3qIsOOEKyZW2lQNEdf+lDRTJ ldY8iW9mPcjBY2IlqR3iC+PaeDQop+7x1jx7g4uwUwGa3FKzdfsMKC1T2bUO0vBQZLSxwRC5IHS FTIZJBwzlPvyV2pwM73Myi61XQ2fRj+rlzB4fnLJp0oxkdlxr+APq8Jvn2+Bx/PyV3Rqmdy6FII Ph8xxjq+Y6UivlLUMLMrdEs6LDzmkLrrkHvgfWbFGqnaSzsfBBcskHVruMzHBdjbz01Y/wu5ftx hl3nFlFaAPkJOWzOCwFleCk5WorMmxnKSOlcg7Cm0el6P7xTazNrdw0mt3XpZKvRs6zXBd/r92n ShVlTy26vjtrHPB+SwCuPesFBWJ991gBL0Mk50J0uFXeWeksp0ha+Y9HYQgBkcJFW/m9hpKx2wq tTiZrBt0jY8iCJ7hXGw== X-Authority-Analysis: v=2.4 cv=BPWDalQG c=1 sm=1 tr=0 ts=6a96b3ac cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=h7aNHqOhPKB91FvYUefsSA==:17 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=X7f39YHs1J5G0y9puJsA:9 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_03,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010099 Content-Type: text/plain; charset="utf-8" Let's rename the internal function genpd_status_on() to genpd_status_on_unlocked() to clarify its use. Suggested-by: Abel Vesa Signed-off-by: Ulf Hansson Reviewed-by: Dhruva Gole Tested-by: Yuanfang Zhang --- Changes in v2: - New patch. --- drivers/pmdomain/core.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 842c4169e290..6ac1ce18fda3 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -173,7 +173,7 @@ static const struct genpd_lock_ops genpd_raw_spin_ops = =3D { #define genpd_lock_interruptible(p) p->lock_ops->lock_interruptible(p) #define genpd_unlock(p) p->lock_ops->unlock(p) =20 -#define genpd_status_on(genpd) (genpd->status =3D=3D GENPD_STATE_ON) +#define genpd_status_on_unlocked(genpd) (genpd->status =3D=3D GENPD_STATE_= ON) #define genpd_is_irq_safe(genpd) (genpd->flags & GENPD_FLAG_IRQ_SAFE) #define genpd_is_always_on(genpd) (genpd->flags & GENPD_FLAG_ALWAYS_ON) #define genpd_is_active_wakeup(genpd) (genpd->flags & GENPD_FLAG_ACTIVE_WA= KEUP) @@ -771,7 +771,7 @@ EXPORT_SYMBOL_GPL(dev_pm_genpd_rpm_always_on); * @dev: Device to get the current power status * * This function checks whether the generic power domain associated with t= he - * given device is on or not by verifying if genpd_status_on equals + * given device is on or not by verifying if genpd_status_on_unlocked equa= ls * GENPD_STATE_ON. * * Note: this function returns the power status of the genpd at the time o= f the @@ -791,7 +791,7 @@ bool dev_pm_genpd_is_on(struct device *dev) return false; =20 genpd_lock(genpd); - is_on =3D genpd_status_on(genpd); + is_on =3D genpd_status_on_unlocked(genpd); genpd_unlock(genpd); =20 return is_on; @@ -963,7 +963,7 @@ static void genpd_power_off(struct generic_pm_domain *g= enpd, bool one_dev_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 || + if (!genpd_status_on_unlocked(genpd) || genpd->prepared_count > 0 || genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd) || genpd->stay_on || atomic_read(&genpd->sd_count) > 0) return; @@ -1040,7 +1040,7 @@ static int genpd_power_on(struct generic_pm_domain *g= enpd, unsigned int depth) struct gpd_link *link; int ret =3D 0; =20 - if (genpd_status_on(genpd)) + if (genpd_status_on_unlocked(genpd)) return 0; =20 /* Reflect over the entered idle-states residency for debugfs. */ @@ -1406,7 +1406,7 @@ static void genpd_sync_power_off(struct generic_pm_do= main *genpd, bool use_lock, { struct gpd_link *link; =20 - if (!genpd_status_on(genpd) || genpd_is_always_on(genpd)) + if (!genpd_status_on_unlocked(genpd) || genpd_is_always_on(genpd)) return; =20 if (genpd->suspended_count !=3D genpd->device_count @@ -1472,7 +1472,7 @@ static void genpd_sync_power_on(struct generic_pm_dom= ain *genpd, bool use_lock, { struct gpd_link *link; =20 - if (genpd_status_on(genpd)) + if (genpd_status_on_unlocked(genpd)) return; =20 list_for_each_entry(link, &genpd->child_links, child_node) { @@ -2170,7 +2170,8 @@ static int genpd_add_subdomain(struct generic_pm_doma= in *genpd, genpd_lock(subdomain); genpd_lock_nested(genpd, SINGLE_DEPTH_NESTING); =20 - if (!genpd_status_on(genpd) && genpd_status_on(subdomain)) { + if (!genpd_status_on_unlocked(genpd) && + genpd_status_on_unlocked(subdomain)) { ret =3D -EINVAL; goto out; } @@ -2186,7 +2187,7 @@ static int genpd_add_subdomain(struct generic_pm_doma= in *genpd, list_add_tail(&link->parent_node, &genpd->parent_links); link->child =3D subdomain; list_add_tail(&link->child_node, &subdomain->child_links); - if (genpd_status_on(subdomain)) + if (genpd_status_on_unlocked(subdomain)) genpd_sd_counter_inc(genpd); =20 out: @@ -2246,7 +2247,7 @@ int pm_genpd_remove_subdomain(struct generic_pm_domai= n *genpd, list_del(&link->parent_node); list_del(&link->child_node); kfree(link); - if (genpd_status_on(subdomain)) + if (genpd_status_on_unlocked(subdomain)) genpd_sd_counter_dec(genpd); =20 ret =3D 0; @@ -2441,7 +2442,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd, =20 /* Always-on domains must be powered on at initialization. */ if ((genpd_is_always_on(genpd) || genpd_is_rpm_always_on(genpd)) && - !genpd_status_on(genpd)) { + !genpd_status_on_unlocked(genpd)) { pr_err("always-on PM domain %s is not on\n", genpd->name); return -EINVAL; } @@ -3839,7 +3840,7 @@ static int genpd_summary_one(struct seq_file *s, =20 if (WARN_ON(genpd->status >=3D ARRAY_SIZE(status_lookup))) goto exit; - if (!genpd_status_on(genpd)) + if (!genpd_status_on_unlocked(genpd)) snprintf(state, sizeof(state), "%s-%u", status_lookup[genpd->status], genpd->state_idx); else --=20 2.43.0 From nobody Sat Sep 26 13:08:30 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6B6A47D459 for ; Tue, 1 Sep 2026 11:14:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261297; cv=none; b=N4FW4MP5LHIE5ki4iUMVOcp1X8d5GzYIzfsJqpNLAB9VoSaGQS37M31ErPhGw2O5nmaL0XQOUQjUIR3TXvM8np2Pz9Y0VZJt5hyVhJvAeZp1yNFQ7t44Nlcxy5uiyVl7wkTeCANDfsJ1jLTthXm2GnqH4XgH4lFyHWANmq8seRI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261297; c=relaxed/simple; bh=cmsQL026OgpBUgZ8V6kG+h6Mf4nSL62zg23ayWquaVs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ApH4IaIgdVsiTlVP9g6FL1rAqOzt1djkzPGjzP3tWVcht9b0YHICLnB2Y7gm3q3nHdjaGvWVTq5z6YpeKPVoXy3iLB/hRJUPl4wskCH8RnQt5+MdqQLanjV7Zl1sfKto9XI3SwEYgmg7Tmf5zSJuCryaOpIfE/crVOgk8qVunrQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SJGFh9OZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Saw8GU/o; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SJGFh9OZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Saw8GU/o" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681AJimX2752207 for ; Tue, 1 Sep 2026 11:14:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=98Fq6YcblYc VHC9ni/bi/J3Yzy18g8RC1k8HtrB14fU=; b=SJGFh9OZhiz/0QoH0c2f2HKwU/x lYS5HrqEabxZvjso7GasuwwFTpiebMYavQJE517p9JrUdzPNJ+XN/XVB+yQWQcEO X2Un23StV5uJl4RrSgaQQ6y1UEJRT9DvuyVl0nPeOR/G/ElkcErfbO8VmWTz5klH e2COr5AxnR0UmnlrV7suUIxKUNxwxPMCy0Qx3x8m/Qx636haYbBc9B32IHV/hA+z uGsBHFxyQxgfva3vIieR7rpKRSQFb1ZKRldGmfCXyW0lzt5VmWD+FfDu/J9QyeTM Nh8IPAMAjtRxNgtoIJ2zezfiGeTPRQJKaoqcB3DFJpWN9Js9JI0MV48pK7w== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdfchbmg3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 11:14:54 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-9394ad7f64aso195052685a.3 for ; Tue, 01 Sep 2026 04:14:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788261294; x=1788866094; 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:content-type; bh=98Fq6YcblYcVHC9ni/bi/J3Yzy18g8RC1k8HtrB14fU=; b=Saw8GU/oeN44HcteL/s1qAzU+f05fxUGiJxZ1eiLx9qXdrIBsdd3DucYJSdpmNSDQJ RUjPFtQxkopBPtHOo2utettjcXur+mqe2tdDj3gpjqXblzZGqY2sb4wT8Bb0cI5fMzur +2c2lCq3+kTV96MUOQLB+aRIx1878jfs/UXrTQ1Kz6H/f23x/BijLWpcP4Hguxzph9Dt qEpE+FYyTduoCiILs4TPDsFThmPRHUD/Tbk+cvivTzSR13zCef1ztQOOkGmL32/Qvufr XsWScSfZ4lmEwqB8zeRjkXQk7amMw//2Bs52DRoFJIlY7nUBLxvdJPLaxIhRdrike2G6 LrrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788261294; x=1788866094; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=98Fq6YcblYcVHC9ni/bi/J3Yzy18g8RC1k8HtrB14fU=; b=ojyIBRKqworUYNPw0EtFId1Sr2dn44iSANTFvPXS8+Dm1AsJA/Im1T2VhmVS3oF0lM 2/aa/9Fq7/f1CEnw7f8ppuQtMQiAaVZ14UooKWYyjgVCAORxxwtYbfWeYcEAZFSnYF9V 8c3KLqy8nt4JkTICAcwleSb9i2E8/Ueu5UsrBNGOxPLlffsIF06Dm/18orTpsGAIrlzQ UhJpQgIbEycgSbx94Mcp7QdXbaMtLAXoeDz8Xe9IjtK30kZwQDQMRDl+9OVz92Q23mfu LrGWBcJ+vQz+MlMTkvL+9luZ1FICQMgPiJTBZNLFJNpQtbm0CbZcmV6LoMiCLgcqpsaJ aVQg== X-Forwarded-Encrypted: i=1; AHgh+RooYGY61UmUp+a5cfoQCxYLVQRc2wK2Apruf+oQpH/lqEbDTIhZMYCKnjGAMMDaHhIi2ib/MFNclqGOrhI=@vger.kernel.org X-Gm-Message-State: AFuF++mOkqwW4aeqkp5hv/M4myGsks6msrbFovr8AmAzM59s5xi/jk7c Q13nOn1C6ogslIrPoNN6RCVO38B5BBsvpxWXJE1ijVegaXxLn9Z3A7XIIg2K9sWSGirjpUQg73k Hwo8f6HNCpFVKVxKlwPEvb9rjIuY+In7S1svYRAWNI/ch3y2IdJ1PCFhmUvsbSCPiKcA= X-Gm-Gg: AR+sD13Dp/rHWlvUZzX/uy2lo8R5DhFkTxr9FX4MznJdeVKKvsmJxRZxq+wnXSl1xHy u2Gj/kdtDMhE7RkL3SN9Sj1TJNoyswQNMpmXoCnzlYPf3h9R4j5RPDvqmy36LNRHV/lvZnr0yEJ x+2552/eZy84KUHlZU0omGnhUXj+q10Ki/AJy/UExbCRpJfa1Vq4GS647EXy3ptwGh8p1ob4cQt B6bWP01l8R0Dtrgp2Ij1GseaSwP5AR6sRB7eJdR97uuthNGLJfNl/1K66C4hx6PwPHXCWm0xoxI a2dbg0fAmF3UgrZ+aJJuc8vixvix0AABq47FW5WH59UySo+RWtGx7TuZaJeGZt3TDzcVH71Twqs cfGjxrJxCqR0pQgyfsJmeXG1jQlp7fPwLm2XS9C+Ro8dy8x5/paKbP2s5kw== X-Received: by 2002:a05:620a:a183:20b0:938:8ddb:5e9b with SMTP id af79cd13be357-93947f81d7fmr781221985a.8.1788261293792; Tue, 01 Sep 2026 04:14:53 -0700 (PDT) X-Received: by 2002:a05:620a:a183:20b0:938:8ddb:5e9b with SMTP id af79cd13be357-93947f81d7fmr781217485a.8.1788261293273; Tue, 01 Sep 2026 04:14: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 a640c23a62f3a-c25878ba94csm380686366b.47.2026.09.01.04.14.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 04:14:52 -0700 (PDT) From: Ulf Hansson To: Sudeep Holla , "Rafael J . Wysocki" , Daniel Lezcano , linux-pm@vger.kernel.org Cc: Abel Vesa , Lorenzo Pieralisi , Christian Loehle , Maulik Shah , Yuanfang Zhang , Sneh Mankad , Suzuki K Poulose , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/5] pmdomain: core: Allow a non-CPU device in a CPU PM domain to do power on Date: Tue, 1 Sep 2026 13:14:05 +0200 Message-ID: <20260901111441.122436-3-ulf.hansson@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> References: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> 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 X-Proofpoint-ORIG-GUID: YuZmMG3pZAaxplwlpFZ5eYg7amq1nZOt X-Authority-Analysis: v=2.4 cv=G9Ms1dk5 c=1 sm=1 tr=0 ts=6a96b3ae cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=h7aNHqOhPKB91FvYUefsSA==:17 a=u8BtVuMVLpZXKRMe:21 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=VwQbUJbxAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=VqZmVlX21PZHT1he1CgA:9 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-GUID: YuZmMG3pZAaxplwlpFZ5eYg7amq1nZOt X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfX+IMxiN0J8hzC 23L6RXvZftd+6+f47gorGwdM1RBollUUJu7hNQM8+45mBX925EidFJm05/+cNZeSQM4i6igEzKc FX4HFRDevv2hDdee/kF33OEnRbe8iNw= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfXz3YlGrBmLyye V1aZ35KVY/nF4IkfWpdBMobqJeAV4fK8MSTrGXRzhHHMYO0YrEbsTDCs4Yt7VKlB+OAxlmUqjdK faGwff/KUkcw+fipy1gMenAPr5734KudHp4kexyP9DBXGZUU9wfzjRosEGUG/+tGNVJrttqRylq 9gZyBGzzht0qkewHu5j418lTTe0Jr9ggo1q0QjZZyRTbyk/vX5OLSzhXOMddL3zmbAru1LdlpEX 8mwjldhaCKhcoDaNRhHDkchxm/ZGI2r+4icoTpwZ1aHg1Xk1GhmHUNq2GzymOB/Yew+LBrEa2bn clMs2UJmnx+88yFeQAT9Qei+E+HjBEZ/E0FAKIKU8KVHuCTwzHxFeoeFhsoyat7Ls0naJyJXRBH k0bcRjkw/LDrgvZVpWOb4uFyx1zbWJqdXLrfKy8rVWwv0U0NbQaXzQ7X1YcfZwtrxgR4WYL+F2I XUFCgRSI5/IF5LJ0ZTw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_03,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 impostorscore=0 spamscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010099 Content-Type: text/plain; charset="utf-8" A driver for a non-CPU device that is attached to a CPU PM domain (the genpd has the GENPD_FLAG_CPU_DOMAIN configuration set), is currently not able to power on the PM domain. More precisely, to power on a CPU PM domain one of its corresponding CPUs needs to be woken up if they are idle. The current support for a non-CPU device is that its driver can only prevent an already powered on CPU PM domain from being powered off. This leads to problems for a driver while probing its device or when it needs to call pm_runtime_get_sync() to turn on the power for it. From the driver point of view it looks like it all works fine, but when accessing the device it may end up with various errors as the device may not be fully powered on. To fix the behavior for these types of devices, let's adjust the behaviour in genpd_power_on() to wake up an idle CPU that belongs to it, in cases when it's needed. Link: https://lore.kernel.org/all/CAPx+jO-sCierYj8jnoKQHckJG16dOBxnNrsZVYO= =3D38R2cLV8nw@mail.gmail.com/ Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Yuanfang Zhang --- Changes in v2: - Rename a function according to Abel's suggestion. --- drivers/pmdomain/core.c | 80 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 5 deletions(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 6ac1ce18fda3..97273ed2f825 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -19,11 +20,14 @@ #include #include #include +#include #include #include #include #include =20 +#include + /* Provides a unique ID for each genpd device */ static DEFINE_IDA(genpd_ida); =20 @@ -32,7 +36,9 @@ static const struct bus_type genpd_provider_bus_type =3D { .name =3D "genpd_provider", }; =20 -#define GENPD_RETRY_MAX_MS 250 /* Approximate */ +#define GENPD_RETRY_MAX_MS 250 /* Approximate */ +#define GENPD_CPU_ON_POLL_PERIOD_US 100 /* 100us */ +#define GENPD_CPU_ON_TIMEOUT_US 5000000 /* 5s */ =20 #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ ({ \ @@ -1027,15 +1033,75 @@ static void genpd_power_off(struct generic_pm_domai= n *genpd, bool one_dev_on, } } =20 +static bool genpd_status_on(struct generic_pm_domain *genpd) +{ + bool is_on; + + genpd_lock(genpd); + is_on =3D genpd_status_on_unlocked(genpd); + genpd_unlock(genpd); + + return is_on; +} + +static int genpd_wakeup_cpu(struct generic_pm_domain *genpd) +{ + unsigned int cpu; + bool is_on; + int ret; + + /* Find the first online CPU in the genpd's cpumask. */ + cpu =3D cpumask_first_and(genpd->cpus, cpu_online_mask); + if (cpu >=3D nr_cpu_ids) + return -EAGAIN; + + genpd_unlock(genpd); + + /* Send a IPI to wakeup the selected CPU. */ + smp_send_reschedule(cpu); + + /* Poll to wait for it to complete the power on sequence. */ + ret =3D readx_poll_timeout(genpd_status_on, genpd, is_on, is_on, + GENPD_CPU_ON_POLL_PERIOD_US, + GENPD_CPU_ON_TIMEOUT_US); + + genpd_lock(genpd); + + /* Re-check the status as we have released the lock in between. */ + if (ret || !genpd_status_on_unlocked(genpd)) + return -EAGAIN; + + return 0; +} + +static bool genpd_need_alive_cpu(struct generic_pm_domain *genpd, + struct device *dev) +{ + if (!genpd_is_cpu_domain(genpd)) + return false; + + /* This is not for CPU devices as those are managed differently. */ + if (to_gpd_data(dev->power.subsys_data->domain_data)->cpu >=3D 0) + return false; + + /* + * If the current CPU doesn't belong to the genpd's cpumask, we need to + * wake up one of those idle CPUs to power on the CPU domain correctly. + */ + return !cpumask_test_cpu(smp_processor_id(), genpd->cpus); +} + /** * genpd_power_on - Restore power to a given PM domain and its parents. * @genpd: PM domain to power up. + * @dev: The device that needs the PM domain to power on. * @depth: nesting count for lockdep. * * Restore power to @genpd and all of its parents so that it is possible to * resume a device belonging to it. */ -static int genpd_power_on(struct generic_pm_domain *genpd, unsigned int de= pth) +static int genpd_power_on(struct generic_pm_domain *genpd, struct device *= dev, + unsigned int depth) { struct gpd_link *link; int ret =3D 0; @@ -1043,6 +1109,10 @@ static int genpd_power_on(struct generic_pm_domain *= genpd, unsigned int depth) if (genpd_status_on_unlocked(genpd)) return 0; =20 + /* Special case for a device attached to a CPU domain. */ + if (genpd_need_alive_cpu(genpd, dev)) + return genpd_wakeup_cpu(genpd); + /* Reflect over the entered idle-states residency for debugfs. */ genpd_reflect_residency(genpd); =20 @@ -1057,7 +1127,7 @@ static int genpd_power_on(struct generic_pm_domain *g= enpd, unsigned int depth) genpd_sd_counter_inc(parent); =20 genpd_lock_nested(parent, depth + 1); - ret =3D genpd_power_on(parent, depth + 1); + ret =3D genpd_power_on(parent, dev, depth + 1); genpd_unlock(parent); =20 if (ret) { @@ -1307,7 +1377,7 @@ static int genpd_runtime_resume(struct device *dev) =20 genpd_lock(genpd); genpd_restore_performance_state(dev, gpd_data->rpm_pstate); - ret =3D genpd_power_on(genpd, 0); + ret =3D genpd_power_on(genpd, dev, 0); genpd_unlock(genpd); =20 if (ret) @@ -3411,7 +3481,7 @@ static int __genpd_dev_pm_attach(struct device *dev, = struct device *base_dev, =20 if (power_on) { genpd_lock(pd); - ret =3D genpd_power_on(pd, 0); + ret =3D genpd_power_on(pd, dev, 0); genpd_unlock(pd); } =20 --=20 2.43.0 From nobody Sat Sep 26 13:08:30 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24A4C47ECC2 for ; Tue, 1 Sep 2026 11:14:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261299; cv=none; b=VtWEbqiypXI7C46HiGHPNfxbrWAu/p9wEd0bTM4XcmB6YF90lFwrk3TflujOAmFS8lro/oJumRXW961fI2xkVkgk2YnzUzWWmuncJtKUX/8k2DrKxHAo+sTHODV6hZwkxZAkvch5gQERZOqoJcsCcV1hAhd5PgXxW5xYPMm85Rc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261299; c=relaxed/simple; bh=uz+4m4KqjdRWsTJlmApFhnDsv/1B5b/OVZ9NVMkRA1Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W+FQrG2wKCqGKQrIRo41ciua+hv4oKuWZd7gRHmMVwaohvgWTWKU4xTeJ0EBXx10j5eC9omigt/equ8ynDr747mygLIlX7mjCTwbxxzh7rfQxqNLkUMejl+q8WjiXoZxOxm2+4x700Xcdtt71yYmyxmM8Ix8Le16VQmSrTZVF4M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=IuaJlwfi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RH5MQbgw; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="IuaJlwfi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RH5MQbgw" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681AJgME2141793 for ; Tue, 1 Sep 2026 11:14:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=q0M1/i8At8M RHYTLPNKxinaL7xQ5Kl0z3c2DGIUIcW8=; b=IuaJlwfipDJoonpbRW/ok/pUvvr 5WMO6PumCPnzFqgT3+7otQ16uevtO8GYBDpyedqFeQd67drLybPjWzPYJIIgM3v4 SxAxcCc7ysuZyWdbRertcd9z9jAqyd4RzhzPj/Lbfa3+VeMWALCnzbB2ogPDKzyl e0McRxVfGWI16M61RLySFH2h2n+OeHiQ7kEBSWdWsTWieckf5rvCBQfg+PHjQFbN Ipw/9TeOOyALk+Ks0TxKculoG9GY5xzPMg0CuXGPE8NsMc3O9ApIGW3QxrN2StEq 4iW5j7H9wAIpA36G4DqqgdGUGD71yLl9Hc82VzECjOwzXbpUVQ5VGRX7rMA== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdp8fsy1m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 11:14:56 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92e82060977so156062785a.1 for ; Tue, 01 Sep 2026 04:14:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788261296; x=1788866096; 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:content-type; bh=q0M1/i8At8MRHYTLPNKxinaL7xQ5Kl0z3c2DGIUIcW8=; b=RH5MQbgwAm5PmBs8bd56pmYj1ABpvjVuTBCYQ5IDwWNjL1OXQ098w2d3Gonw82cGOQ Qr3FbSTEz2BNuV4pxj7sqPg8i2hQOIEMzBmgP8ijEzQzDbXkVeuHA0zlZP+QMkWEahoO 9fFw4yuIDGwqYi3KFUxHtH125kRFHgpIswH9wwRHIup3+cB5nEDbGQUxhoU4NlLVjDFr yisI03ZQtMymzZaEkxRwc69c0mmW8KZ0ffvFFR50snd4Mng4vrjqVqUuRgElinDfz224 hIvcyM7k/e5OTJWsnr57PXyb9N3NQfPQtdwRoqqQRcw5hFL2o2vFXYJDBOgYSPjB2iiq wPZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788261296; x=1788866096; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=q0M1/i8At8MRHYTLPNKxinaL7xQ5Kl0z3c2DGIUIcW8=; b=OudkeRCqEmOg4pTl0rX/7iLWQMOv3OieWxwpyrlCcchZQ2eERSO+zkTRQcEUIDph60 kTEFNuujVdeZt3QUatVEf49T6pSX830+z6WLn38OOUlSAiWcbV/ag5V19GPExS61AL1V FCBGbYKg01IfsNpa9+Js19xrYQNOhc4b37nfXjPjNff/3H+rZQ2suE1kAoy0BgnlLzey x4cw8SFkYQhU/YTRMWwxaR0/TIlSZV684C6FpPY1tBkeX6jjefhT7dRMpMpLbIgWcciP SHJJmopwGWDatFu/+TyHUd8dAiFLfTZfVEU9A61kz1Bma+ADGmpa80YDbDUgYzwFxnkq ADQQ== X-Forwarded-Encrypted: i=1; AHgh+Rqcj9XaT58CNTbEVLB/p6kY6dtR8O5tzeloZPKQd8Jtn6baxPzHLWLsAKdpV75lSbXzBp1uitYDOWLaVVs=@vger.kernel.org X-Gm-Message-State: AFuF++kvXbgcxIPvGa/619YETe9ib3eUv4RW8eo49s0wTv/94zakMPnx Pqt2bacqrU1Fp9n+LGWaqhWIQ5BRxH6bAHcNnPbPelZIuIkIXfmp1SYSP200p6fHhg46TQnTVvc JKAaX3/FqI50/edHRILZA+M49z3nvthIvE401fibz/QWWcWZRzf/J3jGrvYngA/HZF7Q= X-Gm-Gg: AR+sD119DJF6ReoMuJcOf34coMDFJLIcZCa8ibcmni5gIxw5LF4nKxdd2Y11WVXplMx H8DfuOjam+6nyRnqDsmsk5c6T8n7HWhdCj7CLKtv5KddeJG053l/tTV9nsov4JmrP6mOV2NgWjf rsRC4JRHWM0o6gZqWlSPuSo5Tj3kb/nNgJKbOM77pBIf0nYLqL7BkR0trc5xtw8+tXyeCYExJo/ u6DqZSYi0typGB5aY0o/t7NunlRoS6nA0/Sb3zbV0f6SP8oKYVOFEASFjhieFNDDBetuaSu5Fij bNMTxojW+5MHe8pHvgjMG7/ycWLIcmMwHuJPwe/SSJ5chg4X/zjMOND1aHPUJ4zKlLuAmIcfvM9 HeDiBImZRr6WTK6IE/mRslhjX+gxdNlUPqLQX5ba/s+rHrlLprroe/jlO/g== X-Received: by 2002:a05:620a:84c7:b0:939:4bee:f84b with SMTP id af79cd13be357-9394beeff4dmr560894785a.9.1788261296401; Tue, 01 Sep 2026 04:14:56 -0700 (PDT) X-Received: by 2002:a05:620a:84c7:b0:939:4bee:f84b with SMTP id af79cd13be357-9394beeff4dmr560885885a.9.1788261295699; Tue, 01 Sep 2026 04:14: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 a640c23a62f3a-c25878ba94csm380686366b.47.2026.09.01.04.14.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 04:14:54 -0700 (PDT) From: Ulf Hansson To: Sudeep Holla , "Rafael J . Wysocki" , Daniel Lezcano , linux-pm@vger.kernel.org Cc: Abel Vesa , Lorenzo Pieralisi , Christian Loehle , Maulik Shah , Yuanfang Zhang , Sneh Mankad , Suzuki K Poulose , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/5] pmdomain: core: Add a genpd config to support unknown initial status Date: Tue, 1 Sep 2026 13:14:06 +0200 Message-ID: <20260901111441.122436-4-ulf.hansson@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> References: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> 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 X-Proofpoint-GUID: wa9SzHj9fzSHtLjjUKNJRuAYWLF8HL8Z X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfXyD8+P1tAdSIJ V6wsoUG4NQeFC2Ls4Bf0RQZDUNL4o1AKoHwENpn9Pm89Q9Crv45pOfV0pajoNQR8E81Zyg5jxB2 RTO+KG+m3EUW2i5jWKPRpVEblxWJ/gs= X-Proofpoint-ORIG-GUID: wa9SzHj9fzSHtLjjUKNJRuAYWLF8HL8Z X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfX4sQtY91BXwsU b+zIJSj1Bk23s00z2ZpkxZaijzJfeRo+KbaZmooeG0k1ZqIxGY4HOFAZ4LzCarsUqusdFcxccwq zRIvJUlEHl1FIV+Kbge+lJRvs/cq2vzKh5Ts2aLvZNTTcdwIxZO9l02RgL3vYyJ8KnNOCjlySP5 EIcOh6bovb29QO5s5z91KLWqVBxcL3aOVJ6Qo9co0DGiF1W+gR5G1lG0nHJND+8BY2WpkaSInQX BeOnPaPien+jk9i8/7vkNN49yXhQq/uJov4AJut0f1SvvfXeoYJN/I8smgA3ZZb29N5YjwJK29u f4YmtZVNZZolnLBc3Y8UzwbX3ihUIefLk3FIWhiOiG9I0ma1i2+B33T+GNtElbOpCUCLeFQnpOm 8FrOORpfcgoEcYKFzQpXC+xxAcW0qBwJcpNC6n8OHaiJFSoy878YjTV3Yf2XgX9LrtEGEOD/vZ/ QRDt+ifgMmeKdjLgEwg== X-Authority-Analysis: v=2.4 cv=BPWDalQG c=1 sm=1 tr=0 ts=6a96b3b0 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=h7aNHqOhPKB91FvYUefsSA==:17 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=EPyTabgPSFAr6pNicGcA:9 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_03,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010099 Content-Type: text/plain; charset="utf-8" It's not always possible for a genpd provider to know the initial status for its corresponding PM domain(s). To register the PM domain in a safe state, the genpd provider driver may therefore have to initialize the genpd's status to be powered off, as a way to prevent the PM domain from being used when it actually could be powered off. In these cases we may end up to power on a PM domain through the genpd subsystem, while from the HW point of view it may already be powered on. Under these circumstances, it may also be required to keep the PM domain powered on until all the consumer devices have been probed. In other words, until the ->sync_state() callback for the genpd provider in question have been called. To support this behaviour for a genpd provider, let's introduce a new genpd configuration, GENPD_FLAG_POWER_UNKNOWN. Reported-by: Maulik Shah Link: https://lore.kernel.org/all/20260811-domain_off_ss3-v1-0-6a0a0fc023f5= @oss.qualcomm.com/ Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Yuanfang Zhang --- Changes in v2: - Rename the config to GENPD_FLAG_POWER_UNKNOWN. --- drivers/pmdomain/core.c | 6 +++++- include/linux/pm_domain.h | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 97273ed2f825..ab6110885175 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_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) #define genpd_is_no_stay_on(genpd) (genpd->flags & GENPD_FLAG_NO_STAY_ON) +#define genpd_is_power_unknown(genpd) (genpd->flags & GENPD_FLAG_POWER_UNK= NOWN) =20 static inline bool irq_safe_dev_in_sleep_domain(struct device *dev, const struct generic_pm_domain *genpd) @@ -2446,7 +2447,10 @@ static void genpd_lock_init(struct generic_pm_domain= *genpd) #ifdef CONFIG_PM_GENERIC_DOMAINS_OF static void genpd_set_stay_on(struct generic_pm_domain *genpd, bool is_off) { - genpd->stay_on =3D !genpd_is_no_stay_on(genpd) && !is_off; + if (genpd_is_power_unknown(genpd)) + genpd->stay_on =3D is_off; + else + genpd->stay_on =3D !genpd_is_no_stay_on(genpd) && !is_off; } #else static void genpd_set_stay_on(struct generic_pm_domain *genpd, bool is_off) diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index f925614aebdb..14e0e346c610 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -121,6 +121,14 @@ struct dev_pm_domain_list { * powered-off until the ->sync_state() callback is * invoked. This flag informs genpd to allow a * power-off without waiting for ->sync_state(). + * + * GENPD_FLAG_POWER_UNKNOWN: Use this flag to inform genpd that its initial + * status for the PM domain is set to powered off, + * which may not correctly reflect the state of the + * HW, as it's unknown. If the PM domain becomes + * powered on during boot, genpd will prevent it + * from being powered off until the ->sync_state + * callback is invoked for it. */ #define GENPD_FLAG_PM_CLK (1U << 0) #define GENPD_FLAG_IRQ_SAFE (1U << 1) @@ -133,6 +141,7 @@ struct dev_pm_domain_list { #define GENPD_FLAG_DEV_NAME_FW (1U << 8) #define GENPD_FLAG_NO_SYNC_STATE (1U << 9) #define GENPD_FLAG_NO_STAY_ON (1U << 10) +#define GENPD_FLAG_POWER_UNKNOWN (1U << 11) =20 enum gpd_status { GENPD_STATE_ON =3D 0, /* PM domain is on */ --=20 2.43.0 From nobody Sat Sep 26 13:08:30 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 66DBB47ECEB for ; Tue, 1 Sep 2026 11:15:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261302; cv=none; b=svUqRUTYh9AoQXWiTMbX3e1OVRRr9mJC/7TTnGVm7HbOQ+5FsxiLW6qU0WT/hsOzt2RXDbF49INrCYeg39/nVs4jCFcSxyic/MG+AK8sIYD9DxkJj/IRi9hJ2Gm+hs3K9EQqhgAbYAetu9YSXJGT92bXAs3rF5BmBZkAC1zihr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261302; c=relaxed/simple; bh=XMnpwKZrNARuXZb6puLfbaYUBZOhDXc1LgZgzOf5kdk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aRj49vRmR18IKAlGKHm6b6i8brv3kIlG4QxCQ2OMPXc7xAP4rjbXfzR4tXRdoROCdOe6dZcd1LIBV968ltYb9nEG6ACxOW7etheWW/aMJ8h1Ncuxt7WvDcyocqm4zpt74r5gA/KQcKLiKyEpOmfmieqh88m1wkQTVZb+tlLJLGA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=hQWeNZEo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fxDnqXvN; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="hQWeNZEo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fxDnqXvN" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681AJekP2494574 for ; Tue, 1 Sep 2026 11:14:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=rKQIdRf0x1m 9XiJr/mtJMCpV7S0ghyR6HfmB0sQ4tyA=; b=hQWeNZEoayrCfa//QNEezARTFOn vwX/dlRWTSftRMLJMPQufjxr6nIccwl4dxUf6m87K2+3TCETs5sNFVi1EA2A1scL 5sla7q3BGFtPwI0e8U0KEojXE31LrXxBK2jvjCy++ZNA4ikqdXgEtcPNJ4sd2QYx RSLfYxmGHV8jZmxAXgl/KZS3jJ0v15+xew1Qs/fXWtPIWPwHWdaheiILiii0Lhci pMonreXTnYqbaf+rP7zZrZW+ob/aFImkU/dbc5FImBghV7NzIEYSwkQvDGklEK6W oattx9BDsdEaOZ2sfEQgubJo/eax4p8vD8aUN3+9OAqXV200dEnjodJKrOA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdqbh1rh9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 11:14:59 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-93771aa0379so1245571985a.1 for ; Tue, 01 Sep 2026 04:14:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788261299; x=1788866099; 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:content-type; bh=rKQIdRf0x1m9XiJr/mtJMCpV7S0ghyR6HfmB0sQ4tyA=; b=fxDnqXvNC8LXiepeZfwnaUnynIUscmWugFR6lZrKNSdpUzE0/OuOQkMtwov2n5LVKU LhKAZ9jM9My/E4uM4pK4L8QUhTNsuR220W2iFcWf3OYtIPJkl3sahR2xxI5ytFGCatni 2nYc3l42gMcMSu06mIUfvv17XL3lvZR8uLsqUSGaDz09i1z9Iql4CEzYKXdOKPHpLUDX UU1VYvjA/bKBwARDZndfqipsr3BU9sXaZ6Zqk9G6nqndrJBgy/93Jr7nAkYNCWvySY5J 8jOJdwqoHWxvoVmeLV1iI+xNpoXsSZAo3domyZLYIzrSLdP/2F8TqTMODQVAOGbKM1DP Y8pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788261299; x=1788866099; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=rKQIdRf0x1m9XiJr/mtJMCpV7S0ghyR6HfmB0sQ4tyA=; b=KvZRAMZtNnDG0ok5FuJpPyMadSYctCV74h1XuyJkuP6zsJJrypK1Y+971x54Z7k1tW KEIPfAJqxmrfXbHZ8x/x4VLFbWKWoz55Vg+sRtSNGtFqFghhC6sGHHcZJEkTZVEIpCeq XvDRIEL6s6qnfJHUdNZt8Row5COniC6Pe3GeDAVnfrXvvxsUsqxG5za8OP/4MWVbyPpt iOvvUOb32JxkcF/7MOggGKH0TDiw5uHQVl1LFxVcAzflRud01ItkMLC/A4awV0OdaNJo wg18JptofRFaT8rFIwjEeig5JGtvplzo+TFbvRCcgW0FbE+iin+6J5k1JwU38VcOO7XM wVHw== X-Forwarded-Encrypted: i=1; AHgh+Rp/vmP6WbkGHKpyTSVhl4MrVXnQwjD5+kCvOJ2O/U1vSYoueCkdCFZRzw/jonyPDAFZuHpw0dhgPEsCACs=@vger.kernel.org X-Gm-Message-State: AFuF++neqvjzgPXZTD6I03sRD8xnCVXMOB3H683KA0UtQCHL5eES6SqN jvgLRnkBj+yI4wgFwqlqV3BlOfgJ5CAPpMUPNeKkrOIaQ3DYquE8R++RHAjlm4mh1Lcf2vuYVqf Z0uVGReyVBHPE0pVWsBpqQ3pUynOdOAmk1c+wCroO9/gTvANwfDYU5RkCVNPeRlqNfF8= X-Gm-Gg: AR+sD10LJVmYOQuUUFaoqQ+yz0C+I3piMUveHXY8qfgONXidxthQ2jfEPdm2i38WTVr gYgIQfspRhCV5O2o1/j2CccUqvkYziPZWUBDB4wDzwKyhrupxnixpzxJbcqBQECXVNwK1NTxIbH FMuaxZ3fVkER+fwEqleLDz1K09DFvMuTVlRr5L/48IVT0FXrd1MFCxmoqii+ZsdfNVI0CZ06Bgk m8qdkQnhp+kUZlBnkdVH0SQMUyLp9J78QWP0dnG+/ue9PVlfhemIb8Oe87RF42o7isPfwLWKO2Y unioNPCvESYrPAIjvrmKd3VnlR2lwqqImNyzrRKPF7HKt2nvaxk+xg5AW34HSq6dez6n8+G1qAR 3AKUpZy1Jd04l8T07Z2tB6kktyBmDTIC5GgQsjJlwSDYpi1gePfy3uSGN/A== X-Received: by 2002:a05:620a:4086:b0:936:d360:2eb7 with SMTP id af79cd13be357-939480e7077mr922190785a.20.1788261298600; Tue, 01 Sep 2026 04:14:58 -0700 (PDT) X-Received: by 2002:a05:620a:4086:b0:936:d360:2eb7 with SMTP id af79cd13be357-939480e7077mr922183985a.20.1788261298122; Tue, 01 Sep 2026 04:14: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 a640c23a62f3a-c25878ba94csm380686366b.47.2026.09.01.04.14.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 04:14:57 -0700 (PDT) From: Ulf Hansson To: Sudeep Holla , "Rafael J . Wysocki" , Daniel Lezcano , linux-pm@vger.kernel.org Cc: Abel Vesa , Lorenzo Pieralisi , Christian Loehle , Maulik Shah , Yuanfang Zhang , Sneh Mankad , Suzuki K Poulose , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/5] cpuidle: psci: Initialize the PM domains in powered off state for OSI Date: Tue, 1 Sep 2026 13:14:07 +0200 Message-ID: <20260901111441.122436-5-ulf.hansson@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> References: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> 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 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfXyNhwRzvKhJn5 1Dlewalh6JCmXS5z/TtfODpnVUF5SYPnlZ+ZjDqYb5RQQJWmEMBPAhM1sHMjsvVoeX+1QSc+eHo E4zF7wR+bxxBw1rvWUw/dhOBf3P93hA= X-Authority-Analysis: v=2.4 cv=R9wz39RX c=1 sm=1 tr=0 ts=6a96b3b3 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=h7aNHqOhPKB91FvYUefsSA==:17 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=GddhhVl5-a8N4MGu71oA:9 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-GUID: zBzcdfCZvJOoxYSXfUj2lUMKziCTXWhF X-Proofpoint-ORIG-GUID: zBzcdfCZvJOoxYSXfUj2lUMKziCTXWhF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfXz65pYI4TG3uf 5S92EBYAaHKB78S/pmpp3ZsmFCk75hecXLmM+S6ylSAQ/Im+LgjmfhmyXb5DfpIij5vKU2FgX4U gqOUU491dN2wDSjDwNZPrgLg2XXiYOWHdP5pvdd46iWoQvqhDNS4gFOB5+WSr9m5nh9+PIuTBX7 Yy1ci/BkBDvfChuW6osJUXtZubo96VQIY7WOs2OqHkajgP/+MEk7ZI2H72qF90qzps+7GWVYQ4/ 33mACId2P/Q+ACiICu0BlcoFibEvxqFwEw+lBJOpGl2iDZN+F6JMovmwyosdKhvc6YTKsqE5oc9 GgcY46giYYUx6ezzVwtEzmYe7rC2RBWp60QLNpdaEXxBna5wHPvFcG4UQ9vQVodqF3IefoDNXnL z+1cERdp9apai3Ok1l+/iAC976porVfx+Xocg/Epe/Fs050bWmifGi3x45yQu0khmXjxevtwbAi PMHyn3eLLzTKPK2z8Ug== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_03,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 clxscore=1015 phishscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010099 Content-Type: text/plain; charset="utf-8" At the point when the PM domain and the topology are registered through the genpd subsystem, it's not really known whether corresponding CPUs are online and thus if the PM domain should be initialized as powered on or not. Instead this information becomes available when the CPU devices gets attached to their respective PM domain through dt_idle_attach_cpu(). This is a problem when using PSCI OS-initiated mode, as we may end up with a PM domain that has the genpd's status indicating it to be powered on, while it in fact may not be the case. In the less severe scenario, this leads to selecting a shallower domain idle state for the PM domain than necessary. A more critical problem is when a non-CPU device shares the PM domain, leading to their corresponding drivers not being able to trust the status of it. Let's fix these problems by initializing the state for the genpd's to be powered off and in the deepest possible domain idle state, when using OS-initiated mode. The support for ->sync_state() is maintained by setting the GENPD_FLAG_POWER_UNKNOWN for the genpds in question. Reported-by: Maulik Shah Link: https://lore.kernel.org/all/20260811-domain_off_ss3-v1-0-6a0a0fc023f5= @oss.qualcomm.com/ Reviewed-by: Abel Vesa Signed-off-by: Ulf Hansson Tested-by: Yuanfang Zhang --- Changes in v2: - Fix a bug in the call to pm_genpd_init(). --- drivers/cpuidle/cpuidle-psci-domain.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/cpuidle/cpuidle-psci-domain.c b/drivers/cpuidle/cpuidl= e-psci-domain.c index b9e4ad7d43a3..4d8c63d329c2 100644 --- a/drivers/cpuidle/cpuidle-psci-domain.c +++ b/drivers/cpuidle/cpuidle-psci-domain.c @@ -68,7 +68,8 @@ static int psci_pd_init(struct device_node *np, bool use_= osi) */ if (use_osi) { pd->power_off =3D psci_pd_power_off; - pd->flags |=3D GENPD_FLAG_ACTIVE_WAKEUP; + pd->flags |=3D GENPD_FLAG_ACTIVE_WAKEUP | GENPD_FLAG_POWER_UNKNOWN; + pd->state_idx =3D pd->state_count ? pd->state_count - 1 : 0; if (IS_ENABLED(CONFIG_PREEMPT_RT)) pd->flags |=3D GENPD_FLAG_RPM_ALWAYS_ON; } else { @@ -78,7 +79,7 @@ static int psci_pd_init(struct device_node *np, bool use_= osi) /* Use governor for CPU PM domains if it has some states to manage. */ pd_gov =3D pd->states ? &pm_domain_cpu_gov : NULL; =20 - ret =3D pm_genpd_init(pd, pd_gov, false); + ret =3D pm_genpd_init(pd, pd_gov, use_osi); if (ret) goto free_pd_prov; =20 --=20 2.43.0 From nobody Sat Sep 26 13:08:30 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A359C47CC85 for ; Tue, 1 Sep 2026 11:15:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261304; cv=none; b=Ay5A+er00f8LrOT7wZmLT3tJ9a3OkvXik/LJxHmed+NoDOusoqMorHBMnHEgNMULjDSMcd4Z6KV/GdCKXS/MpGUuigvkgoE76xI2LNU+5gtZEVQo/udLycUSZO6JEZIPCQ8G+SUpG5BvCOjrhjNiPF2l/MygukzZlXHgNqwxHxo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788261304; c=relaxed/simple; bh=9Vmbo987UH6aSDo9AUv09C8teHlN3++wQG7mQ3tzuAs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hh2AhGscAwX6um0MdilWweVcu7GMdPYx/xqLHPq/lVIzMAzz65+Dkvi3I7bmo12zRo6otDm5zr5uSclaAMoHaZcCdezQ6tY6PkeNUWeyaF3T3stVKa6Y25+IDsMSd+RVPIs/QaCR0QJs6JDOMqJxMw66mD4OIiKarTNnsxd7c4E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=m2kDuW+d; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DymQqzSu; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="m2kDuW+d"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DymQqzSu" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681AJb1v2141610 for ; Tue, 1 Sep 2026 11:15:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=gJ5qkITOsRm Pm47iY8hOfrhQuZlteW/MXIusB651n/Y=; b=m2kDuW+df9CWp69cK1vsSL83l4m J8yoIGWA2nMCTiJLrfLHaXt0/m94FOMcc7rlDKhsV9flj6eicozTzzjy1iBNoUpJ TgyMq5nc/vXjBGGjFWYd6aKSFr7eMvjfRmlwo79DBBRuFhuK9hRcyqZqfnmVEfAF OPNUH+oMJlwVjaYNtei4sIGXCDMnDsc1uVBrJWY3S1KBcpT3uqdMmd3PaF5XFJup RTxSyzARMzxOp7iNwhQN0LX/o5AKK/IFEMB0nWH+mjrCxkXOlydWtprbqWw4z2Gn W0urNonX0lRwa4F5sesfrwxGvqRFSyzNlnkQ3yQT7167rhPc4DA7bD8oDRg== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdp8fsy1x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 11:15:01 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-92e4f946461so798365685a.2 for ; Tue, 01 Sep 2026 04:15:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788261301; x=1788866101; 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:content-type; bh=gJ5qkITOsRmPm47iY8hOfrhQuZlteW/MXIusB651n/Y=; b=DymQqzSud2qBFIz5EZ9MTddjC+ptnB1Xk7GB68ZhhBrqaM5wmCB2+dQVOxfZ2+QZHA 86xCiqMoIMdx+BVYGA0pwB5j6oeWy5B3vL5s2R1rmb9vkLIumCWsPLDeVbTu/WzC2h40 qBnWFfRPj0HU40RZ7ZM5F95eIlxKwnh0EBDtd7QXt6UeJBczcM6voP+eUTOylaMSy5wz rxwsp4Aua1jlln/JFasYF0mJLZhzsfky+r0sx9UPEa97gEiogKQoTpNjxOSIzM6ZyCwK 8eVWAop53a8WsW/9DGxPLLXTy2NxhFRBeNNHbqJWKxOq8uppWD0pE5wiylqSvu7SoMxr v4lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788261301; x=1788866101; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=gJ5qkITOsRmPm47iY8hOfrhQuZlteW/MXIusB651n/Y=; b=LSjTvIQUQBZZYxDHMg8YiAP7D4qT9XAQTt1+VzGfMPuidWkWXHhVMz9d7EqXgQUEnU lXiPlNmFJ4lLidNED2v1XCVrq2lDdZ2xx2KFpSciHcc99cCiZuolQyuPWINhPPeOLRhG OmOYUOFSYYHLhULr2oZvu++BAuEJx2ci75KrROqeUMK4EPJJ8nYH6Smnn6abpJ9IfDKa GT0X8qI4KrJ2FD/LMPHGjIFiUDCDMvSEjkG+jfWTsgFXCOHu54T1Bv/ZXc5ZoNdLKGvX mQBlUmK3k2Wuh+8IEI2S+FYSqsPhw8/r27VzuG8+dCmO05uEJ1QidwMjShO7GBtA+dM1 d3WA== X-Forwarded-Encrypted: i=1; AHgh+RpwzVVAeiDNjb9+HQso42Kv07qD3tClACl2cnP0w3KGp4GlnT0QljLiZKmhUniU2Zi+KDacuCM7LK7vH3o=@vger.kernel.org X-Gm-Message-State: AFuF++nlh0hS4EKzRczbU8qhiYaMGbIyAjqOQq3l0dLkt9E+3ZDbQUal 4i8HTzBqo1kY1fs1Yja23P3Ermm8J04Lt0Qr1Eg6UKdupnjDB7TXaFNtkxhsO9LufXcVL1wii5S hC1rTdCYFrXXLc56OgUBd//Lbx86dSj2hfKkAU+iKH7BL9sHcg51bQnYXKXW/YDx6ZDE= X-Gm-Gg: AR+sD139U+RiyuepD2PD8ogtiZ5I1MEMB3GBhKUqHbqENpPMf8RdZE4g9zBCpbZhRYd 2MvIMGg42SBzGr4BNVV/TysnCWuHV1JeeF3g0q7iGaJHRCX5KaiIToXzk5lV6k71M+4n1532peP 2/hGTNZwzwpgMUh6d89IBhlCq4btdMo+Vd87Kgg6Aa+cX8zQYBWZjzL/Y+s1bh/bQ9xet/89SLK 1Nqf21YrDrMnXLRYJPom+0lSqfkbP1VLu7sU50Av/jYrtWL8kK1cT7/g+eVx1KhjMktnsiMzSmr xpWoh0n/Y9LF9dAFttI644NB/5B2oWehmWLvliBeFNkjeOKzkAv4WIyjzTUYDlG0O2jElY5GoxK tg++0/MHHDv5HOc1cfhvl7G00vkr4AU0Q7bw9RIGYVGjjopVTzdpb4ty7gQ== X-Received: by 2002:a05:620a:a404:20b0:939:3c52:b117 with SMTP id af79cd13be357-93947f8f742mr803386585a.8.1788261301074; Tue, 01 Sep 2026 04:15:01 -0700 (PDT) X-Received: by 2002:a05:620a:a404:20b0:939:3c52:b117 with SMTP id af79cd13be357-93947f8f742mr803380485a.8.1788261300582; Tue, 01 Sep 2026 04:15: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 a640c23a62f3a-c25878ba94csm380686366b.47.2026.09.01.04.14.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 04:14:59 -0700 (PDT) From: Ulf Hansson To: Sudeep Holla , "Rafael J . Wysocki" , Daniel Lezcano , linux-pm@vger.kernel.org Cc: Abel Vesa , Lorenzo Pieralisi , Christian Loehle , Maulik Shah , Yuanfang Zhang , Sneh Mankad , Suzuki K Poulose , Ulf Hansson , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 5/5] cpuidle: psci: Move initialization a bit earlier in the boot sequence Date: Tue, 1 Sep 2026 13:14:08 +0200 Message-ID: <20260901111441.122436-6-ulf.hansson@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> References: <20260901111441.122436-1-ulf.hansson@oss.qualcomm.com> 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 X-Proofpoint-GUID: eL-4qREwQHfsHuXkJOSiGqN180_coufm X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfXzEW/dFVVgXHn Js/Anof1Qo4IPIoAEwl5hF0q8Q2A2k4vurZ+UHbTACL8xRKiVg10DNa013OfRHa8DrTbBqjyNN4 AUQMNIIMkeLx9XyeUuZq9mg2jw/Grnk= X-Proofpoint-ORIG-GUID: eL-4qREwQHfsHuXkJOSiGqN180_coufm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA5OSBTYWx0ZWRfX1aDExXjjp2tn I7SwauOHALVHHX8FDGoclokINO/W3SCEIblAU/H1dO7l2m6z7DRoJwEDLgASkNExJKsSCo/y9q6 k2Q8FE/vNDcOuv4qbrObiKdFLnLAVooM+Tv7zlgCqPEveEWko7SEMB/tMOSrKsT567fSCQBuhwv 80ieQDi99MAZE4d5ib0nVLkX9ref4vmFDORB5rpz2PbLM3jYVJIQMl5I75vY4z6taaDhdxQO3cu BnJdFgORpeLyCrggvoZdECRaCRwCwWXb36yh+XeVYibGtB++UqU49pp7uSbj3u/VD1YcWM/gJa1 YFufJrCrqfAU4PHLJZzupeYeYgvZOuRxRlgi+NwxIeqlCQl4tRPlSA1VhoTByLElEdpJ+lI3CqO wcxNs/6ECGYUi7Ccx/Ohs71OxA5WBF0dBssEp7PjIbuAcapU/+2Pa8BeyTzk8PMkIcqckeCxUzD d49P8FopDEYRrO4sZig== X-Authority-Analysis: v=2.4 cv=BPWDalQG c=1 sm=1 tr=0 ts=6a96b3b5 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=h7aNHqOhPKB91FvYUefsSA==:17 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=mXaVKpwKMN2Bo3EP8aQA:9 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_03,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010099 Content-Type: text/plain; charset="utf-8" When using PSCI OS-initiated mode along with the cpuidle-psci-domain driver it's of great benefit to attach the CPU devices to their CPU PM domains as soon as possible, as other non-CPU devices sharing the same PM domains depends on it to allow their devices to be probed. Let's therefore move to a subsys_initcall, which should be soon enough after the cpuidle-psci-domain have initialized the PM domain topology. Signed-off-by: Ulf Hansson Reviewed-by: Abel Vesa Tested-by: Yuanfang Zhang --- Changes in v2: - New patch. --- drivers/cpuidle/cpuidle-psci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c index b250d0dde760..0187d6a9096a 100644 --- a/drivers/cpuidle/cpuidle-psci.c +++ b/drivers/cpuidle/cpuidle-psci.c @@ -479,4 +479,4 @@ static int __init psci_idle_init(void) =20 return 0; } -device_initcall(psci_idle_init); +subsys_initcall(psci_idle_init); --=20 2.43.0