[Intel-gfx] [PATCH 4/4] drm/i915/params: switch to device specific parameters
Rodrigo Vivi
rodrigo.vivi at intel.com
Thu May 14 22:44:55 UTC 2020
On Thu, May 14, 2020 at 06:40:06PM +0300, Jani Nikula wrote:
> Start using device specific parameters instead of module parameters for
> most things. The module parameters become the immutable initial values
> for i915 parameters. The device specific parameters in i915->params
> start life as a copy of i915_modparams. Any later changes are only
> reflected in the debugfs.
>
> The stragglers are:
>
> * i915.force_probe and i915.modeset. Needed before dev_priv is
> available. This is fine because the parameters are read-only and never
> modified.
>
> * i915.verbose_state_checks. Passing dev_priv to I915_STATE_WARN and
> I915_STATE_WARN_ON would result in massive and ugly churn. This is
> handled by not exposing the parameter via debugfs, and leaving the
> parameter writable in sysfs. This may be fixed up in follow-up work.
>
> * i915.inject_probe_failure. Only makes sense in terms of the module,
> not the device. This is handled by not exposing the parameter via
> debugfs.
>
> Cc: Juha-Pekka Heikkilä <juha-pekka.heikkila at intel.com>
> Cc: Venkata Sandeep Dhanalakota <venkata.s.dhanalakota at intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 6 ++---
> drivers/gpu/drm/i915/display/intel_crt.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_csr.c | 6 ++---
> drivers/gpu/drm/i915/display/intel_display.c | 12 +++++-----
> .../drm/i915/display/intel_display_debugfs.c | 2 +-
> .../drm/i915/display/intel_display_power.c | 14 ++++++------
> drivers/gpu/drm/i915/display/intel_dp.c | 8 ++++---
> .../drm/i915/display/intel_dp_aux_backlight.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_fbc.c | 12 +++++-----
> drivers/gpu/drm/i915/display/intel_lvds.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_opregion.c | 2 +-
> drivers/gpu/drm/i915/display/intel_panel.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_psr.c | 6 ++---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 4 ++--
> .../gpu/drm/i915/gt/intel_engine_heartbeat.c | 3 ++-
> drivers/gpu/drm/i915/gt/intel_reset.c | 6 ++---
> .../drm/i915/gt/selftest_engine_heartbeat.c | 6 ++---
> drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 15 ++++++++-----
> .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 4 +++-
> drivers/gpu/drm/i915/gt/uc/intel_uc.c | 20 ++++++++---------
> drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 22 ++++++++++---------
> drivers/gpu/drm/i915/i915_debugfs.c | 2 +-
> drivers/gpu/drm/i915/i915_debugfs_params.c | 7 +-----
> drivers/gpu/drm/i915/i915_drv.c | 9 ++++++--
> drivers/gpu/drm/i915/i915_drv.h | 5 ++++-
> drivers/gpu/drm/i915/i915_getparam.c | 2 +-
> drivers/gpu/drm/i915/i915_gpu_error.c | 4 ++--
> drivers/gpu/drm/i915/intel_gvt.c | 8 +++----
> drivers/gpu/drm/i915/intel_region_lmem.c | 6 ++---
> drivers/gpu/drm/i915/intel_uncore.c | 8 +++----
> 30 files changed, 114 insertions(+), 101 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 839124647202..ec8af2b7bf01 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -479,7 +479,7 @@ parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
> struct drm_display_mode *panel_fixed_mode;
> int index;
>
> - index = i915_modparams.vbt_sdvo_panel_type;
> + index = dev_priv->params.vbt_sdvo_panel_type;
> if (index == -2) {
> drm_dbg_kms(&dev_priv->drm,
> "Ignore SDVO panel mode from BIOS VBT tables.\n");
> @@ -829,9 +829,9 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
> u8 vswing;
>
> /* Don't read from VBT if module parameter has valid value*/
> - if (i915_modparams.edp_vswing) {
> + if (dev_priv->params.edp_vswing) {
> dev_priv->vbt.edp.low_vswing =
> - i915_modparams.edp_vswing == 1;
> + dev_priv->params.edp_vswing == 1;
> } else {
> vswing = (edp->edp_vswing_preemph >> (panel_type * 4)) & 0xF;
> dev_priv->vbt.edp.low_vswing = vswing == 0;
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
> index 2f5b9a4baafd..5b4510ce5693 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -833,7 +833,7 @@ intel_crt_detect(struct drm_connector *connector,
> connector->base.id, connector->name,
> force);
>
> - if (i915_modparams.load_detect_test) {
> + if (dev_priv->params.load_detect_test) {
> wakeref = intel_display_power_get(dev_priv,
> intel_encoder->power_domain);
> goto load_detect;
> @@ -889,7 +889,7 @@ intel_crt_detect(struct drm_connector *connector,
> else if (INTEL_GEN(dev_priv) < 4)
> status = intel_crt_load_detect(crt,
> to_intel_crtc(connector->state->crtc)->pipe);
> - else if (i915_modparams.load_detect_test)
> + else if (dev_priv->params.load_detect_test)
> status = connector_status_disconnected;
> else
> status = connector_status_unknown;
> diff --git a/drivers/gpu/drm/i915/display/intel_csr.c b/drivers/gpu/drm/i915/display/intel_csr.c
> index 3112572cfb7d..8c481270a160 100644
> --- a/drivers/gpu/drm/i915/display/intel_csr.c
> +++ b/drivers/gpu/drm/i915/display/intel_csr.c
> @@ -713,15 +713,15 @@ void intel_csr_ucode_init(struct drm_i915_private *dev_priv)
> csr->max_fw_size = BXT_CSR_MAX_FW_SIZE;
> }
>
> - if (i915_modparams.dmc_firmware_path) {
> - if (strlen(i915_modparams.dmc_firmware_path) == 0) {
> + if (dev_priv->params.dmc_firmware_path) {
> + if (strlen(dev_priv->params.dmc_firmware_path) == 0) {
> csr->fw_path = NULL;
> drm_info(&dev_priv->drm,
> "Disabling CSR firmware and runtime PM\n");
> return;
> }
>
> - csr->fw_path = i915_modparams.dmc_firmware_path;
> + csr->fw_path = dev_priv->params.dmc_firmware_path;
> /* Bypass version check for firmware override. */
> csr->required_version = 0;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index ab621926def1..507ab78b9f3b 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4879,7 +4879,7 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
> int ret;
>
> /* reset doesn't touch the display */
> - if (!i915_modparams.force_reset_modeset_test &&
> + if (!dev_priv->params.force_reset_modeset_test &&
> !gpu_reset_clobbers_display(dev_priv))
> return;
>
> @@ -7869,7 +7869,7 @@ bool hsw_crtc_state_ips_capable(const struct intel_crtc_state *crtc_state)
> if (!hsw_crtc_supports_ips(crtc))
> return false;
>
> - if (!i915_modparams.enable_ips)
> + if (!dev_priv->params.enable_ips)
> return false;
>
> if (crtc_state->pipe_bpp > 24)
> @@ -8140,8 +8140,8 @@ static void intel_panel_sanitize_ssc(struct drm_i915_private *dev_priv)
>
> static bool intel_panel_use_ssc(struct drm_i915_private *dev_priv)
> {
> - if (i915_modparams.panel_use_ssc >= 0)
> - return i915_modparams.panel_use_ssc != 0;
> + if (dev_priv->params.panel_use_ssc >= 0)
> + return dev_priv->params.panel_use_ssc != 0;
> return dev_priv->vbt.lvds_use_ssc
> && !(dev_priv->quirks & QUIRK_LVDS_SSC_DISABLE);
> }
> @@ -13571,8 +13571,8 @@ pipe_config_mismatch(bool fastset, const struct intel_crtc *crtc,
>
> static bool fastboot_enabled(struct drm_i915_private *dev_priv)
> {
> - if (i915_modparams.fastboot != -1)
> - return i915_modparams.fastboot;
> + if (dev_priv->params.fastboot != -1)
> + return dev_priv->params.fastboot;
>
> /* Enable fastboot by default on Skylake and newer */
> if (INTEL_GEN(dev_priv) >= 9)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 70525623bcdf..87db7e906621 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -125,7 +125,7 @@ static int i915_ips_status(struct seq_file *m, void *unused)
> wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
>
> seq_printf(m, "Enabled by kernel parameter: %s\n",
> - yesno(i915_modparams.enable_ips));
> + yesno(dev_priv->params.enable_ips));
>
> if (INTEL_GEN(dev_priv) >= 8) {
> seq_puts(m, "Currently: unknown\n");
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
> index 49998906cc61..ad6729ba90ab 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -4322,7 +4322,7 @@ static u32 get_allowed_dc_mask(const struct drm_i915_private *dev_priv,
> mask = 0;
> }
>
> - if (!i915_modparams.disable_power_well)
> + if (!dev_priv->params.disable_power_well)
> max_dc = 0;
>
> if (enable_dc >= 0 && enable_dc <= max_dc) {
> @@ -4408,11 +4408,11 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv)
> struct i915_power_domains *power_domains = &dev_priv->power_domains;
> int err;
>
> - i915_modparams.disable_power_well =
> + dev_priv->params.disable_power_well =
> sanitize_disable_power_well_option(dev_priv,
> - i915_modparams.disable_power_well);
> + dev_priv->params.disable_power_well);
> dev_priv->csr.allowed_dc_mask =
> - get_allowed_dc_mask(dev_priv, i915_modparams.enable_dc);
> + get_allowed_dc_mask(dev_priv, dev_priv->params.enable_dc);
>
> dev_priv->csr.target_dc_state =
> sanitize_target_dc_state(dev_priv, DC_STATE_EN_UPTO_DC6);
> @@ -5375,7 +5375,7 @@ void intel_power_domains_init_hw(struct drm_i915_private *i915, bool resume)
> intel_display_power_get(i915, POWER_DOMAIN_INIT);
>
> /* Disable power support if the user asked so. */
> - if (!i915_modparams.disable_power_well)
> + if (!i915->params.disable_power_well)
> intel_display_power_get(i915, POWER_DOMAIN_INIT);
> intel_power_domains_sync_hw(i915);
>
> @@ -5399,7 +5399,7 @@ void intel_power_domains_driver_remove(struct drm_i915_private *i915)
> fetch_and_zero(&i915->power_domains.wakeref);
>
> /* Remove the refcount we took to keep power well support disabled. */
> - if (!i915_modparams.disable_power_well)
> + if (!i915->params.disable_power_well)
> intel_display_power_put_unchecked(i915, POWER_DOMAIN_INIT);
>
> intel_display_power_flush_work_sync(i915);
> @@ -5488,7 +5488,7 @@ void intel_power_domains_suspend(struct drm_i915_private *i915,
> * Even if power well support was disabled we still want to disable
> * power wells if power domains must be deinitialized for suspend.
> */
> - if (!i915_modparams.disable_power_well)
> + if (!i915->params.disable_power_well)
> intel_display_power_put_unchecked(i915, POWER_DOMAIN_INIT);
>
> intel_display_power_flush_work(i915);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 408c3c1c5e81..dec0cdce0e68 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -4745,7 +4745,9 @@ intel_dp_sink_can_mst(struct intel_dp *intel_dp)
> static bool
> intel_dp_can_mst(struct intel_dp *intel_dp)
> {
> - return i915_modparams.enable_dp_mst &&
> + struct drm_i915_private *i915 = dp_to_i915(intel_dp);
> +
> + return i915->params.enable_dp_mst &&
> intel_dp->can_mst &&
> intel_dp_sink_can_mst(intel_dp);
> }
> @@ -4762,13 +4764,13 @@ intel_dp_configure_mst(struct intel_dp *intel_dp)
> "[ENCODER:%d:%s] MST support: port: %s, sink: %s, modparam: %s\n",
> encoder->base.base.id, encoder->base.name,
> yesno(intel_dp->can_mst), yesno(sink_can_mst),
> - yesno(i915_modparams.enable_dp_mst));
> + yesno(i915->params.enable_dp_mst));
>
> if (!intel_dp->can_mst)
> return;
>
> intel_dp->is_mst = sink_can_mst &&
> - i915_modparams.enable_dp_mst;
> + i915->params.enable_dp_mst;
>
> drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
> intel_dp->is_mst);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> index 0722540d64ad..acbd7eb66cbe 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> @@ -348,7 +348,7 @@ int intel_dp_aux_init_backlight_funcs(struct intel_connector *intel_connector)
> struct intel_dp *intel_dp = enc_to_intel_dp(intel_connector->encoder);
> struct drm_i915_private *i915 = dp_to_i915(intel_dp);
>
> - if (i915_modparams.enable_dpcd_backlight == 0 ||
> + if (i915->params.enable_dpcd_backlight == 0 ||
> !intel_dp_aux_display_control_capable(intel_connector))
> return -ENODEV;
>
> @@ -358,7 +358,7 @@ int intel_dp_aux_init_backlight_funcs(struct intel_connector *intel_connector)
> */
> if (i915->vbt.backlight.type !=
> INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE &&
> - i915_modparams.enable_dpcd_backlight != 1 &&
> + i915->params.enable_dpcd_backlight != 1 &&
> !drm_dp_has_quirk(&intel_dp->desc, intel_dp->edid_quirks,
> DP_QUIRK_FORCE_DPCD_BACKLIGHT)) {
> drm_info(&i915->drm,
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 1c26673acb2d..30649e17cfb7 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -740,7 +740,7 @@ static bool intel_fbc_can_enable(struct drm_i915_private *dev_priv)
> return false;
> }
>
> - if (!i915_modparams.enable_fbc) {
> + if (!dev_priv->params.enable_fbc) {
> fbc->no_fbc_reason = "disabled per module param or by default";
> return false;
> }
> @@ -1017,7 +1017,7 @@ static void __intel_fbc_post_update(struct intel_crtc *crtc)
>
> fbc->flip_pending = false;
>
> - if (!i915_modparams.enable_fbc) {
> + if (!dev_priv->params.enable_fbc) {
> intel_fbc_deactivate(dev_priv, "disabled at runtime per module param");
> __intel_fbc_disable(dev_priv);
>
> @@ -1370,8 +1370,8 @@ void intel_fbc_handle_fifo_underrun_irq(struct drm_i915_private *dev_priv)
> */
> static int intel_sanitize_fbc_option(struct drm_i915_private *dev_priv)
> {
> - if (i915_modparams.enable_fbc >= 0)
> - return !!i915_modparams.enable_fbc;
> + if (dev_priv->params.enable_fbc >= 0)
> + return !!dev_priv->params.enable_fbc;
>
> if (!HAS_FBC(dev_priv))
> return 0;
> @@ -1415,9 +1415,9 @@ void intel_fbc_init(struct drm_i915_private *dev_priv)
> if (need_fbc_vtd_wa(dev_priv))
> mkwrite_device_info(dev_priv)->display.has_fbc = false;
>
> - i915_modparams.enable_fbc = intel_sanitize_fbc_option(dev_priv);
> + dev_priv->params.enable_fbc = intel_sanitize_fbc_option(dev_priv);
> drm_dbg_kms(&dev_priv->drm, "Sanitized enable_fbc value: %d\n",
> - i915_modparams.enable_fbc);
> + dev_priv->params.enable_fbc);
>
> if (!HAS_FBC(dev_priv)) {
> fbc->no_fbc_reason = "unsupported by this chipset";
> diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c
> index 872f2a489339..1888611244db 100644
> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
> @@ -784,8 +784,8 @@ static bool compute_is_dual_link_lvds(struct intel_lvds_encoder *lvds_encoder)
> struct drm_i915_private *dev_priv = to_i915(dev);
>
> /* use the module option value if specified */
> - if (i915_modparams.lvds_channel_mode > 0)
> - return i915_modparams.lvds_channel_mode == 2;
> + if (dev_priv->params.lvds_channel_mode > 0)
> + return dev_priv->params.lvds_channel_mode == 2;
>
> /* single channel LVDS is limited to 112 MHz */
> if (lvds_encoder->attached_connector->panel.fixed_mode->clock > 112999)
> diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c
> index cc6b00959586..de995362f428 100644
> --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> @@ -801,7 +801,7 @@ static int intel_load_vbt_firmware(struct drm_i915_private *dev_priv)
> {
> struct intel_opregion *opregion = &dev_priv->opregion;
> const struct firmware *fw = NULL;
> - const char *name = i915_modparams.vbt_firmware;
> + const char *name = dev_priv->params.vbt_firmware;
> int ret;
>
> if (!name || !*name)
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index aa931f9f0d6a..c6d1876b3e8d 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -531,10 +531,10 @@ static u32 intel_panel_compute_brightness(struct intel_connector *connector,
>
> drm_WARN_ON(&dev_priv->drm, panel->backlight.max == 0);
>
> - if (i915_modparams.invert_brightness < 0)
> + if (dev_priv->params.invert_brightness < 0)
> return val;
>
> - if (i915_modparams.invert_brightness > 0 ||
> + if (dev_priv->params.invert_brightness > 0 ||
> dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS) {
> return panel->backlight.max - val + panel->backlight.min;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index b7a2c102648a..c84a2ed19f7b 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -83,7 +83,7 @@ static bool psr_global_enabled(struct drm_i915_private *i915)
> {
> switch (i915->psr.debug & I915_PSR_DEBUG_MODE_MASK) {
> case I915_PSR_DEBUG_DEFAULT:
> - return i915_modparams.enable_psr;
> + return i915->params.enable_psr;
> case I915_PSR_DEBUG_DISABLE:
> return false;
> default:
> @@ -1450,9 +1450,9 @@ void intel_psr_init(struct drm_i915_private *dev_priv)
> */
> dev_priv->hsw_psr_mmio_adjust = _SRD_CTL_EDP - _HSW_EDP_PSR_BASE;
>
> - if (i915_modparams.enable_psr == -1)
> + if (dev_priv->params.enable_psr == -1)
> if (INTEL_GEN(dev_priv) < 9 || !dev_priv->vbt.psr.enable)
> - i915_modparams.enable_psr = 0;
> + dev_priv->params.enable_psr = 0;
>
> /* Set link_standby x link_off defaults */
> if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index 900ea8b7fc8f..1d980dd6b186 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -650,7 +650,7 @@ static void context_close(struct i915_gem_context *ctx)
> * context close.
> */
> if (!i915_gem_context_is_persistent(ctx) ||
> - !i915_modparams.enable_hangcheck)
> + !ctx->i915->params.enable_hangcheck)
> kill_context(ctx);
>
> i915_gem_context_put(ctx);
> @@ -667,7 +667,7 @@ static int __context_set_persistence(struct i915_gem_context *ctx, bool state)
> * reset] are allowed to survive past termination. We require
> * hangcheck to ensure that the persistent requests are healthy.
> */
> - if (!i915_modparams.enable_hangcheck)
> + if (!ctx->i915->params.enable_hangcheck)
> return -EINVAL;
>
> i915_gem_context_set_persistence(ctx);
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c
> index 5136c8bf112d..1ed4c95b2ea6 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c
> @@ -4,6 +4,7 @@
> * Copyright © 2019 Intel Corporation
> */
>
> +#include "i915_drv.h"
> #include "i915_request.h"
>
> #include "intel_context.h"
> @@ -117,7 +118,7 @@ static void heartbeat(struct work_struct *wrk)
> goto unlock;
>
> idle_pulse(engine, rq);
> - if (i915_modparams.enable_hangcheck)
> + if (engine->i915->params.enable_hangcheck)
> engine->heartbeat.systole = i915_request_get(rq);
>
> __i915_request_commit(rq);
> diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
> index 39070b514e65..0156f1f5c736 100644
> --- a/drivers/gpu/drm/i915/gt/intel_reset.c
> +++ b/drivers/gpu/drm/i915/gt/intel_reset.c
> @@ -638,7 +638,7 @@ int __intel_gt_reset(struct intel_gt *gt, intel_engine_mask_t engine_mask)
>
> bool intel_has_gpu_reset(const struct intel_gt *gt)
> {
> - if (!i915_modparams.reset)
> + if (!gt->i915->params.reset)
> return NULL;
>
> return intel_get_gpu_reset(gt);
> @@ -646,7 +646,7 @@ bool intel_has_gpu_reset(const struct intel_gt *gt)
>
> bool intel_has_reset_engine(const struct intel_gt *gt)
> {
> - if (i915_modparams.reset < 2)
> + if (gt->i915->params.reset < 2)
> return false;
>
> return INTEL_INFO(gt->i915)->has_reset_engine;
> @@ -1038,7 +1038,7 @@ void intel_gt_reset(struct intel_gt *gt,
> awake = reset_prepare(gt);
>
> if (!intel_has_gpu_reset(gt)) {
> - if (i915_modparams.reset)
> + if (gt->i915->params.reset)
> drm_err(>->i915->drm, "GPU reset not supported\n");
> else
> drm_dbg(>->i915->drm, "GPU reset disabled\n");
> diff --git a/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c
> index 697114dd1f47..9f04c54c4d0f 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c
> @@ -386,11 +386,11 @@ int intel_heartbeat_live_selftests(struct drm_i915_private *i915)
> if (intel_gt_is_wedged(&i915->gt))
> return 0;
>
> - saved_hangcheck = i915_modparams.enable_hangcheck;
> - i915_modparams.enable_hangcheck = INT_MAX;
> + saved_hangcheck = i915->params.enable_hangcheck;
> + i915->params.enable_hangcheck = INT_MAX;
>
> err = intel_gt_live_subtests(tests, &i915->gt);
>
> - i915_modparams.enable_hangcheck = saved_hangcheck;
> + i915->params.enable_hangcheck = saved_hangcheck;
> return err;
> }
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> index fb10f3597ea5..9bbe8a795cb8 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> @@ -424,25 +424,28 @@ static void guc_log_capture_logs(struct intel_guc_log *log)
>
> static u32 __get_default_log_level(struct intel_guc_log *log)
> {
> + struct intel_guc *guc = log_to_guc(log);
> + struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
> +
> /* A negative value means "use platform/config default" */
> - if (i915_modparams.guc_log_level < 0) {
> + if (i915->params.guc_log_level < 0) {
> return (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
> IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM)) ?
> GUC_LOG_LEVEL_MAX : GUC_LOG_LEVEL_NON_VERBOSE;
> }
>
> - if (i915_modparams.guc_log_level > GUC_LOG_LEVEL_MAX) {
> + if (i915->params.guc_log_level > GUC_LOG_LEVEL_MAX) {
> DRM_WARN("Incompatible option detected: %s=%d, %s!\n",
> - "guc_log_level", i915_modparams.guc_log_level,
> + "guc_log_level", i915->params.guc_log_level,
> "verbosity too high");
> return (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
> IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM)) ?
> GUC_LOG_LEVEL_MAX : GUC_LOG_LEVEL_DISABLED;
> }
>
> - GEM_BUG_ON(i915_modparams.guc_log_level < GUC_LOG_LEVEL_DISABLED);
> - GEM_BUG_ON(i915_modparams.guc_log_level > GUC_LOG_LEVEL_MAX);
> - return i915_modparams.guc_log_level;
> + GEM_BUG_ON(i915->params.guc_log_level < GUC_LOG_LEVEL_DISABLED);
> + GEM_BUG_ON(i915->params.guc_log_level > GUC_LOG_LEVEL_MAX);
> + return i915->params.guc_log_level;
> }
>
> int intel_guc_log_create(struct intel_guc_log *log)
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> index 94eb63f309ce..fdfeb4b9b0f5 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> @@ -660,10 +660,12 @@ void intel_guc_submission_disable(struct intel_guc *guc)
>
> static bool __guc_submission_selected(struct intel_guc *guc)
> {
> + struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
> +
> if (!intel_guc_submission_is_supported(guc))
> return false;
>
> - return i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION;
> + return i915->params.enable_guc & ENABLE_GUC_SUBMISSION;
> }
>
> void intel_guc_submission_init_early(struct intel_guc *guc)
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
> index f518fe05c6f9..1c2d6358826c 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
> @@ -47,15 +47,15 @@ static void __confirm_options(struct intel_uc *uc)
>
> drm_dbg(&i915->drm,
> "enable_guc=%d (guc:%s submission:%s huc:%s)\n",
> - i915_modparams.enable_guc,
> + i915->params.enable_guc,
> yesno(intel_uc_wants_guc(uc)),
> yesno(intel_uc_wants_guc_submission(uc)),
> yesno(intel_uc_wants_huc(uc)));
>
> - if (i915_modparams.enable_guc == -1)
> + if (i915->params.enable_guc == -1)
> return;
>
> - if (i915_modparams.enable_guc == 0) {
> + if (i915->params.enable_guc == 0) {
> GEM_BUG_ON(intel_uc_wants_guc(uc));
> GEM_BUG_ON(intel_uc_wants_guc_submission(uc));
> GEM_BUG_ON(intel_uc_wants_huc(uc));
> @@ -65,25 +65,25 @@ static void __confirm_options(struct intel_uc *uc)
> if (!intel_uc_supports_guc(uc))
> drm_info(&i915->drm,
> "Incompatible option enable_guc=%d - %s\n",
> - i915_modparams.enable_guc, "GuC is not supported!");
> + i915->params.enable_guc, "GuC is not supported!");
>
> - if (i915_modparams.enable_guc & ENABLE_GUC_LOAD_HUC &&
> + if (i915->params.enable_guc & ENABLE_GUC_LOAD_HUC &&
> !intel_uc_supports_huc(uc))
> drm_info(&i915->drm,
> "Incompatible option enable_guc=%d - %s\n",
> - i915_modparams.enable_guc, "HuC is not supported!");
> + i915->params.enable_guc, "HuC is not supported!");
>
> - if (i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION &&
> + if (i915->params.enable_guc & ENABLE_GUC_SUBMISSION &&
> !intel_uc_supports_guc_submission(uc))
> drm_info(&i915->drm,
> "Incompatible option enable_guc=%d - %s\n",
> - i915_modparams.enable_guc, "GuC submission is N/A");
> + i915->params.enable_guc, "GuC submission is N/A");
>
> - if (i915_modparams.enable_guc & ~(ENABLE_GUC_SUBMISSION |
> + if (i915->params.enable_guc & ~(ENABLE_GUC_SUBMISSION |
> ENABLE_GUC_LOAD_HUC))
> drm_info(&i915->drm,
> "Incompatible option enable_guc=%d - %s\n",
> - i915_modparams.enable_guc, "undocumented flag");
> + i915->params.enable_guc, "undocumented flag");
> }
>
> void intel_uc_init_early(struct intel_uc *uc)
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> index e1caae93996d..ef777e207f5c 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> @@ -114,6 +114,7 @@ struct __packed uc_fw_platform_requirement {
> static void
> __uc_fw_auto_select(struct intel_uc_fw *uc_fw, enum intel_platform p, u8 rev)
> {
> + struct drm_i915_private *i915 = __uc_fw_to_gt(uc_fw)->i915;
> static const struct uc_fw_platform_requirement fw_blobs[] = {
> INTEL_UC_FIRMWARE_DEFS(MAKE_FW_LIST, GUC_FW_BLOB, HUC_FW_BLOB)
> };
> @@ -151,35 +152,36 @@ __uc_fw_auto_select(struct intel_uc_fw *uc_fw, enum intel_platform p, u8 rev)
> }
>
> /* We don't want to enable GuC/HuC on pre-Gen11 by default */
> - if (i915_modparams.enable_guc == -1 && p < INTEL_ICELAKE)
> + if (i915->params.enable_guc == -1 && p < INTEL_ICELAKE)
> uc_fw->path = NULL;
> }
>
> -static const char *__override_guc_firmware_path(void)
> +static const char *__override_guc_firmware_path(struct drm_i915_private *i915)
> {
> - if (i915_modparams.enable_guc & (ENABLE_GUC_SUBMISSION |
> - ENABLE_GUC_LOAD_HUC))
> - return i915_modparams.guc_firmware_path;
> + if (i915->params.enable_guc & (ENABLE_GUC_SUBMISSION |
> + ENABLE_GUC_LOAD_HUC))
> + return i915->params.guc_firmware_path;
> return "";
> }
>
> -static const char *__override_huc_firmware_path(void)
> +static const char *__override_huc_firmware_path(struct drm_i915_private *i915)
> {
> - if (i915_modparams.enable_guc & ENABLE_GUC_LOAD_HUC)
> - return i915_modparams.huc_firmware_path;
> + if (i915->params.enable_guc & ENABLE_GUC_LOAD_HUC)
> + return i915->params.huc_firmware_path;
> return "";
> }
>
> static void __uc_fw_user_override(struct intel_uc_fw *uc_fw)
> {
> + struct drm_i915_private *i915 = __uc_fw_to_gt(uc_fw)->i915;
> const char *path = NULL;
>
> switch (uc_fw->type) {
> case INTEL_UC_FW_TYPE_GUC:
> - path = __override_guc_firmware_path();
> + path = __override_guc_firmware_path(i915);
> break;
> case INTEL_UC_FW_TYPE_HUC:
> - path = __override_huc_firmware_path();
> + path = __override_huc_firmware_path(i915);
> break;
> }
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 8e98df6a3045..9c190c7d8f74 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -64,7 +64,7 @@ static int i915_capabilities(struct seq_file *m, void *data)
> intel_driver_caps_print(&i915->caps, &p);
>
> kernel_param_lock(THIS_MODULE);
> - i915_params_dump(&i915_modparams, &p);
> + i915_params_dump(&i915->params, &p);
> kernel_param_unlock(THIS_MODULE);
>
> return 0;
> diff --git a/drivers/gpu/drm/i915/i915_debugfs_params.c b/drivers/gpu/drm/i915/i915_debugfs_params.c
> index 62b2c5f0495d..4e2b077692cb 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs_params.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs_params.c
> @@ -138,9 +138,6 @@ static ssize_t i915_param_charp_write(struct file *file,
> char **s = m->private;
> char *new, *old;
>
> - /* FIXME: remove locking after params aren't the module params */
> - kernel_param_lock(THIS_MODULE);
> -
> old = *s;
> new = strndup_user(ubuf, PAGE_SIZE);
> if (IS_ERR(new)) {
> @@ -152,8 +149,6 @@ static ssize_t i915_param_charp_write(struct file *file,
>
> kfree(old);
> out:
> - kernel_param_unlock(THIS_MODULE);
> -
> return len;
> }
>
> @@ -229,7 +224,7 @@ _i915_param_create_file(struct dentry *parent, const char *name,
> struct dentry *i915_debugfs_params(struct drm_i915_private *i915)
> {
> struct drm_minor *minor = i915->drm.primary;
> - struct i915_params *params = &i915_modparams;
> + struct i915_params *params = &i915->params;
> struct dentry *dir;
>
> dir = debugfs_create_dir("i915_params", minor->debugfs_root);
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 34ee12f3f02d..67102dc26fce 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -501,6 +501,8 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv)
>
> cpu_latency_qos_remove_request(&dev_priv->sb_qos);
> mutex_destroy(&dev_priv->sb_lock);
> +
> + i915_params_free(&dev_priv->params);
> }
>
> /**
> @@ -915,6 +917,9 @@ i915_driver_create(struct pci_dev *pdev, const struct pci_device_id *ent)
> i915->drm.pdev = pdev;
> pci_set_drvdata(pdev, i915);
>
> + /* Device parameters start as a copy of module parameters. */
> + i915_params_copy(&i915->params, &i915_modparams);
> +
> /* Setup the write-once "constant" device info */
> device_info = mkwrite_device_info(i915);
> memcpy(device_info, match_info, sizeof(*device_info));
> @@ -948,7 +953,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> return PTR_ERR(i915);
>
> /* Disable nuclear pageflip by default on pre-ILK */
> - if (!i915_modparams.nuclear_pageflip && match_info->gen < 5)
> + if (!i915->params.nuclear_pageflip && match_info->gen < 5)
> i915->drm.driver_features &= ~DRIVER_ATOMIC;
>
> /*
> @@ -958,7 +963,7 @@ int i915_driver_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
> if (IS_ENABLED(CONFIG_DRM_I915_UNSTABLE_FAKE_LMEM)) {
> if (INTEL_GEN(i915) >= 9 && i915_selftest.live < 0 &&
> - i915_modparams.fake_lmem_start) {
> + i915->params.fake_lmem_start) {
> mkwrite_device_info(i915)->memory_regions =
> REGION_SMEM | REGION_LMEM | REGION_STOLEN;
> mkwrite_device_info(i915)->is_dgfx = true;
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index a378d52341e6..32e899c52ed9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -829,6 +829,9 @@ struct drm_i915_private {
> /* FIXME: Device release actions should all be moved to drmm_ */
> bool do_release;
>
> + /* i915 device parameters */
> + struct i915_params params;
> +
> const struct intel_device_info __info; /* Use INTEL_INFO() to access. */
> struct intel_runtime_info __runtime; /* Use RUNTIME_INFO() to access. */
> struct intel_driver_caps caps;
> @@ -1658,7 +1661,7 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
> #define HAS_DISPLAY(dev_priv) (INTEL_INFO(dev_priv)->pipe_mask != 0)
>
> /* Only valid when HAS_DISPLAY() is true */
> -#define INTEL_DISPLAY_ENABLED(dev_priv) (WARN_ON(!HAS_DISPLAY(dev_priv)), !i915_modparams.disable_display)
> +#define INTEL_DISPLAY_ENABLED(dev_priv) (WARN_ON(!HAS_DISPLAY(dev_priv)), !dev_priv->params.disable_display)
>
> static inline bool intel_vtd_active(void)
> {
> diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c
> index 54fce81d5724..c4a1fac9eb93 100644
> --- a/drivers/gpu/drm/i915/i915_getparam.c
> +++ b/drivers/gpu/drm/i915/i915_getparam.c
> @@ -80,7 +80,7 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data,
> return -ENODEV;
> break;
> case I915_PARAM_HAS_GPU_RESET:
> - value = i915_modparams.enable_hangcheck &&
> + value = i915->params.enable_hangcheck &&
> intel_has_gpu_reset(&i915->gt);
> if (value && intel_has_reset_engine(&i915->gt))
> value = 2;
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index eec292d06f11..866166ada10e 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -1698,7 +1698,7 @@ static void capture_gen(struct i915_gpu_coredump *error)
> error->reset_count = i915_reset_count(&i915->gpu_error);
> error->suspend_count = i915->suspend_count;
>
> - i915_params_copy(&error->params, &i915_modparams);
> + i915_params_copy(&error->params, &i915->params);
> memcpy(&error->device_info,
> INTEL_INFO(i915),
> sizeof(error->device_info));
> @@ -1713,7 +1713,7 @@ i915_gpu_coredump_alloc(struct drm_i915_private *i915, gfp_t gfp)
> {
> struct i915_gpu_coredump *error;
>
> - if (!i915_modparams.error_capture)
> + if (!i915->params.error_capture)
> return NULL;
>
> error = kzalloc(sizeof(*error), gfp);
> diff --git a/drivers/gpu/drm/i915/intel_gvt.c b/drivers/gpu/drm/i915/intel_gvt.c
> index 21b91313cc5d..d9bb9a759740 100644
> --- a/drivers/gpu/drm/i915/intel_gvt.c
> +++ b/drivers/gpu/drm/i915/intel_gvt.c
> @@ -64,7 +64,7 @@ static bool is_supported_device(struct drm_i915_private *dev_priv)
> */
> void intel_gvt_sanitize_options(struct drm_i915_private *dev_priv)
> {
> - if (!i915_modparams.enable_gvt)
> + if (!dev_priv->params.enable_gvt)
> return;
>
> if (intel_vgpu_active(dev_priv)) {
> @@ -80,7 +80,7 @@ void intel_gvt_sanitize_options(struct drm_i915_private *dev_priv)
>
> return;
> bail:
> - i915_modparams.enable_gvt = 0;
> + dev_priv->params.enable_gvt = 0;
> }
>
> /**
> @@ -100,7 +100,7 @@ int intel_gvt_init(struct drm_i915_private *dev_priv)
> if (i915_inject_probe_failure(dev_priv))
> return -ENODEV;
>
> - if (!i915_modparams.enable_gvt) {
> + if (!dev_priv->params.enable_gvt) {
> drm_dbg(&dev_priv->drm,
> "GVT-g is disabled by kernel params\n");
> return 0;
> @@ -121,7 +121,7 @@ int intel_gvt_init(struct drm_i915_private *dev_priv)
> return 0;
>
> bail:
> - i915_modparams.enable_gvt = 0;
> + dev_priv->params.enable_gvt = 0;
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_region_lmem.c b/drivers/gpu/drm/i915/intel_region_lmem.c
> index 14b59b899c9b..40d8f1a95df6 100644
> --- a/drivers/gpu/drm/i915/intel_region_lmem.c
> +++ b/drivers/gpu/drm/i915/intel_region_lmem.c
> @@ -76,7 +76,7 @@ region_lmem_init(struct intel_memory_region *mem)
> {
> int ret;
>
> - if (i915_modparams.fake_lmem_start) {
> + if (mem->i915->params.fake_lmem_start) {
> ret = init_fake_lmem_bar(mem);
> GEM_BUG_ON(ret);
> }
> @@ -111,12 +111,12 @@ intel_setup_fake_lmem(struct drm_i915_private *i915)
> resource_size_t start;
>
> GEM_BUG_ON(i915_ggtt_has_aperture(&i915->ggtt));
> - GEM_BUG_ON(!i915_modparams.fake_lmem_start);
> + GEM_BUG_ON(!i915->params.fake_lmem_start);
>
> /* Your mappable aperture belongs to me now! */
> mappable_end = pci_resource_len(pdev, 2);
> io_start = pci_resource_start(pdev, 2),
> - start = i915_modparams.fake_lmem_start;
> + start = i915->params.fake_lmem_start;
>
> mem = intel_memory_region_create(i915,
> start,
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index a61cb8ca4d50..fb08b24e92c8 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1185,7 +1185,7 @@ __unclaimed_reg_debug(struct intel_uncore *uncore,
> read ? "read from" : "write to",
> i915_mmio_reg_offset(reg)))
> /* Only report the first N failures */
> - i915_modparams.mmio_debug--;
> + uncore->i915->params.mmio_debug--;
> }
>
> static inline void
> @@ -1194,7 +1194,7 @@ unclaimed_reg_debug(struct intel_uncore *uncore,
> const bool read,
> const bool before)
> {
> - if (likely(!i915_modparams.mmio_debug))
> + if (likely(!uncore->i915->params.mmio_debug))
> return;
>
> /* interrupts are disabled and re-enabled around uncore->lock usage */
> @@ -2093,12 +2093,12 @@ intel_uncore_arm_unclaimed_mmio_detection(struct intel_uncore *uncore)
> goto out;
>
> if (unlikely(check_for_unclaimed_mmio(uncore))) {
> - if (!i915_modparams.mmio_debug) {
> + if (!uncore->i915->params.mmio_debug) {
> drm_dbg(&uncore->i915->drm,
> "Unclaimed register detected, "
> "enabling oneshot unclaimed register reporting. "
> "Please use i915.mmio_debug=N for more information.\n");
> - i915_modparams.mmio_debug++;
> + uncore->i915->params.mmio_debug++;
> }
> uncore->debug->unclaimed_mmio_check--;
> ret = true;
> --
> 2.20.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list