From: Thierry Reding <thierry.reding@gmail.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: dri-devel@lists.freedesktop.org,
Maxime Ripard <maxime.ripard@bootlin.com>,
open list <linux-kernel@vger.kernel.org>,
David Airlie <airlied@linux.ie>, Sean Paul <sean@poorly.run>
Subject: Re: [PATCH] drm: tweak drm_print_bits()
Date: Fri, 20 Sep 2019 17:37:09 +0200 [thread overview]
Message-ID: <20190920153709.GC10973@ulmo> (raw)
In-Reply-To: <20190919131412.25602-1-kraxel@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 4132 bytes --]
On Thu, Sep 19, 2019 at 03:14:11PM +0200, Gerd Hoffmann wrote:
> There is little reason for the from/to logic, printing a subset of
> the bits can be done by simply shifting/masking value if needed.
>
> Also use for_each_set_bit().
>
> Suggested-by: Jani Nikula <jani.nikula@linux.intel.com>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> include/drm/drm_print.h | 5 ++---
> drivers/gpu/drm/drm_gem_ttm_helper.c | 4 ++--
> drivers/gpu/drm/drm_print.c | 20 +++++++++-----------
> 3 files changed, 13 insertions(+), 16 deletions(-)
>
> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
> index 12d4916254b4..5b9947d157f4 100644
> --- a/include/drm/drm_print.h
> +++ b/include/drm/drm_print.h
> @@ -89,9 +89,8 @@ __printf(2, 3)
> void drm_printf(struct drm_printer *p, const char *f, ...);
> void drm_puts(struct drm_printer *p, const char *str);
> void drm_print_regset32(struct drm_printer *p, struct debugfs_regset32 *regset);
> -void drm_print_bits(struct drm_printer *p,
> - unsigned long value, const char *bits[],
> - unsigned int from, unsigned int to);
> +void drm_print_bits(struct drm_printer *p, unsigned long value,
> + const char * const bits[], int nbits);
bitmap_*() APIs that this calls underneath all use unsigned int for
nbits, so might be good to stick with that. After all, this better never
be negative.
Thierry
>
> __printf(2, 0)
> /**
> diff --git a/drivers/gpu/drm/drm_gem_ttm_helper.c b/drivers/gpu/drm/drm_gem_ttm_helper.c
> index 9a4bafcf20df..a534104d8bee 100644
> --- a/drivers/gpu/drm/drm_gem_ttm_helper.c
> +++ b/drivers/gpu/drm/drm_gem_ttm_helper.c
> @@ -23,7 +23,7 @@
> void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent,
> const struct drm_gem_object *gem)
> {
> - static const char const *plname[] = {
> + static const char * const plname[] = {
> [ TTM_PL_SYSTEM ] = "system",
> [ TTM_PL_TT ] = "tt",
> [ TTM_PL_VRAM ] = "vram",
> @@ -40,7 +40,7 @@ void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent,
> const struct ttm_buffer_object *bo = drm_gem_ttm_of_gem(gem);
>
> drm_printf_indent(p, indent, "placement=");
> - drm_print_bits(p, bo->mem.placement, plname, 0, ARRAY_SIZE(plname));
> + drm_print_bits(p, bo->mem.placement, plname, ARRAY_SIZE(plname));
> drm_printf(p, "\n");
>
> if (bo->mem.bus.is_iomem) {
> diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
> index dfa27367ebb8..a495fe3ad909 100644
> --- a/drivers/gpu/drm/drm_print.c
> +++ b/drivers/gpu/drm/drm_print.c
> @@ -189,28 +189,26 @@ EXPORT_SYMBOL(drm_printf);
> * drm_print_bits - print bits to a &drm_printer stream
> *
> * Print bits (in flag fields for example) in human readable form.
> - * The first name in the @bits array is for the bit indexed by @from.
> *
> * @p: the &drm_printer
> * @value: field value.
> * @bits: Array with bit names.
> - * @from: start of bit range to print (inclusive).
> - * @to: end of bit range to print (exclusive).
> + * @nbits: Size of bit names array.
> */
> -void drm_print_bits(struct drm_printer *p,
> - unsigned long value, const char *bits[],
> - unsigned int from, unsigned int to)
> +void drm_print_bits(struct drm_printer *p, unsigned long value,
> + const char * const bits[], int nbits)
> {
> bool first = true;
> unsigned int i;
>
> - for (i = from; i < to; i++) {
> - if (!(value & (1 << i)))
> - continue;
> - if (WARN_ON_ONCE(!bits[i-from]))
> + if (WARN_ON_ONCE(nbits > sizeof(unsigned long) * 8))
> + nbits = sizeof(unsigned long) * 8;
> +
> + for_each_set_bit(i, &value, nbits) {
> + if (WARN_ON_ONCE(!bits[i]))
> continue;
> drm_printf(p, "%s%s", first ? "" : ",",
> - bits[i-from]);
> + bits[i]);
> first = false;
> }
> if (first)
> --
> 2.18.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2019-09-20 15:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-19 13:14 [PATCH] drm: tweak drm_print_bits() Gerd Hoffmann
2019-09-19 13:14 ` Gerd Hoffmann
2019-09-19 14:10 ` Jani Nikula
2019-09-19 14:10 ` Jani Nikula
2019-09-20 15:37 ` Thierry Reding [this message]
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=20190920153709.GC10973@ulmo \
--to=thierry.reding@gmail.com \
--cc=airlied@linux.ie \
--cc=dri-devel@lists.freedesktop.org \
--cc=kraxel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.ripard@bootlin.com \
--cc=sean@poorly.run \
/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.