From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: <intel-gfx@lists.freedesktop.org>,
<intel-xe@lists.freedesktop.org>, Imre <imre.deak@intel.com>
Cc: Jonathan Cavitt <jonathan.cavitt@intel.com>
Subject: Re: [PATCH 1/3] drm/i915/display: Move shutdown sequences under display driver
Date: Fri, 15 Nov 2024 15:22:05 -0500 [thread overview]
Message-ID: <ZzetbStBHPMO9-yj@intel.com> (raw)
In-Reply-To: <20241114202252.239652-1-rodrigo.vivi@intel.com>
On Thu, Nov 14, 2024 at 03:22:50PM -0500, Rodrigo Vivi wrote:
> Move display related shutdown sequences from i915_driver to
> intel_display_driver.
>
> No functional change. Just taking the right ownership and
> start some reconciliation of them between i915 and Xe.
>
> v2: - Add missing _nogem caller (Imre)
> - Fix comment style (Jonathan)
>
> Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com> #v1
Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> .../drm/i915/display/intel_display_driver.c | 40 +++++++++++++++++++
> .../drm/i915/display/intel_display_driver.h | 3 ++
> drivers/gpu/drm/i915/i915_driver.c | 27 ++-----------
> 3 files changed, 47 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 06a60be649ee..ee2cccff6e5e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -39,6 +39,7 @@
> #include "intel_dp_tunnel.h"
> #include "intel_dpll.h"
> #include "intel_dpll_mgr.h"
> +#include "intel_encoder.h"
> #include "intel_fb.h"
> #include "intel_fbc.h"
> #include "intel_fbdev.h"
> @@ -762,3 +763,42 @@ void intel_display_driver_resume(struct drm_i915_private *i915)
> if (state)
> drm_atomic_state_put(state);
> }
> +
> +void intel_display_driver_shutdown(struct drm_i915_private *i915)
> +{
> + intel_power_domains_disable(i915);
> +
> + intel_fbdev_set_suspend(&i915->drm, FBINFO_STATE_SUSPENDED, true);
> + if (HAS_DISPLAY(i915)) {
> + drm_kms_helper_poll_disable(&i915->drm);
> + intel_display_driver_disable_user_access(i915);
> +
> + drm_atomic_helper_shutdown(&i915->drm);
> + }
> +
> + intel_dp_mst_suspend(i915);
> +}
> +
> +void intel_display_driver_shutdown_noirq(struct drm_i915_private *i915)
> +{
> + intel_hpd_cancel_work(i915);
> +
> + if (HAS_DISPLAY(i915))
> + intel_display_driver_suspend_access(i915);
> +
> + intel_encoder_suspend_all(&i915->display);
> + intel_encoder_shutdown_all(&i915->display);
> +
> + intel_dmc_suspend(&i915->display);
> +}
> +
> +void intel_display_driver_shutdown_nogem(struct drm_i915_private *i915)
> +{
> + /*
> + * The only requirement is to reboot with display DC states disabled,
> + * for now leaving all display power wells in the INIT power domain
> + * enabled.
> + */
> +
> + intel_power_domains_driver_remove(i915);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.h b/drivers/gpu/drm/i915/display/intel_display_driver.h
> index 42cc4af6d3fd..1ee37fb58d38 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.h
> @@ -26,6 +26,9 @@ void intel_display_driver_remove_nogem(struct drm_i915_private *i915);
> void intel_display_driver_unregister(struct drm_i915_private *i915);
> int intel_display_driver_suspend(struct drm_i915_private *i915);
> void intel_display_driver_resume(struct drm_i915_private *i915);
> +void intel_display_driver_shutdown(struct drm_i915_private *i915);
> +void intel_display_driver_shutdown_noirq(struct drm_i915_private *i915);
> +void intel_display_driver_shutdown_nogem(struct drm_i915_private *i915);
>
> /* interface for intel_display_reset.c */
> int __intel_display_driver_resume(struct drm_i915_private *i915,
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 2013962e446c..3b241054ceb5 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -945,43 +945,24 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
> {
> disable_rpm_wakeref_asserts(&i915->runtime_pm);
> intel_runtime_pm_disable(&i915->runtime_pm);
> - intel_power_domains_disable(i915);
>
> - intel_fbdev_set_suspend(&i915->drm, FBINFO_STATE_SUSPENDED, true);
> - if (HAS_DISPLAY(i915)) {
> - drm_kms_helper_poll_disable(&i915->drm);
> - intel_display_driver_disable_user_access(i915);
> -
> - drm_atomic_helper_shutdown(&i915->drm);
> - }
> -
> - intel_dp_mst_suspend(i915);
> + intel_display_driver_shutdown(i915);
>
> intel_irq_suspend(i915);
> - intel_hpd_cancel_work(i915);
> -
> - if (HAS_DISPLAY(i915))
> - intel_display_driver_suspend_access(i915);
>
> - intel_encoder_suspend_all(&i915->display);
> - intel_encoder_shutdown_all(&i915->display);
> -
> - intel_dmc_suspend(&i915->display);
> + intel_display_driver_shutdown_noirq(i915);
>
> i915_gem_suspend(i915);
>
> /*
> - * The only requirement is to reboot with display DC states disabled,
> - * for now leaving all display power wells in the INIT power domain
> - * enabled.
> - *
> * TODO:
> * - unify the pci_driver::shutdown sequence here with the
> * pci_driver.driver.pm.poweroff,poweroff_late sequence.
> * - unify the driver remove and system/runtime suspend sequences with
> * the above unified shutdown/poweroff sequence.
> */
> - intel_power_domains_driver_remove(i915);
> + intel_display_driver_shutdown_nogem(i915);
> +
> enable_rpm_wakeref_asserts(&i915->runtime_pm);
>
> intel_runtime_pm_driver_last_release(&i915->runtime_pm);
> --
> 2.47.0
>
next prev parent reply other threads:[~2024-11-15 20:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-14 20:22 [PATCH 1/3] drm/i915/display: Move shutdown sequences under display driver Rodrigo Vivi
2024-11-14 20:22 ` [PATCH 2/3] drm/xe: At shutdown disable commit helpers instead of flushing Rodrigo Vivi
2024-11-14 20:22 ` [PATCH 3/3] drm/xe: Use i915-display shutdown sequence directly Rodrigo Vivi
2024-11-15 22:28 ` [PATCH] " Rodrigo Vivi
2024-11-15 2:58 ` ✓ CI.Patch_applied: success for series starting with [1/3] drm/i915/display: Move shutdown sequences under display driver Patchwork
2024-11-15 2:58 ` ✓ CI.checkpatch: " Patchwork
2024-11-15 2:59 ` ✗ CI.KUnit: failure " Patchwork
2024-11-15 3:40 ` ✗ Fi.CI.SPARSE: warning " Patchwork
2024-11-15 7:59 ` ✓ Fi.CI.BAT: success " Patchwork
2024-11-15 9:06 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-11-15 20:22 ` Rodrigo Vivi [this message]
2024-11-15 22:39 ` ✓ CI.Patch_applied: success for series starting with [1/3] drm/i915/display: Move shutdown sequences under display driver (rev2) Patchwork
2024-11-15 22:40 ` ✓ CI.checkpatch: " Patchwork
2024-11-15 22:41 ` ✓ CI.KUnit: " Patchwork
2024-11-15 22:59 ` ✓ CI.Build: " Patchwork
2024-11-15 22:59 ` ✗ CI.Hooks: failure " Patchwork
2024-11-15 23:01 ` ✗ CI.checksparse: warning " Patchwork
2024-11-15 23:09 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-11-15 23:20 ` ✗ CI.BAT: failure " Patchwork
2024-11-15 23:27 ` ✓ Fi.CI.BAT: success " Patchwork
2024-11-16 0:15 ` ✗ Fi.CI.IGT: failure " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2025-01-17 22:09 [PATCH 1/3] drm/i915/display: Move shutdown sequences under display driver Rodrigo Vivi
2025-01-22 10:40 Rodrigo Vivi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZzetbStBHPMO9-yj@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jonathan.cavitt@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.