Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: qcom: icc-bwmon: Add tracepoints in bwmon_intr_thread

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>

authored by

Shivnandan Kumar and committed by
Bjorn Andersson
dc8c4a8a 99a7b371

+54 -1
+1
MAINTAINERS
··· 18855 18855 S: Maintained 18856 18856 F: Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml 18857 18857 F: drivers/soc/qcom/icc-bwmon.c 18858 + F: drivers/soc/qcom/trace_icc-bwmon.h 18858 18859 18859 18860 QUALCOMM IOMMU 18860 18861 M: Rob Clark <robdclark@gmail.com>
+5 -1
drivers/soc/qcom/icc-bwmon.c
··· 17 17 #include <linux/pm_opp.h> 18 18 #include <linux/regmap.h> 19 19 #include <linux/sizes.h> 20 + #define CREATE_TRACE_POINTS 21 + #include "trace_icc-bwmon.h" 20 22 21 23 /* 22 24 * The BWMON samples data throughput within 'sample_ms' time. With three ··· 647 645 struct icc_bwmon *bwmon = dev_id; 648 646 unsigned int irq_enable = 0; 649 647 struct dev_pm_opp *opp, *target_opp; 650 - unsigned int bw_kbps, up_kbps, down_kbps; 648 + unsigned int bw_kbps, up_kbps, down_kbps, meas_kbps; 651 649 652 650 bw_kbps = bwmon->target_kbps; 651 + meas_kbps = bwmon->target_kbps; 653 652 654 653 target_opp = dev_pm_opp_find_bw_ceil(bwmon->dev, &bw_kbps, 0); 655 654 if (IS_ERR(target_opp) && PTR_ERR(target_opp) == -ERANGE) ··· 682 679 bwmon_clear_irq(bwmon); 683 680 bwmon_enable(bwmon, irq_enable); 684 681 682 + trace_qcom_bwmon_update(dev_name(bwmon->dev), meas_kbps, up_kbps, down_kbps); 685 683 if (bwmon->target_kbps == bwmon->current_kbps) 686 684 goto out; 687 685
+48
drivers/soc/qcom/trace_icc-bwmon.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* 3 + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 + */ 5 + 6 + #undef TRACE_SYSTEM 7 + #define TRACE_SYSTEM icc_bwmon 8 + 9 + #if !defined(_TRACE_ICC_BWMON_H) || defined(TRACE_HEADER_MULTI_READ) 10 + #define _TRACE_ICC_BWMON_H 11 + #include <linux/tracepoint.h> 12 + 13 + TRACE_EVENT(qcom_bwmon_update, 14 + TP_PROTO(const char *name, 15 + unsigned int meas_kbps, unsigned int up_kbps, unsigned int down_kbps), 16 + 17 + TP_ARGS(name, meas_kbps, up_kbps, down_kbps), 18 + 19 + TP_STRUCT__entry( 20 + __string(name, name) 21 + __field(unsigned int, meas_kbps) 22 + __field(unsigned int, up_kbps) 23 + __field(unsigned int, down_kbps) 24 + ), 25 + 26 + TP_fast_assign( 27 + __assign_str(name); 28 + __entry->meas_kbps = meas_kbps; 29 + __entry->up_kbps = up_kbps; 30 + __entry->down_kbps = down_kbps; 31 + ), 32 + 33 + TP_printk("name=%s meas_kbps=%u up_kbps=%u down_kbps=%u", 34 + __get_str(name), 35 + __entry->meas_kbps, 36 + __entry->up_kbps, 37 + __entry->down_kbps) 38 + ); 39 + 40 + #endif /* _TRACE_ICC_BWMON_H */ 41 + 42 + #undef TRACE_INCLUDE_PATH 43 + #define TRACE_INCLUDE_PATH ../../drivers/soc/qcom/ 44 + 45 + #undef TRACE_INCLUDE_FILE 46 + #define TRACE_INCLUDE_FILE trace_icc-bwmon 47 + 48 + #include <trace/define_trace.h>