From nobody Sat Jul 25 05:59:49 2026 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 5279338D40E for ; Fri, 17 Jul 2026 07:50:32 +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=1784274636; cv=none; b=uGWTZbT/OnDE9r1MvGf3EZmjvUlYUyrZ4XyQi5hIccg9aNMQpvnPxzGhSHqIsALRgsRSSc06oXUwgfN8xAhUoPAHTZmSycfn2gqPWrAI9WwS51iu1HYlMzFSm003/Zs630vgpj25P1zCqrLKwfjgGcUdwOl64pGuOcv12C6D+aQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784274636; c=relaxed/simple; bh=7i+JXXDlYBK3MDq0Hdq7MfbGWZyvnjJI80agD+XQt7o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TmUa5sgFTmKoEKkcKB2LAaGzI2Xqhy+FzxXrPXHz+OZTl8pnvWFMDtGfnIs7ShrJvRpKOJiy3J+yWAyhdWI9mePia3+S5J53gNgeJ8h+0UhUcYW2/pYkN8VO4EJMBCUPrS7G0RvaM7LxQcCS/XtqCInHYXc1C5Tw1fUlrUjEHkU= 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=F5RISfnF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SL2893+a; 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="F5RISfnF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SL2893+a" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66H6d3jT821161 for ; Fri, 17 Jul 2026 07:50:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ZaK9pKaiDY1FJ5cIz2wkB3Psxd6tGaNxrlShKe2xLkc=; b=F5RISfnFZXnCfcry +Q4MtyvKGl3BIqMmjRVlbsWa702sfXK7r5vKLIX6ghEZXc1k8Eegl4h2AysTZJmi 5ojNqdMvhepjfOQtRn1Gu/j/K2J/3jzsMCVx7xncYulzMy3BQ/2FTZzWmm6ik5xG kSvU3a4gY5ja1qv3Ee2CZEwyc2bEJeh7Dm1CQOWeIqwjWSHT29aVMm3ZC7cEZETL d1sOUvcsmfMVduHmckyJ6YT0oydDOVVNc9pKRT+TqRsCTMZ8Yh7WOVDs1Ke7bWPx wux5C2lOy7WhqSngmrvc26n0hYHY+dpdrcwKR/15punf0SPkiHLHQdNyVbtZr5dG vKF/Pg== 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 4fffag88c1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 07:50:30 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c88ab059052so1685001a12.1 for ; Fri, 17 Jul 2026 00:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784274630; x=1784879430; 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=ZaK9pKaiDY1FJ5cIz2wkB3Psxd6tGaNxrlShKe2xLkc=; b=SL2893+aJOd7odwUBT+DI4X+pbVn3YnQgDMGjYDU/Wx9roRkvIrRVR3neixyuNU4ho aNuhl8GcbwjnaRee6rvGNJfP6FJR8WmZzuJ/tGZ/KtQksArLX8rgtgcPP8jwrqgX752c WZGTU4HZLVrynLfsMVgFNE+6nwtKMqFcXwZSWEH6d8mwF8TCcQ58hwR3hxYCmHSlqQ50 eZ00/MbqtckYf7tZ1TZPO9IbYdUD+S9JWRoa/R6+9reA6XstBvqEdFw0j04gdilnzU/3 rRJj59Fo9PTawc+lxykKLh3lA+BZPMMFHkCiXpRjmuccdlEqVBuSg88C5hNU5063S7md uSQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784274630; x=1784879430; 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=ZaK9pKaiDY1FJ5cIz2wkB3Psxd6tGaNxrlShKe2xLkc=; b=exp1N+5s7FTYTBHW7qo4qZeRlW/WXNusRkgbuyFiKviQlQ9P6d/T92uyX6c6K6a8KB SotVc3MxzNOy19xiuyMJfms6f488Q3JU2Sw0G7VpTk8el5Kb4bj13+ERR9D9DGtYrKL+ GuIiUXx6njkUvBGLUWt86Ax4xin5yKb8OBFuGtj94g7at6lOXxVm+mt3vMxVSGOwagvA awtzwmtSmmUFabU8izpRabokjyIFe7SzBJb3nhb29/xzQfjuqyzXGmhyegpEDayCI/M3 KJHLDIrf4eeCWaO6/OBQdUlL9Z0Rp38qojHvpb8EMMqmYXbnE5aWfc6899ltsH+4prAK 22ng== X-Forwarded-Encrypted: i=1; AHgh+Rp6w1sC/h3r4aGfFnUm9dd58TqAU7haQz732u1AXXGnbzkYRls/on1NKwwmPgFe2k2enXk1amtpc21MImU=@vger.kernel.org X-Gm-Message-State: AOJu0YzKccnU4QMYU+Kc0EcPV5gxcqX8rG9J39ZWp9eH6/bAu8dzSxF4 50xIjOtVBqGY7TQyl/bHxAaeUmq3SmaI7gc10VNeaUKHAxPHvWrTpZIPeCWXSHC2FkCibCyXTPm wJKcu1Fo5W+hCMrFx49eFWBs7+Lj40m+X1mMjq73zKNeYFn7O2jQmo+1co/jvUvmOYUuXadq28n I= X-Gm-Gg: AfdE7cnmpkUQXf9RYXar4LIo2z7S//Jtj9TQrwN3pkRsppVpdAq3aWJLTGbZL0TnasA oQw6XgJk0LsdFAHBIOOFahqDKwLSpcgne3eQ1MNQXKmrZN8NvP0qVFGgivcDXh+QkYChTbrJrRR OEnjXjdrg7+QZK+kYmhZBMXh6w5jtQ/mlEt9hbK7860J464PRSjODvgbBpmmK/EOYulXaUaaiN9 RDHbdMuDB0MIOUfpIfm7pRKCd2Lp6xt80betsW6epohjqi44bxhFWQTy6L3nOTkJSz5UnbvA3HV zf5yyDppXf4/GoCQG4EXzM6Gub8xtpOp3e8bDikCRiggAnUcvBJXeIJSTdwCwhSR7NsHT0HXWqK ifI527A+Wn0h0AQuNJGiLAD0pzABu X-Received: by 2002:a05:6a21:e0a6:b0:3c3:800a:45f0 with SMTP id adf61e73a8af0-3c3ad002cf6mr1551931637.30.1784274629770; Fri, 17 Jul 2026 00:50:29 -0700 (PDT) X-Received: by 2002:a05:6a21:e0a6:b0:3c3:800a:45f0 with SMTP id adf61e73a8af0-3c3ad002cf6mr1551915637.30.1784274629277; Fri, 17 Jul 2026 00:50:29 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cb517f8f223sm449323a12.9.2026.07.17.00.50.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 00:50:28 -0700 (PDT) From: Maulik Shah Date: Fri, 17 Jul 2026 13:19:42 +0530 Subject: [PATCH v2 1/3] soc: qcom: cmd-db: export RPMh accelerator type string 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: <20260717-rpmh-timeout-debug-v1-v2-1-81ade4fcdb49@oss.qualcomm.com> References: <20260717-rpmh-timeout-debug-v1-v2-0-81ade4fcdb49@oss.qualcomm.com> In-Reply-To: <20260717-rpmh-timeout-debug-v1-v2-0-81ade4fcdb49@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784274624; l=2502; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=7i+JXXDlYBK3MDq0Hdq7MfbGWZyvnjJI80agD+XQt7o=; b=7hZ+llkGDTNjBcvBPjmf4iVIXd2aJOxhcr7HNmpo9vb0PLyR/rhNmbIBjUKI1t5eJMD1fnMe9 zQWbUh6qgcjA6zuKg7PYbaTGB1f1GtF+oKtGYpM2XfYDCbb2fi+P//z X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDA3NiBTYWx0ZWRfX8SXcnMypvWgR 0LY2f7UpSPO3YyurKtUzl/BlZRh2HON3qoYPn8LcRWJocQOfxX6SfaDo7XDCObqF6Y3/VORr4iG ZlPxybLLo2wUZwtUuG99G2iQBmgh66oMa/rddpoSP7u1tQDWY1xWG5nNyKW96JpDkqGOmTuW/zH ac1KjgfdB8GqpQ1Qrdg1M3mACuoNiLYqR7KJU8fXo06KUQRrSE+Wih/h73dHYqVzcS7lowSaGaj Hfi07RW6+YwVlZULpno0mKgg7ZIx8vX2Xj4jLvXKI1UAxEMvbORQMpZshlJRKF8NCdqL6lDqENB wNYw7akpCWiXMnZCQ8yFwFHKAUgpKJw0g+nhC7kQIh39lVkm/beKBb8zRgoS2flLOQOWQk0wrmV Ef+5PjrYbO8s0zPuvBICO4K6Jd5OQuaZ0Xju4K3tozCoWAFrs5w+pCJYbX+F0jiePQDeJ2lngUs s+eYgzovsyybySgoyxw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDA3NiBTYWx0ZWRfX9FVgxxTEIfFG 6Qy9BFm2BFAAMAEvGk59XjNuPrSJAqUpq/W9MqGdqKDHjvY9S5y/+cfLbJeFi/QIqjrI8hNQCUi v1ceW0RY7lxcVbpf4kkF17tqIJ/RdQU= X-Authority-Analysis: v=2.4 cv=KZfidwYD c=1 sm=1 tr=0 ts=6a59dec6 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=OEZb8WWwy_IDIPDo1iAA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-GUID: mW8eBQe-X7UZAJk38qjcgg6gTq0E_GHS X-Proofpoint-ORIG-GUID: mW8eBQe-X7UZAJk38qjcgg6gTq0E_GHS 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-17_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 clxscore=1015 malwarescore=0 spamscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170076 RPMh resource addresses encode the accelerator type (ARC, VRM, BCM) in bits [19:16], matching the cmd_db_hw_type enum values. Add cmd_db_hw_type_str() to map an RPMh address to its accelerator type name string using the existing SLAVE_ID() macro, and export it so drivers that handle raw RPMh addresses can produce human-readable diagnostic output without duplicating the address encoding knowledge. Assisted-by: Claude:claude-sonnet-4-5 Signed-off-by: Maulik Shah --- drivers/soc/qcom/cmd-db.c | 20 ++++++++++++++++++++ include/soc/qcom/cmd-db.h | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/drivers/soc/qcom/cmd-db.c b/drivers/soc/qcom/cmd-db.c index 3f1eee784387..117f810d5ca4 100644 --- a/drivers/soc/qcom/cmd-db.c +++ b/drivers/soc/qcom/cmd-db.c @@ -267,6 +267,26 @@ enum cmd_db_hw_type cmd_db_read_slave_id(const char *i= d) } EXPORT_SYMBOL_GPL(cmd_db_read_slave_id); =20 +/** + * cmd_db_hw_type_str() - Return the name string for an RPMh accelerator a= ddress. + * @addr: RPMh resource address whose slave ID encodes the accelerator typ= e. + * + * Extracts the slave ID from bits [19:16] of @addr and maps it to the + * corresponding cmd_db_hw_type name. + * + * Return: A constant string: "ARC", "VRM", "BCM", or "unknown". + */ +const char *cmd_db_hw_type_str(u32 addr) +{ + switch (SLAVE_ID(addr)) { + case CMD_DB_HW_ARC: return "ARC"; + case CMD_DB_HW_VRM: return "VRM"; + case CMD_DB_HW_BCM: return "BCM"; + default: return "unknown"; + } +} +EXPORT_SYMBOL_GPL(cmd_db_hw_type_str); + #ifdef CONFIG_DEBUG_FS static int cmd_db_debugfs_dump(struct seq_file *seq, void *p) { diff --git a/include/soc/qcom/cmd-db.h b/include/soc/qcom/cmd-db.h index 47a6cab75e63..34adc04eac94 100644 --- a/include/soc/qcom/cmd-db.h +++ b/include/soc/qcom/cmd-db.h @@ -29,6 +29,8 @@ bool cmd_db_match_resource_addr(u32 addr1, u32 addr2); enum cmd_db_hw_type cmd_db_read_slave_id(const char *resource_id); =20 int cmd_db_ready(void); + +const char *cmd_db_hw_type_str(u32 addr); #else static inline u32 cmd_db_read_addr(const char *resource_id) { return 0; } @@ -44,5 +46,8 @@ static inline enum cmd_db_hw_type cmd_db_read_slave_id(co= nst char *resource_id) =20 static inline int cmd_db_ready(void) { return -ENODEV; } + +static inline const char *cmd_db_hw_type_str(u32 addr) +{ return "unknown"; } #endif /* CONFIG_QCOM_COMMAND_DB */ #endif /* __QCOM_COMMAND_DB_H__ */ --=20 2.43.0 From nobody Sat Jul 25 05:59:49 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 BC8BA376BD9 for ; Fri, 17 Jul 2026 07:50:36 +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=1784274640; cv=none; b=nvzBt2itmIVtrTYHq7QCdlJp86XBeddG5ogxrvfue7eUdQYvLcIr5vKmHKjYpTIaJCPPaElaoN0rEadByRhIa4v/CUuc2Q3ua+DE34vlj46BqgfzPGU/oAKtkaMWy4MSt+qqkMLyyTugz1wFgrPK5c15x2kWBbPavmbmm90VZHg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784274640; c=relaxed/simple; bh=RNrrExDB0crs+KWWfJaxcH+5XUSGEwzrOWOOZER1RgU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eYsf+5i9T4LWI9s2C2dbOYzJVbNAJkc7vpMGFge3pCXv+u4sHf4M7g4VjZ1zuxdEpUP5wXDW1x4yxfNszIAiYRbylyum/W2wmHNBQrlNTQx43bWtml/NRdEbQHD7tGIaR8RG2z2lwqOLYIcb0iu/GnqlGLJ9ZdtZnQY2scHNdMA= 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=Im3Ln7yl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GNa97OmJ; 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="Im3Ln7yl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GNa97OmJ" 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 66H6ciI91093126 for ; Fri, 17 Jul 2026 07:50:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Z9ahLJd24WetNOKn8K9LuXS+j/spyO79ug8RcOxvsHI=; b=Im3Ln7ylHwcRdawX hVJjE5BaLEjbJD6XkHBvi4aoqmUQS2LzWqcBgJwi9Or3yYdEW44E/6tJsJh4hn/C eGj1hhD+nKCTZxZ0RXD5OBUc2/MyrKYCR7xzxQ7/P4aytgRB/mPprGzfFIktVeRq KP5SBLgmfspiKg9tYeWM2PaweLq/waomyHVASK1cgVH+907Mj76db5qPcywCQ/Ks Z5I9AVFvRwAc/eDAP9/EvaR6fAvTIuvl+j+IY9wI/2vAoTVg47OngUDeywesyzNx cnwSo8hoE7bnF9pj6b7u5NCtPzOGw2/QH0OkWWfgsr+RzjOZK6B5+fESgbLyTzQv R+/W1w== 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 4ffe0urk5r-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 07:50:33 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c8924f4d0a4so10793665a12.2 for ; Fri, 17 Jul 2026 00:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784274632; x=1784879432; 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=Z9ahLJd24WetNOKn8K9LuXS+j/spyO79ug8RcOxvsHI=; b=GNa97OmJq2GSS9lhS1LWjnjMgbRKH8Z0o/AIyGvNwU9Wu9rDGIXqU89M/gvtgg7VPA XQha5E4an5jy3z+tb4RbEEm87t1qtzUAwK+5FNqgABZuK4jMzMZd67Ol3phg7lrY10lZ UI3sgBBjGKO0WDZ9A7tGa/Qds2Pw50rC35AFny6V04nKyzf/GddUmMHBWVBUaKeLVZs5 PGzx6YKQvJHgHIidrXT2eGwBUA/+y4zwW/ezLzK9YcaN7iIdd0XgMYPFztzqL8kUxkQJ +zsPxS0Ce9NJ2lMkE/vxxIrKIexyxTjO/CetGsuyn2QPuz2oQEIMYkPoWW2Q4y6cBXV+ yy8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784274632; x=1784879432; 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=Z9ahLJd24WetNOKn8K9LuXS+j/spyO79ug8RcOxvsHI=; b=XewCoh5z5uQyIqiYysev8IV9TNHiDnZAxdFb88q5BjRDYRlu6kAkK1TSAf5H8ghJwz mTCTK9cHerEmUPYe5zdNLq/qiNF4Ijq1X/Wbn95w3fBoQL1Na9+L7OGhn7f+n7FUaXeJ wZUBvaGy1RogLI4YfrHPzp6TuhsHyQwOymNx8nhSANqCaAFr/Q8vVCjDO9yWpHNzYuz3 h2m1b9s4FqQ/g5ZrcaFQe6P8YCmy9XLjxLDhl2p5B/Z1P6yyAzSD7OfC8j0qrY1tF3ZP c+wr0dLPZSRagDWykJEJO+JMfFOGUJ9VHm5bXorTjD8FNq6TwQwXHe6nn7uFJEGgE356 aRlQ== X-Forwarded-Encrypted: i=1; AHgh+RpEHs353LsCfU1CarQEmHbi2zZlBEnmXYhh+oNeXWNlpVxz/asl0+eaEGBPRDQrdeHWOyTXFj5mxfoqrNk=@vger.kernel.org X-Gm-Message-State: AOJu0Yw1EjR+ITIrq9UnkvdQk7OSPfsDpZ3+xxOcDSFcR5ktIfNT0sad zsHLdzaulXc/5x3SmJhmd/slnv1cvocGmgehtBkdFpspTjwkTMJFlcLmtFN+E6o3iq2mnf/UFed BDVzshFqHEF8YQoRlV5hqZNR8MpHcr3X9sBHGYooTQceS7Bvg5Aowlz9TLYRGH4k4ti1UPLYh0I s= X-Gm-Gg: AfdE7ckOZo9I2wKlqWWHoDNr2iF+BfCs0ErCvvqe7dyLgctkLu3AP5dVY8xJvT2xpsA xR7JkYykkVRU3s8mXBHfrF7TyddDvMrDzUAvvU9E52xX9FAi9z9IckoU4oMBS1I3i9G3yabpSJe z2eQ/fbid0hCMMchnTfceuPlu+htVIQn4YeXpjVDNN6bKNVc0qyuPhsf9Ac2GP5gMOVZ9A8XO0B cEydex1YlUHl0NUODAOPns8/a9Li5Ai5HQ7hKtOqO+Ert/FPhcv53l9cRGr7dr62POearRF3TR1 A9MHdoMc87n9bzSGe8dsderyMLH20ya8yb8N5iZNcdZtWlURAPCzLzGwpgksVJ8yQWhjPzCqux2 mzXuwwWC4dHpjV0GPhlwBo4yu7GtE X-Received: by 2002:a05:6a20:9397:b0:3bf:6c08:fb94 with SMTP id adf61e73a8af0-3c3ada37416mr1635799637.54.1784274632172; Fri, 17 Jul 2026 00:50:32 -0700 (PDT) X-Received: by 2002:a05:6a20:9397:b0:3bf:6c08:fb94 with SMTP id adf61e73a8af0-3c3ada37416mr1635768637.54.1784274631685; Fri, 17 Jul 2026 00:50:31 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cb517f8f223sm449323a12.9.2026.07.17.00.50.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 00:50:31 -0700 (PDT) From: Maulik Shah Date: Fri, 17 Jul 2026 13:19:43 +0530 Subject: [PATCH v2 2/3] soc: qcom: cmd-db: add reverse address-to-name lookup 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: <20260717-rpmh-timeout-debug-v1-v2-2-81ade4fcdb49@oss.qualcomm.com> References: <20260717-rpmh-timeout-debug-v1-v2-0-81ade4fcdb49@oss.qualcomm.com> In-Reply-To: <20260717-rpmh-timeout-debug-v1-v2-0-81ade4fcdb49@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784274624; l=3945; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=RNrrExDB0crs+KWWfJaxcH+5XUSGEwzrOWOOZER1RgU=; b=irz6cUlYq/G1EhiVAhtIkb7QKbkMRxvSwCNYQK/+r9ATKC6bj+sCcnQIWd6ak2ktDhbLkqS1s qmpef3WCBPzBd4+HbaLC3IGLosM5B/6imcb/P5xJpkTkkMe/Yilwdac X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Authority-Analysis: v=2.4 cv=deWwG3Xe c=1 sm=1 tr=0 ts=6a59dec9 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=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=1a8ZsbFLG5WLaQwJOl4A:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDA3NiBTYWx0ZWRfX2MauMhW1SdfY 0TikEpipENrf0LNEmtZyD8dLJu6tbOBnm9Jh6Sd4WrXbHT171al4DK/DQCv64pQldqv0Bw6NEpT P6YG9cUlwT4E+v4IB7ugTJKAnwW+1DzDttDQ6yKiSFwH69iKqLwjYEmdNO+FJJA0E8cY5Nk+GRs dKVrxGnv9BfH0Do5sK+ehA2gUwoTTGHg0N6h/zGwSE2RsilS9+21CiCi1U/qlTB50pnGiGPCkJV i25xsZ73iDICKACGsqkDtoxX+bPwFJck2VowAOre/GafgC3oyOL5z4QtPewGDbmwwd4f2+haxgB b6ilvEN7EcufQV7O9JGo+0HKI8AUtzEnm6qseIEHpIJ8KUL8kMVyPnpbWpZf+lWY5hGCWGt3rQp 7dn5G6wj6jBo9UJ+POTPO0ooRfJIGnRuwAcflcVeWg4B0lpsCyz5JwHucOmWho3gOgSts1HI9QE WoqzxQulPOhtKuza+vQ== X-Proofpoint-ORIG-GUID: kT2lyvgXqudHrKIYjlhjzP0kOF1BCQUk X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDA3NiBTYWx0ZWRfX87mp3UBZVit9 6s9aN3kHXHyFy+k8uGsZRWZ7Xfwg45TFWC+D+TpL1UZxCtSsMNoCvFi/QlEiwYAjKYdmFtcWlle acUdUDlDeYQ0YvWp97MDROEoffftHCg= X-Proofpoint-GUID: kT2lyvgXqudHrKIYjlhjzP0kOF1BCQUk 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-17_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 lowpriorityscore=0 adultscore=0 phishscore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170076 RPMh resource addresses are opaque 32-bit values. While the slave ID in bits [19:16] identifies the accelerator type (ARC/VRM/BCM), the lower bits encode a resource index that is only meaningful when mapped back to the human-readable resource name stored in the command DB (e.g. 0x30000 -> cx.lvl). Add cmd_db_read_name() to perform this reverse lookup by iterating the command DB entries and matching on address. Unlike other exported cmd-db APIs which go through cmd_db_get_header() (which calls cmd_db_ready() internally), this function iterates cmd_db_header directly for address matching, so it calls cmd_db_ready() itself. For VRM resources, which have up to 4 contiguous 4-byte-aligned addresses per resource, the match uses VRM_ADDR() on bits [19:4] so that any sub-address (enable, voltage, mode, headroom) resolves to the same resource name. Also export CMD_DB_ID_SIZE so callers can size their name buffers correctly without open-coding the magic constant 8. Assisted-by: Claude:claude-sonnet-4-5 Signed-off-by: Maulik Shah --- drivers/soc/qcom/cmd-db.c | 45 +++++++++++++++++++++++++++++++++++++++++++= ++ include/soc/qcom/cmd-db.h | 5 +++++ 2 files changed, 50 insertions(+) diff --git a/drivers/soc/qcom/cmd-db.c b/drivers/soc/qcom/cmd-db.c index 117f810d5ca4..e1453b194aa3 100644 --- a/drivers/soc/qcom/cmd-db.c +++ b/drivers/soc/qcom/cmd-db.c @@ -287,6 +287,51 @@ const char *cmd_db_hw_type_str(u32 addr) } EXPORT_SYMBOL_GPL(cmd_db_hw_type_str); =20 +/** + * cmd_db_read_name() - Look up the resource name for a given RPMh address. + * @addr: RPMh resource address to reverse-look up. + * @buf: Output buffer to write the resource name into. + * @len: Size of @buf; must be at least CMD_DB_ID_SIZE + 1. + * + * Iterates the command DB to find the entry whose address matches @addr. + * For VRM resources, which have up to 4 contiguous 4-byte-aligned address= es + * per resource, the match is performed on bits [19:4] so that any of the + * sub-addresses resolve to the same resource name. + * + * Return: 0 on success, -ENODEV if not found or DB not ready. + */ +int cmd_db_read_name(u32 addr, char *buf, size_t len) +{ + const struct rsc_hdr *rsc_hdr; + const struct entry_header *ent; + int ret, i, j; + + ret =3D cmd_db_ready(); + if (ret) + return ret; + + for (i =3D 0; i < MAX_SLV_ID; i++) { + rsc_hdr =3D &cmd_db_header->header[i]; + if (!rsc_hdr->slv_id) + break; + + ent =3D rsc_to_entry_header(rsc_hdr); + for (j =3D 0; j < le16_to_cpu(rsc_hdr->cnt); j++, ent++) { + u32 ent_addr =3D le32_to_cpu(ent->addr); + + if (cmd_db_match_resource_addr(ent_addr, addr)) { + snprintf(buf, len, "%.*s", + (int)strnlen(ent->id, sizeof(ent->id)), + ent->id); + return 0; + } + } + } + + return -ENODEV; +} +EXPORT_SYMBOL_GPL(cmd_db_read_name); + #ifdef CONFIG_DEBUG_FS static int cmd_db_debugfs_dump(struct seq_file *seq, void *p) { diff --git a/include/soc/qcom/cmd-db.h b/include/soc/qcom/cmd-db.h index 34adc04eac94..d03d64f3407d 100644 --- a/include/soc/qcom/cmd-db.h +++ b/include/soc/qcom/cmd-db.h @@ -9,6 +9,8 @@ =20 #include =20 +#define CMD_DB_ID_SIZE 8 + enum cmd_db_hw_type { CMD_DB_HW_INVALID =3D 0, CMD_DB_HW_MIN =3D 3, @@ -31,6 +33,7 @@ enum cmd_db_hw_type cmd_db_read_slave_id(const char *reso= urce_id); int cmd_db_ready(void); =20 const char *cmd_db_hw_type_str(u32 addr); +int cmd_db_read_name(u32 addr, char *buf, size_t len); #else static inline u32 cmd_db_read_addr(const char *resource_id) { return 0; } @@ -49,5 +52,7 @@ static inline int cmd_db_ready(void) =20 static inline const char *cmd_db_hw_type_str(u32 addr) { return "unknown"; } +static inline int cmd_db_read_name(u32 addr, char *buf, size_t len) +{ return -ENODEV; } #endif /* CONFIG_QCOM_COMMAND_DB */ #endif /* __QCOM_COMMAND_DB_H__ */ --=20 2.43.0 From nobody Sat Jul 25 05:59:49 2026 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 E4E143783C3 for ; Fri, 17 Jul 2026 07:50:38 +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=1784274645; cv=none; b=SSp7QkNje/Mj3fs/eGFeWJdxj1WNL/GWFcrK+K6pfwjmUdzveXnC9Khv620JmXNCRWQB7ZxpEHINCKL7q5iNogvKdUHIbrs25VUcwWc6nIivBIwjgFBibE/36wRgA4nuESz5T5GzjK0uqCnUANpf0E8bVfd27iQRNoOkF27LK4Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784274645; c=relaxed/simple; bh=vOfnmeXU0cqc3MHekNbIYc2ae8UgN9gwMn0gpt2wTmA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ncN0CUVi49wr5sACoh5JG63ocNkSVTzFYKX9uSmTCrQtMX8vU5XaXr+r/+BUS+nFg+9TI9Ty+gGxhl6Hkys/NVdrMxgjSNFqCfJ/3nh2VbftlTz+EH4PkEEN3+2PVBWnqF5qtQDLarG6TNgaipIEOJeBRvrkLIfrhrC4iCFmigM= 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=OTPolJQO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=POqBhbdA; 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="OTPolJQO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="POqBhbdA" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66H6cFSR1065322 for ; Fri, 17 Jul 2026 07:50:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= GvTYPin2ZMDeLYHmh2fTtQMYHF63GklDWCdhpRXRrfk=; b=OTPolJQOy9Eoje3J VB/VUMJYHo7iEXObPS3seUwg+STUVzr+TPpAunyH8ISXPv4fummBQliJQRJy9Z4m 88Pc/aDj5LPIcgzQgrRLxRTuAJp/mdyeU4dtfgXAK+lEfhMRECfNmQmQI5iv08L0 czASHDXsIlvnwWRZejqw2+xpMRFkv3ZtIiYNmUF0/bVVocWwyi3kOpI1JfjmKNp0 lzuxPOBqFNMr2FNLw4pPrmPwUI8t0SXUkrwU3KFP16OnDRY9IKJ1FRSm/xNBMmsI wxQn6QHKIoYGLdHPgW+l2+gCsYFZ39fYGSlpi0v71Ap7ZFJvsYZj0Opp5rP0UHHe Y0txfw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ffbquh1ht-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 17 Jul 2026 07:50:35 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-84857446424so14459440b3a.1 for ; Fri, 17 Jul 2026 00:50:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784274635; x=1784879435; 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=GvTYPin2ZMDeLYHmh2fTtQMYHF63GklDWCdhpRXRrfk=; b=POqBhbdA09aU/Aj30W6C9TLdwi3Gi1Otw3eS7bzKMyTFzRJ/dQvqY6L64Bb2H/C32j LdoeIevgFID8ic1TKodHzbU3I7Ts7paWllwWF+tYFqArKABYhBaEa9IGivjldMLGt6nU DL4LTpUI2RiNHb+E/juAY2jd6y9+GwpJujQ0ekb0hrrqL0zFUVYm7CjtnMd+peaFazdr z+5s7VmWrAnsZ4Nyr5od7CW4YQlKO5eStn2eddAXm6KQPUjKJILRJXh8TBoNtN80BtFP b68qcDR7dyqudpb30JgodQ8jtP5jTp00H984YIv7yxB5xjZ1hITAQTVW4m1a/rlM1NZB NH2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784274635; x=1784879435; 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=GvTYPin2ZMDeLYHmh2fTtQMYHF63GklDWCdhpRXRrfk=; b=dodZd4yANSKE3FADbVeocoNs2uRX6qyu8ZgKbkGFuIaN05FaeIAhDOhnT8VvxWwGPa toI303hK5N0dX8Ksw5UzQvEqd1MGTfM7pGJ439Rkv4hezDYZjxl0ZpwMItXsxpswmEEC SJVNfBq78RCQ3ftaujjPWsNNTaSCWcJaG4w6a+GAH4t20oDZEPz4tIylLKeIW/IR+Nr8 lFiQPXGTKeuSiUWxigQ9YsPVrZnH+9nmj3sMG/eRZA4Dh51RQKSwRd0iVMI5GimGizjl pl1+AdaRq6wzT+rf+ge1NLeqbAD87j+KM/pmt/kE3gHt0wOnfrrAtrae9Ux+XcWIb3Gq 6gDQ== X-Forwarded-Encrypted: i=1; AHgh+RoiKOA44NjRbwtVND6DXLakOYHKX5MaFnCTWhOZozlKWgSj3lQcPLfUJuvxGe0hbqNtW9iqDB7yfRoaSNE=@vger.kernel.org X-Gm-Message-State: AOJu0YzbE+SzWIfusW4gTIyYHlwCpue+LexEu6LmmM8uhwerOY9ivnrz F6dUEtnsZIB8X4Xe4Wq3z3Au5eYwxN0TYL7JlRH4gY+lwbrTcrV5abcHR+xiE9ZdxsP9k5Vccxn gM5n0DV/ubESrJq0qKjV+xsDyqKAZXMT5jUzz/WEteCM7FW65VrPxWowAD88XcSlUC8A= X-Gm-Gg: AfdE7cmWYi++fGEBHf9QNYnrEeWofA/wn+aUYghN0EOW9cOR2PwBXeEWzjGrKbjUBLi f7YvWLP2tlFNoXXenSrtdf0U7cqyZoYDi/icyRPNcgUpofKgDDdyi9aoI+dknaX4PBEmNQnf8O2 G2ydcC2cszGLZ5bRLbaKQay56YjFt6N3hdVmPY+NHTDZ3Z2QZltuL/TOL0p1fi66EDCKt3a2GCI R2QBI+M1UOcFxyPRpjQibBVA+9d01ndq8Xa4p56xIIRwOHt+AfsSRkiIQKwzhTIBYqrzFwdr1Mw 2DZYGInnXL/NxJIJAO/zId1xqXZ86rCZQLiWQ4lIM5mTTkfD0PvreR0xqQQp81QCzUWSqvs6PYi YR2Y+lHxhro0p/ePHAVv12ASbyRrM X-Received: by 2002:a05:6a20:a109:b0:3c3:a4f4:c5be with SMTP id adf61e73a8af0-3c3ad604d37mr1639038637.2.1784274635105; Fri, 17 Jul 2026 00:50:35 -0700 (PDT) X-Received: by 2002:a05:6a20:a109:b0:3c3:a4f4:c5be with SMTP id adf61e73a8af0-3c3ad604d37mr1639006637.2.1784274634489; Fri, 17 Jul 2026 00:50:34 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cb517f8f223sm449323a12.9.2026.07.17.00.50.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 00:50:34 -0700 (PDT) From: Maulik Shah Date: Fri, 17 Jul 2026 13:19:44 +0530 Subject: [PATCH v2 3/3] soc: qcom: rpmh-rsc: Output debug information from RSC 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: <20260717-rpmh-timeout-debug-v1-v2-3-81ade4fcdb49@oss.qualcomm.com> References: <20260717-rpmh-timeout-debug-v1-v2-0-81ade4fcdb49@oss.qualcomm.com> In-Reply-To: <20260717-rpmh-timeout-debug-v1-v2-0-81ade4fcdb49@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah , "Raju P.L.S.S.S.N" , "Raju P.L.S.S.S.N" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784274624; l=8106; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=hHp2PU5h+PtbUQkU62WFx5wOCGcIHx3udLLCNvTmcEY=; b=Ymi5rJWG+9RBKluoh/3fDyj3eEb5/o2RmdaWSl7+qSC0k9cwHycfcv+XsmV6EReO7fQcNMpau 5/w9uvfQvJ4DFvRU3qm3wjgLvAAKkufvM31JIdU/WCqHratdyTO5u9D X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-GUID: zrZYgrc6I1E6thBuBsXmuNFzLMcP1ren X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE3MDA3NiBTYWx0ZWRfX50IBwEA2hE0f UEIB/oJb7BXO/6lVeimTKqaiaYfZMXLPZmAAJv0xKKMi2xVbt+G6aUoxxiUnC2+9yvOEu1HDdme 9RwRIHkWQ7d6COJSITaBuUgz7HzUIzzKLHIz/FPlprTw6cl64qUShdNY8kW7Le5E+LmC3xI9Kvj KcmcL8gxbx7/xEKFOccsBRPhQBXU+i16y0LQJnzPJQopVy6QWDU3uBXgo/cqRIjcsqvBcT0K8Ay aM/Xn/YFdJ7kUX+Eqvsx5CJngOO8WewHEW13PF2pjqFSCYpdH4JugLLjFHwmdECBqxH+uuMyvFB P24p046SXrCtqJpCgf61BiJYW+I0np+TvYtuN7qhxBlWrshUDjLlVfm0u/Z66dryLEBeo7O75f6 P04AbXY1l7sypTVptaw4YCfpbSXbHeiIDfEiiXkoh7V36QV/A3vzSKIcQ8rlqC+UpMN+Vh0j7g2 WKWwXPcpWD/r1bylV0A== X-Authority-Analysis: v=2.4 cv=NZ3WEWD4 c=1 sm=1 tr=0 ts=6a59decb cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=LpQP-O61AAAA:8 a=EUspDBNiAAAA:8 a=trosdIjOZtX46syy6LIA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 a=pioyyrs4ZptJ924tMmac:22 X-Proofpoint-ORIG-GUID: zrZYgrc6I1E6thBuBsXmuNFzLMcP1ren X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE3MDA3NiBTYWx0ZWRfX6mllJE9sENKM HBkoojh4ttwOj8HERyY75XuQh2e6+GLj7NYkhzx4oy2KW0IWT9rZAVWkiTka17fMg1R/6v3pjPJ pChdT8UfnGraUIdH0Jh/mRKNq1roTug= 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-17_02,2026-07-15_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 adultscore=0 bulkscore=0 phishscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607170076 From: "Raju P.L.S.S.S.N" When an RPMh transfer times out there is no visibility into which TCS was stuck, what commands it was carrying, or whether the completion IRQ was pending at the GIC. Add rpmh_rsc_debug() to capture this state at timeout: - Iterates all in-use TCSes and dumps per-TCS control register state (controller status, AMC mode, IRQ status) and per-command register state (address, data, message ID, completion status). The accelerator type (ARC/VRM/BCM) is decoded from the address using cmd_db_hw_type_str(). - Queries the GIC pending state for the RSC IRQ via irq_get_irqchip_state() to distinguish two failure modes: * AOSS firmware did not respond (IRQ never fired) * Linux lockup (IRQ pending at GIC but handler never ran) - Reports the completion object state to cross-check with the IRQ status. Store the IRQ number in struct rsc_drv to enable the GIC query. Signed-off-by: Raju P.L.S.S.S.N Co-developed-by: Maulik Shah Signed-off-by: Maulik Shah --- drivers/soc/qcom/rpmh-internal.h | 5 +++ drivers/soc/qcom/rpmh-rsc.c | 90 ++++++++++++++++++++++++++++++++++++= ++++ drivers/soc/qcom/rpmh.c | 4 ++ 3 files changed, 99 insertions(+) diff --git a/drivers/soc/qcom/rpmh-internal.h b/drivers/soc/qcom/rpmh-inter= nal.h index e3cf1beff803..c06f81da140e 100644 --- a/drivers/soc/qcom/rpmh-internal.h +++ b/drivers/soc/qcom/rpmh-internal.h @@ -98,6 +98,9 @@ struct rsc_ver { * @tcs_base: Start address of the TCS registers in this control= ler. * @id: Instance id in the controller (Direct Resource Vot= er). * @num_tcs: Number of TCSes in this DRV. + * @irq: IRQ number used by the TCS completion interrupt; + * stored to allow querying GIC pending state for + * timeout diagnostics. * @rsc_pm: CPU PM notifier for controller. * Used when solver mode is not present. * @cpus_in_pm: Number of CPUs not in idle power collapse. @@ -123,6 +126,7 @@ struct rsc_drv { void __iomem *tcs_base; int id; int num_tcs; + int irq; struct notifier_block rsc_pm; struct notifier_block genpd_nb; atomic_t cpus_in_pm; @@ -141,6 +145,7 @@ int rpmh_rsc_write_ctrl_data(struct rsc_drv *drv, const struct tcs_request *msg); void rpmh_rsc_invalidate(struct rsc_drv *drv); void rpmh_rsc_write_next_wakeup(struct rsc_drv *drv); +void rpmh_rsc_debug(struct rsc_drv *drv, struct completion *compl); =20 void rpmh_tx_done(const struct tcs_request *msg); int rpmh_flush(struct rpmh_ctrlr *ctrlr); diff --git a/drivers/soc/qcom/rpmh-rsc.c b/drivers/soc/qcom/rpmh-rsc.c index 66928ca40b9a..a8ccd4085a1b 100644 --- a/drivers/soc/qcom/rpmh-rsc.c +++ b/drivers/soc/qcom/rpmh-rsc.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -89,6 +90,7 @@ enum { #define CMD_MSGID_LEN 8 #define CMD_MSGID_RESP_REQ BIT(8) #define CMD_MSGID_WRITE BIT(16) +#define CMD_STATUS_TRIGGERED BIT(0) #define CMD_STATUS_ISSUED BIT(8) #define CMD_STATUS_COMPL BIT(16) =20 @@ -684,6 +686,92 @@ int rpmh_rsc_send_data(struct rsc_drv *drv, const stru= ct tcs_request *msg) return 0; } =20 +static void print_tcs_info(struct rsc_drv *drv, int tcs_id, + bool *aoss_irq_sts) +{ + const struct tcs_request *req =3D get_req_from_tcs(drv, tcs_id); + unsigned long cmds_enabled; + char rname[CMD_DB_ID_SIZE + 1]; + u32 addr, data, msgid, sts, irq_sts; + bool in_use =3D test_bit(tcs_id, drv->tcs_in_use); + int i; + + sts =3D read_tcs_reg(drv, drv->regs[RSC_DRV_STATUS], tcs_id); + cmds_enabled =3D read_tcs_reg(drv, drv->regs[RSC_DRV_CMD_ENABLE], tcs_id); + if (!cmds_enabled) + return; + + if (!req) + goto print_tcs_data; + + data =3D read_tcs_reg(drv, drv->regs[RSC_DRV_CONTROL], tcs_id); + irq_sts =3D readl_relaxed(drv->tcs_base + drv->regs[RSC_DRV_IRQ_STATUS]); + pr_warn("Request: tcs-in-use:%s state=3D%d wait_for_compl=3D%u\n", + in_use ? "YES" : "NO", + req->state, req->wait_for_compl); + pr_warn("TCS=3D%d [ctrlr-sts:%s amc-mode:0x%x irq-sts:%s]\n", + tcs_id, sts ? "IDLE" : "BUSY", data, + (irq_sts & BIT(tcs_id)) ? "DONE" : "WAITING"); + + *aoss_irq_sts =3D !!(irq_sts & BIT(tcs_id)); + +print_tcs_data: + /* All TCSes on a given SoC have the same number of commands per TCS. */ + for_each_set_bit(i, &cmds_enabled, drv->tcs[0].ncpt) { + addr =3D read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_ADDR], tcs_id, i); + data =3D read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_DATA], tcs_id, i); + msgid =3D read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_MSGID], tcs_id, i); + sts =3D read_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_STATUS], tcs_id, i); + cmd_db_read_name(addr, rname, sizeof(rname)); + pr_warn("\tCMD=3D%d [addr=3D0x%x(%s/%s) data=3D0x%x %s sts=3D%s%s%s]\n", + i, addr, cmd_db_hw_type_str(addr), rname, data, + (msgid & CMD_MSGID_RESP_REQ) ? "resp-required" : "fire-n-forget", + (sts & CMD_STATUS_TRIGGERED) ? "triggered" : "-", + (sts & CMD_STATUS_ISSUED) ? "+sent-to-aoss" : "", + (sts & CMD_STATUS_COMPL) ? "+resp-received" : ""); + } +} + +/** + * rpmh_rsc_debug() - Dump debug information on a transfer timeout. + * @drv: The RSC controller. + * @compl: The completion object that timed out. + * + * Dumps TCS state for all in-use TCSes and reports which accelerators + * did not respond, to aid in diagnosing RPMH timeout failures. + */ +void rpmh_rsc_debug(struct rsc_drv *drv, struct completion *compl) +{ + struct irq_data *rsc_irq_data =3D irq_get_irq_data(drv->irq); + bool gic_irq_sts, aoss_irq_sts =3D false; + int i, busy =3D 0; + + pr_err("RSC:%s\n", drv->name); + + for (i =3D 0; i < drv->num_tcs; i++) { + if (!test_bit(i, drv->tcs_in_use)) + continue; + busy++; + print_tcs_info(drv, i, &aoss_irq_sts); + } + + if (!rsc_irq_data) { + pr_err("No IRQ data for RSC:%s\n", drv->name); + return; + } + + irq_get_irqchip_state(drv->irq, IRQCHIP_STATE_PENDING, &gic_irq_sts); + pr_warn("HW IRQ %lu is %s at GIC\n", rsc_irq_data->hwirq, + gic_irq_sts ? "PENDING" : "NOT PENDING"); + pr_warn("Completion is %s\n", + completion_done(compl) ? "done" : "not done"); + + if ((busy && !gic_irq_sts) || !aoss_irq_sts) + pr_err("ERROR: Accelerator(s) at AOSS did not respond\n"); + else if (gic_irq_sts) + pr_err("ERROR: IRQ pending at GIC but not handled within timeout\n"); +} + /** * find_slots() - Find a place to write the given message. * @tcs: The tcs group to search. @@ -1105,6 +1193,8 @@ static int rpmh_rsc_probe(struct platform_device *pde= v) if (ret) return ret; =20 + drv->irq =3D irq; + /* * CPU PM/genpd notification are not required for controllers that support * 'HW solver' mode where they can be in autonomous mode executing low diff --git a/drivers/soc/qcom/rpmh.c b/drivers/soc/qcom/rpmh.c index ca37da3dc2b1..268f52088fdd 100644 --- a/drivers/soc/qcom/rpmh.c +++ b/drivers/soc/qcom/rpmh.c @@ -255,6 +255,7 @@ int rpmh_write(const struct device *dev, enum rpmh_stat= e state, { DECLARE_COMPLETION_ONSTACK(compl); DEFINE_RPMH_MSG_ONSTACK(dev, state, &compl, rpm_msg); + struct rpmh_ctrlr *ctrlr =3D get_rpmh_ctrlr(dev); int ret; =20 ret =3D __fill_rpmh_msg(&rpm_msg, state, cmd, n); @@ -266,6 +267,8 @@ int rpmh_write(const struct device *dev, enum rpmh_stat= e state, return ret; =20 ret =3D wait_for_completion_timeout(&compl, RPMH_TIMEOUT_MS); + if (!ret) + rpmh_rsc_debug(ctrlr_to_drv(ctrlr), &compl); WARN_ON(!ret); return (ret > 0) ? 0 : -ETIMEDOUT; } @@ -383,6 +386,7 @@ int rpmh_write_batch(const struct device *dev, enum rpm= h_state state, * the completion that we're going to free once * we've returned from this function. */ + rpmh_rsc_debug(ctrlr_to_drv(ctrlr), &compls[i]); WARN_ON(1); ret =3D -ETIMEDOUT; goto exit; --=20 2.43.0