mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] soc: qcom: icc-bwmon: Add tracepoints in bwmon_intr_thread
@ 2024-06-25  5:56 Shivnandan Kumar
  2024-07-08  9:46 ` Sibi Sankar
  0 siblings, 1 reply; 2+ messages in thread
From: Shivnandan Kumar @ 2024-06-25  5:56 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Bjorn Andersson, Konrad Dybcio
  Cc: linux-kernel, linux-arm-msm, quic_rgottimu, Shivnandan Kumar

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>
---

v2:
* Fix multiple assignments [Dmitry]
* Fix alignment [Dmitry]

 MAINTAINERS                        |  1 +
 drivers/soc/qcom/icc-bwmon.c       |  6 +++-
 drivers/soc/qcom/trace_icc-bwmon.h | 48 ++++++++++++++++++++++++++++++
 3 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 drivers/soc/qcom/trace_icc-bwmon.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 242fc612fbc5..1b410c0183bb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -18573,6 +18573,7 @@ M:	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
 L:	linux-arm-msm@vger.kernel.org
 S:	Maintained
 F:	Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
+F:	drivers/soc/qcom/trace_icc-bwmon.h
 F:	drivers/soc/qcom/icc-bwmon.c

 QUALCOMM IOMMU
diff --git a/drivers/soc/qcom/icc-bwmon.c b/drivers/soc/qcom/icc-bwmon.c
index fb323b3364db..fc391d077d93 100644
--- a/drivers/soc/qcom/icc-bwmon.c
+++ b/drivers/soc/qcom/icc-bwmon.c
@@ -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
index 000000000000..beb8e6b485a9
--- /dev/null
+++ b/drivers/soc/qcom/trace_icc-bwmon.h
@@ -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>
--
2.25.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] soc: qcom: icc-bwmon: Add tracepoints in bwmon_intr_thread
  2024-06-25  5:56 [PATCH v2] soc: qcom: icc-bwmon: Add tracepoints in bwmon_intr_thread Shivnandan Kumar
@ 2024-07-08  9:46 ` Sibi Sankar
  0 siblings, 0 replies; 2+ messages in thread
From: Sibi Sankar @ 2024-07-08  9:46 UTC (permalink / raw)
  To: Shivnandan Kumar, Krzysztof Kozlowski, Bjorn Andersson, Konrad Dybcio
  Cc: linux-kernel, linux-arm-msm, quic_rgottimu



On 6/25/24 11:26, Shivnandan Kumar wrote:
> 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>
> ---
> 
> v2:
> * Fix multiple assignments [Dmitry]
> * Fix alignment [Dmitry]
> 
>   MAINTAINERS                        |  1 +
>   drivers/soc/qcom/icc-bwmon.c       |  6 +++-
>   drivers/soc/qcom/trace_icc-bwmon.h | 48 ++++++++++++++++++++++++++++++
>   3 files changed, 54 insertions(+), 1 deletion(-)
>   create mode 100644 drivers/soc/qcom/trace_icc-bwmon.h
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 242fc612fbc5..1b410c0183bb 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -18573,6 +18573,7 @@ M:	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>   L:	linux-arm-msm@vger.kernel.org
>   S:	Maintained
>   F:	Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml
> +F:	drivers/soc/qcom/trace_icc-bwmon.h

[nit] The file addition is not in sorted order.

Reviewed-by: Sibi Sankar <quic_sibis@quicinc.com>


>   F:	drivers/soc/qcom/icc-bwmon.c
> 
>   QUALCOMM IOMMU
> diff --git a/drivers/soc/qcom/icc-bwmon.c b/drivers/soc/qcom/icc-bwmon.c
> index fb323b3364db..fc391d077d93 100644
> --- a/drivers/soc/qcom/icc-bwmon.c
> +++ b/drivers/soc/qcom/icc-bwmon.c
> @@ -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
> index 000000000000..beb8e6b485a9
> --- /dev/null
> +++ b/drivers/soc/qcom/trace_icc-bwmon.h
> @@ -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>
> --
> 2.25.1
> 
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-07-08  9:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-25  5:56 [PATCH v2] soc: qcom: icc-bwmon: Add tracepoints in bwmon_intr_thread Shivnandan Kumar
2024-07-08  9:46 ` Sibi Sankar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®