[Intel-gfx] [CI 1/2] drm/i915: register vga switcheroo later, unregister earlier
Jani Nikula
jani.nikula at intel.com
Fri Feb 14 07:04:42 UTC 2020
On Tue, 11 Feb 2020, Jani Nikula <jani.nikula at intel.com> wrote:
> Move vga switcheroo and dsm handler register later in
> i915_driver_register(), and unregister in i915_driver_unregister(). The
> dsm handler unregister is a nop, and is only added for completeness.
>
> My unsubstantiated suspicion is that the vga switcheroo state change
> would not work as early as we register the hooks currently. In any case
> exposing the interfaces to the world only after we've got everything set
> up seems prudent.
>
> Also replace the error handling in vga switcheroo register with a simple
> error message. This is done at the same time due to lack of error
> propagation from i915_driver_register().
>
> Cc: Lukas Wunner <lukas at wunner.de>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Acked-by: Lukas Wunner <lukas at wunner.de>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
Both finally pushed, thanks for the acks and reviews.
BR,
Jani.
> ---
> drivers/gpu/drm/i915/i915_drv.c | 19 +++++++++----------
> 1 file changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 516536234e97..4c75437f33af 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -292,12 +292,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
> if (ret)
> goto out;
>
> - intel_register_dsm_handler();
> -
> - ret = i915_switcheroo_register(i915);
> - if (ret)
> - goto cleanup_vga_client;
> -
> intel_power_domains_init_hw(i915, false);
>
> intel_csr_ucode_init(i915);
> @@ -343,8 +337,6 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
> cleanup_csr:
> intel_csr_ucode_fini(i915);
> intel_power_domains_driver_remove(i915);
> - i915_switcheroo_unregister(i915);
> -cleanup_vga_client:
> intel_vga_unregister(i915);
> out:
> return ret;
> @@ -358,8 +350,6 @@ static void i915_driver_modeset_remove(struct drm_i915_private *i915)
>
> intel_bios_driver_remove(i915);
>
> - i915_switcheroo_unregister(i915);
> -
> intel_vga_unregister(i915);
>
> intel_csr_ucode_fini(i915);
> @@ -1366,6 +1356,11 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
>
> intel_power_domains_enable(dev_priv);
> intel_runtime_pm_enable(&dev_priv->runtime_pm);
> +
> + intel_register_dsm_handler();
> +
> + if (i915_switcheroo_register(dev_priv))
> + drm_err(&dev_priv->drm, "Failed to register vga switcheroo!\n");
> }
>
> /**
> @@ -1374,6 +1369,10 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
> */
> static void i915_driver_unregister(struct drm_i915_private *dev_priv)
> {
> + i915_switcheroo_unregister(dev_priv);
> +
> + intel_unregister_dsm_handler();
> +
> intel_runtime_pm_disable(&dev_priv->runtime_pm);
> intel_power_domains_disable(dev_priv);
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list