From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 620713E2AB7 for ; Mon, 13 Jul 2026 10:26:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783938366; cv=none; b=qbbGm9NBHFsQXaYVyH+POum18uZQu590zATcAQ6e8ckxTaO8Mgx2maqpB92ncF+u053sJoOuKLdQujbNKDrF7aZ+/lO/p+6VUaSvbjl2L+LNEmsQrBBghxuyMYIl7YRw2kYTVLHUMfvUz/BqlqA8jyYZLVnH7i0m4UPox19JLXk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783938366; c=relaxed/simple; bh=WvCg1zYylDOwQ0hqrWZk3Fnkj74lOE1ILJ1fp/Cq0Fk=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=lxmUZoAS8wSW9VM4TAL4REtCM91h8GioQxSywrDzdtgYAWJpq/5G0rS6W3b20p51dQcVor5mr2jdWf5nuVKSsfNMqGmE0TpD4IP5NMw+AhHluwOfjMdcNhyQZ+i36SDtJJz6VGJcvXYi8WysUy9dNY/+zVMhjhpdrjMiXes13BY= 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=EpFc6CcB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iy9iilsS; arc=none smtp.client-ip=205.220.168.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="EpFc6CcB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iy9iilsS" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66D98mH9793086 for ; Mon, 13 Jul 2026 10:26:04 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=dvxFWpBIUKl297MMvlXgvj gG2qnWL6hrJmi3MQ7wPJA=; b=EpFc6CcBgSP9T3Zgrli4pbhUqfUk1Zrv/J4XiV oBJWJclpDAVVFojxPCkcGY4ULWi8/XbbEETfCP96qyAgrC/lFNqbq75DX8RUAfXR BzCGZNOFpuPtWmDT0KhWKqyMdfQEeYZ4YeRJd6S4g87EOM0YxnNclNMQBLGPwORi qTY5q5AoKE6Dzt6Dxg79/2A5CGHjQKbhr6zX/93Qeaa0ZIjykckRNEC9JCLgblCn DRTG1Vc7swuZ9l7J6lGNpbyBpiA6bsXjCR5iOnJbPXEZcP+F6L89Gp7YvIvXKb2I k9a+H1BfMje0EtbSI8p7P1LMsQ73L79+o17NZmCnK3dZ1w3A== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcw4qr8q8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 10:26:04 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-ca8aee88725so4265624a12.3 for ; Mon, 13 Jul 2026 03:26:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783938364; x=1784543164; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=dvxFWpBIUKl297MMvlXgvjgG2qnWL6hrJmi3MQ7wPJA=; b=iy9iilsSc+P0tGEyn30W3dHdVUfnMagagrAq0ITsLqzIPekDgNhmMSdgH+q+Ee8Zvi WtVJHZ/C60eQWj3EwNZkEG9MpYV5ww8KIajR+v6z3lO12u9wxBnSiOOixZn31pO2Miti 6o8UGYQgPaMGrgMQI0rsrCdDf+hFr/CNiY+vPXfLwGr9/5bnf32TiBzTuNaFoT8IJGUc q6+0okude3tZ2g2Mi3iIShRRnBSZITdR5tQDDS/WL7tL59xZ9XrVIRNMUppTdwPQC2zo RkVGMvTEH5HbgKLdoVd+fpJlTrX2H4YI4lLKfujShGqbG4X8YT+qoFlwumMs8K4JFYXT 5syw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783938364; x=1784543164; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=dvxFWpBIUKl297MMvlXgvjgG2qnWL6hrJmi3MQ7wPJA=; b=dQaRAoOd7y+EFcyxcyxIFrQOohOhA9NtO0p8BJeETDrR5cPKfkKdO84HjxLpWoPbNQ AnFsfLBpKX1RUL0LQZ97XBfnzTUTqXKm8rFZZVkXiM/6nCj7hr/4ygajGBBceTQlC3P+ L8mAsk6puwVFyrULRuPAHbHqYQM7dY9rTRZSH7sXKH3ZsasoxaOs5vE2LHJS061bpotg t+9VK/07J3X+v/UwOMSNGrOTS07RWhPLor4KVPNsBurFamDava5MAJZDUiGLm3V1KNTb 2UESPej6Udj+CyUapc8HeefHacA3oVcPz29LLBGdNaWf89KT3OBKJQ1TpPrAwqWLEg57 +Y+g== X-Forwarded-Encrypted: i=1; AHgh+Rppusa0lpoODi0YjIpu36IinhZrLLmPwLlbiuYHRjW3AqmSFOujGFc5de//DI6wDFC8XU1lS+yqZ7tAywc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywm5XHWFaZn1IigvGh/UWuhBqP+mOKIfzIMATWviK7OhVX8pvsK TZqgOilbBLHULbOSRxYSzZEfZGxYAFE/qrfCdnLylRHQbpFCKLpK5EbvxgMUTz+tEz+jfIw4IO9 t14YLubZFl6DMTAWh7WvwC8qx3bzaqv0YFYfAlloM20Phc+GHu2w7PDRP1yC9pI3Lm3QCzuBj5M Y= X-Gm-Gg: AfdE7ckVj3s+5pYRIvaHxPZdTL7GjGlTgRlpj0j8aHybmMkF8074cw1kZ6OIZiO60Xi gLSRvxiRNUQ9x8+rBCRwr4n7i/pLpUmUIIF2H5VYEceB6ew40vnTAUW+KixLXU166byxmmMfxdJ j5QX0DsYfzp05BpWQF+TtsCJ7AF/JYyHCA25vqvOhQ+eCrlEPbtPQ65S9F55FJGaMEo7Duoo+M4 5KBgkH2B1A2qi7pqtiXn7F4x/J6H+9vYgxyUpn8ImrAV/oDfHLJ1bBlET2pytrTrD8WOGxnqvML c4Il26kCR6h3Hjxutj+bW+nSeOQSy5QkGjKECWB/U7teEtZu+41pEXBgvmzvzXtujwQctYOOaMZ 0piJefzO/QY8bVDhTCnQICJbm15jFCfiDVpoaopwd X-Received: by 2002:a05:6a21:9f17:b0:3bf:e2f1:1b14 with SMTP id adf61e73a8af0-3c110a619c2mr10200343637.16.1783938363747; Mon, 13 Jul 2026 03:26:03 -0700 (PDT) X-Received: by 2002:a05:6a21:9f17:b0:3bf:e2f1:1b14 with SMTP id adf61e73a8af0-3c110a619c2mr10200308637.16.1783938363337; Mon, 13 Jul 2026 03:26:03 -0700 (PDT) Received: from hu-smankad-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b924258a2sm49010603c88.1.2026.07.13.03.25.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 03:26:02 -0700 (PDT) From: Sneh Mankad Subject: [PATCH 0/7] Register MPM under CPU cluster power domain to manage RPM notification Date: Mon, 13 Jul 2026 15:55:40 +0530 Message-Id: <20260713-b4-shikra_lpm_addition-v1-0-3d858df2cbbf@oss.qualcomm.com> 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: 7bit X-B4-Tracking: v=1; b=H4sIACS9VGoC/x3MywqAIBBA0V+JWSeUhD1+JSJGnWroiUYE4r8nL e/i3ACeHJOHLgvg6GHP55GizDMwCx4zCbapQRZSFaqsha6EX3h1OG7XPqK1fCciKmy1aaTGiQg SvhxN/P7jfojxA273/XNoAAAA X-Change-ID: 20260617-b4-shikra_lpm_addition-4a9bc82bafee To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Thomas Gleixner , Shawn Guo , Marc Zyngier Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Sneh Mankad X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1783938358; l=4971; i=sneh.mankad@oss.qualcomm.com; s=20250818; h=from:subject:message-id; bh=WvCg1zYylDOwQ0hqrWZk3Fnkj74lOE1ILJ1fp/Cq0Fk=; b=Zh+KYJtqq22v5gJg4D9UBcr+AoShv/hjkNuuX0iIBaLMDLasPPNxyDg54DZX+b+8o6IP6Z8Ij 9CmencsD3tSD+AGGm1TPBpQCZOqW/x393OYcj+/anOdSd4k9NxgnGZg X-Developer-Key: i=sneh.mankad@oss.qualcomm.com; a=ed25519; pk=sv57EGwdcfnp6xJmoBCIT1JFSqWI+gawRHkJWj/T2B0= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDEwOCBTYWx0ZWRfX1MfZsOkW8pEz DrYg4TgNzX+GJdERUn6AalEVq4pv2bZr+QIJKIDaCZ3I02v2C6a/FZgbskGjdlm2LihgNTdwb8f bXV1fe2PhYzDjGpxV45+MOT8xQ7gorPTZtQrvljNHXqpgPcXddZCe4fIvB2knxw3jG+tozuURih DNb9yQ2OTbeQ+ay5N4CjCR2IolFY18rD+p5+bnC6mCzPZwEENzWzc0Vjc8FVsnHFVrNJEEjAS3E s5OqBOiUvmtsdBP4CzYlnTI1S0aMqy7FCqgY//KHbqC7rFXlOxHVZ+CmpWmMywSoOHVK9gMJFlx x20yCHC5yY9TOHxP7NEvKXRYatKU4CjcpRorDBEF024M/EEKnD6Z//9I2HPW6MgQhevVnnxP7Ob zjURjWP2BMbq2lxAizU95l9gmwFMSdj8Sy6lTbTqrwM8q9TC4evTAQ3lCLdu7bcXSu68p/r5TLm Ir0SLUZvhnpuGW+k8VA== X-Authority-Analysis: v=2.4 cv=HJrz0Itv c=1 sm=1 tr=0 ts=6a54bd3c cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=qNkiBxRVe5u3VoiZqJoA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: LThswdAEIRdGQEP170-QR-oEXerLxW1g X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDEwOCBTYWx0ZWRfXxTZAJv6+f8YR cZ/2InFDWgE+659P32qz8bPOjnDnvzO6BvgkpicbglislIuYIv1XncThQ+Q3EORmsJZeenLDpRp WXuqN7l4HERaJduBv+Zj0opMJsLqGHA= X-Proofpoint-ORIG-GUID: LThswdAEIRdGQEP170-QR-oEXerLxW1g X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_02,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130108 MPM irqchip needs to notify RPM (Resource Power Manager) processor to read the latest wake up capable interrupts when the CPU cluster is entering the deepest idle state. This is done by sending IPC interrupt to RPM and is implemented as .power_off() callback by registering MPM as parent power domain to CPU cluster. Such implementation introduces a hard probe dependency between MPM irqchip and CPU cluster power domains. That is MPM irqchip needs to finish probe before PSCI power domains are probed. MPM irqchip can be build as module and can get later inserted where as PSCI power domains is not a module. For in-built driver cases too PSCI domain gets probed first and later MPM irqchip leading to failure of CPUidle states. Detailed flow of the non-working scenario: psci-cpuidle-domain.c probe --> dt_idle_pd_init_topology() --> of_genpd_add_subdomain() --> genpd_get_from_provider() --> fails to find parent MPM genPD provider --> returns -EPROBE_DEFER. irq-qcom-mpm.c probe --> of_genpd_add_provider_simple() --> genpd_add_provider() --> MPM added as a genPD provider. Now when psci_cpuidle_probe() is called to probe the CPU idle states, it tries to map the states to the mentioned power-domains. But since power domains probe has been deferred, psci_cpuidle_probe() too will return -EPROBE_DEFER. commit af5376a77e87 ("cpuidle: psci: Transition to the faux device interface") transitioned cpuidle-psci to a faux device interface. faux_device_create() calls faux_device_create_with_groups(), which ignores the probe return value, and destroys the device if dev->driver is not set. This will lead to psci_cpuidle_probe() not being called again, resulting in all idle-state devices failing to init in SoCs setting MPM as a parent power domain to CPU cluster. cpuidle-psci.c init --> faux_device_create() ... --> psci_cpuidle_probe() --> psci_idle_init_cpu() ... --> psci_dt_cpu_init_topology() ... -> dev_pm_domain_attach_by_name() --> __genpd_dev_pm_attach() --> genpd_get_from_provider() --> fails to find CPU genPD provider --> returns -EPROBE_DEFER --> return value ignored and device destroyed psci-cpuidle-domain.c probe --> dt_idle_pd_init_topology() --> of_genpd_add_subdomain() --> genpd_get_from_provider() --> finds MPM power domain --> power-domains topology init successful Below are the logs from shikra SoC: [ 1.035164] CPUidle PSCI: failed to create CPU PM domains ret=-517 [ 3.651715] PM: Added domain provider from /remoteproc/interrupt-controller [ 4.129563] CPUidle PSCI: CPU 0 failed to PSCI idle [ 4.149294] CPUidle PSCI: Failed to create psci-cpuidle device [ 4.743389] CPUidle PSCI: Initialized CPU PM domain topology using OSI mode Currently only 2 SoCs follow this method - Agatti and sm6375. Agatti has CPU cluster power domain disabled, which is why idle-states are allowed to function there. Move the RPM notification handling to the GENPD_NOTIFY_PRE_OFF callback and register MPM under the CPU cluster power domain. Use runtime PM to report the default RPM_SUSPENDED state to genPD so that the CPU cluster power domain can enter low power mode. This will remove the dependency on probe ordering and allow individual CPU idle states, CPU cluster idle states and RPM notification to function properly. Also enable CPU and CPU cluster LPMs for Shikra. Signed-off-by: Sneh Mankad --- Sneh Mankad (7): dt-bindings: interrupt-controller: mpm: Document power-domains property irqchip/irq-qcom-mpm: Register MPM under CPU cluster power domain irqchip/irq-qcom-mpm: Prepare common access path for timer and pin regs irqchip/irq-qcom-mpm: Program wakeup timer when CPU cluster goes to LPM arm64: dts: qcom: sm6375: Make MPM device as part of CPU cluster domain arm64: dts: qcom: agatti: Do not mark MPM as power domain arm64: dts: qcom: shikra: Add CPU idle states .../bindings/interrupt-controller/qcom,mpm.yaml | 6 +- arch/arm64/boot/dts/qcom/agatti.dtsi | 2 - arch/arm64/boot/dts/qcom/shikra.dtsi | 94 ++++++++++- arch/arm64/boot/dts/qcom/sm6375.dtsi | 3 +- drivers/irqchip/irq-qcom-mpm.c | 185 ++++++++++++++++----- 5 files changed, 243 insertions(+), 47 deletions(-) --- base-commit: 7777cc195ca1301a28008ca5cdb98bdb2a9d0def change-id: 20260617-b4-shikra_lpm_addition-4a9bc82bafee Best regards, -- Sneh Mankad