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@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > --- > 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@xxxxxxxxxxxxxxxxxx> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx