From nobody Sun Jul 26 00:20:45 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 A7A66381AEC for ; Fri, 10 Jul 2026 18:49:07 +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=1783709349; cv=none; b=CFzhoVfm5LUkM/lhRhDcrYamN1cJxeMWkwyv42eqnESq5p8PfDSRlHafdtLO5MyQpyTtyFr5HGyLu6gC5lyi0m8oM4wWJFbbiePg8IXCcvNlCImgiNDj32IVxRyKj1rXC37XTZQZNKerSIqWNNZR3VVQTPkQWyFTb4Y/Z3AR9ac= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783709349; c=relaxed/simple; bh=gr6RUZ9hxy+1I2m/mmdzNKACzQpd8nNWzlnxnblV5no=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AyNtPT7qXXyTRYPQrkXTZDzp/qlY0ZtfroZfo/aQ9/wHiZE1JxeuLlk4JP1IYZmFPDohVUGRnSchMOVTjkvwQer7gXCr2xnjApa7SfWTVrJlX9Eb7c+4DtCKaD4DevGDP8QbM/hncZlAwaH1rMQu8S3ZHNFTf3XE3sXB3XsDj/M= 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=Q/1TR1Tx; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XV+1uHrW; 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="Q/1TR1Tx"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XV+1uHrW" 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 66AH4CRo1451424 for ; Fri, 10 Jul 2026 18:49:06 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= naFUlDd2eGJFd8TbsLsOpqoH7nJVOascNmCm25gN4Ek=; b=Q/1TR1TxGGHQRcEu RmHSW5JNPBSdlOMxXeSh4dYnmaW2l9e/g0W+Xg2Afal1dQ6VYHbxnwsJji+NbiOQ mgJn9XljAlOUn4yanFkWGKJThO89+Uoe+btXtbiZaOvypBeHKfJ0JDP7Wa326lY6 ePmkxAAPti65VycehOFdIEHvxzVvL1KEWLE1Ww7GhkLzD36VbkP1CFEnI0VywMK3 E5Rdia57/c2drlGy+9db02LVSCbn4ge0kjnNlabmFFeI0vnj9AQ6IIvaIzi7871x LtrxHUbAYGOgIbVsBkjyAPShYDcceom2OFL/V4V4Ikz05/Arw0rk2KdVvBeH1qkb 27xvNg== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fas6n38uj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 10 Jul 2026 18:49:06 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cab041eced3so127414a12.1 for ; Fri, 10 Jul 2026 11:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783709346; x=1784314146; 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=naFUlDd2eGJFd8TbsLsOpqoH7nJVOascNmCm25gN4Ek=; b=XV+1uHrWv38j3xObGX13Y24nRGRMZHR/6ZMmP0q5G4fnFQEaE74gymgrOSw0YJqceR /ITWSQqSxHvdTrSgRlhstkN5hx+6sJJ0JsYI4tUKH+dq64efC0jkACFh9tliKdaOLF0f elCN/TPPtuuUuRFPswqG9HmvALrTbw4Zu1syDEOnxvSlJSbyjyTbO0qPmzlMBTohOn5P IhUu85s+efVL7QYfpo5qb9i7C6NLPWT7OpINigM0ABwehl0lZyeLxV4aVzRtANaS0K2a mSyHHP/ZKa78AQrilfcxBVnwDdjCjuuoHMe4zSLAG4pQNzR5CfZ3YNqS0cSOw87jd+3J 24Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783709346; x=1784314146; 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=naFUlDd2eGJFd8TbsLsOpqoH7nJVOascNmCm25gN4Ek=; b=NXJAgRWJdxz8chiup3qH8j2ZvkLhVl7Ri3DjEKyeGjV3/Eys+AyNCfnWu7K2JfYHj7 N9pOfKl6CEc6k1pk00gKAx3qRJXTjRdO96Anuh7QbBVBMCU4mLKqk5d298b2XBOnK+Ze iDLI80DSLUw/mWeONOts2sIE1plstXa34+LFdqDD+TBrg5SfpbKOZdm3eFZrB30PdtDY yND4pfxxGqr9dRw6VbNW7E6HHioOvf9rWVdnoxwyrWEkubah+EciIho8l3KaBiDcdnlA y66rz4LJrtQ2nQ39FepD7ynmcA9stwkh9+zhLCGR3ErqNGCuCLQ6l5gDFHPXFbKyqQV0 xUGQ== X-Gm-Message-State: AOJu0Yxhg7LGkUXFZ/hrXJ2jXQCfCjJxuCOsP4VKMgQtMB5bK/pkInaz Uq45czGU2Y7wB8varRRkPjhd/ViGnNzifzlUXJ+zjWje8rD4GbTnBjpviewVXy8mPg68VwMkXbu Q0DFng7uLifb/9Ny1WsJVRCKWNUAue9IXCBPJswiheCL6TmP2/FHbJOvgwNceSS10I/o= X-Gm-Gg: AfdE7cmAZzsKKLUq2k6ipTFI1JLkooXC/z7iVovf5Gd0uazrb2QcNBkB5UVhaEJrKSz zxmUC1c9R/U26mxYg4Os+4YJ5Z5URxCjlE7GqIDp0G9/NYfOkiipbPZQ2Jw05knVeR3RhE+HPRs StvJTzD0SZ2DrGQjqW5Kjt+CIHMHqQ22n40iBYiLhQGburPCzcUSJ8Ro34DBWs+1/MOUgVgdn/w MOQCCUL9GFDwZuuMy0C3IoMLu3kY3Io9MMuufy1XoLUEmMHuifbgNMB+Y345fNdb8DHyCuJCujK qW7Iya+M8tZCkdYODMHbD8vx35ZQ+gUUXWu2YR45MHPIbYHb8zJfeesp3u/DGun2ZqJBjZVWxHR K3D5OaicMpllSSIlk/yPh6OVTJU2qeMeUvsKj5OgZtXH2 X-Received: by 2002:a05:6a20:258e:b0:3c0:42c0:702e with SMTP id adf61e73a8af0-3c110ba2a31mr218085637.52.1783709345529; Fri, 10 Jul 2026 11:49:05 -0700 (PDT) X-Received: by 2002:a05:6a20:258e:b0:3c0:42c0:702e with SMTP id adf61e73a8af0-3c110ba2a31mr218049637.52.1783709344967; Fri, 10 Jul 2026 11:49:04 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b659d7c8bsm47226919c88.12.2026.07.10.11.49.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2026 11:49:04 -0700 (PDT) From: Praveen Talari Date: Sat, 11 Jul 2026 00:18:41 +0530 Subject: [PATCH v2 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: <20260711-add-tracepoints-for-se-reg-dump-v2-1-ca1e9ba62359@oss.qualcomm.com> References: <20260711-add-tracepoints-for-se-reg-dump-v2-0-ca1e9ba62359@oss.qualcomm.com> In-Reply-To: <20260711-add-tracepoints-for-se-reg-dump-v2-0-ca1e9ba62359@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Mark Brown Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1783709336; l=13747; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=gr6RUZ9hxy+1I2m/mmdzNKACzQpd8nNWzlnxnblV5no=; b=Beio6gVVdnzL3qbyTUuBnNfqA0B2rhOP8WizglSZ/aypfJPGovlGleGu849aLmJrDFt8oiHcl G0eHaisX/taALOooHt62AILRytzY/FTgwofP11ChVI9JV21wUy7BI0i X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEwMDE4OSBTYWx0ZWRfX1RHUC2QmZErg 4S9ev84RuVhCms3NfSONk+fRob84CI/ij7xNh8tMBm0OJR/lw9IbjXEWnAiCoSQlxFQenUcj/VI Um2LEg485ORvLyd52r6opdlvf3gjxu0= X-Authority-Analysis: v=2.4 cv=DYgnbPtW c=1 sm=1 tr=0 ts=6a513ea2 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=meVymXHHAAAA:8 a=EUspDBNiAAAA:8 a=LB4RwR69Xtfn_yaUxnMA:9 a=ecEcETMdv5OSLH-Q:21 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 a=2JgSa4NbpEOStq-L5dxp:22 X-Proofpoint-ORIG-GUID: Tis_SwOQSthIV8kWyKP30QGIXQzPHWB5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEwMDE4OSBTYWx0ZWRfX6D73cNfl7CjK kkHmUv5tUoEOm6PznVPqGyz+0AWEoYXRb0tB3dy5EgKHR2Fsa6dtnbjq6VztRfxnCZsUzsuROlx D92SEnDiklL1FLjk5xczB2e62JnOIFKPzGaiH7QFr8NcquCDk3c74UZd/Jjl0iSQFq5sNQdxSS7 NhWQHqAMYFJwC5knW36p1WXDG4BSmGy1p/jjFcg53Q0ZPGKJFpkdLq92t8ciGEflaHSMtiDRYV3 hQMygfsXESW+hwt+URt/mbDGFy737pS5hn71XcY7ugrS62Yw19HVYX0zYzAXRpCd2KhBoQBQAy4 BPtq+c3B9czLaOhxov9CZ/66TCEanBfK9kjOwn5UrL4JyQ4nG1W2K+MvxFLUz3Tk8QHpRJVZnS0 eqdeb3Jcl3s60DKnhynYwSGvSm7VviMl+UJKWQwG5hclFDKF389Go0vzAY2TZpzyoNugIPqCEtO BO5sva+pcc0mw0mCc3g== X-Proofpoint-GUID: Tis_SwOQSthIV8kWyKP30QGIXQzPHWB5 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-10_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 suspectscore=0 bulkscore=0 clxscore=1015 phishscore=0 malwarescore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607100189 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 --- include/linux/soc/qcom/geni-se.h | 38 +++++++++ include/trace/events/qcom_geni_se.h | 157 ++++++++++++++++++++++++++++++++= ++++ 2 files changed, 195 insertions(+) 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 Sun Jul 26 00:20:45 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 57B4F3822A5 for ; Fri, 10 Jul 2026 18:49:12 +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=1783709353; cv=none; b=VpRwD/+Tl29wJPoFzM8c+ptaz6BUkaDa0ZX7HTX42kycoh12dF/QOJAxRXCSJiOMfcGxawjVPNtJL+gSOBFOVESwDNzd5kjgbTvR3dQjNT08FiuquW3kUarMWPjcD7PKMfk3NyThd+cCkHifND8p83+FyfBAuShjNr+vIND2QYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783709353; c=relaxed/simple; bh=8IjvFdh38GVjti8EyyCPNx+zrsozIfJZeDc/Jq92K18=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AilCBy7kvd1BadC8Qmp8EabDI6KnURHvaQztsKPy4T5Ak2v7S+cQGhmps4ebldJHo3Gh/rW7NojI6WITqpZ9R2FOXZr3TgkecwH699tCWRtmmDhMhOmlmIHGWqGJHViwDPnJuLTFj5SuExEvJEq7LQf8MatOlN5zIyh5qlgrTRk= 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=bHBzGJjq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hVI5KLzy; 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="bHBzGJjq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hVI5KLzy" 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 66AH55561407268 for ; Fri, 10 Jul 2026 18:49: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= ghB+78yE/3ES4lSKNpqNXaMIAgtNADaxhoROyeNa6cY=; b=bHBzGJjqAn9Ojahn G6UM/CzYLViNReJZA8caBIuFcR4umLZf2duLK7fbtRZg0Ng90v1TtbkGl1jvA7Hf 84mrbOjeU84bi0akGWgvJhh2XlQKw0g3eAdWWJuUDMmnM6v0uOR/kqmYYtd7DfUp gXJfQczW+vxd/M+tGbup/FNdvDfD91L0iaY5Lp3rfdAcdzWgu5R8gFHRSFwrcuPv mU6ovfjslJL57lZmPSyjhfiB/mQGC6jxWbnxji2cW+XEMDB7GSqAS0k/SToi10J6 eDoVVD1eiXCBZYRgR0WYyTGONZvSnYtcHLeUgL4sG2z/lQ2byHFj4CqEMWY2gDMs kkzLHw== 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 4fax5fa22p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 10 Jul 2026 18:49:11 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c889d1eedcdso1891015a12.1 for ; Fri, 10 Jul 2026 11:49:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783709350; x=1784314150; 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=ghB+78yE/3ES4lSKNpqNXaMIAgtNADaxhoROyeNa6cY=; b=hVI5KLzy8B3KgLLzClf+1Rcw9l8FJPEthAp3fCBfDeyYoRpGwKCATIAwxHHOJByBAY 6vJmozBtLnA46NshTP0MeMyfVjdlzqb7qm1cXAbjEn3SoP9p0qEb6RVpZ7R8bvpaLSgn TNHvYj2/JR7KtB9o+S6DNRwPOTH0rT4Ur4u9sYqNHPy+NMGtDD047q7md6kzDhn4kr7A xmDw09PfQ5a5UgrE/a5KVmLssUC3d0iz4QqukdZrxCTBqbwDCJknll0pGndA7aULCZRu Vr0b4yOmElcrp9j4igV+zobgFqYMBt49dG4awD1jXRudzadmyLpNZAWsIGz8Tq61oVPf 5KSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783709350; x=1784314150; 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=ghB+78yE/3ES4lSKNpqNXaMIAgtNADaxhoROyeNa6cY=; b=HFwxaO8BiA6GWuqoTgR0TVnIG/8r8DvLZPMuooWkVx9UY2YgWPoMK9q0gRKzXW1sMR gUZwiKWItcJLHaEtWTzD7xRqd8V6uEJU0Coh2SrwELtJtkqJ8mlxRqntZ86SdP/obf32 34mlHBXn1yqcN7rHTx0EsvV6tbUSMz4RotV/OOXH+xDUJZO42IzEDRXAnwdvOL12kc3V iS72uYL3ywhK/9Tw8HubETirWRXqOrdNPp0caO3xwm8N40pl5hB+zxXmCC54Paw0LQCo MVyRNxLWG3pmfilbAJ0QIo9fGXqtmgDTFaHwX7UKsoTmsmIzFIQ/by3/d0Plxg4GhE2K FWQg== X-Gm-Message-State: AOJu0YxHXx2g4ejQAR8BaZDRmyZRjwnqPnd8H5GM56V7Ov/LVCVGUoBE JUyEQRDC8R1IZE59YsLK0PJSfdW4ySMbviJUoN06bYA3oKyi/53KuixGuCdy+8F1IyUI/C0RmDZ SKtI7jVJcYXxnj6XafV9aifopW5HUStXw/p79K8t4bFnl4cU1k2Zs4UNvTVPuD3r29oI= X-Gm-Gg: AfdE7cnSlCslDr8JZmukg/xmt4TVvmVpghohYNb3Yr/7Gf0pRMnypf+lQzY5fjtNciv 8cqeNXGRfjZxtErW0LLhOULkxmW15t834oLWYBLkxz2xB2gT5ctdCEy4q6mD6vIxEDnSNwX5e0V nwWplJs8g5pEBBKvYZJ7bxfvOF6IJ2IPEkPhxV4ZY9qMCUVDx8nSuGX5qR428UlEnrMYu5HCrWM sXPYp7cnLHs6iccK0CnRf8f8Wl6Qee9G4Krz4Mly04jdzBB/7d4McvFwF1Rdp96BtmHv3kcD/1x UxJ5L5kySF25ZzNH5kfYAuBaIBbahaxyWyDlqcR8DQg8gvFmxtUByjyscx3Tuz4ZROVqt09Z/ft /tlk8G18ZL1vDrR5UgGCOLMfZVfQTvHxyAMX46QWmWLbI X-Received: by 2002:a05:6a21:9211:b0:3bf:49c8:f8a with SMTP id adf61e73a8af0-3c110be0ee7mr239215637.36.1783709350122; Fri, 10 Jul 2026 11:49:10 -0700 (PDT) X-Received: by 2002:a05:6a21:9211:b0:3bf:49c8:f8a with SMTP id adf61e73a8af0-3c110be0ee7mr239192637.36.1783709349555; Fri, 10 Jul 2026 11:49:09 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b659d7c8bsm47226919c88.12.2026.07.10.11.49.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2026 11:49:09 -0700 (PDT) From: Praveen Talari Date: Sat, 11 Jul 2026 00:18:42 +0530 Subject: [PATCH v2 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: <20260711-add-tracepoints-for-se-reg-dump-v2-2-ca1e9ba62359@oss.qualcomm.com> References: <20260711-add-tracepoints-for-se-reg-dump-v2-0-ca1e9ba62359@oss.qualcomm.com> In-Reply-To: <20260711-add-tracepoints-for-se-reg-dump-v2-0-ca1e9ba62359@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Mark Brown Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Praveen Talari , Mukesh Kumar Savaliya , Konrad Dybcio X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1783709336; l=4547; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=8IjvFdh38GVjti8EyyCPNx+zrsozIfJZeDc/Jq92K18=; b=LZBu61HhIxIB/wxtIfaMNakkUitzJXJmclwcuWrTXejzPiOhF6JokQ33ZCjOT0Er27vVIVkVW Rhar8SB3nC+CGmT7LSlLEfHj26NXQAFEiUVAWVFg+M8FdNfUmAA5na/ X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Authority-Analysis: v=2.4 cv=Ab2B2XXG c=1 sm=1 tr=0 ts=6a513ea7 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=SuVZUjzzKY3ZPv7-dKMA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-ORIG-GUID: rvDIj9eSgK1CbTWzgEFtnYHdPQJxs1sC X-Proofpoint-GUID: rvDIj9eSgK1CbTWzgEFtnYHdPQJxs1sC X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEwMDE4OSBTYWx0ZWRfXzvolDdJAPW4H LqIse1Z03uX5N3GIPSzdUiMrpo4HaiAos3+yp69C+AlwQXrY/d6YT1+JGvhAoroKrah8dGIaJZq 7BEHZY5PlspeYEwJLcm9IPQeR22Tr0A= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEwMDE4OSBTYWx0ZWRfX61yZiSpSrY5j zQVdloCjlsL4traNoJLeDlQVdeqKseECMC5DZjezkKF70NqKFClBbCscR+DjGDcPOuegQ/VugiA b6KDG04iXYfB/uiv7MKjBYv/csrrymNWpoawbgxYcZlqj7J8hdnu3w94Ox6dTGjoZ95vENm7HcO Qh87EjutdEIYkdqRpghFxKaV9d+eV54izHv+kHLk8bSrz7O+QMk5fZmSdMJKMQzZQbSkCZFmiiC CpAiBqWq8bqYFfrmU5TebedNWqEYlsp7B1JzAgUpCABRZdEbFlhkFO4wrDh1mhDUWri+ve/mwj/ Pdd7HPW0+JJRtjtJNUwqGuyUksOzWBksg6MbFNARMSgdXN78/2KRB2SqYh4cBnFD/sFCmnG15nI 5fg7hcdnxYUW3wsmmHVVoEloRBH8wj5aIfjNdM4ljnO/a2vDiSTnwpiYysx6tFIOfbPERlBlf3b W2U0SsZweTzXLjSJY9w== 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-10_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 malwarescore=0 phishscore=0 bulkscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607100189 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 | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c index 2914d781dbf5..33020273c5df 100644 --- a/drivers/spi/spi-geni-qcom.c +++ b/drivers/spi/spi-geni-qcom.c @@ -2,6 +2,7 @@ // Copyright (c) 2017-2018, The Linux foundation. All rights reserved. =20 #define CREATE_TRACE_POINTS +#include #include =20 #include @@ -192,6 +193,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 +211,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 +222,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 +397,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 +412,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 +962,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 @@ -986,10 +997,13 @@ static irqreturn_t geni_spi_isr(int irq, void *data) 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); + trace_geni_se_regs(se); } - 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