[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, ¶ms->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