From nobody Sat Jul 25 18:07:01 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 355B23B47DC for ; Wed, 15 Jul 2026 05:21: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=1784092870; cv=none; b=N2uOMEYKsZeFD7HSoWs/5lQSBiNEudvBDjOLVzXSVDRS0FmmhkmDWfAJK0pa38m61pg4w1rbE5Yxm8TgOGb3IfurI/f7UGi/+C0gLQqBnRzvYNw7iD4ExRIrvqN01JDyZTREUw2s49rSJ78jggGnBXpK3xZRamymBkvfwpR455I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784092870; c=relaxed/simple; bh=qEmT1Rmx7RHPnOZgI3LtA9YAa1PR17tEXaf2nHnPnzo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i+F167Yr5E4mKRv5bn/sG9xp6PvNVBZF50lvwaioZ7IsGiZbGkO8I4KQ/lSZyGk1Nhp/u/KhufZMMgl/nR2UjAY3bB9G0Zy/Dag4GZVvEQfTSRs2KhMHxibbe4bQ0RqCsY9UKyXPH0frWZGDtzleiRmC4ZoRkOyOdrJVkXGgr6I= 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=a9o0wsi6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=D3wVhxA4; 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="a9o0wsi6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="D3wVhxA4" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66F3lx8g2374697 for ; Wed, 15 Jul 2026 05:21:07 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= PI7xn2cjFTj+zYignY/TKjzmfJi3VbH5Z2352n29s50=; b=a9o0wsi6ifDhmzSh pz1PorhHQfE5yOyj6Ox7DD0OmK0fcCKT0ARu/e8rIOVr/xm/IDDd1rqpYhtw8tHB glzHJKmERRcscZubF6OfZ6WPxWT4hj4OZgurPhO3OX6IALaz/qMzO46yLhPupqbX DBuS1OPnw31uBVRB3lj+rgvQ3tnhzGOFrmjl82VZyb6OXtnRhqowsSurQ3B4u4Sz FFO1YG94QlrajIfxQfVwjxl8I6Fb1gmNdcqVJ4FUDALC757IFyaVUn06UWqTeOWk 019VitOoUsgOJ3PenFN5Ky4O9pK5qrBI7OPFcy0cgkmIxoueavT0YZ5o3/LiyHW6 wo3F7g== 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 4fdmkk3cem-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Jul 2026 05:21:07 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38dde0df80bso5834407a91.3 for ; Tue, 14 Jul 2026 22:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784092867; x=1784697667; 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=PI7xn2cjFTj+zYignY/TKjzmfJi3VbH5Z2352n29s50=; b=D3wVhxA4DSNasO4EXAXRCDwaVsv4LdJycM5Kewp9jBFndijkTnVLFNXNcmSDA9z4BS Mz3h+MOq/jr7vfVeZ9bLB/2nXvOK12wsAI0dLPHlc29T3ejKkh6HbU+HyASNx4pR0QLK DtYnxADPcd7bQ/CiqUVZi5b85YkPuCVzdjk8rRu8Qq2ETmfcg21zxAwZelkVTvvf8TsC 7T7XvVimS/BVOEyxRBMH1axmXaSBePOyV3eMt9XWreCn5mbOmr7DJXk8V0WhtB9Ux2cS mRVkNDbjxaSiKQx9kOtPFAnSCfuPhOQ9rqJPSHTETaVp647EUvEJZpkDSQcLTGvihwco llKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784092867; x=1784697667; 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=PI7xn2cjFTj+zYignY/TKjzmfJi3VbH5Z2352n29s50=; b=TkOkxiWB8D7R53hHxh800XOTjszXQCsUY7Xbt4GrxkKlD54Hofpd4E5XIzDAdUeaP1 oYApyZ3dVpEcgUdUCEbDc+eCoox19w6NoDeVs12fYZUsgdoOesOo/B/s5XKyNqF0T/3z mhL4lKSeP97B4K1AQo106HnAmFCYn9oP5Ar50iFRBTKp+cONI+0GCIo60TFpXGiBx+Gz ltEBBDmOWBGHCtINb4cheEExCZsfPtnNPUlWfX5/b6QvDZFZ8uIKu648Mh3qyXwm2Wvu YIrjQTtbN8aPBVsgngGOfaUtqt3lHdeRXWhKJzTX+XDcnno/yGJ+2zUKmb8jKJi6RTv9 KeVQ== X-Forwarded-Encrypted: i=1; AHgh+RoiexCcZx9QinYLGFVxSJ1hvxW5uhVYRvcxz8SH6xYlYN0pUWQ6yheB/h3Rd9VkTrHCXFcQAlBOrJP/V4s=@vger.kernel.org X-Gm-Message-State: AOJu0Yxj1Irp0Rqc0w5M7TmEFtlZgE4gGgzhQlsdi1V5nmTPWO/qH+h9 QWWGKu6V+3/6/1mXn8FL3xFRRtKkrSTbFr3I4yfE5MQzOOjnHgUVx9e5ZZeViAXjT53MJW3Jav7 mdzCt7LMj+XIPsXpbT1OYcjlCshZHDxbCX6Sg/P7Fw4zvtK68KJMM50r640vqVa6xtQY= X-Gm-Gg: AfdE7ck/9izRPmM6mjq4K2b2Wq7+Qw+4QI+5OIizBQbUpRAZ8FrUINt54sjx4jOI7eB RgPoYYME1CIt9bNtPZGne4St5b4cTHdw3ROnyDgP5FLLFr2Uvoa+8RYitXRcz3Qhw0Xq6cIfbK2 vmkLemzlnAnh+7yMewRrhdt9s0loHpyaA3VInyB1ww3O/HPx2JSgWe0LU1UTi+Rs1bQNM1lufrN bgvCOFEYZr3v4HWMThTqet3EfGQChw8cPto5cuD91aAVWYJHhXH6gr2W9g6pcnxw1gqMsYK4tUE QrHwGDtvhw37S/CFTRzN2IEmRgSck14SCXm5bcpRNLV+PWAD8BubMA4cQApDf9lnBozgl9S2pMG t5TaMy/n7TIkiveovrO5fqOpVfan4eGNJoDmT+jBeOWDU X-Received: by 2002:a17:90b:3a4b:b0:387:e0cb:7f5 with SMTP id 98e67ed59e1d1-38e17fab248mr6495592a91.41.1784092866446; Tue, 14 Jul 2026 22:21:06 -0700 (PDT) X-Received: by 2002:a17:90b:3a4b:b0:387:e0cb:7f5 with SMTP id 98e67ed59e1d1-38e17fab248mr6495560a91.41.1784092865880; Tue, 14 Jul 2026 22:21:05 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e172e46basm2526092a91.9.2026.07.14.22.21.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 22:21:05 -0700 (PDT) From: Praveen Talari Date: Wed, 15 Jul 2026 10:50:47 +0530 Subject: [PATCH v3 1/2] soc: qcom: geni-se: trace: Add trace event support for GENI SE registers dump 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: <20260715-add-tracepoints-for-se-reg-dump-v3-1-0f787f93badd@oss.qualcomm.com> References: <20260715-add-tracepoints-for-se-reg-dump-v3-0-0f787f93badd@oss.qualcomm.com> In-Reply-To: <20260715-add-tracepoints-for-se-reg-dump-v3-0-0f787f93badd@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Mark Brown Cc: Praveen Talari , linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Mukesh Kumar Savaliya X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784092857; l=14647; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=qEmT1Rmx7RHPnOZgI3LtA9YAa1PR17tEXaf2nHnPnzo=; b=gz/5dt12vB/92OVQ1JVCEAEOOH20P8V0TgooaHEgXMZkDrFcQ6ZAahcTXOV+1uPRxZRhKvyq1 mB3O45CezL+AbPXn092+5e9TTTJhMv8dQ3gwWY1grZ40wskEdhXEr01 X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-GUID: ZznXSotv2b1g0mHF7fEJWmqPOwyZltTj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDA0NyBTYWx0ZWRfX+Xy/Qnb9I94s ROjN6tD7I/8a059+KvdqnKnIQmJ2ub6UEpTNwJl4/gD424md9nxSyDnYnDa515ICwFw/ecR4/Wh 6v7hQJwSt8SGrK1gRDJ0fc8DyhaMoNEqeWdAAUSVSsWkzc811Fv3OJ4fvaAr/LfFLmkC9WdrDdj VrwaIO/Hjo/TVj2OMLTmBvPIK9P00czoB6V3Fkz7cvzDUYge+7/qTG6gURmZwFkjzuZ316ifLkp XOLdL+9qtspRs3l+NqEK5lxV5bL/BG+JRcjY/zpl9Jmz4TFKb5sws7cb55t4inyk8iEc9jIneck QUiYwPioXfRlRV7EZQ+31iguqI9fHPP8GlHha1SLK5S9zJiYVKWA2QrZYCIysUcEDGpENKNZZuv ur9H+1P29L+zhQo0/NbxJgW2DHtUaVD1cl3WKwV6cCXxEWLWM706GeA1M7J5vdAedlTfug/8eGL ZRIj9Qwj6l9phnkUlCA== X-Authority-Analysis: v=2.4 cv=NszhtcdJ c=1 sm=1 tr=0 ts=6a5718c3 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=meVymXHHAAAA:8 a=EUspDBNiAAAA:8 a=rDdGhCjhZGBWvw_hryAA:9 a=kx6RazR-w7M1je--:21 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 a=2JgSa4NbpEOStq-L5dxp:22 X-Proofpoint-ORIG-GUID: ZznXSotv2b1g0mHF7fEJWmqPOwyZltTj X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDA0NyBTYWx0ZWRfX00SyEicbe2lF pMsQ3/T5ifG8O7wL7/eq1gt8Dwe+DQOHwoL+8y2i1AoeWj7ql706AmPjuI51/UPSi4tlpPdYti+ 0CGqfxLCy6LsdDtNLVFUhq7le3PjiOY= 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-15_02,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 malwarescore=0 spamscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150047 Diagnosing GENI SE-based driver (serial, SPI, I2C) failures currently requires reading each hardware register individually, either through ad hoc debug code or a debugger. This is slow, requires the state to remain stable across the multiple reads, and cannot be run non-intrusively during normal operation without adding printk-style noise to each driver. Add a new trace event header for the Qualcomm GENI Serial Engine (SE) framework providing a geni_se_regs tracepoint. This tracepoint captures a comprehensive snapshot of the GENI SE hardware state in a single trace record, making it possible to correlate register values at a precise point in time without multiple sequential reads. The trace event records the following register groups: - Main/secondary command and IRQ status (M_CMD0, S_CMD0, M/S_IRQ_STATUS) - Engine status, IOS, and command control/error registers - TX/RX FIFO status and watermark registers (including RFR watermark) - M/S GP length registers - DMA TX/RX IRQ, enable, length, pointer, attribute, and burst registers - DMA interface enable, general config, QSB trans config, and debug - M/S IRQ enable, GSI event enable, and top-level SE IRQ enable - Serial master/slave clock config, general config, output control, clock control RO, FIFO interface disable, and FW multilock MSA - Clock select register Having all these registers captured atomically in a single ftrace record allows drivers built on top of the GENI SE framework (serial, SPI, I2C) to invoke this tracepoint on error paths and reconstruct the full engine state during post-mortem analysis without instrumenting each driver separately. Acked-by: Steven Rostedt Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 3 + include/linux/soc/qcom/geni-se.h | 38 +++++++++ include/trace/events/qcom_geni_se.h | 157 ++++++++++++++++++++++++++++++++= ++++ 3 files changed, 198 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 15636a8dc907..44bd730baec6 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -7,6 +7,9 @@ /* Disable MMIO tracing to prevent excessive logging of unwanted MMIO trac= es */ #define __DISABLE_TRACE_MMIO__ =20 +#define CREATE_TRACE_POINTS +#include + #include #include #include diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index c5e6ab85df09..8c08c1917374 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -81,13 +81,16 @@ struct geni_se { }; =20 /* Common SE registers */ +#define GENI_GENERAL_CFG 0x10 #define GENI_FORCE_DEFAULT_REG 0x20 #define GENI_OUTPUT_CTRL 0x24 #define SE_GENI_STATUS 0x40 #define GENI_SER_M_CLK_CFG 0x48 #define GENI_SER_S_CLK_CFG 0x4c +#define GENI_CLK_CTRL_RO 0x60 #define GENI_IF_DISABLE_RO 0x64 #define GENI_FW_REVISION_RO 0x68 +#define GENI_FW_MULTILOCK_MSA_RO 0x74 #define SE_GENI_CLK_SEL 0x7c #define SE_GENI_CFG_SEQ_START 0x84 #define SE_GENI_DMA_MODE_EN 0x258 @@ -98,6 +101,8 @@ struct geni_se { #define SE_GENI_M_IRQ_CLEAR 0x618 #define SE_GENI_M_IRQ_EN_SET 0x61c #define SE_GENI_M_IRQ_EN_CLEAR 0x620 +#define M_CMD_ERR_STATUS 0x624 +#define M_FW_ERR_STATUS 0x628 #define SE_GENI_S_CMD0 0x630 #define SE_GENI_S_CMD_CTRL_REG 0x634 #define SE_GENI_S_IRQ_STATUS 0x640 @@ -115,15 +120,42 @@ struct geni_se { #define SE_GENI_IOS 0x908 #define SE_GENI_M_GP_LENGTH 0x910 #define SE_GENI_S_GP_LENGTH 0x914 +/* TX DMA registers */ +#define SE_DMA_TX_PTR_L 0xc30 +#define SE_DMA_TX_PTR_H 0xc34 +#define SE_DMA_TX_ATTR 0xc38 +#define SE_DMA_TX_LEN 0xc3c #define SE_DMA_TX_IRQ_STAT 0xc40 #define SE_DMA_TX_IRQ_CLR 0xc44 +#define SE_DMA_TX_IRQ_EN 0xc48 +#define SE_DMA_TX_IRQ_EN_SET 0xc4c +#define SE_DMA_TX_IRQ_EN_CLR 0xc50 +#define SE_DMA_TX_LEN_IN 0xc54 #define SE_DMA_TX_FSM_RST 0xc58 +#define SE_DMA_TX_MAX_BURST 0xc5c +/* RX DMA registers */ +#define SE_DMA_RX_PTR_L 0xd30 +#define SE_DMA_RX_PTR_H 0xd34 +#define SE_DMA_RX_ATTR 0xd38 +#define SE_DMA_RX_LEN 0xd3c #define SE_DMA_RX_IRQ_STAT 0xd40 #define SE_DMA_RX_IRQ_CLR 0xd44 +#define SE_DMA_RX_IRQ_EN 0xd48 +#define SE_DMA_RX_IRQ_EN_SET 0xd4c +#define SE_DMA_RX_IRQ_EN_CLR 0xd50 #define SE_DMA_RX_LEN_IN 0xd54 #define SE_DMA_RX_FSM_RST 0xd58 +#define SE_DMA_RX_MAX_BURST 0xd5c +/* DMA general / debug registers */ +#define SE_GSI_EVENT_EN 0xe18 +#define SE_IRQ_EN 0xe1c +#define DMA_IF_EN_RO 0xe20 #define SE_HW_PARAM_0 0xe24 #define SE_HW_PARAM_1 0xe28 +#define DMA_GENERAL_CFG 0xe30 +#define SE_DMA_QSB_TRANS_CFG 0xe38 +#define SE_DMA_DEBUG_REG0 0xe40 +#define SE_DMA_IF_EN 0x2004 =20 /* GENI_FORCE_DEFAULT_REG fields */ #define FORCE_DEFAULT BIT(0) @@ -269,6 +301,12 @@ struct geni_se { #define RX_GENI_GP_IRQ_EXT GENMASK(13, 12) #define RX_GENI_CANCEL_IRQ BIT(14) =20 +/* SE_DMA_DEBUG_REG0 fields */ +#define DMA_TX_ACTIVE BIT(0) +#define DMA_RX_ACTIVE BIT(1) +#define DMA_TX_STATE GENMASK(7, 4) +#define DMA_RX_STATE GENMASK(11, 8) + /* SE_HW_PARAM_0 fields */ #define TX_FIFO_WIDTH_MSK GENMASK(29, 24) #define TX_FIFO_WIDTH_SHFT 24 diff --git a/include/trace/events/qcom_geni_se.h b/include/trace/events/qco= m_geni_se.h new file mode 100644 index 000000000000..4a6e1ba2d147 --- /dev/null +++ b/include/trace/events/qcom_geni_se.h @@ -0,0 +1,157 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM qcom_geni_se + +#if !defined(_TRACE_QCOM_GENI_SE_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_QCOM_GENI_SE_H + +#include +#include +#include + +TRACE_EVENT(geni_se_regs, + TP_PROTO(struct geni_se *se), + + TP_ARGS(se), + + TP_STRUCT__entry(__string(geni_se_name, dev_name(se->dev)) + __field(u32, geni_se_m_cmd0) + __field(u32, geni_se_m_irq_status) + __field(u32, geni_se_s_cmd0) + __field(u32, geni_se_s_irq_status) + __field(u32, geni_se_status) + __field(u32, geni_se_ios) + __field(u32, geni_se_m_cmd_ctrl) + __field(u32, geni_se_m_cmd_err) + __field(u32, geni_se_m_fw_err) + __field(u32, geni_se_tx_fifo_status) + __field(u32, geni_se_rx_fifo_status) + __field(u32, geni_se_tx_watermark) + __field(u32, geni_se_rx_watermark) + __field(u32, geni_se_rx_watermark_rfr) + __field(u32, geni_se_m_gp_length) + __field(u32, geni_se_s_gp_length) + __field(u32, geni_se_dma_tx_irq) + __field(u32, geni_se_dma_rx_irq) + __field(u32, geni_se_dma_tx_irq_en) + __field(u32, geni_se_dma_rx_irq_en) + __field(u32, geni_se_dma_rx_len) + __field(u32, geni_se_dma_rx_len_in) + __field(u32, geni_se_dma_tx_len) + __field(u32, geni_se_dma_tx_len_in) + __field(u32, geni_se_dma_tx_ptr_l) + __field(u32, geni_se_dma_tx_ptr_h) + __field(u32, geni_se_dma_rx_ptr_l) + __field(u32, geni_se_dma_rx_ptr_h) + __field(u32, geni_se_dma_tx_attr) + __field(u32, geni_se_dma_tx_max_burst) + __field(u32, geni_se_dma_rx_attr) + __field(u32, geni_se_dma_rx_max_burst) + __field(u32, geni_se_dma_if_en) + __field(u32, geni_se_dma_if_en_ro) + __field(u32, geni_se_dma_general_cfg) + __field(u32, geni_se_dma_qsb_trans_cfg) + __field(u32, geni_se_dma_dbg) + __field(u32, geni_se_m_irq_en) + __field(u32, geni_se_s_irq_en) + __field(u32, geni_se_gsi_event_en) + __field(u32, geni_se_irq_en) + __field(u32, geni_se_ser_m_clk_cfg) + __field(u32, geni_se_ser_s_clk_cfg) + __field(u32, geni_se_general_cfg) + __field(u32, geni_se_output_ctrl) + __field(u32, geni_se_clk_ctrl_ro) + __field(u32, geni_se_fifo_if_disable) + __field(u32, geni_se_fw_multilock_msa) + __field(u32, geni_se_clk_sel) + ), + + TP_fast_assign(__assign_str(geni_se_name); + __entry->geni_se_m_cmd0 =3D readl(se->base + SE_GENI_M_CMD0); + __entry->geni_se_m_irq_status =3D readl(se->base + SE_GENI_M_IRQ_STATU= S); + __entry->geni_se_s_cmd0 =3D readl(se->base + SE_GENI_S_CMD0); + __entry->geni_se_s_irq_status =3D readl(se->base + SE_GENI_S_IRQ_STATU= S); + __entry->geni_se_status =3D readl(se->base + SE_GENI_STATUS); + __entry->geni_se_ios =3D readl(se->base + SE_GENI_IOS); + __entry->geni_se_m_cmd_ctrl =3D readl(se->base + SE_GENI_M_CMD_CTRL_RE= G); + __entry->geni_se_m_cmd_err =3D readl(se->base + M_CMD_ERR_STATUS); + __entry->geni_se_m_fw_err =3D readl(se->base + M_FW_ERR_STATUS); + __entry->geni_se_tx_fifo_status =3D readl(se->base + SE_GENI_TX_FIFO_S= TATUS); + __entry->geni_se_rx_fifo_status =3D readl(se->base + SE_GENI_RX_FIFO_S= TATUS); + __entry->geni_se_tx_watermark =3D readl(se->base + SE_GENI_TX_WATERMAR= K_REG); + __entry->geni_se_rx_watermark =3D readl(se->base + SE_GENI_RX_WATERMAR= K_REG); + __entry->geni_se_rx_watermark_rfr =3D readl(se->base + SE_GENI_RX_RFR_WA= TERMARK_REG); + __entry->geni_se_m_gp_length =3D readl(se->base + SE_GENI_M_GP_LENGTH); + __entry->geni_se_s_gp_length =3D readl(se->base + SE_GENI_S_GP_LENGTH); + __entry->geni_se_dma_tx_irq =3D readl(se->base + SE_DMA_TX_IRQ_STAT); + __entry->geni_se_dma_rx_irq =3D readl(se->base + SE_DMA_RX_IRQ_STAT); + __entry->geni_se_dma_tx_irq_en =3D readl(se->base + SE_DMA_TX_IRQ_EN); + __entry->geni_se_dma_rx_irq_en =3D readl(se->base + SE_DMA_RX_IRQ_EN); + __entry->geni_se_dma_rx_len =3D readl(se->base + SE_DMA_RX_LEN); + __entry->geni_se_dma_rx_len_in =3D readl(se->base + SE_DMA_RX_LEN_IN); + __entry->geni_se_dma_tx_len =3D readl(se->base + SE_DMA_TX_LEN); + __entry->geni_se_dma_tx_len_in =3D readl(se->base + SE_DMA_TX_LEN_IN); + __entry->geni_se_dma_tx_ptr_l =3D readl(se->base + SE_DMA_TX_PTR_L); + __entry->geni_se_dma_tx_ptr_h =3D readl(se->base + SE_DMA_TX_PTR_H); + __entry->geni_se_dma_rx_ptr_l =3D readl(se->base + SE_DMA_RX_PTR_L); + __entry->geni_se_dma_rx_ptr_h =3D readl(se->base + SE_DMA_RX_PTR_H); + __entry->geni_se_dma_tx_attr =3D readl(se->base + SE_DMA_TX_ATTR); + __entry->geni_se_dma_tx_max_burst =3D readl(se->base + SE_DMA_TX_MAX_BUR= ST); + __entry->geni_se_dma_rx_attr =3D readl(se->base + SE_DMA_RX_ATTR); + __entry->geni_se_dma_rx_max_burst =3D readl(se->base + SE_DMA_RX_MAX_BUR= ST); + __entry->geni_se_dma_if_en =3D readl(se->base + SE_DMA_IF_EN); + __entry->geni_se_dma_if_en_ro =3D readl(se->base + DMA_IF_EN_RO); + __entry->geni_se_dma_general_cfg =3D readl(se->base + DMA_GENERAL_CFG); + __entry->geni_se_dma_qsb_trans_cfg =3D readl(se->base + SE_DMA_QSB_TRANS= _CFG); + __entry->geni_se_dma_dbg =3D readl(se->base + SE_DMA_DEBUG_REG0); + __entry->geni_se_m_irq_en =3D readl(se->base + SE_GENI_M_IRQ_EN); + __entry->geni_se_s_irq_en =3D readl(se->base + SE_GENI_S_IRQ_EN); + __entry->geni_se_gsi_event_en =3D readl(se->base + SE_GSI_EVENT_EN); + __entry->geni_se_irq_en =3D readl(se->base + SE_IRQ_EN); + __entry->geni_se_ser_m_clk_cfg =3D readl(se->base + GENI_SER_M_CLK_CFG= ); + __entry->geni_se_ser_s_clk_cfg =3D readl(se->base + GENI_SER_S_CLK_CFG= ); + __entry->geni_se_general_cfg =3D readl(se->base + GENI_GENERAL_CFG); + __entry->geni_se_output_ctrl =3D readl(se->base + GENI_OUTPUT_CTRL); + __entry->geni_se_clk_ctrl_ro =3D readl(se->base + GENI_CLK_CTRL_RO); + __entry->geni_se_fifo_if_disable =3D readl(se->base + GENI_IF_DISABLE_R= O); + __entry->geni_se_fw_multilock_msa =3D readl(se->base + GENI_FW_MULTILOCK= _MSA_RO); + __entry->geni_se_clk_sel =3D readl(se->base + SE_GENI_CLK_SEL); + ), + + TP_printk("%s: m_cmd0=3D0x%08x m_irq_status=3D0x%08x s_cmd0=3D0x%08x = s_irq_status=3D0x%08x geni_status=3D0x%08x geni_ios=3D0x%08x m_cmd_ctrl=3D0= x%08x m_cmd_err=3D0x%08x m_fw_err=3D0x%08x tx_fifo_sts=3D0x%08x rx_fifo_sts= =3D0x%08x tx_watermark=3D0x%08x rx_watermark=3D0x%08x rx_watermark_rfr=3D0x= %08x m_gp_length=3D0x%08x s_gp_length=3D0x%08x dma_tx_irq=3D0x%08x dma_rx_i= rq=3D0x%08x dma_tx_irq_en=3D0x%08x dma_rx_irq_en=3D0x%08x dma_rx_len=3D0x%0= 8x dma_rx_len_in=3D0x%08x dma_tx_len=3D0x%08x dma_tx_len_in=3D0x%08x dma_tx= _ptr_l=3D0x%08x dma_tx_ptr_h=3D0x%08x dma_rx_ptr_l=3D0x%08x dma_rx_ptr_h=3D= 0x%08x dma_tx_attr=3D0x%08x dma_tx_max_burst=3D0x%08x dma_rx_attr=3D0x%08x = dma_rx_max_burst=3D0x%08x dma_if_en=3D0x%08x dma_if_en_ro=3D0x%08x dma_gene= ral_cfg=3D0x%08x dma_qsb_trans_cfg=3D0x%08x dma_dbg=3D0x%08x m_irq_en=3D0x%= 08x s_irq_en=3D0x%08x gsi_event_en=3D0x%08x se_irq_en=3D0x%08x ser_m_clk_cf= g=3D0x%08x ser_s_clk_cfg=3D0x%08x general_cfg=3D0x%08x output_ctrl=3D0x%08x= clk_ctrl_ro=3D0x%08x fifo_if_dis=3D0x%08x fw_multilock_msa=3D0x%08x clk_se= l=3D0x%08x", + __get_str(geni_se_name), + __entry->geni_se_m_cmd0, __entry->geni_se_m_irq_status, + __entry->geni_se_s_cmd0, __entry->geni_se_s_irq_status, + __entry->geni_se_status, __entry->geni_se_ios, + __entry->geni_se_m_cmd_ctrl, + __entry->geni_se_m_cmd_err, __entry->geni_se_m_fw_err, + __entry->geni_se_tx_fifo_status, __entry->geni_se_rx_fifo_status, + __entry->geni_se_tx_watermark, __entry->geni_se_rx_watermark, + __entry->geni_se_rx_watermark_rfr, + __entry->geni_se_m_gp_length, __entry->geni_se_s_gp_length, + __entry->geni_se_dma_tx_irq, __entry->geni_se_dma_rx_irq, + __entry->geni_se_dma_tx_irq_en, __entry->geni_se_dma_rx_irq_en, + __entry->geni_se_dma_rx_len, __entry->geni_se_dma_rx_len_in, + __entry->geni_se_dma_tx_len, __entry->geni_se_dma_tx_len_in, + __entry->geni_se_dma_tx_ptr_l, __entry->geni_se_dma_tx_ptr_h, + __entry->geni_se_dma_rx_ptr_l, __entry->geni_se_dma_rx_ptr_h, + __entry->geni_se_dma_tx_attr, __entry->geni_se_dma_tx_max_burst, + __entry->geni_se_dma_rx_attr, __entry->geni_se_dma_rx_max_burst, + __entry->geni_se_dma_if_en, __entry->geni_se_dma_if_en_ro, + __entry->geni_se_dma_general_cfg, __entry->geni_se_dma_qsb_trans_c= fg, + __entry->geni_se_dma_dbg, + __entry->geni_se_m_irq_en, __entry->geni_se_s_irq_en, + __entry->geni_se_gsi_event_en, __entry->geni_se_irq_en, + __entry->geni_se_ser_m_clk_cfg, __entry->geni_se_ser_s_clk_cfg, + __entry->geni_se_general_cfg, __entry->geni_se_output_ctrl, + __entry->geni_se_clk_ctrl_ro, __entry->geni_se_fifo_if_disable, + __entry->geni_se_fw_multilock_msa, __entry->geni_se_clk_sel) +); + +#endif /* _TRACE_QCOM_GENI_SE_H */ + +/* This part must be outside protection */ +#include --=20 2.34.1 From nobody Sat Jul 25 18:07:01 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 1BECA3B4EBD for ; Wed, 15 Jul 2026 05:21:12 +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=1784092873; cv=none; b=rSknwHB98104gRe79NOsSdBHyO9qLYw6cUWml45mGKoGj1EuvyET4POFLxGwarS6c15wx/7M+UqI8/uPEgTSg1n3bw62pE9D6Dcif1kMjv1iue3E+02x0ogwsYPpne4btknw+G8NOtv5JYUoEyEhMQs/uGsgvoXKRRubBukJ32I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784092873; c=relaxed/simple; bh=NW9OfWcn7zy6+5dpNWHitm6R6TnMYmxPjElKxMspfvA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hUqEDCl2gZLxPfOQRKFqFJT2r4rhi0XAQFfOeBKCcQr/5iZV5fr0KRuZXHGfcCsgDYgnTUuFi8fSWIMtX5d4hFb2Slqy9CiSehWfiZSXJJ9l6MOHcns/AAg1Y+2wu1+CuEuuk6hTtqWG75tOyIDqv/zFIfmP4tc+YRycJgAaiwA= 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=jJjjQ7yV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dFgUPsjo; 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="jJjjQ7yV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dFgUPsjo" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66F3lO1l2269998 for ; Wed, 15 Jul 2026 05:21:11 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= sITuVOmRTLgtM0SYU13wJSBTuqa5KGwf+255oDtx3hc=; b=jJjjQ7yVkooBgrGu SIKD9gMjwaiYl3OqX4QE25Ok0y65w2GqSp5PM9wijClPfYFb6iXrOjDh2NQfkold YOJhBvBraUDlT7MON0wXW6Vw9ktkOwZg8WZtcLyPHNCCgm7kX1BnK2g2XS9jAXMK 2dA2rSf6UBlt7XN/1HG75AFGeqe0dkYisyVT1+9V/bZV/+ZQT+WeBoLFjmWQA9K9 W0nwo7vxqd0EqoR+/WgsIsBWUn9OmDIxA/5s2nizI7ELTJ9E6Qrgko/1K5Sa1spY PLLlo3hZzzcj5XRojjr3Oyg2uV6Ca7GEsns4ll1douuI+sxbipKr6E2pEgOQKV7N /1Xbvw== 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 4fds9mj0q9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 15 Jul 2026 05:21:11 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-3811ae55313so1758723a91.3 for ; Tue, 14 Jul 2026 22:21:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784092871; x=1784697671; 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=sITuVOmRTLgtM0SYU13wJSBTuqa5KGwf+255oDtx3hc=; b=dFgUPsjo3Ie8zzV59c0d2OVXremZoXNoSua1uIqvPlNIkRkRACODxgN7YIiI6AyhDq 45MAVhWs7hxQWXCwwgLEdvj1/bbr4sV/d9qJEa3xX5Hdpf3fpE49efFQfiUHRGSuPo0W Gyg5Q0q2GllXDKcBoALsT02uDyr5jmQPct/WOms+3xFfWtX1yqvU3S638VnVQ38BCeDN h3rs5i/r0i6eE8pWbeBmoAEy2eWKmrDATOgiWHGrmNgfG07I9asd+tmHsYgMr9fHLhbx 8QKE6fFIytow121OZPCN1Eiy28fItsXqBRAdBpovk8KiOeHECsYdNvGjCc/s/LedlskI CbEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784092871; x=1784697671; 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=sITuVOmRTLgtM0SYU13wJSBTuqa5KGwf+255oDtx3hc=; b=ezK06ChyWO2h5Xt3J3BWV3EHJGIdfxnKLWg2jyPsKKFuoWUDu3j+UG6pwXCWHOYgR0 bS2ye5a9RQEdt9q4/300vMP11rwwP4yxXFpyyeqHeMQ8oPOr7Mu8+KchchXuh7h3bHmG XTRe9sq4Pc+Vjs6Mt3q+cjJUGtgHXf3WeBQFG3X7Wiyuy1Oi4HnheZHLn8MJklWydALW 3+kiTlr2OF3BndyusFvopC5+YV+IiqTvKEQgqcGMZUs9MyGM3P6a9H4kmxQ7ivW/1WZX 4UDpnJKxX16NMjLXCp2Qz58cphfduDSl9JecGJ05wrTi2i1JC+js+K26ZpThTI/voJ2i 5THQ== X-Forwarded-Encrypted: i=1; AHgh+Rr6awFAHSt2cGIfFlRnqvUiP15OSXuqAZ/7F20juOfaGKBNQdePXG650JbjGywLFNKZlMjvqjxGO59fMEo=@vger.kernel.org X-Gm-Message-State: AOJu0YxkbuKVjnmAXVdg9i/d3ooIs84BM/7qMKa2/mDFMLnyBX6Hc2ZU x8rZ04I2HHmZzXXmmGUCWgtEUMt0SA8R4//66FdOq6nsKTHO9FiYjlchSxXyibFSWCsPOrMaOM2 bPr0Ik5xTIi0Dxjc4L11nnVvjW4qeCOWu+CfwIOUVebCfnD0g/VdmcxTHzOpja6SKQBk= X-Gm-Gg: AfdE7clcauOQw/KXLUYZi0BDpNa1S3GuvLPWoGjDh6BiOtsG3QdxVIDoelwpWLMH8rX iFx6KtV3UC0L1onrzY6nIuYnpdTfilcTEzd0iymeQj+x1WFtbgoWGkbOTcJ/nzMIty6nGW5yN4E JVHsyuFKs/1ziV1Bd+9I9jSmXwSoUMEU+slD0ABf/XxzZKMdJa0ByTbjTI1ClJbGTxKVUSraYC5 Phak4zyohPVrPIftAftykfqTjxYxd/3JXKqSS8waCJK/fNtSQ9elUpdf68M1dXYwLJXreFjOjxi m/OhjI0qEntS0Qpfrp3/L9442YQJGOOuj6HEaFWeRfUQJRkLzmx6qmEsDVT/RPfGrt6+u0xxa4e f6XqHUUsy9T1ORedTI208DUCmADTDkL/NMd7vMtoA680+ X-Received: by 2002:a17:90b:1dcf:b0:38e:673:5d18 with SMTP id 98e67ed59e1d1-38e06735ef7mr8097328a91.36.1784092870688; Tue, 14 Jul 2026 22:21:10 -0700 (PDT) X-Received: by 2002:a17:90b:1dcf:b0:38e:673:5d18 with SMTP id 98e67ed59e1d1-38e06735ef7mr8097285a91.36.1784092870078; Tue, 14 Jul 2026 22:21:10 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e172e46basm2526092a91.9.2026.07.14.22.21.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 22:21:09 -0700 (PDT) From: Praveen Talari Date: Wed, 15 Jul 2026 10:50:48 +0530 Subject: [PATCH v3 2/2] spi: qcom-geni: add GENI SE registers trace event on error paths 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: <20260715-add-tracepoints-for-se-reg-dump-v3-2-0f787f93badd@oss.qualcomm.com> References: <20260715-add-tracepoints-for-se-reg-dump-v3-0-0f787f93badd@oss.qualcomm.com> In-Reply-To: <20260715-add-tracepoints-for-se-reg-dump-v3-0-0f787f93badd@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Mark Brown Cc: Praveen Talari , linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Mukesh Kumar Savaliya , Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784092857; l=4641; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=NW9OfWcn7zy6+5dpNWHitm6R6TnMYmxPjElKxMspfvA=; b=aCXYBaUg68cF17oSv8bFBL9qAZkATJSAom/UstP3l669diTKt9Ywq4QeK23VXjuGUwuVRlOsH SxshQmmdKPvAqNRgUg+eVEhWBbV86Z/HeF/xobIJETvEJYH0SEd0vLE X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE1MDA0NyBTYWx0ZWRfX73fRttSUWa3L oi/JNCdkmYuJ8RHzoQ+qkBrMb2ixlKBoLCQpalOJELe/kxLF9TWeUSOuY/pVOap9yhuZaDj45Mu kvvcaYXSZQdFqM8JN7G/aD4pRNJJ73Wbg7CnjK7wUjcuTuax38HLRFkd+G/ogu8SoJ0gf51g2X5 tWj23Vozocdknqz0qKYuoBLBcHB9mJP9g8LFnPJ235jefzBqyyxZaQv7b1275mg52blLvxZfATB yk4w/Pb4y/q5ScyD/Zl6aBi++14NUmI7m62gghIANmH+dPyZcYr8/kvQxVhuCbyEOwMG5vyQoLl w6ou7o9MSY7/pWvKUrXCt7e5Pb4MGDcxai7T0EgUhsGcPUPOggUcCSd+bmhbx4flNuwdOl3mKHG ku8bqlMfZciarMprWYx+wC0tyZ0MWqOLNtz6H07LVTMvvvSQBf8TDx5PhjpvHdxRkayIX4cpzN7 /p0M0sKCRZIr31clVkQ== X-Proofpoint-ORIG-GUID: S9BtbNePnCfS16LBW9zUBpYfPwQvbZUt X-Proofpoint-GUID: S9BtbNePnCfS16LBW9zUBpYfPwQvbZUt X-Authority-Analysis: v=2.4 cv=E+79Y6dl c=1 sm=1 tr=0 ts=6a5718c7 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=SuVZUjzzKY3ZPv7-dKMA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE1MDA0NyBTYWx0ZWRfX5SqIDMGi25E3 qYdDCclGNH9awOk5Ub4VN9b8tXk0IdigGizXOeWZfyKldJxaq3QlfR1dAuiWnF+fPfXpYJzNkY4 CYvMHTPdwwf/Ey8Rk/wGHmb+z0+Qyh0= 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-15_02,2026-07-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 spamscore=0 impostorscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607150047 The GENI SPI driver reports various transfer failures such as command timeouts, DMA reset timeouts, DMA transaction errors, and unexpected interrupt conditions. However, diagnosing the root cause of these failures is difficult as the hardware state is not captured when the error occurs. Add trace_geni_se_regs() calls at critical SPI error handling paths to automatically capture GENI serial engine debug registers when failures are detected. This includes: - M_CMD abort/cancel timeout - DMA TX/RX FSM reset timeout - DMA transaction failures and pending residue conditions - Unexpected interrupt error status - Premature transfer completion with pending TX/RX data Dumping the SE debug registers at the time of failure provides additional hardware context and significantly improves post-mortem analysis of SPI transfer issues without affecting normal operation. Acked-by: Mukesh Kumar Savaliya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari --- drivers/spi/spi-geni-qcom.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index 2914d781dbf5..8528f9b80f03 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2017-2018, The Linux foundation. All rights reserved. =20 +#include + #define CREATE_TRACE_POINTS #include =20 @@ -192,6 +194,7 @@ static void handle_se_timeout(struct spi_controller *sp= i) time_left =3D wait_for_completion_timeout(&mas->abort_done, HZ); if (!time_left) { dev_err(mas->dev, "Failed to cancel/abort m_cmd\n"); + trace_geni_se_regs(se); =20 /* * No need for a lock since SPI core has a lock and we never @@ -209,8 +212,10 @@ static void handle_se_timeout(struct spi_controller *s= pi) writel(1, se->base + SE_DMA_TX_FSM_RST); spin_unlock_irq(&mas->lock); time_left =3D wait_for_completion_timeout(&mas->tx_reset_done, HZ); - if (!time_left) + if (!time_left) { dev_err(mas->dev, "DMA TX RESET failed\n"); + trace_geni_se_regs(se); + } } if (xfer->rx_buf) { spin_lock_irq(&mas->lock); @@ -218,8 +223,10 @@ static void handle_se_timeout(struct spi_controller *s= pi) writel(1, se->base + SE_DMA_RX_FSM_RST); spin_unlock_irq(&mas->lock); time_left =3D wait_for_completion_timeout(&mas->rx_reset_done, HZ); - if (!time_left) + if (!time_left) { dev_err(mas->dev, "DMA RX RESET failed\n"); + trace_geni_se_regs(se); + } } } else { /* @@ -391,10 +398,12 @@ static void spi_gsi_callback_result(void *cb, const struct dmaengine_result *result) { struct spi_controller *spi =3D cb; + struct spi_geni_master *mas =3D spi_controller_get_devdata(spi); =20 spi->cur_msg->status =3D -EIO; if (result->result !=3D DMA_TRANS_NOERROR) { dev_err(&spi->dev, "DMA txn failed: %d\n", result->result); + trace_geni_se_regs(&mas->se); spi_finalize_current_transfer(spi); return; } @@ -404,6 +413,7 @@ spi_gsi_callback_result(void *cb, const struct dmaengin= e_result *result) dev_dbg(&spi->dev, "DMA txn completed\n"); } else { dev_err(&spi->dev, "DMA xfer has pending: %d\n", result->residue); + trace_geni_se_regs(&mas->se); } =20 spi_finalize_current_transfer(spi); @@ -953,8 +963,10 @@ static irqreturn_t geni_spi_isr(int irq, void *data) =20 if (m_irq & (M_CMD_OVERRUN_EN | M_ILLEGAL_CMD_EN | M_CMD_FAILURE_EN | M_RX_FIFO_RD_ERR_EN | M_RX_FIFO_WR_ERR_EN | - M_TX_FIFO_RD_ERR_EN | M_TX_FIFO_WR_ERR_EN)) + M_TX_FIFO_RD_ERR_EN | M_TX_FIFO_WR_ERR_EN)) { dev_warn(mas->dev, "Unexpected IRQ err status %#010x\n", m_irq); + trace_geni_se_regs(se); + } =20 spin_lock(&mas->lock); =20 @@ -983,13 +995,16 @@ static irqreturn_t geni_spi_isr(int irq, void *data) * weren't written correctly. */ if (mas->tx_rem_bytes) { + trace_geni_se_regs(se); writel(0, se->base + SE_GENI_TX_WATERMARK_REG); dev_err(mas->dev, "Premature done. tx_rem =3D %d bpw%d\n", mas->tx_rem_bytes, mas->cur_bits_per_word); } - if (mas->rx_rem_bytes) + if (mas->rx_rem_bytes) { dev_err(mas->dev, "Premature done. rx_rem =3D %d bpw%d\n", mas->rx_rem_bytes, mas->cur_bits_per_word); + trace_geni_se_regs(se); + } } else { complete(&mas->cs_done); } --=20 2.34.1