public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] regmap: introduce value tracing for regmap bulk operations
@ 2022-08-16 18:14 Dmitry Rokosov
  2022-08-18 12:15 ` Dmitry Rokosov
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Dmitry Rokosov @ 2022-08-16 18:14 UTC (permalink / raw)
  To: broonie@kernel.org, gregkh@linuxfoundation.org, rafael@kernel.org,
	jic23@kernel.org, andy.shevchenko@gmail.com
  Cc: kernel, linux-kernel@vger.kernel.org, Dmitry Rokosov

Currently, only one-register io operations support tracepoints with
value logging. For the regmap bulk operations developer can view
hw_start/hw_done tracepoints with starting reg number and registers
count to be reading or writing. This patch injects tracepoints with
dumping registers values in the hex format to regmap bulk reading
and writing.

Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
---
 drivers/base/regmap/regmap.c |  7 ++++++
 drivers/base/regmap/trace.h  | 43 ++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+)

diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index c3517ccc3159..673ad37df11f 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -2323,6 +2323,10 @@ int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,
 
 		kfree(wval);
 	}
+
+	if (!ret)
+		trace_regmap_bulk_write(map, reg, val, val_bytes * val_count);
+
 	return ret;
 }
 EXPORT_SYMBOL_GPL(regmap_bulk_write);
@@ -3068,6 +3072,9 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,
 		map->unlock(map->lock_arg);
 	}
 
+	if (!ret)
+		trace_regmap_bulk_read(map, reg, val, val_bytes * val_count);
+
 	return ret;
 }
 EXPORT_SYMBOL_GPL(regmap_bulk_read);
diff --git a/drivers/base/regmap/trace.h b/drivers/base/regmap/trace.h
index 9abee14df9ee..04329ba68ec5 100644
--- a/drivers/base/regmap/trace.h
+++ b/drivers/base/regmap/trace.h
@@ -64,6 +64,49 @@ DEFINE_EVENT(regmap_reg, regmap_reg_read_cache,
 
 );
 
+DECLARE_EVENT_CLASS(regmap_bulk,
+
+	TP_PROTO(struct regmap *map, unsigned int reg,
+		 const void *val, int val_len),
+
+	TP_ARGS(map, reg, val, val_len),
+
+	TP_STRUCT__entry(
+		__string(name, regmap_name(map))
+		__field(unsigned int, reg)
+		__dynamic_array(char, buf, val_len)
+		__field(int, val_len)
+	),
+
+	TP_fast_assign(
+		__assign_str(name, regmap_name(map));
+		__entry->reg = reg;
+		__entry->val_len = val_len;
+		if (val)
+			memcpy(__get_dynamic_array(buf), val, val_len);
+	),
+
+	TP_printk("%s reg=%x val=%s", __get_str(name),
+		  (unsigned int)__entry->reg,
+		  __print_hex(__get_dynamic_array(buf), __entry->val_len))
+);
+
+DEFINE_EVENT(regmap_bulk, regmap_bulk_write,
+
+	TP_PROTO(struct regmap *map, unsigned int reg,
+		 const void *val, int val_len),
+
+	TP_ARGS(map, reg, val, val_len)
+);
+
+DEFINE_EVENT(regmap_bulk, regmap_bulk_read,
+
+	TP_PROTO(struct regmap *map, unsigned int reg,
+		 const void *val, int val_len),
+
+	TP_ARGS(map, reg, val, val_len)
+);
+
 DECLARE_EVENT_CLASS(regmap_block,
 
 	TP_PROTO(struct regmap *map, unsigned int reg, int count),
-- 
2.36.0

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

end of thread, other threads:[~2022-09-01 13:20 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-16 18:14 [PATCH v1] regmap: introduce value tracing for regmap bulk operations Dmitry Rokosov
2022-08-18 12:15 ` Dmitry Rokosov
2022-08-18 13:49   ` Marc Zyngier
2022-08-18 15:43     ` Mark Brown
2022-08-18 17:44       ` Dmitry Rokosov
2022-08-19 12:07         ` Mark Brown
2022-08-19 13:31           ` Dmitry Rokosov
2022-08-19 14:44             ` Mark Brown
2022-08-19 15:22               ` Dmitry Rokosov
2022-08-19 14:25       ` Marc Zyngier
2022-08-19 14:38         ` Mark Brown
2022-08-19 15:31           ` Dmitry Rokosov
2022-08-18 17:02     ` Dmitry Rokosov
2022-08-23 16:47 ` Mark Brown
2022-08-23 21:39 ` Andy Shevchenko
2022-08-31  0:45   ` Dmitry Rokosov
2022-09-01 13:16     ` Andy Shevchenko

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