]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soc: qcom: icc-bwmon: Add tracepoints in bwmon_intr_thread
authorShivnandan Kumar <quic_kshivnan@quicinc.com>
Mon, 8 Jul 2024 10:17:34 +0000 (15:47 +0530)
committerBjorn Andersson <andersson@kernel.org>
Thu, 1 Aug 2024 03:22:47 +0000 (22:22 -0500)
Add tracepoint for tracing the measured traffic in kbps,
up_kbps and down_kbps in bwmon. This information is valuable
for understanding what bwmon hw measures at the system cache
level and at the DDR level which is helpful in debugging
bwmon behavior.

Signed-off-by: Shivnandan Kumar <quic_kshivnan@quicinc.com>
Reviewed-by: Sibi Sankar <quic_sibis@quicinc.com>
Link: https://lore.kernel.org/r/20240708101734.1999795-1-quic_kshivnan@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
MAINTAINERS
drivers/soc/qcom/icc-bwmon.c
drivers/soc/qcom/trace_icc-bwmon.h [new file with mode: 0644]

index 42decde3832066e43a460a83b0634e4d9af0c797..aff8dc6aaa676f9c54841eea38f8db98eeee8c2e 100644 (file)
@@ -18855,6 +18855,7 @@ L:      linux-arm-msm@vger.kernel.org
 S:     Maintained
 F:     Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
 F:     drivers/soc/qcom/icc-bwmon.c
+F:     drivers/soc/qcom/trace_icc-bwmon.h
 
 QUALCOMM IOMMU
 M:     Rob Clark <robdclark@gmail.com>
index e7851974084b657f24a5bb3b049651dd27b9ef50..f9235bc3aa3bbb2302305ba5503c7b5df195fdce 100644 (file)
@@ -17,6 +17,8 @@
 #include <linux/pm_opp.h>
 #include <linux/regmap.h>
 #include <linux/sizes.h>
+#define CREATE_TRACE_POINTS
+#include "trace_icc-bwmon.h"
 
 /*
  * The BWMON samples data throughput within 'sample_ms' time. With three
@@ -645,9 +647,10 @@ static irqreturn_t bwmon_intr_thread(int irq, void *dev_id)
        struct icc_bwmon *bwmon = dev_id;
        unsigned int irq_enable = 0;
        struct dev_pm_opp *opp, *target_opp;
-       unsigned int bw_kbps, up_kbps, down_kbps;
+       unsigned int bw_kbps, up_kbps, down_kbps, meas_kbps;
 
        bw_kbps = bwmon->target_kbps;
+       meas_kbps = bwmon->target_kbps;
 
        target_opp = dev_pm_opp_find_bw_ceil(bwmon->dev, &bw_kbps, 0);
        if (IS_ERR(target_opp) && PTR_ERR(target_opp) == -ERANGE)
@@ -679,6 +682,7 @@ static irqreturn_t bwmon_intr_thread(int irq, void *dev_id)
        bwmon_clear_irq(bwmon);
        bwmon_enable(bwmon, irq_enable);
 
+       trace_qcom_bwmon_update(dev_name(bwmon->dev), meas_kbps, up_kbps, down_kbps);
        if (bwmon->target_kbps == bwmon->current_kbps)
                goto out;
 
diff --git a/drivers/soc/qcom/trace_icc-bwmon.h b/drivers/soc/qcom/trace_icc-bwmon.h
new file mode 100644 (file)
index 0000000..beb8e6b
--- /dev/null
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM icc_bwmon
+
+#if !defined(_TRACE_ICC_BWMON_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_ICC_BWMON_H
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(qcom_bwmon_update,
+           TP_PROTO(const char *name,
+                    unsigned int meas_kbps, unsigned int up_kbps, unsigned int down_kbps),
+
+           TP_ARGS(name, meas_kbps, up_kbps, down_kbps),
+
+           TP_STRUCT__entry(
+                            __string(name, name)
+                            __field(unsigned int, meas_kbps)
+                            __field(unsigned int, up_kbps)
+                            __field(unsigned int, down_kbps)
+           ),
+
+           TP_fast_assign(
+                          __assign_str(name);
+                          __entry->meas_kbps = meas_kbps;
+                          __entry->up_kbps = up_kbps;
+                          __entry->down_kbps = down_kbps;
+           ),
+
+           TP_printk("name=%s meas_kbps=%u up_kbps=%u down_kbps=%u",
+                     __get_str(name),
+                     __entry->meas_kbps,
+                     __entry->up_kbps,
+                     __entry->down_kbps)
+);
+
+#endif /* _TRACE_ICC_BWMON_H */
+
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH ../../drivers/soc/qcom/
+
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE trace_icc-bwmon
+
+#include <trace/define_trace.h>