All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simona Vetter <simona.vetter@ffwll.ch>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: Jim Cromie <jim.cromie@gmail.com>,
	linux-kernel@vger.kernel.org, jbaron@akamai.com,
	ukaszb@chromium.org, intel-gfx-trybot@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, daniel.vetter@ffwll.ch,
	tvrtko.ursulin@linux.intel.com, jani.nikula@intel.com,
	ville.syrjala@linux.intel.com
Subject: Re: [PATCH 00/63] Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y
Date: Thu, 20 Feb 2025 10:45:54 +0100	[thread overview]
Message-ID: <Z7b50rGRA4RuybgC@phenom.ffwll.local> (raw)
In-Reply-To: <2025022012-viscous-cringing-bf88@gregkh>

On Thu, Feb 20, 2025 at 09:31:41AM +0100, Greg KH wrote:
> On Fri, Jan 24, 2025 at 11:45:14PM -0700, Jim Cromie wrote:
> > This series fixes dynamic-debug's support for DRM debug-categories.
> > Classmaps-v1 evaded full review, and got committed in 2 chunks:
> > 
> >   b7b4eebdba7b..6ea3bf466ac6	# core dyndbg changes
> >   0406faf25fb1..ee7d633f2dfb	# drm adoption
> > 
> > DRM-CI found a regression during init with drm.debug=<initval>; the
> > static-keys under the drm-dbgs in drm.ko got enabled, but those in
> > drivers & helpers did not.
> > 
> > Root Problem:
> > 
> > DECLARE_DYNDBG_CLASSMAP violated a K&R rule "define once, refer
> > afterwards".  Replace it with DYNDBG_CLASSMAP_DEFINE (invoked once in
> > drm-core) and DYNDBG_CLASSMAP_USE (invoked repeatedly, in drivers &
> > helpers).
> > 
> > _DEFINE exports the classmap it creates (in drm.ko), other modules
> > _USE the classmap.  The _USE adds a record ref'g the _DEFINEd (&
> > exported) classmap, in a 2nd __dyndbg_class_users section.
> > 
> > So now at modprobe, dyndbg scans the new section after the 1st
> > __dyndbg_class_maps section, follows the linkage to the _DEFINEr
> > module, finds the (optional) kernel-param controlling the classmap,
> > examines its drm.debug=<initval>, and applies it to the module being
> > initialized.
> > 
> > To recapitulate the multi-module problem wo DRM involvement, Add:
> > 
> > A. tools/testing/selftests/dynamic_debug/*
> > 
> > This alters pr_debugs in the test-modules, counts the results and
> > checks them against expectations.  It uses this formula to test most
> > of the control grammar, including the new class keyword.
> > 
> > B. test_dynamic_debug_submod.ko
> > 
> > This alters the test-module to build both parent & _submod ko's, with
> > _DEFINE and _USE inside #if/#else blocks.  This recap's DRM's 2 module
> > failure scenario, allowing A to exersize several cases.
> > 
> > The #if/#else puts the 2 macro uses together for clarity, and gives
> > the 2 modules identical sets of debugs.
> > 
> > Recent DRM-CI tests are here:
> >   https://patchwork.freedesktop.org/series/139147/
> > 
> > Previous rev:
> >   https://lore.kernel.org/lkml/20240716185806.1572048-1-jim.cromie@gmail.com/
> > 
> > Noteworthy Additions:
> > 
> > 1- drop class "protection" special case, per JBaron's preference.
> >    only current use is marked BROKEN so nobody to affect.
> >    now framed as policy-choice:
> >    #define ddebug_client_module_protects_classes() false
> >    subsystems wanting protection can change this.
> > 
> > 2- compile-time arg-tests in DYNDBG_CLASSMAP_DEFINE
> >    implement several required constraints, and fail obviously.
> > 
> > 3- modprobe time check of conflicting class-id reservations
> >    only affects 2+classmaps users.
> >    compile-time solution not apparent.
> > 
> > 4- dyndbg can now cause modprobe to fail.
> >    needed to catch 3.
> >    maybe some loose ends here on failure.
> > 
> > 5- refactor & rename ddebug_attach_*module_classes
> >    reduce repetetive boilerplate on 2 types: maps, users.
> >    rework mostly brought forward in patchset to reduce churn
> >    TBD: maybe squash more.
> > 
> > Several recent trybot submissions (against drm-tip) have been passing
> > CI.BAT, and failing one or few CI.IGT tests randomly; re-tests do not
> > reliably repeat the failures.
> > 
> > its also at github.com:jimc/linux.git
> >   dd-fix-9[st]-ontip  &  dd-fix-9-13
> > 
> > Ive been running it on my desktop w/o issues.
> > 
> > The drivers/gpu/drm patches are RFC, I think there might be a single
> > place to call DRM_CLASSMAP_USE(drm_dedbug_classes) to replace the
> > sprinkling of _USEs in drivers and helpers.  IIRC, I tried adding a
> > _DEFINE into drm_drv.c, that didn't do it, so I punted for now.
> > 
> > I think the dyndbg core additions are ready for review and merging
> > into a (next-next) test/integration tree.
> 
> So whose tree should this go through?

I'm trying to get some drm folks to review/test this, but thus far not
much success :-/ I think it's good stuff, but I'm somewhat hesitant if no
one else agrees that it's useful for CI or in-field crash-recording or
whatever ...

I guess worst case we can land it and hope it attracts more folks?

Wrt tree I don't care, but I guess we should then also land the drm side
too.
-Sima

> And I think the last patch in this series isn't correct, it looks like a
> 000 email somehow.
> 
> thanks,
> 
> greg k-h

-- 
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2025-02-20  9:46 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-25  6:45 [PATCH 00/63] Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y Jim Cromie
2025-01-25  6:45 ` [PATCH 01/63] docs/dyndbg: update examples \012 to \n Jim Cromie
2025-02-25 14:30   ` Louis Chauvet
2025-03-16 13:50     ` jim.cromie
2025-01-25  6:45 ` [PATCH 02/63] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2025-02-25 11:22   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 03/63] dyndbg: reword "class unknown," to "class:_UNKNOWN_" Jim Cromie
2025-02-25 11:22   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 04/63] dyndbg: make ddebug_class_param union members same size Jim Cromie
2025-02-25 11:24   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 05/63] dyndbg: replace classmap list with a vector Jim Cromie
2025-02-25 14:08   ` Louis Chauvet
2025-03-16 14:04     ` jim.cromie
2025-01-25  6:45 ` [PATCH 06/63] dyndbg: ddebug_apply_class_bitmap - add module arg, select on it Jim Cromie
2025-02-25 14:09   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 07/63] dyndbg: split param_set_dyndbg_classes to _module & wrapper fns Jim Cromie
2025-02-25 14:09   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 08/63] dyndbg: drop NUM_TYPE_ARRAY Jim Cromie
2025-02-25 14:09   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 09/63] dyndbg: reduce verbose/debug clutter Jim Cromie
2025-02-25 14:10   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 10/63] dyndbg: silence debugs with no-change updates Jim Cromie
2025-02-25 14:10   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 11/63] dyndbg: tighten ddebug_class_name() 1st arg type Jim Cromie
2025-02-25 14:11   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 12/63] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap Jim Cromie
2025-02-25 14:12   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 13/63] dyndbg: reduce verbose=3 messages in ddebug_add_module Jim Cromie
2025-02-25 14:12   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 14/63] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2025-01-25  6:45 ` [PATCH 15/63] checkpatch: add an exception to the do-while wrapper advice Jim Cromie
2025-02-25 14:12   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 16/63] dyndbg-API: replace DECLARE_DYNDBG_CLASSMAP Jim Cromie
2025-02-25 14:16   ` Louis Chauvet
2025-03-16 19:46     ` jim.cromie
2025-03-24 15:07       ` Louis Chauvet
2025-03-25 16:03         ` jim.cromie
2025-01-25  6:45 ` [PATCH 17/63] dyndbg: check DYNDBG_CLASSMAP_DEFINE args at compile-time Jim Cromie
2025-02-25 14:17   ` Louis Chauvet
2025-03-16 20:46     ` jim.cromie
2025-01-25  6:45 ` [PATCH 18/63] dyndbg: add/use for_subvec() to reduce boilerplate Jim Cromie
2025-02-25 14:18   ` Louis Chauvet
2025-03-16 20:50     ` jim.cromie
2025-01-25  6:45 ` [PATCH 19/63] dyndbg: make proper substructs in _ddebug_info Jim Cromie
2025-02-25 14:19   ` Louis Chauvet
2025-03-16 20:58     ` jim.cromie
2025-01-25  6:45 ` [PATCH 20/63] dyndbg: drop premature optimization in ddebug_add_module Jim Cromie
2025-02-25 14:26   ` Louis Chauvet
2025-01-25  6:45 ` [PATCH 21/63] dyndbg: allow ddebug_add_module to fail Jim Cromie
2025-02-25 14:26   ` Louis Chauvet
2025-03-16 21:04     ` jim.cromie
2025-01-25  6:45 ` [PATCH 22/63] dyndbg: rework ddebug_attach_*module_classes() Jim Cromie
2025-01-25  6:45 ` [PATCH 23/63] dyndbg: fail modprobe on ddebug_class_range_overlap() Jim Cromie
2025-02-25 14:27   ` Louis Chauvet
2025-03-16 21:07     ` jim.cromie
2025-01-25  6:45 ` [PATCH 24/63] dyndbg: hoist the range-overlap checks Jim Cromie
2025-01-25  6:45 ` [PATCH 25/63] ddebug: cleanup-range-overlap fails Jim Cromie
2025-01-25  6:45 ` [PATCH 26/63] dyndbg-test: change do_prints testpoint to accept a loopct Jim Cromie
2025-01-25  6:45 ` [PATCH 27/63] selftests-dyndbg: add tools/testing/selftests/dynamic_debug/* Jim Cromie
2025-01-25  6:45 ` [PATCH 28/63] dyndbg-API: promote DYNDBG_CLASSMAP_PARAM to API Jim Cromie
2025-02-25 14:29   ` Louis Chauvet
2025-03-16 21:14     ` jim.cromie
2025-03-24 22:58       ` jim.cromie
2025-01-25  6:45 ` [PATCH 29/63] dyndbg-doc: add classmap info to howto Jim Cromie
2025-01-25  6:45 ` [PATCH 30/63] dyndbg: treat comma as a token separator Jim Cromie
2025-01-25  6:45 ` [PATCH 31/63] selftests-dyndbg: add comma_terminator_tests Jim Cromie
2025-01-25  6:45 ` [PATCH 32/63] dyndbg: split multi-query strings with % Jim Cromie
2025-01-25  6:45 ` [PATCH 33/63] selftests-dyndbg: test_percent_splitting Jim Cromie
2025-01-25  6:45 ` [PATCH 34/63] docs/dyndbg: explain new delimiters: comma, percent Jim Cromie
2025-01-25  6:45 ` [PATCH 35/63] selftests-dyndbg: add test_mod_submod Jim Cromie
2025-01-25  6:45 ` [PATCH 36/63] docs/dyndbg: explain flags parse 1st Jim Cromie
2025-01-25  6:45 ` [PATCH 37/63] dyndbg: change __dynamic_func_call_cls* macros into expressions Jim Cromie
2025-01-25  6:45 ` [PATCH 38/63] dyndbg: drop "protection" of class'd pr_debugs from legacy queries Jim Cromie
2025-01-25  6:45 ` [PATCH 39/63] drm: use correct ccflags-y spelling Jim Cromie
2025-01-25  6:45 ` [PATCH 40/63] checkpatch: dont warn about unused macro arg on empty body Jim Cromie
2025-01-25  6:45 ` [PATCH 41/63] drm-dyndbg: adapt drm core to use dyndbg classmaps-v2 Jim Cromie
2025-01-25  6:45 ` [PATCH 42/63] drm-dyndbg: adapt DRM to invoke DYNDBG_CLASSMAP_PARAM Jim Cromie
2025-01-25  6:45 ` [PATCH 43/63] drm-print: fix config-dependent unused variable Jim Cromie
2025-01-25  6:45 ` [PATCH 44/63] drm-dyndbg: DRM_CLASSMAP_USE in amdgpu driver Jim Cromie
2025-01-25  6:45 ` [PATCH 45/63] drm-dyndbg: DRM_CLASSMAP_USE in i915 driver Jim Cromie
2025-01-25  6:46 ` [PATCH 46/63] drm-dyndbg: DRM_CLASSMAP_USE in drm_crtc_helper Jim Cromie
2025-01-25  6:46 ` [PATCH 47/63] drm-dyndbg: DRM_CLASSMAP_USE in drm_dp_helper Jim Cromie
2025-01-25  6:46 ` [PATCH 48/63] drm-dyndbg: DRM_CLASSMAP_USE in nouveau Jim Cromie
2025-01-25  6:46 ` [PATCH 49/63] drm-dyndbg: add DRM_CLASSMAP_USE to Xe driver Jim Cromie
2025-01-25  6:46 ` [PATCH 50/63] drm-dyndbg: add DRM_CLASSMAP_USE to virtio_gpu Jim Cromie
2025-01-25  6:46 ` [PATCH 51/63] drm-dyndbg: add DRM_CLASSMAP_USE to simpledrm Jim Cromie
2025-01-25  6:46 ` [PATCH 52/63] drm-dyndbg: add DRM_CLASSMAP_USE to bochs Jim Cromie
2025-01-25  6:46 ` [PATCH 53/63] drm-dyndbg: add DRM_CLASSMAP_USE to etnaviv Jim Cromie
2025-01-25  6:46 ` [PATCH 54/63] drm-dyndbg: add DRM_CLASSMAP_USE to gma500 driver Jim Cromie
2025-01-25  6:46 ` [PATCH 55/63] drm-dyndbg: add DRM_CLASSMAP_USE to radeon Jim Cromie
2025-01-25  6:46 ` [PATCH 56/63] drm-dyndbg: add DRM_CLASSMAP_USE to vmwgfx driver Jim Cromie
2025-01-25  6:46 ` [PATCH 57/63] drm-dyndbg: add DRM_CLASSMAP_USE to vkms driver Jim Cromie
2025-01-25  6:46 ` [PATCH 58/63] drm-dyndbg: add DRM_CLASSMAP_USE to udl driver Jim Cromie
2025-01-25  6:46 ` [PATCH 59/63] drm-dyndbg: add DRM_CLASSMAP_USE to mgag200 driver Jim Cromie
2025-01-25  6:46 ` [PATCH 60/63] drm-dyndbg: add DRM_CLASSMAP_USE to the gud driver Jim Cromie
2025-01-25  6:46 ` [PATCH 61/63] drm-dyndbg: add DRM_CLASSMAP_USE to the qxl driver Jim Cromie
2025-01-25  6:46 ` [PATCH 62/63] drm-dyndbg: add DRM_CLASSMAP_USE to the drm_gem_shmem_helper driver Jim Cromie
2025-01-25  6:46 ` [PATCH 63/63] drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN Jim Cromie
2025-01-25  6:46 ` [PATCH 64/64] This series fixes dyndbg (dynamic debug) classmap support for DRM Jim Cromie
2025-01-26 18:35 ` ✗ Fi.CI.CHECKPATCH: warning for fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y (rev3) Patchwork
2025-01-26 18:35 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-01-26 18:45 ` ✓ i915.CI.BAT: success " Patchwork
2025-01-26 20:59 ` ✗ i915.CI.Full: failure " Patchwork
2025-02-20  8:31 ` [PATCH 00/63] Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y Greg KH
2025-02-20  9:45   ` Simona Vetter [this message]
2025-02-28 16:24     ` Louis Chauvet
2025-03-12 16:26       ` jim.cromie
2026-03-08 23:40   ` jim.cromie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z7b50rGRA4RuybgC@phenom.ffwll.local \
    --to=simona.vetter@ffwll.ch \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=intel-gfx-trybot@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=jbaron@akamai.com \
    --cc=jim.cromie@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tvrtko.ursulin@linux.intel.com \
    --cc=ukaszb@chromium.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.