From nobody Fri Sep 25 12:03:08 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 C15163E92A9 for ; Sun, 13 Sep 2026 12:55:08 +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=1789304110; cv=none; b=GNy2E3gCQ0MLgF+8HQgq1vOmGLy843xs4MBn0+8SnPF/c9RbiITeRj3fWcc/1h8vbRkiOxb1lEo9jQBAVE7IfsV2Y0ju1Pb2Npx9UpyMIyChmHnUalpXBcyjmGRyEUea21BxcLO5KJy0kMpUFVmnO94qKNMjhx7MTSFWs7Hbcuc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789304110; c=relaxed/simple; bh=Awtww+xGbDL+nxVnQEG1cxUG7fthGy19mjWzqfVG5cg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O+AyYfqEkQ5RACMajARZysewdfjGFHtcqZ/y6+7M+7HutET0F7nU1i3TyZDtM6MfR6qNEH6IFskaGal8oubqQR5faEpNjBfFRqKeJNkluhlQv9+dBE0lZWjAMU+Epx0LRT9fHZzyDAH7f5uv93Tb3oCR6MUm6YWrLaaaExBwLvY= 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=QJ/he6kS; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RN5FWVLq; 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="QJ/he6kS"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RN5FWVLq" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68DATiNa2609459 for ; Sun, 13 Sep 2026 12:55:08 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= mdoSA1kgar9Z3f+Ulk0kOmhE3Fl6cLYdcHN+I2h4KKE=; b=QJ/he6kSePzEqURb PlkZhDq/Mw0Rq7mc32YYsGs0JLMlsLwdG7QuZ4bC0uTkKL7PHqTZYznKc22q+L1j BJ2fPD1zD5kGv+kTBO9PUJvNmq33wjjDYgR14XeTwPxPkI0MyZdnJ1h1Ov1tWdgI LXsLyu5pIa8Xykclb0v1pliPuhUEBsxKyuJypcWGqukEq7pz1gKimHtqVIyn+d9w CL+KLAq48CokQrE8qMHVeAAzFYETjg/dd3fpmdJ2D/y/a93x7zRLOhNhcAEtejVS lXgTxJ8bxWTG+h1FZ8Qm6B5M08HMzNmJNs4E8UTx/gPoRN1eJ3J7j+7Ev0rjpiJ9 TkOf8g== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9ck89e-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 13 Sep 2026 12:55:07 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-398fe469aa0so4412330a91.2 for ; Sun, 13 Sep 2026 05:55:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789304107; x=1789908907; 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=mdoSA1kgar9Z3f+Ulk0kOmhE3Fl6cLYdcHN+I2h4KKE=; b=RN5FWVLqxIubuj9n53DHYO7ChRFUPGftLDwLeA4oagWYW+yjqg6GfpxZOZ7BbVmWp9 hv+hACBohgo/lui7AbecjjlwcEAUyDAce3UA4r8UoE1+hnpmWrVF0Kd1iL00QIpiQIM+ w33a0V5/qSdGTRCr5J/IQsoXcSZwJnkb32eZvTMC41xCkpB87hXxep+sFJYEsuI4pdk1 FzBV3+X6Y3ZTMGEFUoZs+uNG9Zpt57O8rSIbGBy9f8pWWIH+vyTsQIDANOqVONwlsdMR oR4WR9OydQ8zT79apTUVfvMYWmEzbmafqjHHDAWr0zXOf2C01qbmgZjn0cEqLMGwcIdx +2nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789304107; x=1789908907; 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=mdoSA1kgar9Z3f+Ulk0kOmhE3Fl6cLYdcHN+I2h4KKE=; b=gEv/e8yHbgjWjvRB4biR9KFdcLAWsUjq15d3/g/44sm4oRSCTPL8un5aqPZQcHtZ5L iiZXK5uVuv5ki+xPyrlszW/mHcXB85Zwi+gMznXXuOMz9nPFADKMDFgkJc6mmr83pJNv zujikvED8blI+TVPzGFWDK6V8yd9xkTPq5WFgX9V44v0LL3WLXFqSKsUjZjJCYopelog qa2fb7EIbwLiubPZ/PxHrXC96FBsmAhvNiJPaUFniYdhQOMS6y8F6cm9dG8u1If+EGcA AFZQKq3RMerGq5F7WFwPNsbUTGDrSOlU7liPIekoMI+waV3TIX3Teskk7fpTXXOgY4X/ 5/iA== X-Forwarded-Encrypted: i=1; AKwUvByJcF6whOCwsmCY9xVzkQdUEY1//kMZFwCeIWK0komRWg3oQQCQ14J6V1X+Dlq8HJfSLYsOo2nGMxkYLqU=@vger.kernel.org X-Gm-Message-State: AFuF++nTSSnBpHbdTgSAq+yvUO5oVoz2KYc4qsQadQp6Ct+vRPLHC29n 713EMpVcYJpb3Urpo2mo79j4zZa+X3g4HzG08R8NapEzTWEtC5b0qUnfD8ShBEc43csdDw9RRyM rXRvWbP7VDSbGZqsCzB08R/Mz1U1yUMd5UZZjC/Fcawyv2G7vokqK6MLcTMfOB4qNSZc13+Ht9J 4= X-Gm-Gg: AYBFou3cl9PqcDBib0aUJ7AgN2CyXioNnT8b1mYW0sU6N2H322U5x3Qw/+6OcJ8xJw3 cdEGJdv9L4WhFJiDY3S/txA2BMz1Jwa7ffpMhWAThJQIzHPOZo0dIpbrSuYfvWchcwAMfTRod5N 1ticy1Ew7CjmVRrJ14Va83jx+w4/ZDqIPs3fpjgcAtOiNO4qz5fkEshT5nw4zmeZwSoygwHwNhO lZ9NR2HgXUYO74eBiTyVD1BsYN1dYFfwaCpFSyNEhAlsH3+K7y4v2uH0sipNhPt6Yr8zWiOo09t Sexn4aN1ViKFI09me+qg8UpoP/Zi7qHAY/muEF9boMeqSrHUyMOrbRejqt6jQ97AnTRXwwxqVqn TRZ7/JTVShtA0zuv6x+GigQLb7gmT X-Received: by 2002:a05:6a20:1604:b0:3bf:5b7a:fc8b with SMTP id adf61e73a8af0-3daecac7fc7mr24845478637.0.1789304107330; Sun, 13 Sep 2026 05:55:07 -0700 (PDT) X-Received: by 2002:a05:6a20:1604:b0:3bf:5b7a:fc8b with SMTP id adf61e73a8af0-3daecac7fc7mr24845405637.0.1789304106887; Sun, 13 Sep 2026 05:55:06 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365a598aasm18027211c88.1.2026.09.13.05.55.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2026 05:55:06 -0700 (PDT) From: Maulik Shah Date: Sun, 13 Sep 2026 18:24:23 +0530 Subject: [PATCH v4 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: <20260913-rpmh-timeout-debug-v1-v4-1-e94d3e416ea1@oss.qualcomm.com> References: <20260913-rpmh-timeout-debug-v1-v4-0-e94d3e416ea1@oss.qualcomm.com> In-Reply-To: <20260913-rpmh-timeout-debug-v1-v4-0-e94d3e416ea1@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah , Dmitry Baryshkov , Navya Malempati , Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789304099; l=2695; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=Awtww+xGbDL+nxVnQEG1cxUG7fthGy19mjWzqfVG5cg=; b=OVr+rQ/in0HOwWQo/kZom+aLV8VkNZu+Df1BTO6ImCVLM/MwGUe2C78n15CAcYijW0gnTzVVs n0XaYyQcZ6eBgDs8huSIBTCaHUtEwXahVm5RBBYyq0/4xRGl202C3bW X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEzMDE4NCBTYWx0ZWRfX5ko6Y7d84n/Z EElIAtKhfh9B4IenAh2v6P08cZJmizlFCgsgNupBAKe8Jyi+ZspkxBOkHTQV8g2Uac8sShwWzJx p0fyASzl15bwVZnGt7STB7Rn637Ha6nOEMOfXSC6eqmf0i4p9mSZOKiD7GQu45qqBfAphWPhrso ZYs2gzKEelaUS7qPyn1eCdlIdtnrPcASYQSMRPJ4C+8TIqbVioWP6TqXzjZbSsIGdBpMMrfO9NX GAJcvDoMHoRsX1XA8vp9yZ6KXfufkvLvsJpYACL0uN0GA36CpYecC0KfxFPvm2fd9Vf0Y1EG+nN VRaAtZVHDKu+SlJPhJ9qqfPJWb8Wxelgnaimtu+5+6ZywnvwW4tb6iI2xq6S7DC5KXea5VLl4e/ Ps6n2zA13KmS2iBmTYeg4iWquMEEXdj85BJS993AJM+V4NCmJ0X9kzwFgvDDYkwqW7DTiDoRJNB SvbGsoNMyR92x6AJNZg== X-Authority-Analysis: v=2.4 cv=EMyTQFZC c=1 sm=1 tr=0 ts=6aa69d2b cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=OEZb8WWwy_IDIPDo1iAA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEzMDE4NCBTYWx0ZWRfX5ZUfczGjtLVE jRmjc4sKe6T7lWDgBhqaJVXFZ7D//astlY3NzcNCJz48dmsAlFP8W2oCZwor0wHlR1rXXFQvn12 pk20MBkjU/Xs98GdUClqTs005VAzr5Y= X-Proofpoint-GUID: eGqeurtkaz2V9ADexuu3mpXdRhWCr7UR X-Proofpoint-ORIG-GUID: eGqeurtkaz2V9ADexuu3mpXdRhWCr7UR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-13_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 impostorscore=0 spamscore=0 bulkscore=0 clxscore=1015 malwarescore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609130184 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 Reviewed-by: Dmitry Baryshkov Reviewed-by: Navya Malempati Reviewed-by: Konrad Dybcio 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 Fri Sep 25 12:03:08 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 6C4AB3E95A4 for ; Sun, 13 Sep 2026 12:55:13 +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=1789304114; cv=none; b=R3zuorKJLA+g4LYWCU/xcEyi/vpvg+oV+XEAOBMCHmmy8nqGPA/mzil0NhrBBq3zqBJvEYhXTTXNbmMtpn9Fog9LI9fE1jGu/33VYQGXhiVplWZAbiXKToYm/aNFHN0ZRaLSRONJUJLW/Rhq1Mr2xiE3MknYf1Y4zvdWMPScW9Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789304114; c=relaxed/simple; bh=b4WvXQ0COzU5NuxznFesN5SzpLiS/QR0/NbsHm44HGs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cj/0p/CJTlxGm+ENjD1KbkQvxJkVNvHLNV1EM1ByIjvkQ3K8Db+WE0+b2LHIiBLF4Gx44yN8qXhbWQGGoFjnF/AyauU5GD8PTny0U3embsdgY/fpF4t+Fr3zaPMQi6M9GS3/7Z/R5M17YQdqKM0zEWzm9Zyvg/n4090F+UGWR5Y= 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=SC2PsqHH; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YPSLC6sl; 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="SC2PsqHH"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YPSLC6sl" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68DATv7j2052422 for ; Sun, 13 Sep 2026 12:55:12 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= P0hFYEAWjOWGQHPFsazn/kZWAVEinVYrYfd3wwodbro=; b=SC2PsqHHnLaMuvwf PLmaSh6zSDYpZWaf9obxxFU+qkQlMCbWy37qkvj8pfgZ8sUNC76bCx84R//pAemE bkqh7BafYiQCk7ApDaw1U1bQ0bnF3WmnlSjyOoRHF5aWHtEr8MX7sbfK7EnSJ8HL Wk7IFDdSctVginJEPy35LcyuXjnzJAGzQFgGTb0WMm8Me2HLdTHUzBcAHlY5Xbwi H33k5ruhDsGZjMPFQjc3cdDRvrU67nwEPKMWZt+lahMR5Wfxodr8CpQfjZn79tgl 8qjOtkD8prwBnPG1qJ4xq3/w7df4q+pvlR5/5ayOg+kyaiX62syUzuN9QsrJB/dE OK/ivg== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9dk8np-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 13 Sep 2026 12:55:12 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cb835525b10so2974258a12.2 for ; Sun, 13 Sep 2026 05:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789304111; x=1789908911; 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=P0hFYEAWjOWGQHPFsazn/kZWAVEinVYrYfd3wwodbro=; b=YPSLC6slC/hk2avEjT+f5avIuDW/iPKymxxev+C5HAKcRQFzWJZUkYvxJP/efp0k73 /h0sdFEgsi3ZdbkJr+D4D4JW+qUKRg0eRHy7DBp6BUeaVLOpT+DNbM1jnZuajtOdsnEK fwx2gB4LR11rcIrazLsF7kH7NsD6MwWgyKy1FR+1pF8NbZHWjXmpuytQF1SzUQi5EEa9 2rXqvbTWSsz9Seu89oMyICbiEZ3g4avLjhoI9dCJvnZOSFm20TF9NL56hEqknVBUJcOE +BDWqXR97ehCISTIm2zBKboaIQhfSvivhxg3XOV3mIJUCucNQJTGkzBzh5KPvvy6K7H/ Nf0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789304111; x=1789908911; 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=P0hFYEAWjOWGQHPFsazn/kZWAVEinVYrYfd3wwodbro=; b=STmkskRwoVO3jwm8bUDnkvs8mivGkae5Ycfq0bANyf+v0AIJuVyE12eqT54p+5Nx/z wErpOrTMKPoOoC5IhV5WwLv/uh44Mho10aHaDINvwwJtgu5LtlQpcRFDQQzzZU4maVy9 P1yZTPDrR3KnQkbRbVaGi2CqmkPcqTseL5TNr6XlnqAKayH9SlqbjDUvLUWPVxTDBo/8 x4N135e15OZMBM7MxfoqVDx7d3qJJiPV1uhBqihpbNWffmJUdOOPPoSNX1EagSYwo3jJ pXf0g2IOqcPYF2SJn20I6Zd+OVej7CruMoO528926Gc0a49FE4BvQqTDGqTsijku3ItV UpMA== X-Forwarded-Encrypted: i=1; AKwUvByh/RTYj+lvMFyQYKah8RSAKgtUrD3QYrlHzc5Ei8RJYST5yyT8cannkg+Cp0m719phZfxTdhM38xkEMsw=@vger.kernel.org X-Gm-Message-State: AFuF++kO9Ug/JIr/EfV23mKG+HETVNdjbepipWhGWWdV4kiG0ZWB5saf bsMuVGb9hX2DxwTCQQYcmvCmEkSjZPfuLMzB1FB0o+YOMEVOThhgiKJfuGrZ8mXDupNIJg+FznS w250wK5cxb/+5DmT2bE/mySbZLQ7gSPvVxYDkazQW8sL+GqFYkqOjS1FxtIhduE4niPHNF37y3P I= X-Gm-Gg: AYBFou2Bchc/va/qGINpcYDd9TdF8VoZrcPf5dyRYKDEl9kC5kkyNXIrcnklx3taQlp rZ4wyN9U+HX71qWvX31nDqsSoDQBa386k33uj/UVDi+8Dr+xeG82GWuxHxtvGmnmT47J8llDvQI 6S+VZH1+aBmndRQQguOFlrnPUacIyLH9CusU+7zeQCt2ADc4ijRI8qOujA/FZFj0G3tp40Y1XKS SLaZ/aeJtxU0VZqY/D2AxYb4PkN0Lgn23U5U/4dVbMuS6pRoiSMpIjtAUKdHMyNgtFcdGv883uj xZwiWN41/lqmSIdX3+9Z6nxq4s+ZbzvE6YQYuHI7yfeTIr55MPAVkqalzb/A41abfBisospoT+n yRA8PDjoecRUOE97RxLPHqc1wU98v X-Received: by 2002:a17:90b:4b0e:b0:398:bee5:61d6 with SMTP id 98e67ed59e1d1-39dbc725258mr12039424a91.24.1789304111046; Sun, 13 Sep 2026 05:55:11 -0700 (PDT) X-Received: by 2002:a17:90b:4b0e:b0:398:bee5:61d6 with SMTP id 98e67ed59e1d1-39dbc725258mr12039378a91.24.1789304110584; Sun, 13 Sep 2026 05:55:10 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365a598aasm18027211c88.1.2026.09.13.05.55.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2026 05:55:10 -0700 (PDT) From: Maulik Shah Date: Sun, 13 Sep 2026 18:24:24 +0530 Subject: [PATCH v4 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: <20260913-rpmh-timeout-debug-v1-v4-2-e94d3e416ea1@oss.qualcomm.com> References: <20260913-rpmh-timeout-debug-v1-v4-0-e94d3e416ea1@oss.qualcomm.com> In-Reply-To: <20260913-rpmh-timeout-debug-v1-v4-0-e94d3e416ea1@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah , Dmitry Baryshkov , Navya Malempati , Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789304099; l=4138; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=b4WvXQ0COzU5NuxznFesN5SzpLiS/QR0/NbsHm44HGs=; b=Cc5Sja+aTPwWi65l/aZyiEwZjmyztQcVSGwtmcgkx9mRbWt6IXaagbCcjjCvjgIV94TfXpL9H mGFMMVmIgO3BTD/wrsrSop+MJHQzvvoOLhpwezfFvl4JettIP6Sirf+ X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-GUID: fY2wkepukoGQ_Heayok5jw9DbQfQgvmK X-Proofpoint-ORIG-GUID: fY2wkepukoGQ_Heayok5jw9DbQfQgvmK X-Authority-Analysis: v=2.4 cv=NelzRGD4 c=1 sm=1 tr=0 ts=6aa69d30 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=7Q9v_upN9S1qH8PsicYA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEzMDE4NCBTYWx0ZWRfX3JCZzPoQDMyc yrtgE7+ko25IK3TFBfbaGVBSBALlwY6GLrWbmOLXaRh+8F7iBrMxfgxzR4iHNnOPnM3ACKj46DK nCPOMm3GkV71ZnClS677uaOaWCtcZ/o= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEzMDE4NCBTYWx0ZWRfX3gIDv/v5gtik 7p7tDKBxepYUQR0ooxoAh1AXA9CoEA32mPaf7E1VVKGo/WBQAki81bjC7nRgFtRwmNZ5uO5Xt43 jkDE3JfgUDWdwv3es9eSEtoBF/H9fTXUnE3jSkike4D2XxfvgYRNcbIjMOy/MepRtIp32z7h2SN PlBuCQdHM21D/wjp8m4P1zP5Gf9UsrXWP50BGKdmZkFtX+3LcMPP6aaR8ihUIgUOuxejruPJcmi aePyVF6s0VQ5R0lDYAJ+PKjixzgqDd2Qev+C+06sJ88PC1HP6GMEgj3w99BYvpa3MuKPutkqSjF 3pUquWJ8SEE/gYR9OviEwkNReLh320zsCYmNoaNJh6j1YC3DDMI5/uF03G5x6C0CKGvKfZM/E5+ 27ZVX0RlEAAHIU0DYlr0sv/XEmuBTKXYkcTS1huEHEA79sOh+FRK6zYlqcC2O6BVR/CwYfAvAsw 0cCl2o0qw4hJ+Yx3k0Q== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-13_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 impostorscore=0 priorityscore=1501 clxscore=1015 spamscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609130184 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 Reviewed-by: Dmitry Baryshkov Reviewed-by: Navya Malempati Reviewed-by: Konrad Dybcio 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 Fri Sep 25 12:03:08 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 9A2113EB81E for ; Sun, 13 Sep 2026 12:55:15 +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=1789304117; cv=none; b=rkMKRRwngGTlaDOnkE9QcG8QAe/+/bxhugYvfB749qaKSi6FX8hiaoyA0gzPSwzDWi2Q+Ck7HUl98qALIJH9X3xGj5qQtYL9Zq6w0CcDy4+S2etVua1c+5bLBnJtoBmw7BZXIt7iz38rn90LNvD6tgG+7dmnzxFbm/+r2tADZDY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789304117; c=relaxed/simple; bh=st7+2RLBtLVybtoS2yGS90Bce/yZ8E3s6EntD7ajDjc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RaL8eC4fzovhGAIJq2BozbvA0PuX1jtdrl2mZEy5jQRCZ8dwi6xztYnYkm0j9vNUI0ESXh48VLh5yq+Gyt6cH7JI75BcBJvpwOCphrFvzJRsr/d4qLaUvVYyyAd1IO9zrRxR/htsN8/EPLPHS0cbuwLZDzY1RV+hWRpZh+FHwU8= 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=EidypPZM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GtgelJDP; 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="EidypPZM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GtgelJDP" 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 68DAU2671526341 for ; Sun, 13 Sep 2026 12:55:15 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= YHyEsG0xo3BEItrcpTsmjJGGFpOMslQI9IalS5y/Wdk=; b=EidypPZMfKFHZOZD CmdV2VjDf0w1hZOoViHzX2p2YcVczwGxYGZ9rIkDd0QfKnLzMZlFWJIhebJh+8Hx conpRYAGkYLeqTfnpkuhLUXxVU2nQWtzrrx18LGaWWtIbfcZlyptdBTueqJcoFsf LE2R4JNLMv7702aF94v8LNQ2aOkEk+I0BFH5YpVl5GgI2Pksrm9JMeoHZFuCqF6Z ODeXZhJgbH31k1QT7Av+/5mHnpdhbOYZjApzZ62pJpT/FbhXpMYeywuwZC4eDafH qt+hqmZvVJ15JMFEF178q1HjvtH1mgUSTfL9eVbE5kExANYsKRHfXzEDUrUoBwzd AMjVeA== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gmy9d38c4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sun, 13 Sep 2026 12:55:14 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38e8fee6af3so645128a91.1 for ; Sun, 13 Sep 2026 05:55:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789304114; x=1789908914; 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=YHyEsG0xo3BEItrcpTsmjJGGFpOMslQI9IalS5y/Wdk=; b=GtgelJDPKTQISs6owDMPgmI2gx//PUDO/iYMRqTgA+m7o20MOoMxuH/1TZ8qRuikOL 4k2bYNxOu4HdvvGCNCjV67gOPEKaagfs22AoZ02d1Iv/kAR/G/G38rrqV0JWGs1RQpAN YnWR+cpHye2JsVP85LFsAW3HgvO8RZdqAXW3SRxPdkVRnLPFc5Z4sb2M/mCpPifP42Fg J+HZ9plEcplmy9dJ/B8anno36TJigxXleF3lXgbzpdWf4M7qhnuzjH81qONrMarOnZIp KfbLSj8lY5KP57+LPn7niowuH6BK2QSjkCLi1Ft4FvwggTp3xARzMd53pOdVxwehNuMS +T7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789304114; x=1789908914; 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=YHyEsG0xo3BEItrcpTsmjJGGFpOMslQI9IalS5y/Wdk=; b=kZaLvKiPYpHzS8G8/fK/SauA2oNA4rkfE9r+e9IJxxSt0yt+9f3syVVJuId1kbvYVQ ZRaSEJwYt18PQZWy9HohegZhCUKEA6vVurzMueQF6MqHvRtYT20CSLaCJtzo7MXaUx7J FOc9HcQTTqUemA/yGJnYRdHYs8ecntQH26OK1/2kiMxUeEz99IF+kdVMzosFUr9CINmK vQy46wrLoahaQ6awFmzShkVsiFlyEqmN1sgtOsI81tSJDWe/yeK6EQV53rDiF8XPXsjq gqX6HrzmqNG5gsZuJDXHS8FsFMtz6umw+vXxEefnegy4XorlTcpMw4hyttE4SORFgt/s j6Jw== X-Forwarded-Encrypted: i=1; AKwUvByPVv59pOUcKGR97nTsTd0MOzt5TJiJKMTUIMr0QZ6wbzeuhP8jpovJEJjft+0z9XcmGM5Adv1V+paXVNg=@vger.kernel.org X-Gm-Message-State: AFuF++m4cWvMBEqsR6gdz4/iQMH9aVZewxWsg8g/Ztj9hvyO5RrIYL8L xrmOCwcH21/m1ZndIqKcN9/AbJR8vzE+9jNiDrmAju5hbGbUG7+19ep8SWk0iO/ALOyCRfKWaSk RLS/5U2BrLooawkODuv84a0YuY8uSOyP04oG+5ZD3wo4mG3lVd7cVLadxOzvBaafg7x4= X-Gm-Gg: AYBFou3nFQnFsppBD44a3hvuSmIxxvfxWHAk4BkP3aiQoZxWuCtJcYA8Y4NNi2m0Sq4 57+z30RjKKFWZB5q3zqQ0LVkPlVYjGdSN3VnBN7LAQXwd9ZDQEzn8D/9FAk6L18FbKQ6scLiyWQ nbTwTEiK7ExkE42Jv/4Ng2yKtdrWHCKwzAF9NCA/9X6wkgHms+Fqp555tMnr8nbcWt/U2uKliIo M1DOOUcO898CtsnfAehr8MdJWQDHCoLfWFQ957iUljnX4MD/1m4yLeYFa7/srEZWqNvenHK7LmJ +by2EHD3IfAK7z+W3Y3Ii4ULijfIcLzyjaZr8f8HMtT82UYWJaRoaVSdveZGj20V5S0038+Bv1u hlbMEyx+36nuBzdeJaM2+kUD0xT3a X-Received: by 2002:a17:90b:3a0c:b0:366:10f1:3d91 with SMTP id 98e67ed59e1d1-39d9bc10065mr22904655a91.1.1789304114139; Sun, 13 Sep 2026 05:55:14 -0700 (PDT) X-Received: by 2002:a17:90b:3a0c:b0:366:10f1:3d91 with SMTP id 98e67ed59e1d1-39d9bc10065mr22904602a91.1.1789304113666; Sun, 13 Sep 2026 05:55:13 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14365a598aasm18027211c88.1.2026.09.13.05.55.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2026 05:55:13 -0700 (PDT) From: Maulik Shah Date: Sun, 13 Sep 2026 18:24:25 +0530 Subject: [PATCH v4 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: <20260913-rpmh-timeout-debug-v1-v4-3-e94d3e416ea1@oss.qualcomm.com> References: <20260913-rpmh-timeout-debug-v1-v4-0-e94d3e416ea1@oss.qualcomm.com> In-Reply-To: <20260913-rpmh-timeout-debug-v1-v4-0-e94d3e416ea1@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Abel Vesa 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=1789304099; l=9712; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=cFSfk480HWFmQews/kB8NaOZPyiRJUPYC/066WP91oI=; b=MafbvCMENboOKcnpsiv3+G+iw37PCEqCMMdT0ZbNPCHNeNd+xIxREOb2K91FgJp86/f3FOqJi A1PUlMMQWX9BqjIWTClBe68ZOYqp8vAv04MH6gUyFKAE9PDSMM3GEfg X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTEzMDE4NCBTYWx0ZWRfX43ERumiFMRMb wPhsIJVrmAz7I/x9GHa0VSRsr8GwTuIZOPlsVfxRZ2eZVo2dQx2OVwfYu5f6AT19hV9WQE6yNmE zh2Xf9WJYmT9fSiP6uV4e4CSciB3pCs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTEzMDE4NCBTYWx0ZWRfX4hWeaR5hr0/r 2Yn/kjYTxnT2Joa6UaZqPkI2ETw+s9gRwqLurVT0ZvvCBoIythbo3KpY7JsVnFuoeKqTonCWwey d6f+PeBzloEITikzvKvZ1dZJj0q88ATiPNwe3lZ/id4IYmSqcdeqQwiZ72eSeF1NQFOijqD0JcA eZC0ehFQkRjHYdnEw8lWZAgCtYf8Jyl/ZDD4VoBDxPN/tVqeD/BpnVzS0my04szwulwVFI7jJCO wMiyKWprurheNZ5ui8YsgmX1wugkOd4ZJITodfHruJyeFWZylQUKXmuHDjvyrzJ25p4KereImOQ J2+0EU35YEJNTfpSCTqXuQn61GDvmXukgthwEKfHfT5A1HHMj18NGulELG6zgRSZwE6Stg/CnNR ThmnfxdmAYpzeBKtKC6HVca4bc1AKYsnAOdB0oe9k9PhsiZSuHw/7gdjsiO5U2/GtBBxfRA4HEt 9SuhaUKXj3ToZ7L8hfg== X-Authority-Analysis: v=2.4 cv=IOSXmQvG c=1 sm=1 tr=0 ts=6aa69d32 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=LpQP-O61AAAA:8 a=EUspDBNiAAAA:8 a=yjXalD45XKnNG4PGhjAA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 a=pioyyrs4ZptJ924tMmac:22 X-Proofpoint-ORIG-GUID: pFbqfsTrCKjr0z7KLyFEyaoVlKiwaT-_ X-Proofpoint-GUID: pFbqfsTrCKjr0z7KLyFEyaoVlKiwaT-_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-13_04,2026-09-11_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609130184 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. Wire rpmh_rsc_debug() into the rpmh_write(), rpmh_write_batch(), and rpmh_read() timeout paths so that all three blocking RPMh callers produce the same structured TCS/GIC diagnostic output on timeout. 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 | 94 ++++++++++++++++++++++++++++++++++++= ++++ drivers/soc/qcom/rpmh.c | 14 +++++- 3 files changed, 111 insertions(+), 2 deletions(-) diff --git a/drivers/soc/qcom/rpmh-internal.h b/drivers/soc/qcom/rpmh-inter= nal.h index 39441a25af9b..4e465bdb5a27 100644 --- a/drivers/soc/qcom/rpmh-internal.h +++ b/drivers/soc/qcom/rpmh-internal.h @@ -104,6 +104,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. @@ -131,6 +134,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; @@ -149,6 +153,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 c4542318eac4..2aa5e035d3f1 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 @@ -25,6 +26,7 @@ #include #include #include +#include #include =20 #include @@ -89,6 +91,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 @@ -693,6 +696,95 @@ 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]); + dev_warn(drv->dev, "Request: tcs-in-use:%s state=3D%d wait_for_compl=3D%u= \n", + str_yes_no(in_use), req->state, req->wait_for_compl); + dev_warn(drv->dev, "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 RSC 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)); + dev_warn(drv->dev, + "\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; + + dev_err(drv->dev, "Timeout on 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) { + dev_err(drv->dev, "No IRQ data for RSC:%s\n", drv->name); + return; + } + + irq_get_irqchip_state(drv->irq, IRQCHIP_STATE_PENDING, &gic_irq_sts); + dev_warn(drv->dev, "HW IRQ %lu is %s at GIC\n", rsc_irq_data->hwirq, + gic_irq_sts ? "PENDING" : "NOT PENDING"); + dev_warn(drv->dev, "Completion is %s\n", + completion_done(compl) ? "done" : "not done"); + + if ((busy && !gic_irq_sts) || !aoss_irq_sts) + dev_err(drv->dev, + "ERROR: Accelerator(s) at AOSS did not respond\n"); + else if (gic_irq_sts) + dev_err(drv->dev, + "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. @@ -1114,6 +1206,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 360242a315e3..1f10b85514f1 100644 --- a/drivers/soc/qcom/rpmh.c +++ b/drivers/soc/qcom/rpmh.c @@ -224,7 +224,7 @@ static int __fill_rpmh_msg(struct rpmh_request *req, en= um rpmh_state state, } =20 /** - * rpmh_read: Read a resource value + * rpmh_read() - Read a resource value * * @dev: The device making the request * @cmd: The payload having address of resource to read @@ -240,6 +240,7 @@ int rpmh_read(const struct device *dev, struct tcs_cmd = *cmd) { DECLARE_COMPLETION_ONSTACK(compl); DEFINE_RPMH_MSG_ONSTACK(dev, RPMH_ACTIVE_ONLY_STATE, &compl, rpm_msg); + struct rpmh_ctrlr *ctrlr =3D get_rpmh_ctrlr(dev); int ret; =20 ret =3D __fill_rpmh_msg(&rpm_msg, RPMH_ACTIVE_ONLY_STATE, cmd, 1, true); @@ -251,6 +252,10 @@ int rpmh_read(const struct device *dev, struct tcs_cmd= *cmd) 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(1); + } cmd[0].data =3D rpm_msg.cmd[0].data; =20 return (ret > 0) ? 0 : -ETIMEDOUT; @@ -308,6 +313,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, false); @@ -319,7 +325,10 @@ int rpmh_write(const struct device *dev, enum rpmh_sta= te state, return ret; =20 ret =3D wait_for_completion_timeout(&compl, RPMH_TIMEOUT_MS); - WARN_ON(!ret); + if (!ret) { + rpmh_rsc_debug(ctrlr_to_drv(ctrlr), &compl); + WARN_ON(1); + } return (ret > 0) ? 0 : -ETIMEDOUT; } EXPORT_SYMBOL_GPL(rpmh_write); @@ -438,6 +447,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