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.wajdec...@intel.com>
Cc: Jani Nikula <jani.nik...@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 
*/
                .prefix = prefix,
                .category = category,
        };
-- 
2.43.0

Reply via email to