On Mon, 17 Jan 2022 09:02:53 +0530
Sai Prakash Ranjan <quic_saipraka@xxxxxxxxxxx> wrote:
diff --git a/include/trace/events/rwmmio.h
b/include/trace/events/rwmmio.h
new file mode 100644
index 000000000000..798fbe1ac9f9
--- /dev/null
+++ b/include/trace/events/rwmmio.h
@@ -0,0 +1,112 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All
rights reserved.
+ */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM rwmmio
+
+#if !defined(_TRACE_RWMMIO_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_RWMMIO_H
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(rwmmio_write,
+
+ TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void
__iomem *addr),
+
+ TP_ARGS(caller, val, width, addr),
+
+ TP_STRUCT__entry(
+ __field(u64, caller)
+ __field(u64, val)
+ __field(u64, addr)
+ __field(u8, width)
+ ),
+
+ TP_fast_assign(
+ __entry->caller = caller;
+ __entry->val = val;
+ __entry->addr = (unsigned long)(void *)addr;
+ __entry->width = width;
+ ),
+
+ TP_printk("%pS width=%d val=%#llx addr=%#llx",
+ (void *)(unsigned long)__entry->caller, __entry->width,
+ __entry->val, __entry->addr)
+);
+
+TRACE_EVENT(rwmmio_post_write,
+
+ TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void
__iomem *addr),
+
+ TP_ARGS(caller, val, width, addr),
+
+ TP_STRUCT__entry(
+ __field(u64, caller)
+ __field(u64, val)
+ __field(u64, addr)
+ __field(u8, width)
+ ),
+
+ TP_fast_assign(
+ __entry->caller = caller;
+ __entry->val = val;
+ __entry->addr = (unsigned long)(void *)addr;
+ __entry->width = width;
+ ),
+
+ TP_printk("%pS width=%d val=%#llx addr=%#llx",
+ (void *)(unsigned long)__entry->caller, __entry->width,
+ __entry->val, __entry->addr)
+);
+
+TRACE_EVENT(rwmmio_read,
+
+ TP_PROTO(unsigned long caller, u8 width, const volatile void
__iomem *addr),
+
+ TP_ARGS(caller, width, addr),
+
+ TP_STRUCT__entry(
+ __field(u64, caller)
+ __field(u64, addr)
+ __field(u8, width)
+ ),
+
+ TP_fast_assign(
+ __entry->caller = caller;
+ __entry->addr = (unsigned long)(void *)addr;
+ __entry->width = width;
+ ),
+
+ TP_printk("%pS width=%d addr=%#llx",
+ (void *)(unsigned long)__entry->caller, __entry->width,
__entry->addr)
+);
+
+TRACE_EVENT(rwmmio_post_read,
+
+ TP_PROTO(unsigned long caller, u64 val, u8 width, const
volatile void __iomem *addr),
+
+ TP_ARGS(caller, val, width, addr),
+
+ TP_STRUCT__entry(
+ __field(u64, caller)
+ __field(u64, val)
+ __field(u64, addr)
+ __field(u8, width)
+ ),
+
+ TP_fast_assign(
+ __entry->caller = caller;
+ __entry->val = val;
+ __entry->addr = (unsigned long)(void *)addr;
+ __entry->width = width;
+ ),
+
+ TP_printk("%pS width=%d val=%#llx addr=%#llx",
+ (void *)(unsigned long)__entry->caller, __entry->width,
+ __entry->val, __entry->addr)
+);
The above should be replaced with:
DECLARE_EVENT_CLASS(rwmmio_rw_template,
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void
__iomem *addr),
TP_ARGS(caller, val, width, addr),
TP_STRUCT__entry(
__field(u64, caller)
__field(u64, val)
__field(u64, addr)
__field(u8, width)
),
TP_fast_assign(
__entry->caller = caller;
__entry->val = val;
__entry->addr = (unsigned long)(void *)addr;
__entry->width = width;
),
TP_printk("%pS width=%d val=%#llx addr=%#llx",
(void *)(unsigned long)__entry->caller, __entry->width,
__entry->val, __entry->addr)
);
DEFINE_EVENT(rwmmio_rw_template, rwmmio_write,
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void
__iomem *addr),
TP_ARGS(caller, val, width, addr)
);
DEFINE_EVENT(rwmmio_rw_template, rwmmio_post_write,
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void
__iomem *addr),
TP_ARGS(caller, val, width, addr)
);
DEFINE_EVENT(rwmmio_rw_template, rwmmio_post_read,
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void
__iomem *addr),
TP_ARGS(caller, val, width, addr)
);
It will save around 15k in memory.
And since rwmmio_read doesn't have a val field, it can stay a
TRACE_EVENT.
TRACE_EVENT(rwmmio_read,
TP_PROTO(unsigned long caller, u8 width, const volatile void
__iomem *addr),
TP_ARGS(caller, width, addr),
TP_STRUCT__entry(
__field(u64, caller)
__field(u64, addr)
__field(u8, width)
),
TP_fast_assign(
__entry->caller = caller;
__entry->addr = (unsigned long)(void *)addr;
__entry->width = width;
),
TP_printk("%pS width=%d addr=%#llx",
(void *)(unsigned long)__entry->caller, __entry->width,
__entry->addr)
);
-- Steve