[Intel-gfx] [PATCH 2/2] drm/i915: Add pretty printer for modparams

Chris Wilson chris at chris-wilson.co.uk
Mon Dec 18 16:09:09 UTC 2017


Quoting Michal Wajdeczko (2017-12-18 15:51:32)
> We dump modparams in few places (debugfs, gpu_error) using different
> functions. Lets add reusable function to avoid code duplication.
> 
> add/remove: 1/0 grow/shrink: 0/2 up/down: 1096/-2339 (-1243)
> Function                                     old     new   delta
> i915_params_dump                               -    1096   +1096
> i915_capabilities                           1353     185   -1168
> i915_error_state_to_str                     5507    4336   -1171
> Total: Before=1285716, After=1284473, chg -0.10%
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_debugfs.c   | 21 +--------------------
>  drivers/gpu/drm/i915/i915_gpu_error.c | 25 ++++---------------------
>  drivers/gpu/drm/i915/i915_params.c    | 31 +++++++++++++++++++++++++++++++
>  drivers/gpu/drm/i915/i915_params.h    |  3 +++
>  4 files changed, 39 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index e384e28..c4780f0 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -37,23 +37,6 @@ static inline struct drm_i915_private *node_to_i915(struct drm_info_node *node)
>         return to_i915(node->minor->dev);
>  }
>  
> -static __always_inline void seq_print_param(struct seq_file *m,
> -                                           const char *name,
> -                                           const char *type,
> -                                           const void *x)
> -{
> -       if (!__builtin_strcmp(type, "bool"))
> -               seq_printf(m, "i915.%s=%s\n", name, yesno(*(const bool *)x));
> -       else if (!__builtin_strcmp(type, "int"))
> -               seq_printf(m, "i915.%s=%d\n", name, *(const int *)x);
> -       else if (!__builtin_strcmp(type, "unsigned int"))
> -               seq_printf(m, "i915.%s=%u\n", name, *(const unsigned int *)x);
> -       else if (!__builtin_strcmp(type, "char *"))
> -               seq_printf(m, "i915.%s=%s\n", name, *(const char **)x);
> -       else
> -               BUILD_BUG();
> -}
> -
>  static int i915_capabilities(struct seq_file *m, void *data)
>  {
>         struct drm_i915_private *dev_priv = node_to_i915(m->private);
> @@ -67,9 +50,7 @@ static int i915_capabilities(struct seq_file *m, void *data)
>         intel_device_info_dump_flags(info, &p);
>  
>         kernel_param_lock(THIS_MODULE);
> -#define PRINT_PARAM(T, x, ...) seq_print_param(m, #x, #T, &i915_modparams.x);
> -       I915_PARAMS_FOR_EACH(PRINT_PARAM);
> -#undef PRINT_PARAM
> +       i915_params_dump(&i915_modparams, &p);
>         kernel_param_unlock(THIS_MODULE);
>  
>         return 0;
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index 664f55c..84831e9 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -569,29 +569,12 @@ static void err_print_capabilities(struct drm_i915_error_state_buf *m,
>         intel_device_info_dump_flags(info, &p);
>  }
>  
> -static __always_inline void err_print_param(struct drm_i915_error_state_buf *m,
> -                                           const char *name,
> -                                           const char *type,
> -                                           const void *x)
> -{
> -       if (!__builtin_strcmp(type, "bool"))
> -               err_printf(m, "i915.%s=%s\n", name, yesno(*(const bool *)x));
> -       else if (!__builtin_strcmp(type, "int"))
> -               err_printf(m, "i915.%s=%d\n", name, *(const int *)x);
> -       else if (!__builtin_strcmp(type, "unsigned int"))
> -               err_printf(m, "i915.%s=%u\n", name, *(const unsigned int *)x);
> -       else if (!__builtin_strcmp(type, "char *"))
> -               err_printf(m, "i915.%s=%s\n", name, *(const char **)x);
> -       else
> -               BUILD_BUG();
> -}
> -
>  static void err_print_params(struct drm_i915_error_state_buf *m,
> -                            const struct i915_params *p)
> +                            const struct i915_params *params)
>  {
> -#define PRINT(T, x, ...) err_print_param(m, #x, #T, &p->x);
> -       I915_PARAMS_FOR_EACH(PRINT);
> -#undef PRINT
> +       struct drm_printer p = i915_error_printer(m);
> +
> +       i915_params_dump(params, &p);
>  }
>  
>  static void err_print_pciid(struct drm_i915_error_state_buf *m,
> diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
> index 8dfea03..d8d7189 100644
> --- a/drivers/gpu/drm/i915/i915_params.c
> +++ b/drivers/gpu/drm/i915/i915_params.c
> @@ -172,3 +172,34 @@ struct i915_params i915_modparams __read_mostly = {
>  
>  i915_param_named(enable_gvt, bool, 0400,
>         "Enable support for Intel GVT-g graphics virtualization host support(default:false)");
> +
> +static __always_inline void _print_param(struct drm_printer *p,
> +                                        const char *name,
> +                                        const char *type,
> +                                        const void *x)
> +{
> +       if (!__builtin_strcmp(type, "bool"))
> +               drm_printf(p, "i915.%s=%s\n", name, yesno(*(const bool *)x));
> +       else if (!__builtin_strcmp(type, "int"))
> +               drm_printf(p, "i915.%s=%d\n", name, *(const int *)x);
> +       else if (!__builtin_strcmp(type, "unsigned int"))
> +               drm_printf(p, "i915.%s=%u\n", name, *(const unsigned int *)x);
> +       else if (!__builtin_strcmp(type, "char *"))
> +               drm_printf(p, "i915.%s=%s\n", name, *(const char **)x);
> +       else
> +               BUILD_BUG();
> +}
> +
> +/**
> + * i915_params_dump - dump i915 modparams
> + * @params: i915 modparams
> + * @p: the &drm_printer
> + *
> + * Pretty printer for i915 modparams.
> + */
> +void i915_params_dump(const struct i915_params *params, struct drm_printer *p)
> +{
> +#define PRINT(T, x, ...) _print_param(p, #x, #T, &params->x);
> +       I915_PARAMS_FOR_EACH(PRINT);
> +#undef PRINT
> +}
> diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
> index 792ce26..2af22bb 100644
> --- a/drivers/gpu/drm/i915/i915_params.h
> +++ b/drivers/gpu/drm/i915/i915_params.h
> @@ -27,6 +27,7 @@
>  
>  #include <linux/bitops.h>
>  #include <linux/cache.h> /* for __read_mostly */
> +#include <drm/drm_print.h>
>  
>  #define ENABLE_GUC_SUBMISSION          BIT(0)
>  #define ENABLE_GUC_LOAD_HUC            BIT(1)
> @@ -77,5 +78,7 @@ struct i915_params {
>  
>  extern struct i915_params i915_modparams __read_mostly;
>  
struct drm_printer; forward decl rather than include drm_print.h

> +void i915_params_dump(const struct i915_params *params, struct drm_printer *p);

Same for patch 1 if I missed it there.

Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris


More information about the Intel-gfx mailing list