From nobody Tue Apr 7 04:20:27 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 69210351C34 for ; Mon, 16 Mar 2026 07:38:11 +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=1773646693; cv=none; b=BpN3K9U0ciiDeZLhJPq7gbNApUH6XSZEAPdXUmWklgRvIyCTyuQTIWb+zU4W0j3OghxbPQMNaD0aN7YjwNPpqevxQq8+lpV+sjyOTMtAQun/r9J1A+fS6kHiIwNalnTzHMiZyxq6oEDb0SB+MYceUnkU2x+/A1uzgmi/u3z6Ywc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773646693; c=relaxed/simple; bh=Z/6THY+XjK9RDZxdSvC8eT1j6g70IKfbM7MZwp/Y34w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=uIqGqyfj+BAROokYPOAXcPYbXIytVZj5VIzDj/YedlBILnRHPBiqtJ+a+M/0CBkZxuU+3sycmE4NCACBS6/EPUfEwYKCVUyw2GXJNm8J2ZcBPxGmSgTF2L3hq9VxL2V7sf/Do7gSYfp4P4AbzLs21jWSsKzRWbuno9OQnLuNh9c= 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=bpLgIE78; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=knfCZgDZ; 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="bpLgIE78"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="knfCZgDZ" 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 62G64b812672149 for ; Mon, 16 Mar 2026 07:38:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=yQfdCnYwqfB2t+bxnIB5Aa 6+L8HeWThtqBaUd3Opfgs=; b=bpLgIE78N5oSwXgo5zhWFi+5LSEpo4cI6A1HnC KmoMCraDhNy8+PEIGXJGv7X5bynD6QPSieIfeSTL5760xmXsyrn4DjfcLSkhA49T 8ttjwqUzw7unek9z9YfdQHGDjf6f53QafQMw/RuaeEX+mpvZYU1cBYZYHArae4ej G1lw21nv60FiOcmdBjy2o4m1sH4U/JtvTcEbk7G7iNL9Fca08f1WGMfU6UL2x3AD +9vGDTFga4dR0uYJshQMRKWxyBl9p3yIh4s0B35pkRfA6chfsySa8MHKPrP73wWF io8tWKxVSCfU4VaILxF2gWHGoyk9EmcZlO9LxqC0tx2dG33g== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cw03xmp2b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 16 Mar 2026 07:38:10 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c738f71723aso2653588a12.2 for ; Mon, 16 Mar 2026 00:38:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773646689; x=1774251489; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=yQfdCnYwqfB2t+bxnIB5Aa6+L8HeWThtqBaUd3Opfgs=; b=knfCZgDZW4EZGq8Sfsyb3HiMKCXnmtN3+LaArx9Ghv0CxpdvOINMxYzQmwre1J0dLy I6xkfa2AByZhpxrJLGTQMX7xhW/DDh5S9xDy3B1qc/FyiMjdc6uiG3rX/byCpQ+pfg5x fOKFOHlRsx8S22LwqzhKXyEQdnBsAYopXdX6muqrrXPVn5ZqWzfs5NQjRj/OT4YV+shp a5wKpFiuwSXsTlQ6KLRmmlkYgNVJOMGnk+0RV15vGK9uHuA+TODfQFjNyKdhO2F+f+vF R+am9hlqEuyIpmbr/+zSsB9ZD8j2zODa2Ry6atH+pR6gj1OcfUx+CxOFTJ0I6O/r6HH0 et3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773646689; x=1774251489; h=cc:to: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=yQfdCnYwqfB2t+bxnIB5Aa6+L8HeWThtqBaUd3Opfgs=; b=St7sdZtx2u7TEqvMzQOxG3S7BDTLz/hKaevUJH2c31+zjKQjG2imIP7ZCOaH3gBLj6 n43kor9UlNNuL3xW/Su2mcRiHVmBw9VrMEOcUqPp2t5czYWZS2CMJeg8PHA4edT1iA// Vxsvwo6oRZnS+6yqWAz3q5sMg5EVuXi5XnZ1xvbbxibR4rX3offUCNiK5Lf3LtK5jnze j5ZnoKEyUKd9mJogvncMjwkoWjtQ69op5IK6z31lHir/F1qWLr5AO9Zxg98CK8PN7Ne5 7/ssBWWeyoMkGrDwAGfs35flGsQq5mNN8YeQ9GMgGywliQg5ibUu/sBYdNBL+XfcsFq1 aTXQ== X-Forwarded-Encrypted: i=1; AJvYcCVrLehdD8pyVMHiLSxChtZ1A4gRvxMBW/rqrE3rklEpondc99Ix7OOTKpDVMbLeFvVevFCP1565Oihlqfk=@vger.kernel.org X-Gm-Message-State: AOJu0YxC8yUkBAhMvpjFm4p0tsZF63mgmXe6cQWD2wlUgJU43cWWDoDe Vo1cY0PSy79soHSdErTKU9Zqjfwmxq0jBYzATUkTD0k7gxPPTfekMyICiMJgJVmQa0NPA5RfJRl /z2V+otiJp30LA8HnoZ1ga3cPJZvD8fJ3uBo9jWQ1DFJ95pWlDuCoBxW3umczn1e/2IA= X-Gm-Gg: ATEYQzy+AJaVZtnlNqEszjWT0EF1joDMbrAmCQS3mLyUqxnBzx3sGks+nS5xtW8y0BK WdUQbTvw72rvFpc+R/VesKydcUvtrX1gtoFbEbnHM111AWfeLp2uudbVOy6c2eqIk7G83jS8Ulg Cnv/gJ85BB8eyfRzUNzTsJaUC/Bx04gApZ0ka24GjucI1cCBFWOFIp8B3FQJGRsUOa+HIqaeOUn kknUl/dVdY7cE9JLVQyYuv48vNltzO9s2H8DWk4pNEZZfa7TkadHLXGhtc7xuNF12bTlLU4cGYQ y4tJT5vf4+Bms7agmx1Vo6EV1+h9XEiZQ6ED9HJVEg2982rOkODOKY5c1SbLh9dq9rj/to00CCN 9sbYilJVkY8jnsRHML/uxHbHesa3PWL5BNdJXxKYGqgCR1lWRvA== X-Received: by 2002:a05:6a00:1585:b0:82a:ea3:c161 with SMTP id d2e1a72fcca58-82a198cb23emr8629458b3a.41.1773646688780; Mon, 16 Mar 2026 00:38:08 -0700 (PDT) X-Received: by 2002:a05:6a00:1585:b0:82a:ea3:c161 with SMTP id d2e1a72fcca58-82a198cb23emr8629436b3a.41.1773646688169; Mon, 16 Mar 2026 00:38:08 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82a0736b5e7sm12169509b3a.49.2026.03.16.00.38.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Mar 2026 00:38:07 -0700 (PDT) From: Maulik Shah Date: Mon, 16 Mar 2026 13:07:58 +0530 Subject: [PATCH] cpuidle: Deny idle entry when CPU already have IPI interrupt pending 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: <20260316-cpuidle_ipi-v1-1-d0ff6350f4e2@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIAFWzt2kC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDY0Mz3eSC0syUnNT4zIJMXZNkMxMDY7M0y0QTCyWgjoKi1LTMCrBp0bG 1tQAqoa2iXQAAAA== X-Change-ID: 20260316-cpuidle_ipi-4c64036f9a48 To: "Rafael J. Wysocki" , Daniel Lezcano , Christian Loehle , Ulf Hansson Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Maulik Shah X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773646685; l=2361; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=Z/6THY+XjK9RDZxdSvC8eT1j6g70IKfbM7MZwp/Y34w=; b=g8JlpKm2V6KsG+AG4VPbmSr/eN8Rllcg3DwIgMgyOzss36HbmNH1meKGA7OCrjjYTgumtnRgd a1cltzDnii+B7UbO59tcQX/KEdgmdfzmHjFMnKEUGlTx+hfc3ePfBVr X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE2MDA1NiBTYWx0ZWRfXwo/kCIUInvOF EMfA88ey93/i2faqbIcIrlrEC9rA0V+isiERYmKIG4N4mQgpd/IUtOTLp2gWvZ79UH2SwFdzF8h oP4x0ZIlg9XGmCQWa+cNHX5QonKi/eLgI6OB3Hs3x+rS7sBqeNXac7rUODOn/zP4N2SnQe8d7c1 1tX2frHUmZRycQtAmK7UbIwwmtIGlnRApf4/vXMNiWF41iZZk7jSuwJS/39Rwt+QiOpD8j8L00r 3MdheoVGbQfdO4i8K0AGPIEsPlQxj0p2pTWwn+wg4hb97ZViVY0D22DjpRhnOJW3+ObpqE96P6n OlICqUju0Ylb8pzijUFh8UdMtBfEUiIJCqX9vZA5Vzn9v+Vo1q+Y9unBZq1Icu/lou9AozJN0J8 LkrPyr7nrTiNIGM5o7PstG3DpbCs3a/uJHQUf+c6GJ1cUJNIDbDcBpl5ZiGS9JjyALICzTtjkiO 4UigyqDlPGf2KS2+Krw== X-Authority-Analysis: v=2.4 cv=YLOSCBGx c=1 sm=1 tr=0 ts=69b7b362 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=NEAV23lmAAAA:8 a=EUspDBNiAAAA:8 a=5VM2pUZDyY3GmIPixBcA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-ORIG-GUID: Ggz_kJzOocJqGybytUfQQx8qX3bnrbvw X-Proofpoint-GUID: Ggz_kJzOocJqGybytUfQQx8qX3bnrbvw X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-16_03,2026-03-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 adultscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 spamscore=0 malwarescore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603160056 CPU can get IPI interrupt from another CPU while it is executing cpuidle_select() or about to execute same. The selection do not account for pending interrupts and may continue to enter selected idle state only to exit immediately. Example trace collected when there is cross CPU IPI. [000] 154.892148: sched_waking: comm=3Dsugov:4 pid=3D491 prio=3D-1 target_= cpu=3D007 [000] 154.892148: ipi_raise: target_mask=3D00000000,00000080 (Function cal= l interrupts) [007] 154.892162: cpu_idle: state=3D2 cpu_id=3D7 [007] 154.892208: cpu_idle: state=3D4294967295 cpu_id=3D7 [007] 154.892211: irq_handler_entry: irq=3D2 name=3DIPI [007] 154.892211: ipi_entry: (Function call interrupts) [007] 154.892213: sched_wakeup: comm=3Dsugov:4 pid=3D491 prio=3D-1 target_= cpu=3D007 [007] 154.892214: ipi_exit: (Function call interrupts) This impacts performance and the above count increments. commit ccde6525183c ("smp: Introduce a helper function to check for pending IPIs") already introduced a helper function to check the pending IPIs and it is used in pmdomain governor to deny the cluster level idle state when there is a pending IPI on any of cluster CPUs. This however does not stop CPU to enter CPU level idle state. Make use of same at CPUidle to deny the idle entry when there is already IPI pending. With change observing glmark2 [1] off screen scores improving in the range of 25% to 30% on Qualcomm lemans-evk board which is arm64 based having two clusters each with 4 CPUs. [1] https://github.com/glmark2/glmark2 Signed-off-by: Maulik Shah --- drivers/cpuidle/cpuidle.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index c7876e9e024f9076663063ad21cfc69343fdbbe7..c88c0cbf910d6c2c09697e6a3ac= 78c081868c2ad 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -224,6 +224,9 @@ noinstr int cpuidle_enter_state(struct cpuidle_device *= dev, bool broadcast =3D !!(target_state->flags & CPUIDLE_FLAG_TIMER_STOP); ktime_t time_start, time_end; =20 + if (cpus_peek_for_pending_ipi(drv->cpumask)) + return -EBUSY; + instrumentation_begin(); =20 /* --- base-commit: b84a0ebe421ca56995ff78b66307667b62b3a900 change-id: 20260316-cpuidle_ipi-4c64036f9a48 Best regards, --=20 Maulik Shah