[Intel-gfx] [PATCH v7 3/8] i915/gvt: use DEFINE_DYNAMIC_DEBUG_CATEGORIES to create "gvt:core:" etc categories

jim.cromie at gmail.com jim.cromie at gmail.com
Mon Sep 6 17:41:46 UTC 2021


On Mon, Sep 6, 2021 at 6:26 AM Tvrtko Ursulin <
tvrtko.ursulin at linux.intel.com> wrote:
>
>
> On 03/09/2021 20:22, jim.cromie at gmail.com wrote:
> > On Fri, Sep 3, 2021 at 5:07 AM Tvrtko Ursulin
> > <tvrtko.ursulin at linux.intel.com> wrote:
> >>
> >>
> >> On 31/08/2021 21:21, Jim Cromie wrote:
> >>> 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" },

> >>> v7:
> >>> . move ccflags addition up to i915/Makefile from i915/gvt
> >>> ---
> >>>    drivers/gpu/drm/i915/Makefile      |  4 ++++
> >>>    drivers/gpu/drm/i915/i915_params.c | 35
++++++++++++++++++++++++++++++
> >>
> >> Can this work if put under gvt/ or at least intel_gvt.h|c?

I tried this.
I moved the code block into gvt/debug.c (new file)
added it to Makefile GVT_SOURCES
dunno why it wont make.
frustratig basic err, Im not seeing.
It does seem proper placement, will resolve...


> >>
> >
> > I thought it belonged here more, at least according to the name of the
> > config.var
>
> Hmm bear with me please - the categories this patch creates are intended
> to be used explicitly from the GVT "sub-module", or they somehow even
> get automatically used with no further intervention to callers required?
>

2009 - v5.9.0  the only users were admins reading/echoing
/proc/dynamic_debug/control
presumably cuz they wanted more info in the logs, episodically.
v5.9.0 exported dynamic_debug_exec_queries for in-kernel use,
reusing the stringy: echo $query_command > control  idiom.
My intention was to let in-kernel users roll their own drm.debug type
interface,
or whatever else they needed.  nobodys using it yet.

patch 1/8 implements that drm.debug interface.
5/8 is the primary use case
3/8 (this patch) & 4/8 are patches of opportunity, test cases, proof of
function/utility.
its value as such is easier control of those pr-debugs than given by echo >
control

Sean Paul  seanpaul at chromium.org worked up a patchset to do runtime
steering of drm-debug stream,
in particular watching for drm:atomic:fail: type activity (a subcategory
which doesnt exist yet).
5/8 conflicts with his patchset, I have an rfc approach to that, so his
concerns are mine too.


note:  if this patchset goes in, we dont *really* need the export anymore,
since the main use case is covered.  We could un-export, and re-add later
if its needed for a different use case.  Further, it seems likely that the
callbacks
(refactored) would be a better basis for new in-kernel users.
If not that, then full exposure of struct ddebug_query to in-kernel use


not quite sure how we got 2 chunks, but theres 1 more q below.

On Mon, Sep 6, 2021 at 6:26 AM Tvrtko Ursulin <
tvrtko.ursulin at linux.intel.com> wrote:

>
> On 03/09/2021 20:22, jim.cromie at gmail.com wrote:
> > On Fri, Sep 3, 2021 at 5:07 AM Tvrtko Ursulin
> > <tvrtko.ursulin at linux.intel.com> wrote:
> >>
> >>
> >> On 31/08/2021 21:21, Jim Cromie wrote:
> >>> 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" });
> >>>
> >
> > BTW, Ive dropped the help field, its already handled, dont need to
> clutter.
> >
> >
> >>> 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.cromie at gmail.com>
> >>> ---
> >>> v5:
> >>> . static decl of vector of bit->class descriptors - Emil.V
> >>> . relocate gvt-makefile chunk from elsewhere
> >>> v7:
> >>> . move ccflags addition up to i915/Makefile from i915/gvt
> >>> ---
> >>>    drivers/gpu/drm/i915/Makefile      |  4 ++++
> >>>    drivers/gpu/drm/i915/i915_params.c | 35
> ++++++++++++++++++++++++++++++
> >>
> >> Can this work if put under gvt/ or at least intel_gvt.h|c?
> >>
> >
> > I thought it belonged here more, at least according to the name of the
> > config.var
>
> Hmm bear with me please - the categories this patch creates are intended
> to be used explicitly from the GVT "sub-module", or they somehow even
> get automatically used with no further intervention to callers required?
>
> > CONFIG_DRM_USE_DYNAMIC_DEBUG.
> >
> > I suppose its not a great name, its narrow purpose is to swap
> > drm-debug api to use dyndbg.   drm-evrything already "uses"
> > dyndbg if CONFIG_DYNAMIC_DEBUG=y, those gvt/pr_debugs in particular.
> >
> > Theres also CONFIG_DYNAMIC_DEBUG_CORE=y,
> > which drm basically ignores currently.
> >
> > So with the name CONFIG_DRM_USE_DYNAMIC_DEBUG
> > it seemed proper to arrange for that  to be true on DD-CORE=y builds,
> > by adding -DDYNAMIC_DEBUG_MODULE
> >
> > Does that make some sense ?
> > How to best resolve the frictions ?
> > new CONFIG names ?
> >
> >>>    2 files changed, 39 insertions(+)
> >>>
> >>> diff --git a/drivers/gpu/drm/i915/Makefile
> b/drivers/gpu/drm/i915/Makefile
> >>> index 4f22cac1c49b..5a4e371a3ec2 100644
> >>> --- a/drivers/gpu/drm/i915/Makefile
> >>> +++ b/drivers/gpu/drm/i915/Makefile
> >>> @@ -30,6 +30,10 @@ CFLAGS_display/intel_fbdev.o = $(call
> cc-disable-warning, override-init)
> >>>
> >>>    subdir-ccflags-y += -I$(srctree)/$(src)
> >>>
> >>> +#ifdef CONFIG_DRM_USE_DYNAMIC_DEBUG
> >>> +ccflags-y += -DDYNAMIC_DEBUG_MODULE
> >>> +#endif
> >>
> >> Ignores whether CONFIG_DRM_I915_GVT is enabled or not?
> >>
> >
> > not intentionally.
> > I think theres 2 things youre noting:
> >
> > 1 - make frag into gvt/Makefile
> > I had it there earlier, not sure why I moved it up.
> > maybe some confusion on proper scope of the flag.
> >
> >
> > 2 - move new declaration code in i915-param.c inside the gvt ifdef
> >
> > Im good with that.
> > I'll probably copy the ifdef wrapper down rather than move the decl up.
> > ie:
> >
> > #if __and(IS_ENABLED(CONFIG_DRM_I915_GVT),
> >    IS_ENABLED(CONFIG_DRM_USE_DYNAMIC_DEBUG))
> >
> > unsigned long __gvt_debug;
> > EXPORT_SYMBOL(__gvt_debug);
> >
> >
> >>> +
> >>>    # Please keep these build lists sorted!
> >>>
> >>>    # core driver code
> >>> diff --git a/drivers/gpu/drm/i915/i915_params.c
> b/drivers/gpu/drm/i915/i915_params.c
> >>> index e07f4cfea63a..e645e149485e 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)
> >>> +                             _DD_cat_("gvt:mmio:"),
> >>> +                             _DD_cat_("gvt:render:"),
> >>> +                             _DD_cat_("gvt:sched:"));
> >>> +
> >>> +#endif
> >>
> >> So just the foundation - no actual use sites I mean? How would these be
> >> used from the code?
> >>
> >
> > there are 120 pr_debug "users" :-)
> >
> > no users per se, but anyone using drm.debug
> > /sys/module/drm/parameters/debug
> > might use this too.
> > its a bit easier than composing queries for >/proc/dyamic_debug/control
>
> Same as my previous question, perhaps I am not up to speed with this
> yet.. Even if pr_debug is used inside GVT - are the categories and
> debug_gvt global as of this patch (or series)?
>
>
they are already global in the sense that if kernel is built with
DYNAMIC_DEBUG,
the admin can turn those pr_debugs on and off, and change their decorations
in the log (mod,func.line).
Nor are modules protected from each other; drm-core could use
dd-exec-queries to enable/disable
pr-debugs in i915 etc

This patch just adds a gvt-debug knob like drm-debug. using the existing
format prefixes to categorize them.
Whether those prefixes should be bent towards consistency with the rest of
drm-debug
or adapted towards some gvt community need I couldnt say.

Its no save-the-world feature, but its pretty cheap.

Id expect the same users as those who play with drm.debug, for similar
reasons.

does this clarify ?


> Regards,
>
> Tvrtko
>

thanks,
Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210906/d71d50d1/attachment.htm>


More information about the dri-devel mailing list