From nobody Thu Oct 9 06:59:43 2025 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AF6D1231A37; Thu, 19 Jun 2025 12:20:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335627; cv=none; b=pcjpx1FQrHuwnPvx8dhMR1YtKOrB4Gb/298Wk2B7ZxtzenqEfyCLD2Em9tBWhPrauo5BImDazmNfLrEjSdm+A9v1V+X4+q9MVAXK4DCqF/WQla7wCuSYdJZkX7jJDqOW1ZUmduYgg5KOh4ac6a+eU/+3JfHexKlmdhZvkYqA15c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335627; c=relaxed/simple; bh=NrULrQCGWhTjm0RiyC0yWmVThZOQ14NRWGtdjTK+Ozg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uLyA6VlPJVIE7B8n/rb23VuYjQupk1ukm0Skn9EmK9dQVKCze6VB3DG77sBPe5yAz7Z5nSbpP/xuRyzrDqhvmalln4mk1ZlqhX2sUWilftlnBaSFexXu9KTOnV8f16i5REVpBxtGgEDL81WOx0TKSgB4/+v6yAq0S4Xt2rSbKhI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id DAD9D12FC; Thu, 19 Jun 2025 05:20:04 -0700 (PDT) Received: from oss-apollo7005.oss.cambridge.arm.com (oss-apollo7005.oss.lab.cambridge.arm.com [10.7.15.171]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A3F103F66E; Thu, 19 Jun 2025 05:20:23 -0700 (PDT) From: Philip Radford To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org Cc: sudeep.holla@arm.com, cristian.marussi@arm.com, luke.parkin@arm.com, philip.radford@arm.com Subject: [PATCH 1/4] firmware: arm_scmi: Add debug decrement counter Date: Thu, 19 Jun 2025 12:20:01 +0000 Message-Id: <20250619122004.3705976-2-philip.radford@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250619122004.3705976-1-philip.radford@arm.com> References: <20250619122004.3705976-1-philip.radford@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Create scmi_dec_count function to decrease any of the Arm SCMI debug counters Signed-off-by: Philip Radford Reviewed-by: Cristian Marussi --- drivers/firmware/arm_scmi/common.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi= /common.h index dab758c5fdea..c6495c4a0e8a 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -314,6 +314,12 @@ static inline void scmi_inc_count(atomic_t *arr, int s= tat) atomic_inc(&arr[stat]); } =20 +static inline void scmi_dec_count(atomic_t *arr, int stat) +{ + if (IS_ENABLED(CONFIG_ARM_SCMI_DEBUG_COUNTERS)) + atomic_dec(&arr[stat]); +} + enum scmi_bad_msg { MSG_UNEXPECTED =3D -1, MSG_INVALID =3D -2, --=20 2.25.1 From nobody Thu Oct 9 06:59:43 2025 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0C861255E26; Thu, 19 Jun 2025 12:20:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335629; cv=none; b=o2US20zNiGPnM1t/JfJFI+s1Xcx9IK4AnPrDzXyo5KM6ihmuS18YOfwABeoK4M8jzG9+yWCkRyOagWRvwkYf7B+KS+S+SsgMHt5V6aijckP0uwg9swizrYUghTTncZxeKRrY8tOVM5CX3LCE8N9j4AxjvS9EkUqvuP7wsw57ppQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335629; c=relaxed/simple; bh=YfCQVLBrQKI18N4LrO8MlRVwpI3q12peNDmsRMTZTJo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=X9UTjMAtCl11Ub6726WWom7HY3cf4hy8Nlf9ob7nRW7ifbnUEdDNeVVm6kiZMCw286RS6mKGn7AvPNdWX1vQVqcutUlbmGJV1ZQrInziXT6L9Bb6lu1FVfIsNO/8hUYL6FERdLji1YMY8kWcT7hns4DJq04ROhiAGnoJLulgjdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 62A85106F; Thu, 19 Jun 2025 05:20:07 -0700 (PDT) Received: from oss-apollo7005.oss.cambridge.arm.com (oss-apollo7005.oss.lab.cambridge.arm.com [10.7.15.171]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2D4BD3F66E; Thu, 19 Jun 2025 05:20:26 -0700 (PDT) From: Philip Radford To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org Cc: sudeep.holla@arm.com, cristian.marussi@arm.com, luke.parkin@arm.com, philip.radford@arm.com Subject: [PATCH 2/4] firmware: arm_scmi: Add xfer_inflight counter Date: Thu, 19 Jun 2025 12:20:02 +0000 Message-Id: <20250619122004.3705976-3-philip.radford@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250619122004.3705976-1-philip.radford@arm.com> References: <20250619122004.3705976-1-philip.radford@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Added an xfer_inflight counter to the debug_counters struct to record the current number of inflight xfers Signed-off-by: Philip Radford Reviewed-by: Cristian Marussi --- drivers/firmware/arm_scmi/common.h | 1 + drivers/firmware/arm_scmi/driver.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi= /common.h index c6495c4a0e8a..ad9232c982ce 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -305,6 +305,7 @@ enum debug_counters { ERR_MSG_INVALID, ERR_MSG_NOMEM, ERR_PROTOCOL, + XFERS_INFLIGHT, SCMI_DEBUG_COUNTERS_LAST }; =20 diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi= /driver.c index 395fe9289035..5a4dac27afdf 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -190,6 +190,7 @@ struct scmi_info { }; =20 #define handle_to_scmi_info(h) container_of(h, struct scmi_info, handle) +#define tx_minfo_to_scmi_info(h) container_of(h, struct scmi_info, tx_minf= o) #define bus_nb_to_scmi_info(nb) container_of(nb, struct scmi_info, bus_nb) #define req_nb_to_scmi_info(nb) container_of(nb, struct scmi_info, dev_req= _nb) =20 @@ -603,9 +604,14 @@ static inline void scmi_xfer_inflight_register_unlocked(struct scmi_xfer *xfer, struct scmi_xfers_info *minfo) { + /* In this context minfo will be tx_minfo due to the xfer pending */ + struct scmi_info *info =3D tx_minfo_to_scmi_info(minfo); + /* Set in-flight */ set_bit(xfer->hdr.seq, minfo->xfer_alloc_table); hash_add(minfo->pending_xfers, &xfer->node, xfer->hdr.seq); + scmi_inc_count(info->dbg->counters, XFERS_INFLIGHT); + xfer->pending =3D true; } =20 @@ -807,9 +813,13 @@ __scmi_xfer_put(struct scmi_xfers_info *minfo, struct = scmi_xfer *xfer) spin_lock_irqsave(&minfo->xfer_lock, flags); if (refcount_dec_and_test(&xfer->users)) { if (xfer->pending) { + struct scmi_info *info =3D tx_minfo_to_scmi_info(minfo); + scmi_xfer_token_clear(minfo, xfer); hash_del(&xfer->node); xfer->pending =3D false; + + scmi_dec_count(info->dbg->counters, XFERS_INFLIGHT); } hlist_add_head(&xfer->node, &minfo->free_xfers); } @@ -2912,6 +2922,7 @@ static const char * const dbg_counter_strs[] =3D { "err_msg_invalid", "err_msg_nomem", "err_protocol", + "xfers_inflight", }; =20 static ssize_t reset_all_on_write(struct file *filp, const char __user *bu= f, --=20 2.25.1 From nobody Thu Oct 9 06:59:43 2025 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1F9F723FC54; Thu, 19 Jun 2025 12:20:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335631; cv=none; b=dj9RhgsG3iiGuwwiZAKgEpNCSp18UJDVk1A5PDugWGceG3muB1gUQH7b0sUzK5+deBHqSHDJycduxKO0LHtMzODrojG99rN1n7jLWpsSeZA+oJsiQLwzlXiVV+YZfvAflHRG55QMTVxJWsSgSEsVwobAxkHe3roQ5sHzQFALFoU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335631; c=relaxed/simple; bh=cmOfFV54TgDt8Kv2nldVli2TIrUourJVFOaNm2q4ee8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oapS8afRe5L8UdiBbCCvoHl/P03ZWv4ETqOdIMJ0GQujcmV6CSaziEC2S2dswDwIKYgV/Z+qCUztC4e2aD0gpqG1dayNAdd7G52Ypjl8v74sNE67n4rRcLaRWaUZ04x+lhpPFi1b6IBdXpntetukv2JySKVHHRAYxRGltXRAUbY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id AC59012FC; Thu, 19 Jun 2025 05:20:09 -0700 (PDT) Received: from oss-apollo7005.oss.cambridge.arm.com (oss-apollo7005.oss.lab.cambridge.arm.com [10.7.15.171]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 760423F66E; Thu, 19 Jun 2025 05:20:28 -0700 (PDT) From: Philip Radford To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org Cc: sudeep.holla@arm.com, cristian.marussi@arm.com, luke.parkin@arm.com, philip.radford@arm.com Subject: [PATCH 3/4] include: trace: Add inflight_xfer counter tracepoint Date: Thu, 19 Jun 2025 12:20:03 +0000 Message-Id: <20250619122004.3705976-4-philip.radford@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250619122004.3705976-1-philip.radford@arm.com> References: <20250619122004.3705976-1-philip.radford@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add tracepoint for inflight_xfers and patch all related callsites. Signed-off-by: Philip Radford --- drivers/firmware/arm_scmi/driver.c | 4 ++-- drivers/firmware/arm_scmi/raw_mode.c | 5 +++-- include/trace/events/scmi.h | 24 ++++++++++++++---------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi= /driver.c index 5a4dac27afdf..c6657582c9ab 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1443,7 +1443,7 @@ static int do_xfer(const struct scmi_protocol_handle = *ph, =20 trace_scmi_xfer_begin(xfer->transfer_id, xfer->hdr.id, xfer->hdr.protocol_id, xfer->hdr.seq, - xfer->hdr.poll_completion); + xfer->hdr.poll_completion, 0); =20 /* Clear any stale status */ xfer->hdr.status =3D SCMI_SUCCESS; @@ -1479,7 +1479,7 @@ static int do_xfer(const struct scmi_protocol_handle = *ph, info->desc->ops->mark_txdone(cinfo, ret, xfer); =20 trace_scmi_xfer_end(xfer->transfer_id, xfer->hdr.id, - xfer->hdr.protocol_id, xfer->hdr.seq, ret); + xfer->hdr.protocol_id, xfer->hdr.seq, ret, 0); =20 return ret; } diff --git a/drivers/firmware/arm_scmi/raw_mode.c b/drivers/firmware/arm_sc= mi/raw_mode.c index 3d543b1d8947..2ccb6b3f0e64 100644 --- a/drivers/firmware/arm_scmi/raw_mode.c +++ b/drivers/firmware/arm_scmi/raw_mode.c @@ -475,7 +475,8 @@ static void scmi_xfer_raw_worker(struct work_struct *wo= rk) raw->desc->ops->mark_txdone(rw->cinfo, ret, xfer); =20 trace_scmi_xfer_end(xfer->transfer_id, xfer->hdr.id, - xfer->hdr.protocol_id, xfer->hdr.seq, ret); + xfer->hdr.protocol_id, xfer->hdr.seq, + ret, 0); =20 /* Wait also for an async delayed response if needed */ if (!ret && xfer->async_done) { @@ -642,7 +643,7 @@ static int scmi_do_xfer_raw_start(struct scmi_raw_mode_= info *raw, =20 trace_scmi_xfer_begin(xfer->transfer_id, xfer->hdr.id, xfer->hdr.protocol_id, xfer->hdr.seq, - xfer->hdr.poll_completion); + xfer->hdr.poll_completion, 0); =20 ret =3D raw->desc->ops->send_message(rw->cinfo, xfer); if (ret) { diff --git a/include/trace/events/scmi.h b/include/trace/events/scmi.h index 127300481123..703b7bb68e44 100644 --- a/include/trace/events/scmi.h +++ b/include/trace/events/scmi.h @@ -36,8 +36,8 @@ TRACE_EVENT(scmi_fc_call, =20 TRACE_EVENT(scmi_xfer_begin, TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, - bool poll), - TP_ARGS(transfer_id, msg_id, protocol_id, seq, poll), + bool poll, int inflight), + TP_ARGS(transfer_id, msg_id, protocol_id, seq, poll, inflight), =20 TP_STRUCT__entry( __field(int, transfer_id) @@ -45,6 +45,7 @@ TRACE_EVENT(scmi_xfer_begin, __field(u8, protocol_id) __field(u16, seq) __field(bool, poll) + __field(int, inflight) ), =20 TP_fast_assign( @@ -53,11 +54,12 @@ TRACE_EVENT(scmi_xfer_begin, __entry->protocol_id =3D protocol_id; __entry->seq =3D seq; __entry->poll =3D poll; + __entry->inflight =3D inflight; ), =20 - TP_printk("pt=3D%02X msg_id=3D%02X seq=3D%04X transfer_id=3D%X poll=3D%u", - __entry->protocol_id, __entry->msg_id, __entry->seq, - __entry->transfer_id, __entry->poll) + TP_printk("pt=3D%02X msg_id=3D%02X seq=3D%04X transfer_id=3D%X poll=3D%u = inflight=3D%d", + __entry->protocol_id, __entry->msg_id, __entry->seq, + __entry->transfer_id, __entry->poll, __entry->inflight) ); =20 TRACE_EVENT(scmi_xfer_response_wait, @@ -90,8 +92,8 @@ TRACE_EVENT(scmi_xfer_response_wait, =20 TRACE_EVENT(scmi_xfer_end, TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, - int status), - TP_ARGS(transfer_id, msg_id, protocol_id, seq, status), + int status, int inflight), + TP_ARGS(transfer_id, msg_id, protocol_id, seq, status, inflight), =20 TP_STRUCT__entry( __field(int, transfer_id) @@ -99,6 +101,7 @@ TRACE_EVENT(scmi_xfer_end, __field(u8, protocol_id) __field(u16, seq) __field(int, status) + __field(int, inflight) ), =20 TP_fast_assign( @@ -107,11 +110,12 @@ TRACE_EVENT(scmi_xfer_end, __entry->protocol_id =3D protocol_id; __entry->seq =3D seq; __entry->status =3D status; + __entry->inflight =3D inflight; ), =20 - TP_printk("pt=3D%02X msg_id=3D%02X seq=3D%04X transfer_id=3D%X s=3D%d", - __entry->protocol_id, __entry->msg_id, __entry->seq, - __entry->transfer_id, __entry->status) + TP_printk("pt=3D%02X msg_id=3D%02X seq=3D%04X transfer_id=3D%X s=3D%d inf= light=3D%d", + __entry->protocol_id, __entry->msg_id, __entry->seq, + __entry->transfer_id, __entry->status, __entry->inflight) ); =20 TRACE_EVENT(scmi_rx_done, --=20 2.25.1 From nobody Thu Oct 9 06:59:43 2025 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D7BC3256C6D; Thu, 19 Jun 2025 12:20:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335634; cv=none; b=MMIl+EfHtGPedA94KJdDfujZ9xF/YfJtwkNlo8YA/Nwd+NoaDoXuHF1bipfsAn8m3tRINosD+bF7NugohJt6m0NpUGgWvPW5z1lndpoEVxEZkAXvpdyE+wL0y1ewGw7PNA62SUJI2J+Nt9Q6WbhbD1eFPdKTrRIoip6AzAti+7k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750335634; c=relaxed/simple; bh=34J/Q9Gqn/8ZZ73Va2vW5AGxOEj4S15ZUEmJ+4pihow=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lBtV/TwqofKuTWJDJ3rjcyKTfzML4kLXEacNH7+fz721I22bgsz+6Mt0r73BWkRrtl9x1gotSAVBcZ1bzA5Ool6MVA9w7nko/Tfh2TjGm4wJYYBc7ft0WyUbV6Vh7v1AuwBqonXrr+f3nhfa5QpDtqDqemcm870QuUcFE+zir2U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 27F61106F; Thu, 19 Jun 2025 05:20:12 -0700 (PDT) Received: from oss-apollo7005.oss.cambridge.arm.com (oss-apollo7005.oss.lab.cambridge.arm.com [10.7.15.171]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DFE263F66E; Thu, 19 Jun 2025 05:20:30 -0700 (PDT) From: Philip Radford To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org Cc: sudeep.holla@arm.com, cristian.marussi@arm.com, luke.parkin@arm.com, philip.radford@arm.com Subject: [PATCH 4/4] firmware: arm_scmi: Add new inflight tracing functionality Date: Thu, 19 Jun 2025 12:20:04 +0000 Message-Id: <20250619122004.3705976-5-philip.radford@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250619122004.3705976-1-philip.radford@arm.com> References: <20250619122004.3705976-1-philip.radford@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Adds scmi_inflight_count function to fetch the current xfer inflight count to use in trace Signed-off-by: Philip Radford Reviewed-by: Cristian Marussi --- drivers/firmware/arm_scmi/common.h | 1 + drivers/firmware/arm_scmi/driver.c | 17 +++++++++++++++-- drivers/firmware/arm_scmi/raw_mode.c | 5 +++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi= /common.h index ad9232c982ce..07b9e629276d 100644 --- a/drivers/firmware/arm_scmi/common.h +++ b/drivers/firmware/arm_scmi/common.h @@ -505,4 +505,5 @@ static struct platform_driver __drv =3D { \ void scmi_notification_instance_data_set(const struct scmi_handle *handle, void *priv); void *scmi_notification_instance_data_get(const struct scmi_handle *handle= ); +int scmi_inflight_count(const struct scmi_handle *handle); #endif /* _SCMI_COMMON_H */ diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi= /driver.c index c6657582c9ab..d128d497f96e 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1443,7 +1443,8 @@ static int do_xfer(const struct scmi_protocol_handle = *ph, =20 trace_scmi_xfer_begin(xfer->transfer_id, xfer->hdr.id, xfer->hdr.protocol_id, xfer->hdr.seq, - xfer->hdr.poll_completion, 0); + xfer->hdr.poll_completion, + scmi_inflight_count(&info->handle)); =20 /* Clear any stale status */ xfer->hdr.status =3D SCMI_SUCCESS; @@ -1479,7 +1480,8 @@ static int do_xfer(const struct scmi_protocol_handle = *ph, info->desc->ops->mark_txdone(cinfo, ret, xfer); =20 trace_scmi_xfer_end(xfer->transfer_id, xfer->hdr.id, - xfer->hdr.protocol_id, xfer->hdr.seq, ret, 0); + xfer->hdr.protocol_id, xfer->hdr.seq, ret, + scmi_inflight_count(&info->handle)); =20 return ret; } @@ -3416,6 +3418,17 @@ static struct dentry *scmi_debugfs_init(void) return d; } =20 +int scmi_inflight_count(const struct scmi_handle *handle) +{ + if (IS_ENABLED(CONFIG_ARM_SCMI_DEBUG_COUNTERS)) { + struct scmi_info *info =3D handle_to_scmi_info(handle); + + return atomic_read(&info->dbg->counters[XFERS_INFLIGHT]); + } else { + return 0; + } +} + static int __init scmi_driver_init(void) { scmi_quirks_initialize(); diff --git a/drivers/firmware/arm_scmi/raw_mode.c b/drivers/firmware/arm_sc= mi/raw_mode.c index 2ccb6b3f0e64..eebe1a5297ef 100644 --- a/drivers/firmware/arm_scmi/raw_mode.c +++ b/drivers/firmware/arm_scmi/raw_mode.c @@ -476,7 +476,7 @@ static void scmi_xfer_raw_worker(struct work_struct *wo= rk) =20 trace_scmi_xfer_end(xfer->transfer_id, xfer->hdr.id, xfer->hdr.protocol_id, xfer->hdr.seq, - ret, 0); + ret, scmi_inflight_count(raw->handle)); =20 /* Wait also for an async delayed response if needed */ if (!ret && xfer->async_done) { @@ -643,7 +643,8 @@ static int scmi_do_xfer_raw_start(struct scmi_raw_mode_= info *raw, =20 trace_scmi_xfer_begin(xfer->transfer_id, xfer->hdr.id, xfer->hdr.protocol_id, xfer->hdr.seq, - xfer->hdr.poll_completion, 0); + xfer->hdr.poll_completion, + scmi_inflight_count(raw->handle)); =20 ret =3D raw->desc->ops->send_message(rw->cinfo, xfer); if (ret) { --=20 2.25.1