soc: qcom: aoss: Add tracepoints in qmp_send()
authorBjorn Andersson <quic_bjorande@quicinc.com>
Wed, 24 Jan 2024 03:40:33 +0000 (19:40 -0800)
committerBjorn Andersson <andersson@kernel.org>
Sun, 28 Jan 2024 03:44:45 +0000 (21:44 -0600)
Add tracepoint for tracing the messages being sent and the success
thereof. This is useful as the system has a variety of clients sending
requests to the always-on subsystem.

Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Reviewed-by: Chris Lew <quic_clew@quicinc.com>
Link: https://lore.kernel.org/r/20240123-qcom-aoss-tracepoints-v2-1-bd73baa31977@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/soc/qcom/Makefile
drivers/soc/qcom/qcom_aoss.c
drivers/soc/qcom/trace-aoss.h [new file with mode: 0644]

index 05b3d54e8dc93992d3bbce0e1eca0d7fa964cd69..9268e15e17196815cf33bfd8f5eb183629ccea4f 100644 (file)
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 CFLAGS_rpmh-rsc.o := -I$(src)
+CFLAGS_qcom_aoss.o := -I$(src)
 obj-$(CONFIG_QCOM_AOSS_QMP) += qcom_aoss.o
 obj-$(CONFIG_QCOM_GENI_SE) +=  qcom-geni-se.o
 obj-$(CONFIG_QCOM_COMMAND_DB) += cmd-db.o
index 085dc887631ca9a5b60ffa7e40c22771528c327e..e8ae8aa6391f6b72acb5b935653dc515448519f0 100644 (file)
@@ -14,6 +14,9 @@
 #include <linux/slab.h>
 #include <linux/soc/qcom/qcom_aoss.h>
 
+#define CREATE_TRACE_POINTS
+#include "trace-aoss.h"
+
 #define QMP_DESC_MAGIC                 0x0
 #define QMP_DESC_VERSION               0x4
 #define QMP_DESC_FEATURES              0x8
@@ -240,6 +243,8 @@ int __printf(2, 3) qmp_send(struct qmp *qmp, const char *fmt, ...)
 
        mutex_lock(&qmp->tx_lock);
 
+       trace_aoss_send(buf);
+
        /* The message RAM only implements 32-bit accesses */
        __iowrite32_copy(qmp->msgram + qmp->offset + sizeof(u32),
                         buf, sizeof(buf) / sizeof(u32));
@@ -261,6 +266,8 @@ int __printf(2, 3) qmp_send(struct qmp *qmp, const char *fmt, ...)
                ret = 0;
        }
 
+       trace_aoss_send_done(buf, ret);
+
        mutex_unlock(&qmp->tx_lock);
 
        return ret;
diff --git a/drivers/soc/qcom/trace-aoss.h b/drivers/soc/qcom/trace-aoss.h
new file mode 100644 (file)
index 0000000..554029b
--- /dev/null
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM qcom_aoss
+
+#if !defined(_TRACE_QCOM_AOSS_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_QCOM_AOSS_H
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(aoss_send,
+       TP_PROTO(const char *msg),
+       TP_ARGS(msg),
+       TP_STRUCT__entry(
+               __string(msg, msg)
+       ),
+       TP_fast_assign(
+               __assign_str(msg, msg);
+       ),
+       TP_printk("%s", __get_str(msg))
+);
+
+TRACE_EVENT(aoss_send_done,
+       TP_PROTO(const char *msg, int ret),
+       TP_ARGS(msg, ret),
+       TP_STRUCT__entry(
+               __string(msg, msg)
+               __field(int, ret)
+       ),
+       TP_fast_assign(
+               __assign_str(msg, msg);
+               __entry->ret = ret;
+       ),
+       TP_printk("%s: %d", __get_str(msg), __entry->ret)
+);
+
+#endif /* _TRACE_QCOM_AOSS_H */
+
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE trace-aoss
+
+#include <trace/define_trace.h>