linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Jim Cromie <jim.cromie@gmail.com>,
	jbaron@akamai.com, gregkh@linuxfoundation.org,
	dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org
Cc: daniel.vetter@ffwll.ch, linux@rasmusvillemoes.dk,
	seanpaul@chromium.org, joe@perches.com
Subject: Re: [PATCH v7 1/9] drm_print: condense enum drm_debug_category
Date: Mon, 12 Sep 2022 13:17:34 +0300	[thread overview]
Message-ID: <87sfkw6gn5.fsf@intel.com> (raw)
In-Reply-To: <20220912052852.1123868-2-jim.cromie@gmail.com>

On Sun, 11 Sep 2022, Jim Cromie <jim.cromie@gmail.com> wrote:
> enum drm_debug_category has 10 categories, but is initialized with
> bitmasks which require 10 bits of underlying storage.  By using
> natural enumeration, and moving the BIT(cat) into drm_debug_enabled(),
> the enum fits in 4 bits, allowing the category to be represented
> directly in pr_debug callsites, via the ddebug.class_id field.
>
> While this slightly pessimizes the bit-test in drm_debug_enabled(),
> using dyndbg with JUMP_LABEL will avoid the function entirely.
>
> NOTE: this change forecloses the possibility of doing:
>
>   drm_dbg(DRM_UT_CORE|DRM_UT_KMS, "weird 2-cat experiment")
>
> but thats already strongly implied by the use of the enum itself; its
> not a normal enum if it can be 2 values simultaneously.

The drm.debug module parameter values are, arguably, ABI. There are tons
of people, scripts, test environments, documentation, bug reports, etc,
etc, referring to specific drm.debug module parameter values to enable
specific drm debug logging categories.

AFAICT you're not changing any of the values here, but having an enum
without the hard coded values makes it more likely to accidentally
change the category to bit mapping. At the very least deserves a
comment.


BR,
Jani.


>
> Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
> ---
>  include/drm/drm_print.h | 22 +++++++++++-----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
> index 22fabdeed297..b3b470440e46 100644
> --- a/include/drm/drm_print.h
> +++ b/include/drm/drm_print.h
> @@ -279,49 +279,49 @@ enum drm_debug_category {
>  	 * @DRM_UT_CORE: Used in the generic drm code: drm_ioctl.c, drm_mm.c,
>  	 * drm_memory.c, ...
>  	 */
> -	DRM_UT_CORE		= 0x01,
> +	DRM_UT_CORE,
>  	/**
>  	 * @DRM_UT_DRIVER: Used in the vendor specific part of the driver: i915,
>  	 * radeon, ... macro.
>  	 */
> -	DRM_UT_DRIVER		= 0x02,
> +	DRM_UT_DRIVER,
>  	/**
>  	 * @DRM_UT_KMS: Used in the modesetting code.
>  	 */
> -	DRM_UT_KMS		= 0x04,
> +	DRM_UT_KMS,
>  	/**
>  	 * @DRM_UT_PRIME: Used in the prime code.
>  	 */
> -	DRM_UT_PRIME		= 0x08,
> +	DRM_UT_PRIME,
>  	/**
>  	 * @DRM_UT_ATOMIC: Used in the atomic code.
>  	 */
> -	DRM_UT_ATOMIC		= 0x10,
> +	DRM_UT_ATOMIC,
>  	/**
>  	 * @DRM_UT_VBL: Used for verbose debug message in the vblank code.
>  	 */
> -	DRM_UT_VBL		= 0x20,
> +	DRM_UT_VBL,
>  	/**
>  	 * @DRM_UT_STATE: Used for verbose atomic state debugging.
>  	 */
> -	DRM_UT_STATE		= 0x40,
> +	DRM_UT_STATE,
>  	/**
>  	 * @DRM_UT_LEASE: Used in the lease code.
>  	 */
> -	DRM_UT_LEASE		= 0x80,
> +	DRM_UT_LEASE,
>  	/**
>  	 * @DRM_UT_DP: Used in the DP code.
>  	 */
> -	DRM_UT_DP		= 0x100,
> +	DRM_UT_DP,
>  	/**
>  	 * @DRM_UT_DRMRES: Used in the drm managed resources code.
>  	 */
> -	DRM_UT_DRMRES		= 0x200,
> +	DRM_UT_DRMRES
>  };
>  
>  static inline bool drm_debug_enabled(enum drm_debug_category category)
>  {
> -	return unlikely(__drm_debug & category);
> +	return unlikely(__drm_debug & BIT(category));
>  }
>  
>  /*

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2022-09-12 10:17 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-12  5:28 [PATCH v7 0/9] dyndbg: drm.debug adaptation Jim Cromie
2022-09-12  5:28 ` [PATCH v7 1/9] drm_print: condense enum drm_debug_category Jim Cromie
2022-09-12 10:17   ` Jani Nikula [this message]
2022-09-13 15:57     ` jim.cromie
2022-09-12  5:28 ` [PATCH v7 2/9] drm: POC drm on dyndbg - use in core, 2 helpers, 3 drivers Jim Cromie
2022-09-12 10:29   ` Jani Nikula
2022-09-12 21:11     ` jim.cromie
2022-09-12  5:28 ` [PATCH v7 3/9] drm_print: interpose drm_*dbg with forwarding macros Jim Cromie
2022-09-12  5:28 ` [PATCH v7 4/9] drm_print: wrap drm_*_dbg in dyndbg descriptor factory macro Jim Cromie
2022-09-12  5:28 ` [PATCH v7 5/9] drm-print.h: include dyndbg header Jim Cromie
2022-09-12  5:28 ` [PATCH v7 6/9] drm-print: add drm_dbg_driver to improve namespace symmetry Jim Cromie
2022-09-12  5:28 ` [PATCH v7 7/9] drm_print: optimize drm_debug_enabled for jump-label Jim Cromie
2022-09-12  5:28 ` [PATCH v7 8/9] drm_print: prefer bare printk KERN_DEBUG on generic fn Jim Cromie
2022-09-12  5:28 ` [PATCH v7 9/9] drm_print: add _ddebug descriptor to drm_*dbg prototypes Jim Cromie
2022-09-24 13:02 ` [PATCH v7 0/9] dyndbg: drm.debug adaptation Greg KH
2022-10-20 16:09   ` Ville Syrjälä
2022-10-21  9:18     ` [Intel-gfx] " Jani Nikula
2022-10-27 15:08       ` Jason Baron
2022-10-27 15:37         ` jim.cromie
2022-10-27 15:58           ` Ville Syrjälä
2022-10-27 19:55             ` jim.cromie
2022-10-27 20:09               ` Ville Syrjälä
2022-10-30 14:42                 ` jim.cromie
2022-10-31 13:07                   ` Ville Syrjälä
2022-10-31 22:11                     ` jim.cromie
2022-11-01  0:20                       ` Jason Baron
2022-11-01  8:52                         ` Ville Syrjälä
2022-11-01 13:09                           ` jim.cromie
2022-11-11 22:17 ` [PATCH 0/7] DYNAMIC_DEBUG fixups for rc Jim Cromie
2022-11-11 22:17   ` [PATCH 1/7] drm: mark drm.debug-on-dyndbg as BROKEN for now Jim Cromie
2022-11-14 12:20     ` [Intel-gfx] " Ville Syrjälä
2022-11-17  6:29     ` Greg KH
2022-11-11 22:17   ` [PATCH 2/7] drm_print: fixup improve stale comment Jim Cromie
2022-11-11 22:17   ` [PATCH 3/7] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2022-11-11 22:17   ` [PATCH 4/7] test-dyndbg: show that DEBUG enables prdbgs at compiletime Jim Cromie
2022-11-11 22:17   ` [PATCH 5/7] dyndbg: fix readback value on LEVEL_NAMES interfaces Jim Cromie
2022-11-11 22:17   ` [PATCH 6/7] dyndbg: clone DECLARE_DYNDBG_CLASSMAP to REFERENCE_DYNDBG_CLASSMAP Jim Cromie
2022-11-11 22:17   ` [PATCH 7/7] dyndbg: replace classmap list with a vector Jim Cromie
2022-11-17  6:29   ` [PATCH 0/7] DYNAMIC_DEBUG fixups for rc Greg KH

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=87sfkw6gn5.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=daniel.vetter@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=jim.cromie@gmail.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=seanpaul@chromium.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;
as well as URLs for NNTP newsgroup(s).