mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: jbaron@akamai.com, gregkh@linuxfoundation.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	amd-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, daniel@ffwll.ch
Cc: Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH v8 00/16] use DYNAMIC_DEBUG to implement DRM.debug
Date: Wed, 15 Sep 2021 10:39:41 -0600	[thread overview]
Message-ID: <20210915163957.2949166-1-jim.cromie@gmail.com> (raw)

Hi Jason, Greg, Daniel, DRM folks,

In DRM-debug currently, drm_debug_enabled() is called a lot to decide
whether or not to write debug messages.  Each test is cheap, but costs
continue with uptime.  DYNAMIC_DEBUG "dyndbg", when built with
JUMP_LABEL, replaces each of those tests with a patchable NOOP, for
"zero cost when off" debugs.

Broadly, this patchset does 3 things, in 2 trees:

Adds DEFINE_DYNAMIC_DEBUG_CATEGORIES, which defines a mapping from
bits to "categorized" pr_debugs, a sysfs interface, and callbacks to
implement the bits as dynamic_debug >controls.  This is modelled after
DRM's debug interface.

Uses the new macro in amdgpu & i915 to control existing pr_debugs
according to their ad-hoc categorizations.

Adapts the drm-debug API (~20 macros) to configurably "replace"
drm_dbg & drm_dev_dbg with pr_debug & dev_dbg, which avoids
drm_debug_enabled() overheads.  CONFIG_DRM_USE_DYNAMIC_DEBUG controls
this; the memory costs are substantial (many new/converted drm
callsites, 56 bytes/pr_debug), so the choice should be made by the
user.

       	       #prdbgs  KiB     #with DRM_USE_DYNAMIC_DEBUG=y
  kernel       3079	166k
  drm		  1	.06k     376	 21k
  drm_kms_helper		 207	 12k
  i915	        167	9.3k	1811	101k
  amdgpu       2339	130k	3917	220k
  nouveau      	  3	.17k	 105	~60k

DEFINE_DYNAMIC_DEBUG_CATEGORIES is used to create the controlling
bitmap, which is wired to __drm_debug var so remaining
drm_debug_enabled() users stay in sync.

this is v8:
- 7 small tweaks to dyndbg pr-infos etc, no functional changes
- drop help field from dyndbg_bitdesc
- simplify declarative interface
- move ^ anchor, trailing space to macro helper
  this makes callback slightly more generic
- i915/gvt move code, Makefile bits per Tvrtko
- mem cost numbers
- more CI fixes

I think the dyndbg patches qualify to get in this cycle; all but the
last are no-functional-changes, the last is a new feature (which uses
existing mechanics without any adjustments), and has no users yet, so
it can't cause regressions.

Obviously, DRM is the anticipated user.  I've fixed the patchwork CI
problems I have seen on v6, v7, and lkp-robot reports since.  Since
CONFIG_DRM_USE_DYNAMIC_DEBUG=y by default, it should have seen "on"
testing, not just "off" testing.

Jim Cromie (16):

Dyndbg no-functional-changes chunk:
  dyndbg: add module to a vpr-info in dd-exec-queries
  dyndbg: pr-info in boot-param should say so
  dyndbg: rationalize verbosity
  dyndbg: use alt-quotes in vpr-infos, not those user might use
  dyndbg: vpr-info on remove-module complete, not starting
  dyndbg: no vpr-info on empty queries
  dyndbg-doc: fix bootparam usage example (possible conflict

New Feature, using unchanged mechanisms:  
  dyndbg: add DEFINE_DYNAMIC_DEBUG_CATEGORIES bitmap and callbacks

DRM 1st user(s):
  drm: fix doc grammar error
  i915/gvt: remove spaces in pr_debug "gvt: core:" etc prefixes
  i915/gvt: use DEFINE_DYNAMIC_DEBUG_CATEGORIES for existing prdbgs
  amdgpu: use DEFINE_DYNAMIC_DEBUG_CATEGORIES on existing prdbgs
  drm_print: add choice to use dynamic debug in drm-debug
  drm_print: instrument drm_debug_enabled
  amdgpu_ucode: reduce number of pr_debug calls
  nouveau: fold multiple DRM_DEBUG_DRIVERs together

 .../admin-guide/dynamic-debug-howto.rst       |   8 +-
 drivers/gpu/drm/Kconfig                       |  26 ++
 drivers/gpu/drm/Makefile                      |   3 +
 drivers/gpu/drm/amd/amdgpu/Makefile           |   2 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c     | 293 ++++++++++--------
 .../gpu/drm/amd/display/dc/core/dc_debug.c    |  43 ++-
 drivers/gpu/drm/drm_print.c                   |  53 +++-
 drivers/gpu/drm/i915/Makefile                 |   2 +
 drivers/gpu/drm/i915/gvt/debug.h              |  18 +-
 drivers/gpu/drm/i915/intel_gvt.c              |  34 ++
 drivers/gpu/drm/nouveau/nouveau_drm.c         |  36 ++-
 include/drm/drm_drv.h                         |   2 +-
 include/drm/drm_print.h                       | 184 ++++++++---
 include/linux/dynamic_debug.h                 |  62 ++++
 lib/dynamic_debug.c                           | 121 ++++++--
 15 files changed, 650 insertions(+), 237 deletions(-)

-- 
2.31.1


             reply	other threads:[~2021-09-15 16:40 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-15 16:39 Jim Cromie [this message]
2021-09-15 16:39 ` [PATCH v8 01/16] dyndbg: add module to a vpr-info in dd-exec-queries Jim Cromie
2021-09-15 16:39 ` [PATCH v8 02/16] dyndbg: pr-info in boot-param should say so Jim Cromie
2021-09-15 16:39 ` [PATCH v8 03/16] dyndbg: rationalize verbosity Jim Cromie
2021-09-15 16:39 ` [PATCH v8 04/16] dyndbg: use alt-quotes in vpr-infos, not those user might use Jim Cromie
2021-09-15 16:39 ` [PATCH v8 05/16] dyndbg: vpr-info on remove-module complete, not starting Jim Cromie
2021-09-15 16:39 ` [PATCH v8 06/16] dyndbg: no vpr-info on empty queries Jim Cromie
2021-09-15 16:39 ` [PATCH v8 07/16] dyndbg-doc: fix bootparam usage example Jim Cromie
2021-09-15 16:39 ` [PATCH v8 08/16] dyndbg: add DEFINE_DYNAMIC_DEBUG_CATEGORIES bitmap and callbacks Jim Cromie
2021-09-15 16:39 ` [PATCH v8 09/16] drm: fix doc grammar error Jim Cromie
2021-09-15 16:39 ` [PATCH v8 10/16] i915/gvt: remove spaces in pr_debug "gvt: core:" etc prefixes Jim Cromie
2021-09-23  7:36   ` Zhenyu Wang
2021-09-15 16:39 ` [PATCH v8 11/16] i915/gvt: use DEFINE_DYNAMIC_DEBUG_CATEGORIES for existing prdbgs Jim Cromie
2021-09-15 16:39 ` [PATCH v8 12/16] amdgpu: use DEFINE_DYNAMIC_DEBUG_CATEGORIES on " Jim Cromie
2021-09-15 16:39 ` [PATCH v8 13/16] drm_print: add choice to use dynamic debug in drm-debug Jim Cromie
2021-09-15 16:39 ` [PATCH v8 14/16] drm_print: instrument drm_debug_enabled Jim Cromie
2021-09-15 16:39 ` [PATCH v8 15/16] amdgpu_ucode: reduce number of pr_debug calls Jim Cromie
2021-09-15 16:39 ` [PATCH v8 16/16] nouveau: fold multiple DRM_DEBUG_DRIVERs together 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=20210915163957.2949166-1-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jbaron@akamai.com \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®