From nobody Mon Sep 28 04:10:05 2026 Received: from mail-pj2-f12.google.com (mail-pj2-f12.google.com [74.125.227.140]) (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 1253C371D1F for ; Thu, 24 Sep 2026 20:30:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281817; cv=none; b=fefL9jdmzr7ebnS9kUaw/GU2IXpQIx5jgL3lysGwZVu/0VksYWSZ8/arEI0GguF1R501508sedyUTUFDM9oHx4iL20AyqLTr29rRX3NDUOS8dg197kWN5shrjsOrhMnIlwRK+0Y2HiEeFpZzPyg7QRwJI6IbQMtmVBShkIVmKCk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281817; c=relaxed/simple; bh=76GWlvs2S6RvtzUC9P3JnexZlLh1ZyGKNxkhMVs2ZXE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JuEvhlARbnPJew3zpkfieSpKZ2R4E/YPUQmIy1RmHYGH/KGR2A9bNc9db43oFGBsVSTsULssfSkCNGoYNVda0Hx48eQcEPiqEzoT0PqegZtnJg0uXgy0+mT1JLNoPUJWE9GVXN0fyjHOyGtRGlpyg8pbRc+9WDZ/HL9rAK1ah2M= 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=VF48szSe; arc=none smtp.client-ip=74.125.227.140 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="VF48szSe" Received: by mail-pj2-f12.google.com with SMTP id 98e67ed59e1d1-396ccc09d65so204950a91.3 for ; Thu, 24 Sep 2026 13:30:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1790281809; x=1790886609; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZHtBci+7WqjdzbXMCO1Bw7FN1oZt8E0+8PQeHHnAE4w=; b=VF48szSec1kbFnNQa+iisd/htX2PWvVjUxdt6RduWvQJE++9yZpvi+T42Cogkml/zm W90K7RDfmsZsfr0lmjC4rEO5BvjVDR/2JomDiasVl34YQJ0em6ezekQ4cD8uFkzArL3U 812hfX+zwZTTvnv9Ze6aw/xp5YFC686vnUfNT/gvVofIe4H0gsbHmvcbuiKotWcqsiFj uobbD4WxGUHrNc/BGMTHqGCp2nqoLBv6F49UP230epcyu/pA/4hQkrIhLQ7O2yJiGkJm 5jIKZfxo3grdWej6R1k4b2TgdR+0pX1/FE/Kzr6+MOANHsFfaYQ18eKZ7LBlvZh63wHN xThA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790281809; x=1790886609; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZHtBci+7WqjdzbXMCO1Bw7FN1oZt8E0+8PQeHHnAE4w=; b=PFcmgojcxR49ko3Q0QoMkaVIEbClVnmmE0h7Z4eJBXvHHd+mVCBh7kgCekL84znpcW ILoEiwEV3Hcm3IJx0JP1uTQuXR6xAZClETkqpHvPxUqvvQNdrpwFk0lVIbssa9mjKX++ FzeDGfHqK4lsvJQbeFkhfh/9q/F3v4sNbiOwkUQRZMiRsVvk9XwHTq7GH11RVJUsti4K LNpq/f1p2/DC/irJ7c2nACmFP+4hmlUrsZVeyIoL5hYsGPlEnvW3NqMZcLd3W0IE2dMV uJZNhrkleEzUNdAnxc77vadLIHnZ+hc+ZiIJyckmvYhUBjRiHHpuCvf9BrBkwFEaRDuL MgYA== X-Gm-Message-State: AFuF++kym91r7itdCGFkNUw0YWTZkHj4E7Rg71jvFPeGjyeKGGiUMmsd MWZ+K71jStEZPhLS/geqtjqEMFjDTae0WnOALtunGr0WeWeBnlXm0sp0buAqtK1eoSY= X-Gm-Gg: AYBFou3ryVnHMyQZZru5Ad8TZmCfPqmBSMGz0WkGtSeP0YynBhOLMJT5L0Z9ZZ/5CmK qZ/pUAWeA+N67U6GmxbNe3K6Yi3QrA13nukj4kxKjmxm1aBZ4mvHyH0tkb6Eu0Cx1ROwRwVzRXm xUlzbnp6bhTAtdT0VHkKyTnuoTZZ39zWBv12C8CLMZoQjeNNv9zFbI0eq0FSEKHdtw6GRCzTN0U tnsC3tncN+HwFNVSSJ0rl5PHpl165zsv/OH7DlbEQ4yM4Jzqp1z7DDWtSZp8iUR8d2htFRjSF7C O6PScRijZkvpD6RCElCuQc6ycAUvdSl4NfvJQyv8ECtRAIhXXrgu1jb06xWUciOLOAx2zRp16bb C8VV+2KlDjCvXRIt8VNvI4EeM2g7V5IJ/EgMlvxEtjGm0ebG4M9miVuluCFsekysXxrNsd28WLV JMSgenlI6N1sSRAledYXz+MYaT1xnmeMliDHcIi6p5j3AqyNsZFKC+emLIPerSuGjJVtvfT+MKH Ls9jQ== X-Received: by 2002:a17:90b:2b45:b0:39e:6a7f:1dce with SMTP id 98e67ed59e1d1-3a098db96a8mr3321002a91.42.1790281809056; Thu, 24 Sep 2026 13:30:09 -0700 (PDT) Received: from localhost ([71.212.197.238]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-3a0b99917besm329407a91.14.2026.09.24.13.30.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 13:30:08 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 24 Sep 2026 13:29:56 -0700 Subject: [PATCH v6 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: <20260924-topic-lpm-pmdomain-device-constraints-v6-1-a69a4856252b@baylibre.com> References: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> In-Reply-To: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: linux-kernel@vger.kernel.org, Kendall Willis X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=954; i=khilman@baylibre.com; h=from:subject:message-id; bh=76GWlvs2S6RvtzUC9P3JnexZlLh1ZyGKNxkhMVs2ZXE=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqtYhODZhbkM1juO/cyw1swsUEox3pCImM6+xyC H3dHpDyslCJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCarWITgAKCRBZNxia0/vG ZWs4D/0WTqo2e5qQ7xtNBL35E1bt9WEoNtN3eZpbs0Rk+I2KLURLaOBPNiFDLkJqiog6RDcGVqW UA/waqdLfTfLpIw5fld7rP5us++6Du0imc45Ur0utHwFq5Y/uUhXlppx4jAJeP++po3ITwpjeYC eCIhUdbLccfuyIW/DenacKfjjr4WIKgg4dGIMKp3x4aHwFk82ZKWi5XLYJFLh/wpSkG776PaNQr f0w/S98jyg7SVUN0SbCzCAGeQmEb5rx3T/DTsuVKoM4w+9yOg4V6X5WHPlcC/9f+kKQLWB9zVaB PegPLgjYvZKnbCYMPZ/Vf2LHmyQJ2N9Xki4V1LdkimZ/qT0vl7sdjeAvZidNw1yZzpF+JOOpTIn PEgc75KxVxkXvEjslxmTWO5Apod9vJo5TZnowzOqzuZUyr/RBwD6PMaac1Sncnn6o0sL7rTBEWI F211mLGKCNix8h8yfbtfGxU2YqGZoRj8OvwEqKt2ImCKrnO9OS4UMc2yEFdIV92zVVT/twYk9cQ Vu5EKE2FaykBB/Cje0V67qaQQ34FOJDABSg7P9qFgufz8f/8UjQNVAVNJBewtXt5eYQDTsJ1Lr2 5uzRz9XMeKoVz1Nm2jd0Gjfj/k4bvBC3uvNbanwGGrDsmL4K4eoSR4Pj5/8YeP3D8frgFDODt6N k2gI/6Gl/P43dwA== 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) Reviewed-by: Kendall Willis 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 Mon Sep 28 04:10:05 2026 Received: from mail-pj2-f41.google.com (mail-pj2-f41.google.com [74.125.227.169]) (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 6D8704CB8AC for ; Thu, 24 Sep 2026 20:30:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281821; cv=none; b=Yd2xmHeGjHPbNyXp4UGMJpi7bBvlkd7SMbIotSZ9Klwzk5L61BYQYeyfZ4/8YK5fJyzk7QhAbsubdCWzZpcgutX9KXb6E4YNWy9+BR1x3ctq5RPgqVsYoG23P4KTPpLOgyRF7dfUZ2CcbCPSi25/KErHfY3rVJfvDsUglNp4VU8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281821; c=relaxed/simple; bh=5DZ/nLnxCxfQO4kajog7xGVkPie0bnH1eSRCJb9Yst8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c4rEdmfDRXmiji07G+sruOOQauPKdgqw0NwVEwKCnYKuySRFj/X6MKulcvYNl1c7jEgAebIo6B1yRMWyAMwlrayzhr1+owf1xg28PlxbdYPXjNr9Q/ACY452q6VbzzA0gu0EVGvzDALUGgO7dsytPprzSUwmL8owlupcL9dJNq0= 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=X28JdzRv; arc=none smtp.client-ip=74.125.227.169 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="X28JdzRv" Received: by mail-pj2-f41.google.com with SMTP id 98e67ed59e1d1-3a0af40d240so174427a91.3 for ; Thu, 24 Sep 2026 13:30:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1790281810; x=1790886610; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Sv+MUiOEP3/RF1kItJkpWgD1vZhiIIYN2y4NUfdViXQ=; b=X28JdzRvuJKGdoQsspNlPxl6E4Gdr/oTGlM1qSXgR67Cd6dH4Sgb9yEnhg6Q7dvDz5 XMbsERHW1cyhVPY4eS18qlhty7t736qKvIqUyvn72FesJKUV79gU2Ssg1iKV86T6O5md 7fMtXcfdYZbXXLpJxq/T7e/uXpHuIgVf6uYWI9woc10rRrY3/Ge3s8kRdgOs9nTA6XTL zBbxP/m7dlyxTiTAKV6OMDF55WWIPGLbh0zpUxTxvonDPFORdG6mPpTRNjitMEdFZm9r v7d6nJQFqAw5PTzxSq6kYVI1ztiWEDmP/pfBNsOGIYDaHvBMZjZuIVczMxFR9jFiR0KV ZhHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790281810; x=1790886610; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Sv+MUiOEP3/RF1kItJkpWgD1vZhiIIYN2y4NUfdViXQ=; b=v3nfhc8HZuskUFwXdS5Ra6VeI9GsYZDWxFBUNwwDpQH/E6NRgOdJdTbOEIRgLFaQsk pPdeZXpCIkJNW19GxiV1H47rB6++JjYF1Agpzi6c5Y3GEdBYC0uXjAjzK0hrU3QPjwvD t/J7bcDonsWVk/yz+OTA9QGJL3V/QFUapGIU1iQnpN1iH+Y4pFAHE5nxy0Z9TYomnZ6q nGMOO5uQPNe7V9KWIkj1rYYYuWI6FQD3t4/ATitpvPlemsJOukR75QNKAHbJJEI14gV1 1/oSKlTGpvYRciNVqng8HKTGSc1Ly7uHCod0L6yu+DYoT4ekcEAE+7ZQhsRzMUOsEQJz m83A== X-Gm-Message-State: AFuF++nDGy/gYj/1MLFSYMc6reI+NEvVAWj8rdsKJOyc4dkclk+rqovN sEQEJOVIglHv9M2XMDDuVZxmEYJShGE9xZx1bllM3GTSWRnpho5wBFKRVetl1mnfYCE= X-Gm-Gg: AYBFou26BWTt+8+qyesd13cUc2rQA1Geaovv2vKtB4Mkh0/b5uzEYbx25kX/lc/BCBq q0sPCT7GUns+WpIjTB4MPll1vcMVnxSxoJeceK6lMDgR+tVrrp8OL4bRlHwTdEK9cJGs9GL8FoL t+ALBeVqFzPV+xtSyovuhZq35x7PeEBaoVb77JkiBCzgT7xhqDnKTD6b7U7wnQYYvBbxNGt0oAt 5SNPYrrMFgJYeehSvPkCLaxEUA3WEN3bpzzTinECd+KusWD3ab5wHRhOshr+hcl0+LXj5oq7IEN hbnxP5HJUtgROrmFLTpgVeUeixtuQoZC5UMP5HYZqrC+kbFYdEu/7kiz7gDYX+K9ylwHx0nnyRB U/5XwaMhgVhBp5h1AoY35tBLrJUkWCFMDG7/DJYwnbse2CrVRDDB2B3eYD++0lGxCbf2hr4za1o v8wJWfiTCcSNJugAQ8g0l5PNm82OjQFTKedGTUTAU2JS8qIn64PaPhyIZTT1UaS60XixVMIeR9J 9UpV6k= X-Received: by 2002:a17:90a:d40f:b0:3a0:42a9:9c81 with SMTP id 98e67ed59e1d1-3a0986ee06cmr3294941a91.17.1790281809938; Thu, 24 Sep 2026 13:30:09 -0700 (PDT) Received: from localhost ([71.212.197.238]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-3a0976c8f8dsm6695485a91.12.2026.09.24.13.30.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 13:30:09 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 24 Sep 2026 13:29:57 -0700 Subject: [PATCH v6 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: <20260924-topic-lpm-pmdomain-device-constraints-v6-2-a69a4856252b@baylibre.com> References: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> In-Reply-To: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: linux-kernel@vger.kernel.org, Kendall Willis X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2506; i=khilman@baylibre.com; h=from:subject:message-id; bh=5DZ/nLnxCxfQO4kajog7xGVkPie0bnH1eSRCJb9Yst8=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqtYhOaqDZnD+pG3K/6nVjR++x0keaZsrbzYMrY UYyM/bHZAmJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCarWITgAKCRBZNxia0/vG Ze3LD/4rvCrToYDOg4NocQRJjY9FXamA4TtwaNIUX1UdgVfHvj+MVDFDtbWkIW+4Uk5UjhrdWsZ 78Qz9t6C27Gz1au0yFeQxHYh0hTwJD8hB8xOuwVEuqRLYZ/6IhBSK4ywyp3qUzLY4y2m85qhFds t8M9244JvoL7Gsy/Y7G4v3cFihf0haSHFWwwUB2htRrF8nhq86mFWvkL16bq9Ekg8VMViXdyP7Z qlxiFzjtccIJg3TxiwvGOnu8yIznbnNa0VstOM7egDveMjDZ+s9xastv9iUEpaWB6YoRpAYyzXf Wtg7q0uUftXUhdqC5FbnVz2VU9JURkoFRrfrqZ8SJ5LHPvcifzfqwsHoSCK6yid+g0eSR++tJn5 vKU/qjyAK3OUoSIh09bFZaeR+s7BNlM3+p/6Z++t7uC74bVDo7iWOaRmXD/+lUUhCZcuNeti9Ua S9NVMYQXwU7iV3BGE9Nfi8jmsYv7AGBeN4QoPwIfDcVecMQu8ogvoH9FP9oajs4SnyL+Ux1Ixik 1NZdfw2NCdl3H6O+3LixdRyMW/Jvqfw+QeKpWELvXG/OqnfGQ3lilhmLOnULcMyJAG7zD3Exa1D BPwYia7Q77DCewRRzsy6VuN/gkejH4K8K479T1gXp1XvIRR5KOeIoJ8E4qUI9KVRsvQsJ3K5XrU /zVDgMe5/4rc3kA== 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. dev_pm_qos_raw_flags() now reads dev->power.qos->flags.effective_flags with READ_ONCE() so also add corresponding WRITE_ONCE() to the two effective_flags writes, the same way pm_qos_set_value() already does for target_value/pm_qos_read_value(). Reviewed-by: Kendall Willis Acked-by: Rafael J. Wysocki (Intel) Signed-off-by: Kevin Hilman (TI) --- include/linux/pm_qos.h | 7 +++++++ kernel/power/qos.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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) diff --git a/kernel/power/qos.c b/kernel/power/qos.c index 1944dbeb0d4c..c241da5bccf6 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -159,7 +159,7 @@ static void pm_qos_flags_remove_req(struct pm_qos_flags= *pqf, list_for_each_entry(req, &pqf->list, node) val |=3D req->flags; =20 - pqf->effective_flags =3D val; + WRITE_ONCE(pqf->effective_flags, val); } =20 /** @@ -193,7 +193,7 @@ bool pm_qos_update_flags(struct pm_qos_flags *pqf, req->flags =3D val; INIT_LIST_HEAD(&req->node); list_add_tail(&req->node, &pqf->list); - pqf->effective_flags |=3D val; + WRITE_ONCE(pqf->effective_flags, pqf->effective_flags | val); break; default: /* no action */ --=20 2.47.3 From nobody Mon Sep 28 04:10:05 2026 Received: from mail-pj2-f12.google.com (mail-pj2-f12.google.com [74.125.227.140]) (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 6AD634BC007 for ; Thu, 24 Sep 2026 20:30:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281821; cv=none; b=jCaEogq5WM+oDoF2/w4AP/yodF/HgTgvh5C2MFWXYJtyGTGykH62oMQkt11svEGoF+3wCivyG3t8MO2iM/7nj7v6hdWqYDDSZXt2v5sCBL0Ewfc/B4qm1Osek+dVbDCSSk/F9W3ycrVc2xYFrOhTqCXfC4aLTNoWPU176tknHGw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281821; c=relaxed/simple; bh=y9WUYmjiye06xVLv8oTcIaVbAEDADxGs04QKHSw49AM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PGahpdPolYwEcB2Fgx3n7NmkRFERcGTwNdKCfJmEwI8Gctt0M0pRqQK5uheEEfbmT4flZteAbeqJRnOvZr+g4e35kGiWjG0R5byqzmxIibIqODIi64De0COb7yuL4HRCZg4SaTWmSvCbk9aZWp9a1qqt+jdlKtPefmwdgxz55oM= 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=Avdq+uWr; arc=none smtp.client-ip=74.125.227.140 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="Avdq+uWr" Received: by mail-pj2-f12.google.com with SMTP id d9443c01a7336-2d747f01363so914665ad.2 for ; Thu, 24 Sep 2026 13:30:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1790281811; x=1790886611; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GjFM95nzoBopbHKT7ySWE4QE4ldDwC98rFYcBccdX/g=; b=Avdq+uWrSLTJueqiW/FolrcYOtB9y9bygXQHy10LwbPw6t9uzO8auN7Zt8BfUPCtMw tgdK8+mLFFpJm6cQ/YBLRzM8McwPI/kTwUsJAFdGNXCjrAp53IHEPQCB9CLTL4nIky0V 4KtGgYAtqRgCmkH4Oy6nAS6AqV0bGf/FbyERzK6u2CXD0jmEOONJFNCmSWz62yGoU2Q9 uvBgnaJorlSQHnOxkx1BJfHA/2ucSJUNW4TUteZBBeAHvJU9PRzP9XqQcbNNgqvUfXRl RbD32P4dgLt9hzdC371/nzsQBwZ671Hf7c1Gwn/9lWORkG72DNWEEfBo1Y4M0ksV5s/g shJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790281811; x=1790886611; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=GjFM95nzoBopbHKT7ySWE4QE4ldDwC98rFYcBccdX/g=; b=dIXQR7vYGWrxz9sRTk44TlutlKcdVb826D01VbvsQsCWRv2EiWAPBb/oWkHRcqu4/Q +pAG/8oL06c3f2NHg++1r5k0rqOrJeWHnNtTuKdqqOyCvJ1+AqyLqAvCPy4W6DUJwG59 BjLiSK8/51C1TD+LNtZB6CXii6kuNZ9qTvRx2FU3Xif8uJZgq1I6OEcrETfaHRD92kjF v0XUvNPOVXg/t5lSgvlsCZ7f7Mn2DCbMtz4UrJUgzCYZ/DWvc6/k30MKYjNsqjcvsZQr Ddl+/XtI69pANTDDnN2ruwu6HA/29Z/07QmObB1saiyEcNOKlGMFi8rXw4PRuXsOgUQz 08tA== X-Gm-Message-State: AFuF++lIyIwHhhQXFmqALOJwGa7SyyPHCbDPPK5b0zTeIqo+vGZtaSot o2GjOWL9L2bFMpZDylBcr3zCfpRDW82yj+e/MawCERtu/vKjZm4U2zPXzqd51RiCUxq62Xi8lvr JBTXj X-Gm-Gg: AYBFou2pv0X0Xw8QYDm4XUA6OaqYCgC8fhf1xx7Lj0g1IuodJRVbdAWs5Rg7iMH9X1c ZGL1WniEIWViORYj7ukgXy2QDi9unIh6QlbzxBQX+p2Ct9zdYm3V+y6mkFccH+jrmttz7fXHeSz VvekMs/y2UJmK/AYwBYa4oQ7JoktHrU69tMcU/fFkulp0p9pITgjLFtCm1eIKBDH5g7PRDgbp+f MjHvs/MyXqZhIKJyDuHDDwwt9kq3eZ3Jzuk5upatBML9yYDf/anoucNvEyKeSePura+AYEdZHAG fsAr+KKkIczDoU9x32GtQGcK1Lep9+fi9H5aa1wH+MIIl2mHnK2YmZwQuNa89MxQ2CcQCslmvpL CXejInEdryolpE5ODlc8sLGgpyoas2Fg23M+CJkFK2QH4PYlmin3+Iq3GkG7LNSTkGewCIwRqXW NH7utPJk6Wx64W9j2HIPdK4utX5KTM5t2JsRduFjRik7Ntq8lJUXFPojuBX3m/7kvPJD8= X-Received: by 2002:a17:902:f707:b0:2dd:c100:9439 with SMTP id d9443c01a7336-2df7e65c38dmr29472265ad.55.1790281810795; Thu, 24 Sep 2026 13:30:10 -0700 (PDT) Received: from localhost ([71.212.197.238]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-2df90fbc951sm1354305ad.8.2026.09.24.13.30.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 13:30:10 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 24 Sep 2026 13:29:58 -0700 Subject: [PATCH v6 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: <20260924-topic-lpm-pmdomain-device-constraints-v6-3-a69a4856252b@baylibre.com> References: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> In-Reply-To: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: linux-kernel@vger.kernel.org, Abel Vesa X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3702; i=khilman@baylibre.com; h=from:subject:message-id; bh=y9WUYmjiye06xVLv8oTcIaVbAEDADxGs04QKHSw49AM=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqtYhOyQ2PiteWewCyn13JlLBbX4dgmDi/FKVuo 1z9RKoVNpuJAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCarWITgAKCRBZNxia0/vG ZYL5EACh7BjxR0UyJ+Tg9XHjSKNWdiiSyz010AV5JrIB4l1zjX8CLUGPdA3rpLq4WGQcAMSIrAP ceQDE7GVFWo8cfZ6tIOIbrZHIax8N8/ezBttFZs7PQPk7pDQyrG4uci4oI/neFk0DC6U/VB+SuE OT8eAZdhJ7fLjnPC5/+83nvCmtAag47i4OBrF6/MpjCQL2jgjDQgrthpkSJLLpALOk6eMNDc+5+ 6A71JjCr+CXOeWNJFsozny75+ZEFmnnQPeLuKi7anvnwz1HsPXKQytJLu9U7G6RK9mPEv3ic4ao JFa2qN0aZflPpaN0HWt5pNVIVq1RiVdloa36CndUOogZ1PqtZlS1f1+IjuuZQDrMxgNnvm6dxMj s91mfLpxRKeIUOmVprDQ6zmqSJ5FAPlCj2M5qYd+1umR3rQAuP4ud2vG0SyhdoI672kaT4Hh+0K B8IHaCG8HpRFJMmowBit1tlMsIWQ1KZIjxGekQF5FqNTRc6ARl10f27kaJ7EcaPccjLh4RJAvW5 jDlaRqV1Y5Nm57OnQVHg0ebovLSlirmHBajcu0rFJbt07hrMuArMs+fZbYjAO7l/0CJZZ3ErQIG GPMNZGwmD/XpYirAVlWdXFMZthars1crmPOm0EX2nrmg7A80BWP6781shKYzpwsp4Hu5a+q3PYy pyX/9NQe0cP2Ajw== 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. Reviewed-by: Abel Vesa Signed-off-by: Kevin Hilman (TI) --- drivers/pmdomain/core.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ drivers/pmdomain/core.h | 18 ++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index 842c4169e290..ff27369d9a97 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 @@ -276,6 +278,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..d1df535a834a --- /dev/null +++ b/drivers/pmdomain/core.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Internal header for PM domain core + * + * Copyright (C) 2026 Kevin Hilman , Texas Instrumen= ts + */ + +#ifndef __PM_DOMAIN_CORE_H__ +#define __PM_DOMAIN_CORE_H__ + +struct device; +struct generic_pm_domain; + +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 Mon Sep 28 04:10:05 2026 Received: from mail-pj2-f13.google.com (mail-pj2-f13.google.com [74.125.227.141]) (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 31C9E41D4F1 for ; Thu, 24 Sep 2026 20:30:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281821; cv=none; b=kYJnbNW7EANGuTE+t8fmm3WlaqLcuXE9kO3/w/sTVMWzjc36b98x+NTEMJtgvXU2gfKK0fzZMM7pFH6yGq8JvOJdqkzhrP1Sd9FkHLhLawaN9IufE2YtOWfVHV8rmO5E0cQzgt0lCEiE6cQiRzeOxPEze0tqtYEYfMLJiGWBG+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790281821; c=relaxed/simple; bh=fxB9/+5eO6XoZVLEUDljaQutKEB1CcmARzOpNjDG6Ew=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iHgLwqHL/jPjOURNbMdLJgVsRvwNx3OqY1Tfv9WhHjBTGgYZBMd8+bNqiwqqQ+qMBjKsBvgQjBjh7F8PxJjbTaAT4uHH7+vep8Xi6kCt29wCHv1SQCcr5qersGckf8ownZOCA3pIbWxmTujNQt1X8kvAzRr+HXkEcpSBDAWquPg= 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=aC3ms5zR; arc=none smtp.client-ip=74.125.227.141 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="aC3ms5zR" Received: by mail-pj2-f13.google.com with SMTP id 98e67ed59e1d1-396ccdaea75so119150a91.1 for ; Thu, 24 Sep 2026 13:30:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1790281812; x=1790886612; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VtYe1mtbd6bH9b/KMUQTjop2olezXt+Q+N71ctrgkH4=; b=aC3ms5zRHP7B2AUCo1PjLhmb2qBbesZZiH47YFv+ylr/DwbOOYOhQFOIem8SqDajiX yEWFfaZZGRfLs/FHJWUm1t5iN80Qy6SVQmcTQyDxcYl6PPoAv/fEGJVQalzZMq/gIAXw v5XnQbnQ9YP/6OE495H4Qra0lJbkmzeoTcRgxKEqS2rC/A3mADazzF0OUunyNpSqcAIn yb+s/7b0LmjQXYluCeay4I9WxlHZfZZv1mC1nG4B3DuwqRAWf2dzPMUGx4wzsXgS1uqA 0k+MyMraAd/0f9vU7bwtQD3G2N19bj5xS10QzlnuVMH9FO6MOcXihZWTHbe33VKd/bF0 P+kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790281812; x=1790886612; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=VtYe1mtbd6bH9b/KMUQTjop2olezXt+Q+N71ctrgkH4=; b=B3gVZkQ4IR2QDcCoIp2GBKaFL2VSHuGnVxfMQm5s515qFWE3gHRvKeBoHPcBLzQAin AFKJEeUl+KzHnqLMDWxADv8MVGIe6fqTJSqGcL9DEfjkEzkHRSc0VyG0c5sSfmu/ko29 zXBrtdEryZY0gSID5XWuqv82iBfAGokRLrPg39F4QSeTYsEKHqWnqeGKJGCKveiU2ZY+ gbhZ900ZBn1KNnroOoGKA7n+aziVFwZYSxmzQ2SzlHgUUaCcobdG+RBxk699Cnwrqlpl 5TnQEwmN2RVPiYZT56+e0yF73loK3/3UKJ8dggwMvZkoddCJO1X4bUx4pSs5Fq/zFCp0 Xd8g== X-Gm-Message-State: AFuF++n9lW9ae1OoPkhOptMMnPCDkHPbMfo3HQTcqFi5pYDAHgrgC+Gx WBUDAkDPp3FrNzGCMN6b6RvNN2zFDERwN8QXyAYhiEBtz2mk/D9Le31Z7xM5vSim93E= X-Gm-Gg: AYBFou3aLDQf/wy9l209U8PYLvCAwqQ8jV/o6WhpN8EPjEK0O6EqvcCbBtJurLF0qpf Nlo1fFK+Vw3qtlJNYYz5DsMBwCRi/6mUsWDnNT0MDPVI/IjJXDmz6Fk2nVGnVAKcFuzD7GfauGJ 9QtpDdrT1dZwXQDivz2/RTqVpW0TcAT5A0b3Cx2KvcE5MfiAWGfi7AFviNdHhcjuPigCnbwGBec EkfQSUOx9QO691LR6VBascl53l1yYEJzW2jm8PujnjoE/Z72IAU1EgjUziuSob91wFConD7/DWR Dr0VTyJ/t3I+R6LH6RikDq7EiEi4GeYGjolrZuOvCc3s7dlVISpnWbMLDuT6cm8udH4QHI7cO/Q xv6Mu8VP8AuCxSVPh8TAATUTrSuqvHaNtNKSTCLB0Qzc9HGi41TjzqUiIsgZkfXtFz4b/mRK6aN deadn8fW8oa947Dm7ntvCzdVk4sfsmjTXgQCqvk+Za6CDP4sB8QzylGjvqWKgx59z9fIZTSwmLQ /4puw== X-Received: by 2002:a17:90b:2e03:b0:39d:e1da:81e5 with SMTP id 98e67ed59e1d1-3a09864ac91mr2524573a91.11.1790281811835; Thu, 24 Sep 2026 13:30:11 -0700 (PDT) Received: from localhost ([71.212.197.238]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-3a0b99e5220sm314936a91.16.2026.09.24.13.30.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 13:30:11 -0700 (PDT) From: "Kevin Hilman (TI)" Date: Thu, 24 Sep 2026 13:29:59 -0700 Subject: [PATCH v6 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: <20260924-topic-lpm-pmdomain-device-constraints-v6-4-a69a4856252b@baylibre.com> References: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> In-Reply-To: <20260924-topic-lpm-pmdomain-device-constraints-v6-0-a69a4856252b@baylibre.com> To: "Rafael J. Wysocki" , linux-pm@vger.kernel.org, Ulf Hansson Cc: linux-kernel@vger.kernel.org, Abel Vesa , Kendall Willis X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3127; i=khilman@baylibre.com; h=from:subject:message-id; bh=fxB9/+5eO6XoZVLEUDljaQutKEB1CcmARzOpNjDG6Ew=; b=owEBbQKS/ZANAwAIAVk3GJrT+8ZlAcsmYgBqtYhO/pBs+HJDx0CB6GxV7vuaRHLxW8Ie1Uk00 mUuwyb/tf2JAjMEAAEIAB0WIQR7h0YOFpJ/qfW/8QxZNxia0/vGZQUCarWITgAKCRBZNxia0/vG ZXXqD/4yQNgnHK20pgLFU9A+2dkachcRKhy7BmE6C0dKG/2Ga8ieae1CF8vwiSc6iRznzP69n/w du5dDMcMZqlFpJPLZJTBcrvrb4bl1PHhCIfTU1Bze7ksdUf9ah4wJgwSuURcJI/G6YP77AXdPdo BjjJsZTNiS0Zq/k8DIWuSDfZMwDb4Mz3j6sUTbeUtd4LkSPd8QJy3rANQLKLadsIZvExvtlUhMn pnILxbXPmhDZOGV23PGbtRETXlnBFYvSK0khqodnYQj2gs89CK+H8B7R6y5jIfkAdb54ZGRvExY YwRlZPVSN8KAKSG1y1u/RGP8g9be6nKVexPa+b1Iq55oN3ak1zKftF1q8u9YWgvSaxAdf7LIY7S iFCbq7LLedAaTJPmCSmQGN+4XlsejTBR5RstVwq42xlaAt74Bfkre8VIipO3hLe2x7uDtaKALIX +6OEjhl657e80fKJB3EwEVKW931qh5cY7KuDgwvUBk682PNggIOLRUICA4tZgVG6/FtjF0ebvZO n5mSz0zKEeiOqoykoTZSzuEGFuebgY2go8xfIT30V3lrfbdXZp4e+rY5/rfk3aZfkzVrS+Big55 TdvElL0pfrVzBt9hKBSCOK7SCQxIr3MOcpJfGiSOUx+gWb2YPoO97VaCywQ14wZxCUb5QxZ9urF svtb5dOTJBfDCfg== 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. Reviewed-by: Abel Vesa Reviewed-by: Kendall Willis Signed-off-by: Kevin Hilman (TI) --- drivers/pmdomain/governor.c | 45 +++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 45 insertions(+) diff --git a/drivers/pmdomain/governor.c b/drivers/pmdomain/governor.c index 96737abbb496..38bba24ec26e 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,60 @@ 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. + * + * 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) { + 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; =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 (s64)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