drm/i915: Extend I915_PARAMS_FOR_EACH with default member value
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Mon, 25 Sep 2017 10:50:07 +0000 (10:50 +0000)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Tue, 26 Sep 2017 08:22:23 +0000 (11:22 +0300)
By combining default value into helper macro we can initialize
modparams struct in the same automatic way as it was declared.
This will initialize members in the same order as declared
and additionally will disallow declaring new member without
proper default value for it.

v2: make MEMBER macro more robust (Joonas)

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170925105008.46060-2-michal.wajdeczko@intel.com
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_gpu_error.c
drivers/gpu/drm/i915/i915_params.c
drivers/gpu/drm/i915/i915_params.h

index d10d71aa4b0ef6007ff17713614f3e4fb84815d9..86c799ac4b8533eb9afc669c7f5feec060940d40 100644 (file)
@@ -66,7 +66,7 @@ static int i915_capabilities(struct seq_file *m, void *data)
 #undef PRINT_FLAG
 
        kernel_param_lock(THIS_MODULE);
-#define PRINT_PARAM(T, x) seq_print_param(m, #x, #T, &i915_modparams.x);
+#define PRINT_PARAM(T, x, ...) seq_print_param(m, #x, #T, &i915_modparams.x);
        I915_PARAMS_FOR_EACH(PRINT_PARAM);
 #undef PRINT_PARAM
        kernel_param_unlock(THIS_MODULE);
index 881fbe8d179b5af46f152467049da3d434f65607..9f7b351621f3b7ed40846ecee57457dcc901e885 100644 (file)
@@ -572,7 +572,7 @@ static __always_inline void err_print_param(struct drm_i915_error_state_buf *m,
 static void err_print_params(struct drm_i915_error_state_buf *m,
                             const struct i915_params *p)
 {
-#define PRINT(T, x) err_print_param(m, #x, #T, &p->x);
+#define PRINT(T, x, ...) err_print_param(m, #x, #T, &p->x);
        I915_PARAMS_FOR_EACH(PRINT);
 #undef PRINT
 }
@@ -866,7 +866,7 @@ void __i915_gpu_state_free(struct kref *error_ref)
        kfree(error->overlay);
        kfree(error->display);
 
-#define FREE(T, x) free_param(#T, &error->params.x);
+#define FREE(T, x, ...) free_param(#T, &error->params.x);
        I915_PARAMS_FOR_EACH(FREE);
 #undef FREE
 
@@ -1704,7 +1704,7 @@ static int capture(void *data)
                                           error->i915->gt.last_init_time));
 
        error->params = i915_modparams;
-#define DUP(T, x) dup_param(#T, &error->params.x);
+#define DUP(T, x, ...) dup_param(#T, &error->params.x);
        I915_PARAMS_FOR_EACH(DUP);
 #undef DUP
 
index ec6534180d54a9f2b4689cb41e5a976165fe3f91..9dff323a83d3e556807e91dd57f99f36635db6d6 100644 (file)
        MODULE_PARM_DESC(name, desc)
 
 struct i915_params i915_modparams __read_mostly = {
-       .modeset = -1,
-       .panel_ignore_lid = 1,
-       .semaphores = -1,
-       .lvds_channel_mode = 0,
-       .panel_use_ssc = -1,
-       .vbt_sdvo_panel_type = -1,
-       .enable_rc6 = -1,
-       .enable_dc = -1,
-       .enable_fbc = -1,
-       .enable_execlists = -1,
-       .enable_hangcheck = true,
-       .enable_ppgtt = -1,
-       .enable_psr = -1,
-       .alpha_support = IS_ENABLED(CONFIG_DRM_I915_ALPHA_SUPPORT),
-       .disable_power_well = -1,
-       .enable_ips = 1,
-       .fastboot = 0,
-       .prefault_disable = 0,
-       .load_detect_test = 0,
-       .force_reset_modeset_test = 0,
-       .reset = 2,
-       .error_capture = true,
-       .invert_brightness = 0,
-       .disable_display = 0,
-       .enable_cmd_parser = true,
-       .use_mmio_flip = 0,
-       .mmio_debug = 0,
-       .verbose_state_checks = 1,
-       .nuclear_pageflip = 0,
-       .edp_vswing = 0,
-       .enable_guc_loading = 0,
-       .enable_guc_submission = 0,
-       .guc_log_level = -1,
-       .guc_firmware_path = NULL,
-       .huc_firmware_path = NULL,
-       .enable_dp_mst = true,
-       .inject_load_failure = 0,
-       .enable_dpcd_backlight = false,
-       .enable_gvt = false,
+#define MEMBER(T, member, value) .member = (value),
+       I915_PARAMS_FOR_EACH(MEMBER)
+#undef MEMBER
 };
 
 i915_param_named(modeset, int, 0400,
index 0116bb9713e398850729dc1e91caa9b420171c1a..da599395f2ba227d306c9a9e6da2dabe722af06b 100644 (file)
 #include <linux/cache.h> /* for __read_mostly */
 
 #define I915_PARAMS_FOR_EACH(param) \
-       param(char *, vbt_firmware) \
-       param(int, modeset) \
-       param(int, panel_ignore_lid) \
-       param(int, semaphores) \
-       param(int, lvds_channel_mode) \
-       param(int, panel_use_ssc) \
-       param(int, vbt_sdvo_panel_type) \
-       param(int, enable_rc6) \
-       param(int, enable_dc) \
-       param(int, enable_fbc) \
-       param(int, enable_ppgtt) \
-       param(int, enable_execlists) \
-       param(int, enable_psr) \
-       param(int, disable_power_well) \
-       param(int, enable_ips) \
-       param(int, invert_brightness) \
-       param(int, enable_guc_loading) \
-       param(int, enable_guc_submission) \
-       param(int, guc_log_level) \
-       param(char *, guc_firmware_path) \
-       param(char *, huc_firmware_path) \
-       param(int, use_mmio_flip) \
-       param(int, mmio_debug) \
-       param(int, edp_vswing) \
-       param(int, reset) \
-       param(unsigned int, inject_load_failure) \
+       param(char *, vbt_firmware, NULL) \
+       param(int, modeset, -1) \
+       param(int, panel_ignore_lid, 1) \
+       param(int, semaphores, -1) \
+       param(int, lvds_channel_mode, 0) \
+       param(int, panel_use_ssc, -1) \
+       param(int, vbt_sdvo_panel_type, -1) \
+       param(int, enable_rc6, -1) \
+       param(int, enable_dc, -1) \
+       param(int, enable_fbc, -1) \
+       param(int, enable_ppgtt, -1) \
+       param(int, enable_execlists, -1) \
+       param(int, enable_psr, -1) \
+       param(int, disable_power_well, -1) \
+       param(int, enable_ips, 1) \
+       param(int, invert_brightness, 0) \
+       param(int, enable_guc_loading, 0) \
+       param(int, enable_guc_submission, 0) \
+       param(int, guc_log_level, -1) \
+       param(char *, guc_firmware_path, NULL) \
+       param(char *, huc_firmware_path, NULL) \
+       param(int, use_mmio_flip, 0) \
+       param(int, mmio_debug, 0) \
+       param(int, edp_vswing, 0) \
+       param(int, reset, 2) \
+       param(unsigned int, inject_load_failure, 0) \
        /* leave bools at the end to not create holes */ \
-       param(bool, alpha_support) \
-       param(bool, enable_cmd_parser) \
-       param(bool, enable_hangcheck) \
-       param(bool, fastboot) \
-       param(bool, prefault_disable) \
-       param(bool, load_detect_test) \
-       param(bool, force_reset_modeset_test) \
-       param(bool, error_capture) \
-       param(bool, disable_display) \
-       param(bool, verbose_state_checks) \
-       param(bool, nuclear_pageflip) \
-       param(bool, enable_dp_mst) \
-       param(bool, enable_dpcd_backlight) \
-       param(bool, enable_gvt)
+       param(bool, alpha_support, IS_ENABLED(CONFIG_DRM_I915_ALPHA_SUPPORT)) \
+       param(bool, enable_cmd_parser, true) \
+       param(bool, enable_hangcheck, true) \
+       param(bool, fastboot, 0) \
+       param(bool, prefault_disable, 0) \
+       param(bool, load_detect_test, 0) \
+       param(bool, force_reset_modeset_test, 0) \
+       param(bool, error_capture, true) \
+       param(bool, disable_display, 0) \
+       param(bool, verbose_state_checks, 1) \
+       param(bool, nuclear_pageflip, 0) \
+       param(bool, enable_dp_mst, true) \
+       param(bool, enable_dpcd_backlight, false) \
+       param(bool, enable_gvt, false)
 
-#define MEMBER(T, member) T member;
+#define MEMBER(T, member, ...) T member;
 struct i915_params {
        I915_PARAMS_FOR_EACH(MEMBER);
 };