The gvt component of this driver has ~120 pr_debugs with formats using
one of 9 fixed string prefixes, which are quite similar to those
enumerated in DRM debug categories.  Following the interface model of
drm.debug, add a parameter to map bits to these format prefixes.

static struct dyndbg_bitdesc i915_bitmap[] = {
        [0] = { "gvt:cmd:" },
        [1] = { "gvt:core:" },
        [2] = { "gvt:dpy:" },
        [3] = { "gvt:el:" },
        [4] = { "gvt:irq:" },
        [5] = { "gvt:mm:" },
        [6] = { "gvt:mmio:" },
        [7] = { "gvt:render:" },
        [8] = { "gvt:sched:" }
};
DEFINE_DYNAMIC_DEBUG_BITGRPS(debug_gvt, __gvt_debug,
        "dyndbg bitmap desc",

If CONFIG_DYNAMIC_DEBUG_CORE=y, then gvt/Makefile adds
-DDYNAMIC_DEBUG_MODULE to cflags, which CONFIG_DYNAMIC_DEBUG=n
(CORE-only) builds need.  This is redone more comprehensively soon.

Signed-off-by: Jim Cromie <jim.cro...@gmail.com>
---
 drivers/gpu/drm/i915/Makefile    |  2 ++
 drivers/gpu/drm/i915/intel_gvt.c | 38 ++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 660bb03de6fc..0fa5f53312a8 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -317,6 +317,8 @@ i915-y += intel_gvt.o
 include $(src)/gvt/Makefile
 endif
 
+ccflags-$(CONFIG_DYNAMIC_DEBUG_CORE) += -DDYNAMIC_DEBUG_MODULE
+
 obj-$(CONFIG_DRM_I915) += i915.o
 obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o
 
diff --git a/drivers/gpu/drm/i915/intel_gvt.c b/drivers/gpu/drm/i915/intel_gvt.c
index 4e70c1a9ef2e..efaac5777873 100644
--- a/drivers/gpu/drm/i915/intel_gvt.c
+++ b/drivers/gpu/drm/i915/intel_gvt.c
@@ -162,3 +162,41 @@ void intel_gvt_resume(struct drm_i915_private *dev_priv)
        if (intel_gvt_active(dev_priv))
                intel_gvt_pm_resume(dev_priv->gvt);
 }
+
+#if defined(CONFIG_DRM_USE_DYNAMIC_DEBUG)
+
+unsigned long __gvt_debug;
+EXPORT_SYMBOL(__gvt_debug);
+
+static struct dyndbg_bitdesc i915_dyndbg_bitmap[] = {
+       [0] = { "gvt:cmd:" },
+       [1] = { "gvt:core:" },
+       [2] = { "gvt:dpy:" },
+       [3] = { "gvt:el:" },
+       [4] = { "gvt:irq:" },
+       [5] = { "gvt:mm:" },
+       [6] = { "gvt:mmio:" },
+       [7] = { "gvt:render:" },
+       [8] = { "gvt:sched:" }
+};
+
+#define help_(_N, _cat)        "\t  Bit-" #_N ":\t" _cat "\n"
+
+#define I915_GVT_CATEGORIES(name) \
+       " Enable debug output via /sys/module/i915/parameters/" #name   \
+       ", where each bit enables a debug category.\n"                  \
+       help_(0, "gvt:cmd:")                                            \
+       help_(1, "gvt:core:")                                           \
+       help_(2, "gvt:dpy:")                                            \
+       help_(3, "gvt:el:")                                             \
+       help_(4, "gvt:irq:")                                            \
+       help_(5, "gvt:mm:")                                             \
+       help_(6, "gvt:mmio:")                                           \
+       help_(7, "gvt:render:")                                         \
+       help_(8, "gvt:sched:")
+
+DEFINE_DYNAMIC_DEBUG_BITGRPS(debug_gvt, __gvt_debug,
+                            I915_GVT_CATEGORIES(debug_gvt),
+                            i915_dyndbg_bitmap);
+
+#endif
-- 
2.31.1

Reply via email to