The gvt component of this driver has ~120 pr_debugs, in 9 categories
quite similar to those in DRM.  Following the interface model of
drm.debug, add a parameter to map bits to these categorizations.

DEFINE_DYNAMIC_DEBUG_CATEGORIES(debug_gvt, __gvt_debug,
        "dyndbg bitmap desc",
        { "gvt:cmd: ",  "command processing" },
        { "gvt:core: ", "core help" },
        { "gvt:dpy: ",  "display help" },
        { "gvt:el: ",   "help" },
        { "gvt:irq: ",  "help" },
        { "gvt:mm: ",   "help" },
        { "gvt:mmio: ", "help" },
        { "gvt:render: ", "help" },
        { "gvt:sched: " "help" });

The actual patch has a few details different, cmd_help() macro emits
the initialization construct.

if CONFIG_DRM_USE_DYNAMIC_DEBUG, then -DDYNAMIC_DEBUG_MODULE is added
cflags, by gvt/Makefile.

Signed-off-by: Jim Cromie <jim.cro...@gmail.com>
---
v4+:
. static decl of vector of bit->class descriptors - Emil.V
. relocate gvt-makefile chunk from elsewhere
---
 drivers/gpu/drm/i915/gvt/Makefile  |  4 ++++
 drivers/gpu/drm/i915/i915_params.c | 35 ++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/drivers/gpu/drm/i915/gvt/Makefile 
b/drivers/gpu/drm/i915/gvt/Makefile
index ea8324abc784..846ba73b8de6 100644
--- a/drivers/gpu/drm/i915/gvt/Makefile
+++ b/drivers/gpu/drm/i915/gvt/Makefile
@@ -7,3 +7,7 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o 
trace_points.o firmware.o \
 
 ccflags-y                              += -I $(srctree)/$(src) -I 
$(srctree)/$(src)/$(GVT_DIR)/
 i915-y                                 += $(addprefix $(GVT_DIR)/, 
$(GVT_SOURCE))
+
+#ifdef CONFIG_DRM_USE_DYNAMIC_DEBUG
+ccflags-y      += -DDYNAMIC_DEBUG_MODULE
+#endif
diff --git a/drivers/gpu/drm/i915/i915_params.c 
b/drivers/gpu/drm/i915/i915_params.c
index e07f4cfea63a..683e942a074e 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -265,3 +265,38 @@ void i915_params_free(struct i915_params *params)
        I915_PARAMS_FOR_EACH(FREE);
 #undef FREE
 }
+
+#ifdef DRM_USE_DYNAMIC_DEBUG
+/* todo: needs DYNAMIC_DEBUG_MODULE in some cases */
+
+unsigned long __gvt_debug;
+EXPORT_SYMBOL(__gvt_debug);
+
+#define _help(key)     "\t    \"" key "\"\t: help for " key "\n"
+
+#define I915_GVT_CATEGORIES(name) \
+       " Enable debug output via /sys/module/i915/parameters/" #name   \
+       ", where each bit enables a debug category.\n"                  \
+       _help("gvt:cmd:")                                               \
+       _help("gvt:core:")                                              \
+       _help("gvt:dpy:")                                               \
+       _help("gvt:el:")                                                \
+       _help("gvt:irq:")                                               \
+       _help("gvt:mm:")                                                \
+       _help("gvt:mmio:")                                              \
+       _help("gvt:render:")                                            \
+       _help("gvt:sched:")
+
+DEFINE_DYNAMIC_DEBUG_CATEGORIES(debug_gvt, __gvt_debug,
+                               I915_GVT_CATEGORIES(debug_gvt),
+                               _DD_cat_("gvt:cmd:"),
+                               _DD_cat_("gvt:core:"),
+                               _DD_cat_("gvt:dpy:"),
+                               _DD_cat_("gvt:el:"),
+                               _DD_cat_("gvt:irq:"),
+                               _DD_cat_("gvt:mm:"),
+                               _DD_cat_("gvt:mmio:"),
+                               _DD_cat_("gvt:render:"),
+                               _DD_cat_("gvt:sched:"));
+
+#endif
-- 
2.31.1

Reply via email to