[PATCH v11 17/19] drm_print: add struct _ddebug *desc to trace-drm-*() params

Jim Cromie
2022-01-07T05:30:14Z

Replace trace-drm-*()s category param with struct _ddebug *desc; it
has .classid field, which is the category.

This brings the events closer in line with those added for dyndbg; at
least the 1st param, and possibly the struct device (tb-checked).
There are still differences in the tail of the prototypes; vaf vs
text + len, which probably breaks CLASS sharing.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
drivers/gpu/drm/drm_print.c | 6 +++---
include/trace/events/drm.h | 36 ++++++++++++++++++------------------
2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
index 8c33302212fc..0a15a4ec5ead 100644
--- a/drivers/gpu/drm/drm_print.c
+++ b/drivers/gpu/drm/drm_print.c
@@ -278,14 +278,14 @@ void __drm_dev_dbg(struct _ddebug *desc, const struct device *dev,
__builtin_return_address(0), &vaf);

if (desc->flags & _DPRINTK_FLAGS_TRACE)
- trace_drm_devdbg(dev, category, &vaf);
+ trace_drm_devdbg(dev, desc, &vaf);
} else {
if (desc->flags & _DPRINTK_FLAGS_PRINTK)
printk(KERN_DEBUG "[" DRM_NAME ":%ps] %pV",
__builtin_return_address(0), &vaf);

if (desc->flags & _DPRINTK_FLAGS_TRACE)
- trace_drm_debug(category, &vaf);
+ trace_drm_debug(desc, &vaf);
}
va_end(args);
}
@@ -306,7 +306,7 @@ void ___drm_dbg(struct _ddebug *desc, enum drm_debug_category category, const ch
printk(KERN_DEBUG "[" DRM_NAME ":%ps] %pV",
__builtin_return_address(0), &vaf);

- trace_drm_debug(category, &vaf);
+ trace_drm_debug(desc, &vaf);

va_end(args);
}
diff --git a/include/trace/events/drm.h b/include/trace/events/drm.h
index 944aedaf6aa6..bfe1fff923d8 100644
--- a/include/trace/events/drm.h
+++ b/include/trace/events/drm.h
@@ -9,25 +9,25 @@

/* drm_debug() was called, pass its args */
TRACE_EVENT(drm_debug,
- TP_PROTO(int drm_debug_category, struct va_format *vaf),
+ TP_PROTO(struct _ddebug *desc, struct va_format *vaf),

- TP_ARGS(drm_debug_category, vaf),
+ TP_ARGS(desc, vaf),

TP_STRUCT__entry(
- __field(int, drm_debug_category)
+ __field(struct _ddebug *, desc)
__dynamic_array(char, msg, 256)
),

TP_fast_assign(
int len;
+ char *p = __get_str(msg);

- __entry->drm_debug_category = drm_debug_category;
- vsnprintf(__get_str(msg), 256, vaf->fmt, *vaf->va);
+ __entry->desc = desc;
+ len = vsnprintf(p, 256, vaf->fmt, *vaf->va);

- len = strlen(__get_str(msg));
- if ((len > 0) && (__get_str(msg)[len-1] == '\n'))
+ if ((len > 0) && (len < 256) && p[len-1] == '\n')
len -= 1;
- __get_str(msg)[len] = 0;
+ p[len] = 0;
),

TP_printk("%s", __get_str(msg))
@@ -35,30 +35,30 @@ TRACE_EVENT(drm_debug,

/* drm_devdbg() was called, pass its args, preserving order */
TRACE_EVENT(drm_devdbg,
- TP_PROTO(const struct device *dev, int drm_debug_category, struct va_format *vaf),
+ TP_PROTO(const struct device *dev, struct _ddebug *desc, struct va_format *vaf),

- TP_ARGS(dev, drm_debug_category, vaf),
+ TP_ARGS(dev, desc, vaf),

TP_STRUCT__entry(
- __field(const struct device*, dev)
- __field(int, drm_debug_category)
+ __field(const struct device *, dev)
+ __field(struct _ddebug *, desc)
__dynamic_array(char, msg, 256)
),

TP_fast_assign(
int len;
+ char *p = __get_str(msg);

- __entry->drm_debug_category = drm_debug_category;
+ __entry->desc = desc;
__entry->dev = dev;
- vsnprintf(__get_str(msg), 256, vaf->fmt, *vaf->va);
+ len = vsnprintf(p, 256, vaf->fmt, *vaf->va);

- len = strlen(__get_str(msg));
- if ((len > 0) && (__get_str(msg)[len-1] == '\n'))
+ if ((len > 0) && (len < 256) && p[len-1] == '\n')
len -= 1;
- __get_str(msg)[len] = 0;
+ p[len] = 0;
),

- TP_printk("cat:%d, %s %s", __entry->drm_debug_category,
+ TP_printk("cat:%d, %s %s", __entry->desc->class_id,
dev_name(__entry->dev), __get_str(msg))
);

--
2.33.1