Message ID | 20240517125730.2304-3-michal.wajdeczko@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Improve drm printer code | expand |
On Fri, 17 May 2024, Michal Wajdeczko <michal.wajdeczko@intel.com> wrote: > With recent introduction of a generic drm dev printk function, we > can now store and use location where drm_dbg_printer was invoked > and output it's symbolic name like we do for all drm debug prints. > > Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> > Cc: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/drm_print.c | 3 +-- > include/drm/drm_print.h | 2 ++ > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c > index a2b60c8245a1..0a205fdee7cf 100644 > --- a/drivers/gpu/drm/drm_print.c > +++ b/drivers/gpu/drm/drm_print.c > @@ -191,8 +191,7 @@ void __drm_printfn_dbg(struct drm_printer *p, struct va_format *vaf) > if (!__drm_debug_enabled(category)) > return; > > - /* Note: __builtin_return_address(0) is useless here. */ > - __drm_dev_vprintk(dev, KERN_DEBUG, NULL, p->prefix, vaf); > + __drm_dev_vprintk(dev, KERN_DEBUG, p->origin, p->prefix, vaf); > } > EXPORT_SYMBOL(__drm_printfn_dbg); > > diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h > index bb1801c58544..761ce01761b7 100644 > --- a/include/drm/drm_print.h > +++ b/include/drm/drm_print.h > @@ -175,6 +175,7 @@ struct drm_printer { > void (*printfn)(struct drm_printer *p, struct va_format *vaf); > void (*puts)(struct drm_printer *p, const char *str); > void *arg; > + const void *origin; > const char *prefix; > enum drm_debug_category category; > }; > @@ -332,6 +333,7 @@ static inline struct drm_printer drm_dbg_printer(struct drm_device *drm, > struct drm_printer p = { > .printfn = __drm_printfn_dbg, > .arg = drm, > + .origin = (void *)_THIS_IP_, /* it's fine as we will be inlined */ Not that it makes a difference, but I guess I'd cast to (const void *) to match the member. Reviewed-by: Jani Nikula <jani.nikula@intel.com> > .prefix = prefix, > .category = category, > };
diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c index a2b60c8245a1..0a205fdee7cf 100644 --- a/drivers/gpu/drm/drm_print.c +++ b/drivers/gpu/drm/drm_print.c @@ -191,8 +191,7 @@ void __drm_printfn_dbg(struct drm_printer *p, struct va_format *vaf) if (!__drm_debug_enabled(category)) return; - /* Note: __builtin_return_address(0) is useless here. */ - __drm_dev_vprintk(dev, KERN_DEBUG, NULL, p->prefix, vaf); + __drm_dev_vprintk(dev, KERN_DEBUG, p->origin, p->prefix, vaf); } EXPORT_SYMBOL(__drm_printfn_dbg); diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h index bb1801c58544..761ce01761b7 100644 --- a/include/drm/drm_print.h +++ b/include/drm/drm_print.h @@ -175,6 +175,7 @@ struct drm_printer { void (*printfn)(struct drm_printer *p, struct va_format *vaf); void (*puts)(struct drm_printer *p, const char *str); void *arg; + const void *origin; const char *prefix; enum drm_debug_category category; }; @@ -332,6 +333,7 @@ static inline struct drm_printer drm_dbg_printer(struct drm_device *drm, struct drm_printer p = { .printfn = __drm_printfn_dbg, .arg = drm, + .origin = (void *)_THIS_IP_, /* it's fine as we will be inlined */ .prefix = prefix, .category = category, };
With recent introduction of a generic drm dev printk function, we can now store and use location where drm_dbg_printer was invoked and output it's symbolic name like we do for all drm debug prints. Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/drm_print.c | 3 +-- include/drm/drm_print.h | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-)