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