From nobody Fri Jun 12 22:51:11 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 429CD361667 for ; Thu, 11 Jun 2026 19:59:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781207989; cv=none; b=crUaYUmzxGcCbtgVCDaN5xJDYLW7ShCeAhBK99TFrUdIHS56qFhxwKNJNLaud7UaQeVS18YUXityx5xorqdrhBKXALXA9SYE2Bw21EdzVjSYcXi1jfST4Tn9+VgfW6uQe7wn/8K/11XiPFeaMXX3JtBT63yLT/BO2NJQ7hmIuvE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781207989; c=relaxed/simple; bh=ZRTeKE9L28SSClA6R8MmhIQyoSwY0qQWWZ4jOPVVcJQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ktV52Xdh59kgJ0TMYXT9QDZ/OkdySJ1L1IYclCCSrB9WrCaF9rab0a/q+iJa2elfknGtHS+hcQHJ3srYey9PFfMYZwV5DDwXZrm4lHDpAfIzuh0iSkq9TOvRhf2y6z5ga86iMWchakGpyhOHjF6T5fM2S2i9eG6fHAwjPqGl2Uk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=OOI2bveD; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="OOI2bveD" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-8422a92b6d6so169786b3a.1 for ; Thu, 11 Jun 2026 12:59:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1781207987; x=1781812787; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xUBSfKa41ClVExPzLchTVHN/6r9ZIx4CRl6lZXXhjbE=; b=OOI2bveDoiv8/h0YLhB9U2UJL6soQaNHBqmhAXBYbn7Dk/c76quUMaG4KJgoH66rpJ hnO4Sj1qF4hSUPcFrfxbZNBWrunhCjqJR07mmYNO/NfGTgfOmV4d5gf3YwXT4uWwHJvF StAjDFclePk05ECyt6L7XIPR+oJ4O+uHCXqDRs8GmWItvTzRAY/0CLJcI0typOrnxsB/ td0DMJ8XmM2+WGFTfwdbBhK6RS8D0lz8rUVQHyDoiCS4YBcqj3oqRLAuk9UWp+fgm7Xi qkik4i7hlec+B3jtOyworoGck0lTo6hUyIEt5Wxsb+a9gh3y4jHmvUXIPQwuEPSMETaT 3G+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781207987; x=1781812787; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xUBSfKa41ClVExPzLchTVHN/6r9ZIx4CRl6lZXXhjbE=; b=VUhBNFmIj7yShjqQh+3cRA2w4GNp/CZbj8GL4H5jej3dHwSYUYY758SfUShEuMIKCZ 6w6zb0XnU79MYRCw8OWvYYUfOdXcy8xxnfp9BYMr7GBVmNwhKmm1TwiAKvJwqTP/tG8f oNHrYuZZTDX/r9jrV4KeUQpqgwoVZb/6+mTNd4nI5wCRa2jEXGe1Y0xkHxDS0YFZG5Sk z3b+4CUF3NKmzrE2hCdaPBURY2CCpUVicDUkrvnXkDhyemDVMSZTGQyqa6tJaCjHyOhx WBHLIFcua0vCpD5ZMUPysJ8c/I1sKezqnt650dOC6h1WdEmnxyNSOvo0vq+O2uUVebD6 tumw== X-Forwarded-Encrypted: i=1; AFNElJ84w8+mmUuBm7rlLy5aFJw/n4DDxFNnIuAcpba/jjjCQVxJTjkUsmc3qOJBtuSty3JXNr0VsPo4pJa6mRs=@vger.kernel.org X-Gm-Message-State: AOJu0YzASJMGhajcm0EArsgY+15idvyMH63uJREdOXS1v28jj3qA1xMo ItKgYt9q0W8LTQDqPcPC7xGzjcZwEZivYP+M4Cv8VaQhGdxvP4h/rh6wHKR+s1PN1gg= X-Gm-Gg: Acq92OH2U4QDet2JNbymXTiQ4TOSzja6i4xOocP2Ymq3+7DiKFudxbR3XTlcPJkTNVa WcSXPfOs/rThODGqE8CeecqcN4WVlE5x3d+I6LnQ93J95zZYTVw40+E2XqWtsaCG26IQk1yOdnU 5B/75FSEt6Xy/GnOIdkM91ZT/oamC3qTscWHlT+w7C4DTlg3Cc0kxoRONHt99hwT59cA4UA2l3V w3/CixVYNz/TcH/EvjwN0LtvP8AgAEX3cPFm7Yl0m5qsvTriqLW+tZTcIb4Fy3TL5ThU91yEa1/ aQOecJP3lxiwme1ktF6MlFFKAQCvnFAwQji7/ZebY2e4UNyNvsotBn94DelrCJLIh3dP8gJnNYW Ws8ajfaDStUSy+itEjjOvB4SjiGMgrtRwHipAve07u9TSf0CfgpgnygSwh4UgDZNQuz8RvCeYvV syYAA6HrnWCt4bO9HJCwEYXAWhjWy6yhA= X-Received: by 2002:a05:6a00:2395:b0:842:499d:450e with SMTP id d2e1a72fcca58-843497500b4mr141035b3a.20.1781207987606; Thu, 11 Jun 2026 12:59:47 -0700 (PDT) Received: from localhost ([71.212.202.210]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-84337b8fbdcsm2873353b3a.6.2026.06.11.12.59.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 12:59:47 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 11 Jun 2026 12:59:37 -0700 Subject: [PATCH v3 1/4] PM / QoS: add flag to indicate latency applies system-wide Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260611-topic-lpm-pmdomain-device-constraints-v3-1-75d69438518b@baylibre.com> References: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> In-Reply-To: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: Dhruva Gole , linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=907; i=khilman@baylibre.com; h=from:subject:message-id; bh=ZRTeKE9L28SSClA6R8MmhIQyoSwY0qQWWZ4jOPVVcJQ=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqKxOx8MPc4peo/m/A+4QQzFeWFqW29a9qrnBGl Eon8REsyAaJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCaisTsQAKCRBZNxia0/vG ZfSXEACGicZ2l6RS8eZsh05W0BOtggrmSgo2owTBxVFjclon4LzKT1SsxLR6L8zj3siE/83Imly +GfCVfFe7Xr7lTX7e1PVRM0rywxpBIr56nDrWfJ9VXs8vvqft3mxviEUKP7hJbArpuuJALBeqVu KdVm41XlqWtAuGPKFRDn7I7Y9d0fWgrqOX6TCIn+yTwncSu3+Pb5EaTsCSQlacwo3G/n4pDir4Y LS3tcx4RZ0lm5GugjysvNpnBnfI9IekNkenIyp0y3s4Xwlihn7xWerWPCjEgjdU2N+qtMKz7J8X lxCX2ImNr9KtzKpuz4Mt3eVowWTtIUTuQY/fvD9JSwTEFo7gZDXRbTjXEjEgq+IKbiOMaauMeqR rGMZq1gott1141LhlU4+qT+Tyab63rbR+yjxpSuNj++sMKUHqom29MSDYviXdqZzcMnhb1TLEVn LtEPpGUJwPd9e+ngPZPX/CQzVlfGb26hD1LYYrW/2vN7dTSWt8EEGWhXAyOwgokBcfuk2FOOmVK LgELvk+qLpveawp6KGDxXnJ7WIKA9Z7rBfP0rh6RJjMMw5Piif3uJGSjBH8rv5yHtU+UGaoRP1l X4TwY1mQm6FMWTJNvC1bOpBPGs4Jb2s595jk+vJdxyM21hDq4m4g40+kB3JOTYBSKacA6dV+4WH 3EPcWdBzaep6+uA== X-Developer-Key: i=khilman@baylibre.com; a=openpgp; fpr=7B87460E16927FA9F5BFF10C5937189AD3FBC665 By default, the QoS resume latency currenly only applied to runtime PM decisions. Add new PM_QOS_FLAG_LATENCY_SYS flag to indicate that the resume latency QoS constraint should be applied to system-wide PM *in addition to* runtime PM. Acked-by: Rafael J. Wysocki (Intel) Signed-off-by: Kevin Hilman (TI) --- include/linux/pm_qos.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h index 6cea4455f867..aededda52b6b 100644 --- a/include/linux/pm_qos.h +++ b/include/linux/pm_qos.h @@ -37,6 +37,8 @@ enum pm_qos_flags_status { #define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1) =20 #define PM_QOS_FLAG_NO_POWER_OFF (1 << 0) +/* latency value applies to system-wide suspend/s2idle */ +#define PM_QOS_FLAG_LATENCY_SYS (2 << 0) =20 enum pm_qos_type { PM_QOS_UNITIALIZED, --=20 2.47.3 From nobody Fri Jun 12 22:51:11 2026 Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) (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 B7ED53630B5 for ; Thu, 11 Jun 2026 19:59:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781207990; cv=none; b=khsX+1FKkeiAfL4PemJeHsYfCGbUL3CzTLNOMy6Or36lvqKnYJoJcXIwNmOrE4hJMI/s232QAqjwh4HAE6hDST3SGuRYMR/KJNKQxljzBbbn8KbkE8wassagnJnIYyNvTjTN27dO+dTTLDR4XmCZk0AJk2z/ywgSwt58emtui2A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781207990; c=relaxed/simple; bh=wW5o6kueGuvhvd3UD/Kt00baGDipOnRqddqrZDFczSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hvDK3AqM6Gj7d/L7aFU+/3j3adPkp1USdqT4Y2M/bj+8bmPdSWHFNf/IWPEPXO0raJBSN//PZvhbCPG2FK0Xbyy6qQJv3eLciPfCxfmp0Vb3H4qFT6+Pu0xHEMgj094vk+C1AFhpyZtn7TzaAKAWgreSsfF8eGzgFyeA6EfMPIs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=ohmUNezi; arc=none smtp.client-ip=209.85.215.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="ohmUNezi" Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-c85b73ffb52so94289a12.3 for ; Thu, 11 Jun 2026 12:59:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1781207989; x=1781812789; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3jkOw1xSn/8fTeRN4svessHYNswGeWQKgGSfT5tn/SA=; b=ohmUNeziMyB4j/a1BVtnVU68pXQdSCe7y0M6LfsTitAp0GiTPwrOOrl98rbHisGWdk 2rskG0daykoKhDFsj588S95WM/wGE7UfYxHiso8w6grrCKDDUTdlt4a/CoqrEeHWwFZE KfxZflzuFJEO+etqx9QDE5pHEyefatUPg4Wp2DhmQ1kJsve595sUDF6YwyzAAESECFaK ZrIPf4+waEdfLOc69noo3hpmrloRoXXzAs8k/p16WVqFxo+xzCgG9rDTcQ4w6KbAWkhd Oigb9gFA9k2cRb6CIoTUba3/OcZxxOt9CSyVxZdpaqapqPwzz/pSrl5JMvGqlwXFqz6m K7Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781207989; x=1781812789; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3jkOw1xSn/8fTeRN4svessHYNswGeWQKgGSfT5tn/SA=; b=UAzo0E58QdKcbjekZgP3OwVgNyS76gdnyaDloVo95zBaq/80Re5uiOWXtKAE1NfAIZ zVmAejIHIf+sfWnVv/AFGMsJoiE6PIQE4R8FGIy8LqpXeqGdNgLU9Llzd8OZrIoFoKVK 8op6qg9O4nkCxedGL9MsdXKlWRUWgRdZZgD2zvD7qgVjFFHpbEGzn+7w54NQcVfqU57a yt2B+NHZy6LEHtoHjgTJOHQ8DbW9c1Z1QnBB1+OQ3VWJfE19CAnvlpV6xamWRPmavqDt LAL4fVja726J38cgYnrzChZFJMbarfCh63UPiSDkP+PztMEkX/vruHV+hLh7hfKosRoI uSUg== X-Forwarded-Encrypted: i=1; AFNElJ8+l4UXVpbfKJodKnsDZl3OJ55Uhv2i1nwS+b1W/lgmdKtWiFhCmx+0yk2VSt3xchJE37edeaKlbW+TZrs=@vger.kernel.org X-Gm-Message-State: AOJu0Yz713SQd25lO1EOq0C909QMJnduUoLV3jHXaCPkRCnJSiLCEHt9 tNKRaBeBeoEQj0Yi1ezmiJxJWQYzXyKaV2RwaBDsUllAGkXgaeOYnudLPP3XSqJ6mj4= X-Gm-Gg: Acq92OEDhU0Z3o1Egjl+JJujb2YK4mEWTMyIozmb4GSn6ELGiEzpcPGxCm81BVjs7YZ nA7+TdfJkqy0xHUF8Qgh4VSoavRDYIjSUlxcc7neyyYHGQyudEZBWwVdY0xWOrlkCqWLJ/nMl0/ Jj3nFKHbBgC1wht6l6PI4z4VcbxcllKUVO9UCR9Oi+7JbsSTUJsjl2/ptsNlhVU9b9rGxQCJK9G vlGkmIkQaWuDsijlbWxEXxGTWibYiKHV7RwK7Ic5Xoit+xfIV98gB+79KNsr3V7djUkADkiKLZt aMERIzPAWIBh3C8FR+w9gMsk8mRaZCK+7854bpKaANErsHyMwkXDqDtaH6SNFTAWwKwdjX3FfNF fmF8n7fBlLKUhI1AChfAfcVE1X4xVnINyfVylwocnV7gw63BZF79CqqiULmkptRfWR+sGGc2DOi mpimT3hllb4gsbIMuF8Gur X-Received: by 2002:a05:6a00:2355:b0:842:678a:a7dc with SMTP id d2e1a72fcca58-843367c7f43mr4662482b3a.2.1781207988524; Thu, 11 Jun 2026 12:59:48 -0700 (PDT) Received: from localhost ([71.212.202.210]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-84337bb6ccasm2925711b3a.16.2026.06.11.12.59.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 12:59:48 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 11 Jun 2026 12:59:38 -0700 Subject: [PATCH v3 2/4] PM / QoS: add lockless read for flags Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260611-topic-lpm-pmdomain-device-constraints-v3-2-75d69438518b@baylibre.com> References: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> In-Reply-To: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: Dhruva Gole , linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1401; i=khilman@baylibre.com; h=from:subject:message-id; bh=wW5o6kueGuvhvd3UD/Kt00baGDipOnRqddqrZDFczSc=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqKxOxTdU2oD6gXzE5TIjHzK0WJp2Y0irGO8n+C PbRP94fJyaJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCaisTsQAKCRBZNxia0/vG Zd+7D/9YFQE7PNh1QpL/O/mA3Hs7Zxac7AlMAwna74cHgZgWW8I8TvNgOs3VFjN5fP4npCDUdTp cWgzuiqfyjzj6EF0IftPEaZQwt+D0Neb4CC8AGqQGxLZ0ehvCheImRWuM7oHPVQF73UUACecG+c LZqbKLSrzpLE+5f5P/LhUz7NPlI+GL9AloVFnyZ5mYzSztoIv9eAr7nxPzaTJTxxkBNhPVmcUGH V715CTayIx4VAE1UmFHnXc1rAgKMA2kevNeX7TLGqmlXd5UIEopsZEIyi6MDxTC2mk/IPub+pzk K7fRV0u/LSpLPuKxWGmah4H74Lo8P55z2tS+vsgOwhsk9NiKXcXtY2tM07LJLjCxNMNFakrBh/q zoFbxm+QKIGRtjFhgN9aMguzlT6MA75rCPcvVNOpsvCX4kCZnjbOyvBKGXwhTJHF/vgXJSGxJf+ Cr8OI4AmtJBrt/U5tfZtT1xiK8ma+f9CwbQFteo/sSUb6LIlNTftgpLrCc/US6iXNoPYriyYRVU NHlBVcfixacb2o6dcImCUs+iAwLxipEe3d7duC8TxtDNnaAF4R9tDrM2Oi8TgG5hYoHfmo4fBd1 0D/PsCnRplNJywIJKBlFJYRpu7PqlSSYJswuzPZbD8O8fray1DKHrMb2pz5iBNhxMoOIzzIc9uO DQNb3A6uVHtTIgQ== X-Developer-Key: i=khilman@baylibre.com; a=openpgp; fpr=7B87460E16927FA9F5BFF10C5937189AD3FBC665 Add a lockless read for QoS flags similar to the lockless read for resume latency (dev_pm_qos_raw_resume_latency) which may be called from atomic context (e.g. genpd governors running under a raw spinlock or in the syscore suspend path), where taking that sleeping lock would be invalid on PREEMPT_RT. Signed-off-by: Kevin Hilman (TI) --- include/linux/pm_qos.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h index aededda52b6b..439a9e779d81 100644 --- a/include/linux/pm_qos.h +++ b/include/linux/pm_qos.h @@ -219,6 +219,12 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct= device *dev) PM_QOS_RESUME_LATENCY_NO_CONSTRAINT : pm_qos_read_value(&dev->power.qos->resume_latency); } + +static inline s32 dev_pm_qos_raw_flags(struct device *dev) +{ + return IS_ERR_OR_NULL(dev->power.qos) ? + 0 : READ_ONCE(dev->power.qos->flags.effective_flags); +} #else static inline enum pm_qos_flags_status __dev_pm_qos_flags(struct device *d= ev, s32 mask) @@ -300,6 +306,7 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct = device *dev) { return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; } +static inline s32 dev_pm_qos_raw_flags(struct device *dev) { return 0; } #endif =20 static inline int freq_qos_request_active(struct freq_qos_request *req) --=20 2.47.3 From nobody Fri Jun 12 22:51:11 2026 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) (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 246CD366541 for ; Thu, 11 Jun 2026 19:59:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781207994; cv=none; b=ioNYkkufx1ibt2SS+clkKC3biCESwdA0QL2CUk728s55zCr4w/VyRLE7OVN8cO7AF4ADXtEu7iZHy5Os3SAozxm8aQussbpgvZiZXcvGOQAPCal1o6VnSveQVHeaiNBgqwX86/NfrJw02rANW0HtsQWiUGzLdKFYsOZXHt2s9oA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781207994; c=relaxed/simple; bh=lSghmLcBqOaXz+e5q1UZsb2LiJb8cgQOzwadP+r59NI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Tssz9S6hzCNSHmZGlVV9WMrYnrw4ei9/5Cc8LWDkL7FG2ZzY5sFKh2oUofnSp6M0RNzcRjwd3JitsJoKsz3ogOaKVqXyzXhJ8enBtiCIWwCfByCv3TurgqQvqinswKDY42OC2MU3yxR6FEwpGc/3qGDrqo4K74e6NW3dpdU2KiA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=RTvrFZif; arc=none smtp.client-ip=209.85.215.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="RTvrFZif" Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-c8585cd8400so59721a12.3 for ; Thu, 11 Jun 2026 12:59:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1781207990; x=1781812790; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rSIBejhwHlB5hEk0OQhpOZoYtknjNxZToohEVhY+Ui0=; b=RTvrFZifTiFApCPUq1yM+TSewlLPdDvOXmHW0FYFhoQ8YF6fTtGuJD9jyQALI9OzUx kXXJqays5ntRl//k2RofAtye8X4SVfjg8oAEqhgQmileaGjyvppYsA0O15g5GwiZwxFK WwV2i2UiSPSMhy1ci2gltALc7CMsYlaTpkIKg3uiDGT4UmqqUbsfafJzGys1Ym7++STm Aq5CO+Vc+6CvEWo5kBxBq9TM9sTaJ3iShNcdn1wUnQsxH5Yd8ogAbRpI7bsML2SPsAd8 Rr/0vZzuqVsX8wbShTrL+3cHfCViq1MNPbiIOEwT4lKMrKcf05RxALSEi7eUo3xyZMJA vKXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781207990; x=1781812790; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rSIBejhwHlB5hEk0OQhpOZoYtknjNxZToohEVhY+Ui0=; b=XztNKCubCXtKQXxVk5AGoqwMwvT7vXxcrvjSgXH6b7MnZZJMRe1K9MmdG1h5aqEO5X ee8//ZeRFuQe8DJ3yfkKEvciKimjXJ22uhla4RHtpt+NayQXfrfOxb0FT/GdyrGnG2GQ 1gLofviL3lgF41SR0KDyGy0QJICUa7L6jgzTKT+sAkWFBfeQUlAXcdzwwMCVM4GkNXLp BCoaOyscojs901a0t0lqU20BEmccCpawp+6IPyAeiDzLUDRKY0vAZ/inQ3jV1pCB02bR hY9wbx6fSNeD5cfVjZz3h2nd6mEgdo4GolSzfBC72p59+H/cIS8nQOfGu4Cd2i35S8LM 2qEQ== X-Forwarded-Encrypted: i=1; AFNElJ+IaepKygrBOdTlmTIMQyte4SFKCPWEp5M/nqd69iQtmfRKU4eio32U71HPaCgcpQ/pSCSMoZy5S1sMvPQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwEtxRkdZR4K33dHbnQ6gvVQbnG+MN7yWy8ai0TxsJ/DXeT9AKV uXOxeM/wdytnmvSnPegZGwAaWAXxo1qk1aQ++UtbdqRIiFi3MjguxIvi1/lsxy1Xzeg= X-Gm-Gg: Acq92OGCtrRZZB5b+cpTrA0PYkx8lRYndLqvHpMkR259ACihwjMe5rPyeno0WwVxq9o otK9fNW+VdiojIDrDVM/CurAyoTCQMQmg1/DCb5TblRQTwgFl0oalWdtX9KaMbjtGkgV6/ZKqsx hmfnXL7npaktwqbcwldR27i6O8X8a84cCfph4XwpRO7Swm5sg0y3RtMe2lE41R9+TIYa4tWkDNl XfhQVRoqZTnhp/rCCwC0uBhNerOSil0slAkIbjHwhFtauRdVmpM395EgHa/vWysDmeTrEXH3D+7 dIGRW/7GKns5Qyd36mmGam7ztVksyv/Qiw4CQKzoqRFtVbr16lOdJ3k5QodALO+fi/LaEfQfTRE r2K5lGK8RuYiUG0C1xFTfyMwBPULuiv8+vv2inVB09NbyKddyo1uW94OZ20dbkVbxfQiM0PO4eP xCyPMef59W9Ha03n8RzxUt X-Received: by 2002:a05:6a20:c5aa:b0:3b4:85db:1bea with SMTP id adf61e73a8af0-3b5e312f496mr4348060637.5.1781207990522; Thu, 11 Jun 2026 12:59:50 -0700 (PDT) Received: from localhost ([71.212.202.210]) by smtp.gmail.com with UTF8SMTPSA id 41be03b00d2f7-c8661a67603sm108363a12.0.2026.06.11.12.59.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 12:59:50 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 11 Jun 2026 12:59:39 -0700 Subject: [PATCH v3 3/4] pmdomain: core: add genpd_for_each_child() helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260611-topic-lpm-pmdomain-device-constraints-v3-3-75d69438518b@baylibre.com> References: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> In-Reply-To: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: Dhruva Gole , linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3638; i=khilman@baylibre.com; h=from:subject:message-id; bh=lSghmLcBqOaXz+e5q1UZsb2LiJb8cgQOzwadP+r59NI=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqKxOxPetHP8BcNIvaCryjnp9l8y1hEXu3m26eL Km/RwGYX5uJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCaisTsQAKCRBZNxia0/vG ZewhEACBlTA0kXOXG2xitas1A4XbnlYIFN9Udx60Tu1BdRAwDZw9FwAsP3cO8zGhsnp157iwRRc 3Zv4YZEDfVGybCM/3Uac4ysg9iM93r/NwibDnJ8WoMX39sY+5bpOuzbDOipaT/NytfFH/9id2zY yVaT1ctwrrBooVk3CzIkD7sbxhrT0TFSlqZuZfhwp0Tjaniy1koJGILaxbJA0shlSxg3xf7BhNA HnYdz7FPpX6adu/S+KmdIfOwurAtQm9VVyppY0hsjaDCPBpxc9EX4WHuOBgb7Ux+V+z63JZyEZw 121x4IhgEilMNtJNWqxSnawM/s2aMLP1B4H6D16WE5FcQGrRHMUr/EbVIC/QJpbvh5zkWC3K1S4 LMDgmFUbztRQZsbnBZiV+NoMo+z0/wZQz7o50PQC8ok3WSFvv1U78cJp90Tni32Jk5t+LF+tzKX ofEAq70UeTPZrok6fzxey0DrVlcqd1ajQObYhGLBtzvj+rrFi1+A8idBlK8SoeQ4fQKM0WocpLm 3yYNDcsg5x3LEun0YZfIxvRrV9MN51+R2Jrrhw+ar3qfAqiHLMuhloCap0R/7miwRfPdK/fAjTs KZsX9yDpJHKIhEA8ex6fhqQHZQAIqccaW4Uc4H7/lLL0lLt9RleXMv6uLyy+0LXs7mvzd05GW36 CjtHzFc8mSNs3LQ== X-Developer-Key: i=khilman@baylibre.com; a=openpgp; fpr=7B87460E16927FA9F5BFF10C5937189AD3FBC665 Add a new internal helper function genpd_for_each_child() that recursively iterates over all devices in a PM domain and its child domains (subdomains). This helper is useful for governors and other core PM domain code that needs to examine or apply operations to all devices within a domain hierarchy. The function takes a callback that is invoked for each device, and supports early termination if the callback returns a non-zero value. The helper is defined in a new internal header drivers/pmdomain/core.h and implemented in drivers/pmdomain/core.c, making it available to other PM domain subsystem components. The first user of this helper is the cpu_system_power_down_ok() governor function, which uses it to check device QoS latency constraints across the entire domain hierarchy. Signed-off-by: Kevin Hilman (TI) --- drivers/pmdomain/core.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ drivers/pmdomain/core.h | 17 +++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 52ea84e548ff..347bfb7db75a 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -24,6 +24,8 @@ #include #include =20 +#include "core.h" + /* Provides a unique ID for each genpd device */ static DEFINE_IDA(genpd_ida); =20 @@ -281,6 +283,49 @@ static void genpd_sd_counter_inc(struct generic_pm_dom= ain *genpd) smp_mb__after_atomic(); } =20 +/** + * genpd_for_each_child - Recursively iterate over all devices + * in a PM domain and its subdomains. + * @genpd: PM domain to iterate over. + * @fn: Callback function to invoke for each device. + * @data: Data to pass to the callback function. + * + * This function recursively walks through all devices in the given PM dom= ain + * and all devices in its child PM domains (subdomains). For each device f= ound, + * the callback function @fn is invoked with the device and @data as argum= ents. + * + * Note: this function is inteded for use by the core and governors, + * not for pmdomain providers. + * + * Returns: 0 on success, or the first non-zero value returned by @fn. + */ +int genpd_for_each_child(struct generic_pm_domain *genpd, + int (*fn)(struct device *dev, void *data), + void *data) +{ + struct pm_domain_data *pdd; + struct gpd_link *link; + int ret; + + /* First, iterate over all devices in this domain */ + list_for_each_entry(pdd, &genpd->dev_list, list_node) { + ret =3D fn(pdd->dev, data); + if (ret) + return ret; + } + + /* Then, recursively iterate over all child domains (subdomains) */ + list_for_each_entry(link, &genpd->parent_links, parent_node) { + struct generic_pm_domain *child_pd =3D link->child; + + ret =3D genpd_for_each_child(child_pd, fn, data); + if (ret) + return ret; + } + + return 0; +} + #ifdef CONFIG_DEBUG_FS static struct dentry *genpd_debugfs_dir; =20 diff --git a/drivers/pmdomain/core.h b/drivers/pmdomain/core.h new file mode 100644 index 000000000000..7061891d31fb --- /dev/null +++ b/drivers/pmdomain/core.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Internal header for PM domain core + * + * Copyright (C) 2011 Rafael J. Wysocki , Renesas Electronics= Corp. + */ + +#ifndef __PM_DOMAIN_CORE_H__ +#define __PM_DOMAIN_CORE_H__ + +#include + +int genpd_for_each_child(struct generic_pm_domain *genpd, + int (*fn)(struct device *dev, void *data), + void *data); + +#endif /* __PM_DOMAIN_CORE_H__ */ --=20 2.47.3 From nobody Fri Jun 12 22:51:11 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 E1A3B366DC1 for ; Thu, 11 Jun 2026 19:59:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781208002; cv=none; b=PL59xIrT7qG6k69zEyss5gDx8YGQQm2EMwiZtN2QOjU5WjbtjMojwCoTc5yUVIiMlG1mjrw/+RLQS8j9AmuvFpZlGzKxpAKiCxDl6F9IXsvUSMc4MVDnf1ie2YQY261DhoJAwEL7k/hkyK8P/8akHOOIB0MlRqpuwrHaqNwlEWs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781208002; c=relaxed/simple; bh=hee69kKQIxporq4hpHQJrmvt+8VHKRthHchQouUgNHE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MEV68E56WXANmaFazdFi+9YvjqAa8cBb9NPInEfhYUO0rYHMpSiXVzRyd04GA5vKJVlQxEVQJc4UDufzCAJ2ZJmNrphwUL1x7/vT2tp+HtUhcG2jw72x9f83I6dIR11/21fcY2fUJP3MKLukQZ/c7hmF3/4tFQBQmlMGjL/3de0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=Csugm78h; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="Csugm78h" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2c0c2a68d01so1916765ad.1 for ; Thu, 11 Jun 2026 12:59:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1781207991; x=1781812791; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Y5t8wlz8xh6A0GblrRm2xNMS4IUSixAVnXUOD2UoJaI=; b=Csugm78hBqe0ytIB/etrliQyBsjClCA7/Rlzzkd8KDY8RXZLKE3aUo4f64l3lRCRAB 6HkJzsl5GciEfGeghUNvbD9mtncrzNeV6UuHNgrDOH0yZFjauu9X4FuxH/MhdraqkQb3 hZ5HzHBKM+2wiy/D7AtWhLWC2rDoU8TRbH81u4fHo9m/H33jI2UZu2RcjPqr8prASIBo lNhpO6+xI742myHmNB1OWVAH3VyBU7rre2UXCSZbLmrVd70LEZJdu5tTfYpFYWYrCyb2 JyblmdeLu2zFJFOWzNlQJJ3WWnmwSOVKs1C7xMjKGpZiW9b7sJVG2Df6Kmyg7RTg/kFj KaUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781207991; x=1781812791; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Y5t8wlz8xh6A0GblrRm2xNMS4IUSixAVnXUOD2UoJaI=; b=RtxdrZ1PimKzYhxQA2KJMv7v5QWFghvUJH8ioGofSuu3Y/kDS0KX8HhgmdyNxImu+j P1RruVYRMn3RLm70Ai5SMCeOn20iJ+ix6TZujsSHhfEldM9VzBkcEAAnWjSLUGFG4y4b TxoRASGfB505Bu1thzL85Um+M2xc4bzlUTtmgjZSiVuD7CjXo603AbPVQQsqesNlNeKk 8MFOMVDHzsK7tOq+Q++63QBFcsYFIad0wmYKMXrkOY3s8yrGK/tsjtDVEYAdjv/EIiyC wXUT78E74Ef1XDNpZR8n1u+Vfarraruaduzim7IJbJk8uHSX/lDfAWLKvfd+Mhork3id acRQ== X-Forwarded-Encrypted: i=1; AFNElJ+yR+D/lTHoyzFBNbpkSWmZQSbOC5OQbYVPjQR/YZV6LoL0z9RkBC51ngUA8/12nPwY6O9RE+U1SoZu7xk=@vger.kernel.org X-Gm-Message-State: AOJu0YzhDtTeGmFrXU5ar6LUKYyMh77ieTlKStpBF7YwJsB0xTJLoM7H 6ksXOM5fWqJ975Kaaw2KL5u00ZPblZAI1/rSfcstyyescTufwpcdbr8IbRWmjMWPyJE= X-Gm-Gg: Acq92OHZCvApx+68MabH4SkBus95ACaiTrFg5ZHeNtuUBsmKuUoJrm9mHqrbREwgK/Z yEDGiPv8VAahgPrsMhR4fxijKY/iQ+AO0cqiKnpH1wV+Vq9zBUfHfFvPRaINuqEWsgH1HkDH7lF ul93UCPhjDTAt4vL9sXoNBVnRbtklSPH0wecLVKTOWC0QUv+myS11TOnhZ+eKPxDOnlOj8KgYOL NO3ufckl/G7y5ZgYf+/muUE+RUsPl+VgdgFNy2qIDFyDsi1bJa6N+n/hFMo9V5VN8VdMaXB0yGw OJoYTH/9ur0wONc4piXBLlhBE1fHyu8b7rBv3cZEMrxfqAPOn3jAscaRCHoinZslhccr4XP/4MQ hPoyGR8xmdmx0AzM7RWwcgC46EJCx4Hw4ITFe4IfuN/eUVZiF9IpRHDpQBdUolyZDCb8+p+fv6p oZgmCPmm4zPZb2mLCKsoYL X-Received: by 2002:a17:903:b88:b0:2c0:b5c1:8e21 with SMTP id d9443c01a7336-2c2f14f82d8mr50952135ad.16.1781207991376; Thu, 11 Jun 2026 12:59:51 -0700 (PDT) Received: from localhost ([71.212.202.210]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-2c164f6d69csm284500295ad.2.2026.06.11.12.59.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jun 2026 12:59:51 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 11 Jun 2026 12:59:40 -0700 Subject: [PATCH v3 4/4] pmdomain: add support system-wide resume latency constraints Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260611-topic-lpm-pmdomain-device-constraints-v3-4-75d69438518b@baylibre.com> References: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> In-Reply-To: <20260611-topic-lpm-pmdomain-device-constraints-v3-0-75d69438518b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: Dhruva Gole , linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3685; i=khilman@baylibre.com; h=from:subject:message-id; bh=hee69kKQIxporq4hpHQJrmvt+8VHKRthHchQouUgNHE=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqKxOxR9r0YOhoMOutBTkhN0W0cUbxrg1gvmT1t S+6Tay9pmGJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCaisTsQAKCRBZNxia0/vG ZY5XD/oDlYMEVDUGeOD5HSPLunU16CbZ1h+S84DD07Hii+FuW0RhH819u7F9fNGIShGg2tecrzI zJHKf5v2zeABuQRolxrLtRQxUUGe1617W5Ier5TbXA7LoBYepVjOv1kHj9+WWfv/Q5SxDVb8Pcd OVEUT9V3HQMMcLgPWH+fW9SI1TM6fopKcsFy23jUjV2Th/Oo3VHh4+oA7xs4OmfRAjsJSYWT+ch y/xydWrIn7OzcMzq4UXI3RbsXNOiuEesjEIMBRS7YcbL50mIUlHg+zj7+FdFvckxPwawAzW5kBo 3EeYqNjjF+0zlKL+u76zlrVET1dy2PwL/3kdjjYF/yJSrLTC07SXMP9B7aFYxkwk6AQ2bV19hev CRY2b+TMwJBxYD50kb2UywIOOrh6XTE7V+SlzA8KdE/IFVcszsjQGddsKLnWIFXp3odCEZMkH/K ph7BMsDGrP0WwERjaclFaXXq6e0GYVM/ANjRslEuU3hdtIDuTSzvzRCtbKMgcOk58ucGSGsBash sgPp5/1472EOzGHqiKatCMawVq2YhVfj4mR1sKgR4N/Cn5f3yBtoF7m0HTwB4FcViVZ9o8jSCZ0 hhtMdcnwH+2+PZyJfbvJzf5uKcu1mq1jIyPbEOjPvoeySgRDldjh6MIXLkCoINxwYb/cPga0fGJ IQ8PzClEmPSFUog== X-Developer-Key: i=khilman@baylibre.com; a=openpgp; fpr=7B87460E16927FA9F5BFF10C5937189AD3FBC665 In addition to checking for CPU latency constraints when checking if OK to power down a domain, also check for QoS latency constraints in all devices of a domain and use that in determining the final latency constraint to use for the domain. Since cpu_system_power_down_ok() is used for system-wide suspend, the per-device constratints are only relevant if the LATENCY_SYS QoS flag is set. Signed-off-by: Kevin Hilman (TI) --- drivers/pmdomain/governor.c | 56 +++++++++++++++++++++++++++++++++++++++++= +++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/drivers/pmdomain/governor.c b/drivers/pmdomain/governor.c index 96737abbb496..1a85fd375db9 100644 --- a/drivers/pmdomain/governor.c +++ b/drivers/pmdomain/governor.c @@ -13,6 +13,8 @@ #include #include =20 +#include "core.h" + static int dev_update_qos_constraint(struct device *dev, void *data) { s64 *constraint_ns_p =3D data; @@ -425,17 +427,71 @@ static bool cpu_power_down_ok(struct dev_pm_domain *p= d) return true; } =20 +/** + * check_device_qos_latency - Callback to check device QoS latency constra= ints + * @dev: Device to check + * @data: Pointer to s32 variable holding minimum latency found so far + * + * This callback checks if the device has a system-wide resume latency QoS + * constraint and updates the minimum latency if this device has a stricter + * constraint. + * + * This runs in atomic context: for a CPU domain the genpd lock is a raw + * spinlock and the s2idle path runs in the syscore suspend window with + * interrupts disabled. The lockless dev_pm_qos_raw_*() accessors must + * therefore be used here; the locked dev_pm_qos_read_value() / + * dev_pm_qos_flags() would take dev->power.lock, which is a sleeping lock + * on PREEMPT_RT and must not be acquired in this context. The values read + * are best-effort, which matches the sibling cpu_power_down_ok() governor. + * + * The system-wide flag is checked first so that devices that have not opt= ed + * in only incur a single lockless read. + * + * Returns: 0 to continue iteration. + */ +static int check_device_qos_latency(struct device *dev, void *data) +{ + s32 *min_dev_latency =3D data; + s32 dev_latency; + + if (!(dev_pm_qos_raw_flags(dev) & PM_QOS_FLAG_LATENCY_SYS)) + return 0; + + dev_latency =3D dev_pm_qos_raw_resume_latency(dev); + if (dev_latency !=3D PM_QOS_RESUME_LATENCY_NO_CONSTRAINT) { + dev_dbg(dev, + "has QoS system-wide resume latency=3D%d\n", + dev_latency); + if (dev_latency < *min_dev_latency) + *min_dev_latency =3D dev_latency; + } + + return 0; +} + static bool cpu_system_power_down_ok(struct dev_pm_domain *pd) { s64 constraint_ns =3D cpu_wakeup_latency_qos_limit() * NSEC_PER_USEC; struct generic_pm_domain *genpd =3D pd_to_genpd(pd); int state_idx =3D genpd->state_count - 1; + s32 min_dev_latency =3D PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; + s64 min_dev_latency_ns =3D PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS; =20 if (!(genpd->flags & GENPD_FLAG_CPU_DOMAIN)) { genpd->state_idx =3D state_idx; return true; } =20 + genpd_for_each_child(genpd, check_device_qos_latency, + &min_dev_latency); + + /* If device latency < CPU wakeup latency, use it instead */ + if (min_dev_latency !=3D PM_QOS_RESUME_LATENCY_NO_CONSTRAINT) { + min_dev_latency_ns =3D min_dev_latency * NSEC_PER_USEC; + if (min_dev_latency_ns < constraint_ns) + constraint_ns =3D min_dev_latency_ns; + } + /* Find the deepest state for the latency constraint. */ while (state_idx >=3D 0) { s64 latency_ns =3D genpd->states[state_idx].power_off_latency_ns + --=20 2.47.3