From nobody Tue Sep 29 05:34:51 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 7F53A330D4C for ; Wed, 12 Aug 2026 06:13:03 +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=1786515185; cv=none; b=lb5S305qyK7SFm9Ht4GIuJboPT6BrYvG8mxIRIjj3A9fjJJTs2HLTjkaAWe94EkmZNEBGS2zejL9QAU3j5wM7Hs06XJKbR0aGDOGMnviiqHYXW5kDxEwJ+KEyFjF+QCeTMQ/keXicUWsmt1P/2x5JERNF716E4Qlf0qaYotjWbo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786515185; c=relaxed/simple; bh=FWcf7jXap2e1oAdtrMlLlfIQz1hfUQD0zUkUAvMjor8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qTmIwwkuxIlhnui+Dr1cgMyTt353JXJMQ8htUvO0YyZStjalEmVFm3rcFFuAaAxoBOUv+ZNVMaQgpqpI/kfe4JGpFJw50BlEotR2Rja9/lZfyhw0cOYh735TLmWVUCnNJ132MRklfR186RMwEObS+/tQbNMQMZiS5u0Sfy1lNzQ= 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=kdcjaKum; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=G/XxRlh0; 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="kdcjaKum"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="G/XxRlh0" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67C62FgQ2962128 for ; Wed, 12 Aug 2026 06:13:02 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= rSfyCqFI87uyrVyuB4dbWtl9ODKrTRPvMz276YDye+c=; b=kdcjaKumbxeSifYr /6lSE1pQ57SfmrKvZcx4Lcfs17E3HX+6dqKPGbqWQv41f70yY6gW5gK8I7wuauBa LQ9nqRuI6b9Aq/A0bgwesUMyXlgr1fDm/Ckbs0uhYg5HgT4R5prTmNCcH7BsOxXj hCrO26nI3oWPkZmWVTZqcANpZf4RUWF4NSV0P4N1a6OV7Ea/lPYNY+UMKm3GhWoo ZH3JqhkhfVmz+7JYiIn1dBLVcFZFt6WvQ2tC5njuqLUIZqnUJVKjrxllctYDq81S SJ8Ua/v566md+nXAbCeKq5xuaXoA+Y10XBEWzum7jKcH8FE4G94r3OTXO9Q+n9Sa 5T4ijw== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0jgrg6v8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 06:13:02 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-848474825ffso1290151b3a.0 for ; Tue, 11 Aug 2026 23:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786515181; x=1787119981; 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=rSfyCqFI87uyrVyuB4dbWtl9ODKrTRPvMz276YDye+c=; b=G/XxRlh0xGYwOua/Ddum+aaaHvnmd8xZPN1l+yCTNh2m7EinFak4WE20s9Gf8O1US1 QQimPraKgnfZ7mDg4+M6WPIHpoilRFrhA06xoCyfzMe/ojt2hMJiLDHd5WJ2z3vXhx9v wTFefieXcCsIEia5akr9QlHF06pGzgPXWxGm0XRZRzQvq6aHk98+g8FxLKiihXzALzgF 2kjCwmT1WOwhLoRQhg2rKTb0dEG15UU2pg2YjS2DtABxPfqzXhQqx/yb9V0Q9GkKh16I 8CFPZjtuceqsZKoJb7z97OfCj/UBMLbuIPsDx0rrh93AbkljFwytBk8qr5XiqE9T6rKF mSuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786515181; x=1787119981; 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=rSfyCqFI87uyrVyuB4dbWtl9ODKrTRPvMz276YDye+c=; b=ONCPas8UVHWUdMupUHqI1lfv5uZvkTx+6yZNfJ9rinufHhhr6R3GniL/0RlAqfPCTf IYUHpiup1r/WNJJnGwaBEhYfMDwqPjode+EA4380zYAM0DdpnITKS5tTbQ0e9KmabS/+ 2HcCuh45wihUPWhZL2fIB+OvHlzakJL48MJHT+E8ZbFOxIi2oHYkFKQywy7oYdY/ROWv Fr7+RgrEm7IaAv619e9spouV1+WUZ3aymrpoSC5On2vvi4/iQnm/+Vy08xPLqn/kgXyV vNP41G5+A09vMAZ+WZL7m+QBLRpfR5ClJiGT4gF8cw5YaMNWJ62xouTUzPmk5atHB5eR 5VOw== X-Forwarded-Encrypted: i=1; AHgh+RpR4IfwPs7OPMmpGNKr70oDyIrIM5gkHeJ7tjE925zLY1FuOAh+zflTuBvwn72RxKzzzVINrYGSBLTHfXY=@vger.kernel.org X-Gm-Message-State: AOJu0YxxfkmMjAv79pADi3IwFHtC8IFQz1xXzHbY1CltzmH9wnA3JXxs Ra0C4+rc5+xO96osL55WZh76kwa86Ap7kX/5QTecurHExfEWBolcrK+YJR2c4wVJHbgbuO02YDA IsMUS6dWVPhtlDfUG+LH/58YFkaJXefbRJ13q/S07niDgO5NLw9r1uiL5LlZwv/TH+bS8guigrf I= X-Gm-Gg: AR+sD11ZK79O2z/RxV0AHpRAhH1uG3d+LlunyaCJ1kdAqlgIQ6d6N5FElI2ArllOp7p Sb5p+CCaCGS6Iu71L9sEzd+CxduHbRpt0VkMqjt3QHUNbqaBo2bP7UjDW51PuG4601+d0Xtpm/D xEro0PV+s2YQNfqc+S/TIqg3qPNK2qs9lxZsRO9GBvXcWeY5QNMDPUsgVP6VVWSt7rIcJcGod3u czDZM57Z4fh85qGvikJ3uSN4ErK1lrQMg3hmOw4v0rx8l/zPsUK8Du71zQSvCUeqzCmRrFI8mK6 0MRSix/cqI693ZIFQO2YOcmBaapEQfgMFzIaL1/6hlfEtmSIJ6Gg4R3gDOYoH0z7PGndlEIYRnQ cxlg06ObQdz0i2nU08uowlxYXgm4e X-Received: by 2002:a05:6a00:1d9b:b0:846:5d1f:56d4 with SMTP id d2e1a72fcca58-84fb6c547c8mr2237041b3a.14.1786515181348; Tue, 11 Aug 2026 23:13:01 -0700 (PDT) X-Received: by 2002:a05:6a00:1d9b:b0:846:5d1f:56d4 with SMTP id d2e1a72fcca58-84fb6c547c8mr2237007b3a.14.1786515180884; Tue, 11 Aug 2026 23:13:00 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84fb1f2587fsm525814b3a.49.2026.08.11.23.12.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 23:13:00 -0700 (PDT) From: Maulik Shah Date: Wed, 12 Aug 2026 11:42:22 +0530 Subject: [PATCH v3 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: <20260812-rpmh-timeout-debug-v1-v3-1-68c0a40dce23@oss.qualcomm.com> References: <20260812-rpmh-timeout-debug-v1-v3-0-68c0a40dce23@oss.qualcomm.com> In-Reply-To: <20260812-rpmh-timeout-debug-v1-v3-0-68c0a40dce23@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah , Dmitry Baryshkov , Navya Malempati X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786515174; l=2634; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=FWcf7jXap2e1oAdtrMlLlfIQz1hfUQD0zUkUAvMjor8=; b=Bm+e2cL9S33s4ri70rSunwEaXTK6VlpUuHUlTPohfTtc8+OYiKQi8dTqY7Xb9SilOUD1iu2mL byMuD4IJvnKClLHEc7U5DPk6Nj0Sz/EbgjPELlVIztUojRw4FMYiWfL X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA0NyBTYWx0ZWRfX5+IkPl3nj4S8 MOStaZzR5L2lN+lfxCwSUUs0kBacGws8lcnfLAfzsn0nzvYADYoyrqJm+0khUDyIrz5NsXU9chV Yb7eFZzpNAYBs7+nS/7jt/SGpxEqY6FnDu7v41z16lvnuNnXtCo4IujDG5N09SW0NRDyv2s9cmC c7d3T2hcrrEml0FJ9SW9qRS09suJJq2d5DW7EOughPwh+fxseAtRTxL+aiTp1sT2vz3yMw559N1 vIwtGNzN5vYGwwutkyTDw7AZD+PZEEOVyRpXizgj1Zu2/rR2j+cc7gVhY0LcpJ1PyTkhBjce6de 0oAMrPZzU5m9v+WwjR8tB4/bdG84pTA415L3rrJJnw4iBxG9/iTYeERWV9ieXGvklktmlpjVzQk VfgNxT73FrMO+Pn6yZ0FWh+s+O1mxnbK5vkgRtucdoLxR7ovKo4SmeMMJn0kIqr+BR44g8iH9hp zZHkqglxmWqRky3VSOw== X-Proofpoint-ORIG-GUID: LM7BFioiHiHsMo0hdmFJZ5hTYe_LcWBb X-Authority-Analysis: v=2.4 cv=TNJ1jVla c=1 sm=1 tr=0 ts=6a7c0eee cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=OEZb8WWwy_IDIPDo1iAA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: LM7BFioiHiHsMo0hdmFJZ5hTYe_LcWBb X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA0NyBTYWx0ZWRfX7BZr2ghiQwKX dUdiQS5k44/t+w2HCHPxHbQWMZKEnMmGjO/nhS2AmVXwYPlILvNIxdrkkWSM7sZS7fEs7uDUKKR t4Q/rgKpMik1pm2XcNhtcZnNgM5QXgM= 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-08-12_02,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 phishscore=0 impostorscore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120047 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 Signed-off-by: Maulik Shah Reviewed-by: Konrad Dybcio --- 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 Tue Sep 29 05:34:51 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 42983339399 for ; Wed, 12 Aug 2026 06:13:06 +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=1786515187; cv=none; b=t5fdcmlQLusQNVU4iQnCrrEBnuJNfSCqxYx5CC5xMlHeoKClQG8gkY7tF08M1gx44qWryYj5qEQQk2naGxOf51ulx2myL3RMdrdyQiVJcK+1cdQQvmBJ8ZcKLTO4v5bibxwYLRSd2T3XKkaDbYQ3tll483QZyG+YAppI7/crCtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786515187; c=relaxed/simple; bh=yHFPGk4Ve46gltpkXTYpju+KIfqAZfLFpVogqh5/qUE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rLhTvLw3vl0+pNOi/sH+MmVopuF+asD8ZduMVDWFS3M6sfCNhrobvlSEGi7HRLyTvfjQemXGES7+5oqfFcZxXOTaZohM+m95SNEnnLcbt1p6ISw0wWqpqDuTxom14LCIxqjJO/zt8MlvpyvSSD6yrJ6mNNp5qaMc5a92GLbaXjE= 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=DjRo7WXi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NteFw1G3; 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="DjRo7WXi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NteFw1G3" 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 67C62U5v1720203 for ; Wed, 12 Aug 2026 06:13:05 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= sD3nip2OzwAHAEX776zfWxATpqXIE4RoZscjyaaIZ0s=; b=DjRo7WXigbnKrs36 IjzZJv+4jq/YOLpLa1hPcXWqo7oKFdwCPd+4TrwxzQrpiOn4ZKmjI6C5PLC/KvTY /eh9fRLJOHyPe9/JEJAtBFWdN8Kcs4VDYG9ncaVBUOibnwaOkSWuJOStNPwwjW8I n9QmQWyXN70CwkUjEPzdPaB2EJNt/Z27q2aEXNkIWFT+PaKIPoRC9DJWbqQtblK3 mBPbUeDYzaiwsx15JD9usdp3xBODHT0nA+ka0B0mdplz06swsq7f9Stvqxab9Bvf 8FfI50y8CWcgz9SSu1/9G0XcbFB9FB642lP3+4wgX+Z5pPqgbdiQ7xaKfJ9DrCau xlfTqw== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0hfw0cyf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 06:13:05 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-84c4cd31b51so1921127b3a.0 for ; Tue, 11 Aug 2026 23:13:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786515184; x=1787119984; 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=sD3nip2OzwAHAEX776zfWxATpqXIE4RoZscjyaaIZ0s=; b=NteFw1G3AlNz/HcUjPdqhU5eJbdjiaD+S6Fi1bhVTtILpI2XRiFQMOl/tkYgwlYldE Bd/FkLQBMAeM7X8DjIibeTBWWtUH48z4pNmUPAT7OVSG+5JdqqHdwyJbeep57TCPKxzo w8fjmEHSbImsNu/0AwLWS7JHl76tdVRYYGCjDOEhWeLq7PrwmTgM5wBrD+UfVK9LmSOG re+5hNurkPuMs83aOeitkONcX/7tZROJ/uM5l28MwflIKxTGyXEKeXt2Gt1FDZD5kwpn rvEnr+jlxuOcPH2t6Ti2VSQYIn3HPthlB7S6YtFdUvrXIcR2YLOZfgHzo0gpZBqCTZhv Mmig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786515184; x=1787119984; 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=sD3nip2OzwAHAEX776zfWxATpqXIE4RoZscjyaaIZ0s=; b=NzarbQrNv6WhVKVJVxCaR5wLLudR11QnQECrqJy08i48yOaIDQ623xycM4QKpPRmil PnBVNqoBsMbenjr5oiQ3OCRuxWR8ANr9w8CYS/lprCHreUR8wzPHjnzU4hXgrqZNVSUI CG25iLbSXS/UxI5QeNLqZCgFEdpgUhMhHoZZBFYYD0Xc4PqdVBsVC4XNtN3erbxiBIOu 8nh6uNRY6eU4ZJsQ+nnLvXWQs/BEDspxNa7Q2CUa58nTi8D4HJr8OHALn4Puir2ObFBU 9KrWv8eMvusapGvUp6BEVHeRclAaBQuFOqREKCe7jXCCacYbDiMNjXTQ+hjJqjH8rFn7 pI3A== X-Forwarded-Encrypted: i=1; AHgh+RrY0DYUt/36iiZ9j6tfLu90UGWP9nn93r6NmJQtAZAtcKFwEnErfgPHrf5VkPvcQ3z09w7917NwoU7r9v0=@vger.kernel.org X-Gm-Message-State: AOJu0YyS0y8XhjIlQhKT8BTyY1UDePdNLmBQBm54hEjqT5h1LurmPiPF gowaFq6mloxlTxgbt1AorjtFSuPq0dyF343hHvFgISWmQiL08uCBXP/uhSh/EadVGwA2bOpwhtF jih2OIy25hzK25dMvV8/pdqrXgPEnWvS1EdK8c6cX2DYkczwfXXokyGeXRz2l6GE+iv3JRrH/Lg w= X-Gm-Gg: AR+sD10V7IQLUhy0G2NgTZh2vD6SUz4Ptnp0AipDpf6pzYeYta9Q1kRpQ3Ihk2VfIX4 hTV942BPtHnryyr3PjzsZit5lNQUwiS/Q3uJY9qR5L/eDkaITN2kCyCwK9wrQHKBKFZl8ZOPJzt G9tU7Uz0bscHibgaWkTKoTpBTvAJRFRg1y220M5gQFl3sxOa4+h1f0LoghDrqfBxO6xrhPEaF6g IeHcgSSaEClnrGR+6VItPo/9GdnnVu7IipfYKtFwnZ//3j88A5Nhd55Lrj+K+QJ8NxtS1iUA2wN meBsRgpC6EzAJPUTKFzi65TaP5x62I2rtSxjTemY6hfM/Xv5t0m/TGGw5GZJc9sAM0ePaSYRopF F5q72X/PPXDIBs6EX8nyX7kdiW9Lg X-Received: by 2002:a05:6a00:22d1:b0:84a:29af:a0eb with SMTP id d2e1a72fcca58-84fb6b36440mr2181140b3a.9.1786515184205; Tue, 11 Aug 2026 23:13:04 -0700 (PDT) X-Received: by 2002:a05:6a00:22d1:b0:84a:29af:a0eb with SMTP id d2e1a72fcca58-84fb6b36440mr2181101b3a.9.1786515183762; Tue, 11 Aug 2026 23:13:03 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84fb1f2587fsm525814b3a.49.2026.08.11.23.13.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 23:13:03 -0700 (PDT) From: Maulik Shah Date: Wed, 12 Aug 2026 11:42:23 +0530 Subject: [PATCH v3 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: <20260812-rpmh-timeout-debug-v1-v3-2-68c0a40dce23@oss.qualcomm.com> References: <20260812-rpmh-timeout-debug-v1-v3-0-68c0a40dce23@oss.qualcomm.com> In-Reply-To: <20260812-rpmh-timeout-debug-v1-v3-0-68c0a40dce23@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Maulik Shah , Dmitry Baryshkov , Navya Malempati X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1786515174; l=4077; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=yHFPGk4Ve46gltpkXTYpju+KIfqAZfLFpVogqh5/qUE=; b=5wkrQ6sSNlPi5Ba/ljPf6ONf3bL0YFPFlNd+AMbKJDo/tMAzwEllEvE8QurgRC+9d6KnfrCEk hPuvB+6PEqrDI8gYbdULVbuL8VJ4OPJA9W4R8jqpC8NfrEEMtjeRpRE X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA0NyBTYWx0ZWRfX02vk75vMUGG3 92UACcKvidgyGMbun64K7YEamXcAB86OcKb4iVIOykNUn8AH2SVs9Xjjfxgea2GI6ePOPL3ksix Z2xO+Uz9cXZhnQCmi1KGhSkwNQPiEQQ= X-Proofpoint-GUID: rCqV2-dlm_CgsbZmvaDMtm8TLyYL0cMN X-Authority-Analysis: v=2.4 cv=fpDsol4f c=1 sm=1 tr=0 ts=6a7c0ef1 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA: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=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-ORIG-GUID: rCqV2-dlm_CgsbZmvaDMtm8TLyYL0cMN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA0NyBTYWx0ZWRfX7Vdhv5/TVyE6 XTOcJ3nEKFHkoe3FKQxpET/Wld6sDWbwJR4FLdkPnfCe7FgCKO2e9BHcfktcyZa1e0EIyu5x4nh E9XQnpexV96sHrM6PY2QSjfg7omMrfUQUQ47wWWJGrC70uRlQUSj9sJ5cOksdpXcJ/lxYOtjFQx zpmKYI2cj5qd5qn4hFnyF0VPAgz0tqqjMbyv2Py5/RZPK7CnjzX42djcwPUuu3IzXI3qOSoOtqW 0qmE03dO4H9iz2hKu3CJsLpsck+xPjF0htm2F+8l3YG/8QCurA2ybW1UZDLBK48d3GjSPoG5jD8 gLDh81CX1i90/GhNJjjTbMtLHdJRtsDR7KPXxxyFtYBvriWE4+dZysrYkkwgGX8ulnn4pN1B9Df U5VD+YZu7Q8MOtJT5R0+VCi7haZeyEPgJDOBUWSwLASEM72O6EF3msuorVAaSTXaZKkkYSJpNIF V70wLWGJQqRpojTZI1w== 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-08-12_02,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 spamscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120047 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 Signed-off-by: Maulik Shah Reviewed-by: Konrad Dybcio --- 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 Tue Sep 29 05:34:51 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 8D765330D4C for ; Wed, 12 Aug 2026 06:13:09 +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=1786515191; cv=none; b=hyA5F/tZKIyHgx9dD6su5oJ7ZOhhiKj6qBnpMPxL4SHlcB0aOSk+2tH/1tLd18JA1gXGEJUpcKQB1jGZfJxZcMHdKtKmhNiQveKgoN6Pe92gv4n3/oFEZa16zeUiVrpjkXhUD7ODqm8uxB7PG2qlVExhICTlUjU/fpYQeUAjUpk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786515191; c=relaxed/simple; bh=3j8AEHjzX+9550KljDfUhuyZS6KOakt9tAOqLzYz8X8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jPuSNLrktoHS9jjsIzL020q/EhKy2JXSD6E0hI3c5j4VHbLE2o5qYrFLpIjijALlxorCT1N0rSOFymSsK8U6F9xBllr6JlZX9jLHcA5zqKL49Q8EXtA1kG/kSUuZCTWjlUuQ/CwUKliMEuzkqfYdK+JIE2DIKyDGy29qTh5GT6M= 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=hUY8/Aa7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CiEUj9Xo; 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="hUY8/Aa7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CiEUj9Xo" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67C62Dhe2962023 for ; Wed, 12 Aug 2026 06:13: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= d0ImcTbASTXashGK30gReg9bTkWROKC+hTyfARBxTac=; b=hUY8/Aa7iZVYFWKT VLyajmYQ+mHU/d4sjdGJoKmIBCBikudpcFV7/edKtg7FkYbmvoGDnZAJz9uQ2i8g DbyVsNNXRk1tGzf4jtDuHK35B6WckqS7PePeVTBcXnMc7NHlZvLpH0M3fwneMnLf +bJjZlV47C7v24A69cXF1hbHhabUS1YVG0sakbkzQnw22OrjZUCoOfQLNj7lMv2e 6yNkdeSQYwvYy3TuFnOmqUttE7GIHWfvyACJOn1y9mswCiVmA5XqIWU1kyRXrJbD HquglXt/trjsZvIErvAJduqopVohD3DnMX5f6AgLtWSIiz2BxaETcCqdP7c53hgp oC0mPQ== 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 4g0jgrg6vs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 06:13:08 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cb5ea36f969so639352a12.2 for ; Tue, 11 Aug 2026 23:13:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786515187; x=1787119987; 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=d0ImcTbASTXashGK30gReg9bTkWROKC+hTyfARBxTac=; b=CiEUj9Xo1FslHTUxkgEvVPYEJcSWvg+zvJDFNf83vxSjmFJsjwJE+WYKbfbcCfp1jn aUP5/sIRfLXHDYuG9cCYpYX/Dg3SjMOJoSUmW2nwOlwsSLRva/BFrv/xvMpJc5wkR9fA qk+nu5OWAvz9QPh2V3dG26+SEr/qy3as9E85IDo+lEl4SOFscp0fhm1KmAVun7pCL/r1 3DrM9CmjtrhQ2+bbyw9aqqVoyXbp+25cQA+e20VicgQ5vg0P2eg40m+WkmmfbjHegOtq Gs/5pwYIfIzvbizHUV7363rtGScZvY3t0cEBWQDfqbV12Es23xAGnq1EgU9+IvW/QTvE v1zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786515187; x=1787119987; 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=d0ImcTbASTXashGK30gReg9bTkWROKC+hTyfARBxTac=; b=TLV7F/WX30RumtboXpJJjEklQ9ngJjD7qlpZnrtCb9IPhfb6azvdvtS+FAYl4RchqC Yx/CY88RE6Vs/MUPcuBs4EI8v4x2Pxnsv655hcg45iLwfBvrVl3b7WdCOXapB+JFkIYS jDJYEXYM8vhnZP+haaySzmTtSmaWGPJn0VdjBjI+IqSiP0hvosrGMQarTZkCV7exBn+e ONKINbRELQThbJTVsLlZjlDNEbhCi3j7QcAUrOq9yp4LvpMae0dAgJwblBk6iWBWCTt1 buTj4fevNiZcUjNqf71SlUa26Y6eNKLoO1shI/tXn/5mn8JKLc8vY0RYOWeDhjUvTVXM ogvw== X-Forwarded-Encrypted: i=1; AHgh+Rqou+0mkR2bO0tdCmhyopeeMgZThimfU5W0XX3f+iEkX8/teNtb7iCawUZJcVNAU0ff82zIjL7Oiggrlt8=@vger.kernel.org X-Gm-Message-State: AOJu0Ywdy7mRXAwwd+qTuYtci3PY+avqTEJIc8Y9PeJ1tOam+pUIRdvy O961p9TfGLY9iurk66P8FQ7zxzwZ/Q8DPvByihdyxdfxXJQWx1UoIN6N7VnjUkvJfLll0dqntYN zb/p1JZX8UJQUTJ5gTjw8rGrRB1ILOVVhHr5C5OrXH20TSS0OIJRTpJiLVkL/3eYeQZxorTIuqM E= X-Gm-Gg: AR+sD12uFElhmxJ4gVxAfaZxBb+Kdk87Ngn1cWHb8PGaZmbz293cKgR2z2JMLjd+kE0 h7NMOQKL4EGlaXXLNxlRRV1pL6XhiA//271fWHg0fed30kJcAKTWtX8EiGZY8P+r2PQJXYz224L KVuhsLE8Aunx5T4z8ybcLprA+SxjYjGESXLQpfdZVNezSJgXz5UkABZ9t6jsU+tYdVO422TdtBk /yHIk/cEh4fRtur9fGugEsj/jrvYZ9lt98FR9krsG5uopRddqRlYt1CmILS4lZoTep3Odmdhu69 06loGa+3aWCM6fNWi+MY3M5KB0hpeRGNwXbw5VKs65KBB/L9z+UbRLMFUxXrGQZNvTH0BqhbJ5u bubzyqhWHuZFc2YGVbxAW8pucRTgl X-Received: by 2002:a05:6a00:4089:b0:848:411f:3969 with SMTP id d2e1a72fcca58-84fb5517d0fmr2940995b3a.20.1786515187144; Tue, 11 Aug 2026 23:13:07 -0700 (PDT) X-Received: by 2002:a05:6a00:4089:b0:848:411f:3969 with SMTP id d2e1a72fcca58-84fb5517d0fmr2940946b3a.20.1786515186471; Tue, 11 Aug 2026 23:13:06 -0700 (PDT) Received: from hu-mkshah-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84fb1f2587fsm525814b3a.49.2026.08.11.23.13.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2026 23:13:06 -0700 (PDT) From: Maulik Shah Date: Wed, 12 Aug 2026 11:42:24 +0530 Subject: [PATCH v3 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: <20260812-rpmh-timeout-debug-v1-v3-3-68c0a40dce23@oss.qualcomm.com> References: <20260812-rpmh-timeout-debug-v1-v3-0-68c0a40dce23@oss.qualcomm.com> In-Reply-To: <20260812-rpmh-timeout-debug-v1-v3-0-68c0a40dce23@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=1786515174; l=9063; i=maulik.shah@oss.qualcomm.com; s=20240109; h=from:subject:message-id; bh=67Fa8CY1mNY2j2rKzygRueeKlXerFEDLCtJHVlrIpPs=; b=/LEuk/Pj8ChTaWLO2YnQCloTzSMg5jFscDlIh8RbxfHooPR3tEJFTckiFN/7v7QnKeVbNE8oC KDDMFQC1zdDDtEpkScOTXtZZlpVlZZmBP/YX7hwIQjbahRwhY+5Nnm5 X-Developer-Key: i=maulik.shah@oss.qualcomm.com; a=ed25519; pk=bd9h5FIIliUddIk8p3BlQWBlzKEQ/YW5V+fe759hTWQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDA0NyBTYWx0ZWRfX9v6v+apHKQ9S SN5FkJijW3J7R/C5T0a2vVGcZHrATr6/T7ETAjFwX9bjJLv+dPpUzFfSoN4LURzrliwV1VYgacw hQ4EGRpXoD6qwH90n3oBZsoZK9r5QcMvDCVpv4cNaZsUR8LIvi2P4yGh9fvHgm9f/0GdvCTRevx Bg6t3h6LZ7I9sR6VGektlhS5z2oKLpNevkVn9pEj+nW560kBRsqUFtryiKLG/iT/o+Aomy/f+86 h9P3u1E81Hrq7eXMN9rhTUN619VYIgw/gbdOLPhjpvYseVzY27R0MflFlSWCJE1bKmgg5P1SXnk MsUOW7e2VUfOxWadoPMhf+oHxLWtVrljH5ROMXOcCMwxDHcB+pz2kEirW9gD5nduKUYVXp4dI/Z d4izHGfPRmkrieLYwSfGJuW2X41rSLpTEtOFj8ygCuEEWeqEmPD32F/pyTw6AUvIFqUNlrWRp6Y psaSMQhUovM7Y1wReDg== X-Proofpoint-ORIG-GUID: Yfnf-ORVXgIdbRz29s3JMkZsXdKuFPJX X-Authority-Analysis: v=2.4 cv=TNJ1jVla c=1 sm=1 tr=0 ts=6a7c0ef4 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=LpQP-O61AAAA:8 a=EUspDBNiAAAA:8 a=MagqEQorHcLrW7LXruoA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 a=pioyyrs4ZptJ924tMmac:22 X-Proofpoint-GUID: Yfnf-ORVXgIdbRz29s3JMkZsXdKuFPJX X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDA0NyBTYWx0ZWRfX6lAdwYBqtqct mkKzl2YwsaCWv7aTsuTYKOpAlKVETdVZY4sIm+0mYlMGorwSQkKa8X4U/Y4DdW7ld0K0bkooXy5 ydba51VNnt2dw73MN6xMjQo0IrHjUts= 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-08-12_02,2026-08-10_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 phishscore=0 impostorscore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120047 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 | 90 ++++++++++++++++++++++++++++++++++++= ++++ drivers/soc/qcom/rpmh.c | 12 +++++- 3 files changed, 106 insertions(+), 1 deletion(-) 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 f881af35ecfc..ffef4ffc7c4c 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 @@ -693,6 +695,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. @@ -1114,6 +1202,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 f881c4c757ec..095c73f3f75f 100644 --- a/drivers/soc/qcom/rpmh.c +++ b/drivers/soc/qcom/rpmh.c @@ -230,6 +230,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); @@ -241,6 +242,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; @@ -294,6 +299,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); @@ -305,7 +311,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); @@ -422,6 +431,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