From: Imre Deak <imre.deak@intel.com>
To: "Murthy, Arun R" <arun.r.murthy@intel.com>
Cc: "Govindapillai, Vinod" <vinod.govindapillai@intel.com>,
"intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
"Shankar, Uma" <uma.shankar@intel.com>,
"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
"ville.syrala@intel.com" <ville.syrala@intel.com>
Subject: Re: [PATCH v3 2/3] drm/xe: Handle polling only for system s/r in xe_display_pm_suspend/resume()
Date: Fri, 23 Aug 2024 15:51:38 +0300 [thread overview]
Message-ID: <ZsiF2msfc_4Cj1xm@ideak-desk.fi.intel.com> (raw)
In-Reply-To: <IA0PR11MB73074BBC068B36B8DD98EC24BA882@IA0PR11MB7307.namprd11.prod.outlook.com>
On Fri, Aug 23, 2024 at 11:43:47AM +0300, Murthy, Arun R wrote:
> > > > diff --git a/drivers/gpu/drm/xe/display/xe_display.c
> > > > b/drivers/gpu/drm/xe/display/xe_display.c
> > > > index ad7fc5137b42..b2a0b4b5c45c 100644
> > > > --- a/drivers/gpu/drm/xe/display/xe_display.c
> > > > +++ b/drivers/gpu/drm/xe/display/xe_display.c
> > > > @@ -320,15 +320,13 @@ void xe_display_pm_suspend(struct xe_device
> > > > *xe, bool runtime)
> > > > * properly.
> > > > */
> > > > intel_power_domains_disable(xe);
> > > > +
> > > Un-necessary change.
> > >
> > > > intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_SUSPENDED,
> > > > true);
> > > > - if (has_display(xe)) {
> > > > + if (!runtime && has_display(xe)) {
> > > > drm_kms_helper_poll_disable(&xe->drm);
> > >
> > > Can we get rid of this API as we don't reply on device polling and
> > > use interrupt based.
> >
> > Not sure if I understand the point! Wonder if it is relevant at this
> > context! But as mentioned in the series patch description, there
> > could be few other steps missing in the xe runtime_suspend handling
> > and a better refactoring/changes are being planned. So I guess you
> > could take this up at that time?
> >
> Nothing missing as such, rather this
> function(drm_kms_helper_poll_enable/ disable) is not required. I915
> uses interrupt based detection and not polling.
Not sure what you mean by this. i915 (and xe) does use HPD polling to
detect display hotplug events. Interrupts for this work only if the
given output type has a physical HPD interrupt signal for this (so for
DP, HDMI yes, but for TV and some VGA outputs no) and the device is not
runtime suspended. Because of the former reason (outputs w/o an HPD
interrupt signal) the polling functionality provided by DRM core is
enabled while the system is not suspended (and so gets disabled here
during system suspend). Because of the latter reason (interrupts
disabled when the device is runtime suspended) polling for output types
that have an HPD interrupt signal is enabled when runtime suspending and
for these same outputs polling is disabled (switched back to interrupt
based detection) when runtime resuming.
> Even if called when polling is not enabled, will have no impact and
> just return with warning. If to be taken later can we have a TODO or
> Re-visit so that we don’t miss.
>
> > >
> > > > - if (!runtime)
> > > > -
> > > > intel_display_driver_disable_user_access(xe);
> > > > - }
> > > > -
> > > > - if (!runtime)
> > > > + intel_display_driver_disable_user_access(xe);
> > > > intel_display_driver_suspend(xe);
> > > > + }
> > > >
> > > > xe_display_flush_cleanup_work(xe);
> > > >
> > > > @@ -387,15 +385,12 @@ void xe_display_pm_resume(struct xe_device
> > > > *xe, bool runtime)
> > > >
> > > > /* MST sideband requires HPD interrupts enabled */
> > > > intel_dp_mst_resume(xe);
> > > > - if (!runtime)
> > > > + if (!runtime && has_display(xe)) {
> > > > intel_display_driver_resume(xe);
> > > > -
> > > > - if (has_display(xe)) {
> > > > drm_kms_helper_poll_enable(&xe->drm);
> > > > - if (!runtime)
> > > > - intel_display_driver_enable_user_access(xe);
> > > > + intel_display_driver_enable_user_access(xe);
> > > > + intel_hpd_poll_disable(xe);
> > > Do we need this disable here as we are enabling this only in
> > > xe_display_pm_runtime_suspend() and hence disable only in
> > > xe_display_pm_runtime_resume()
> >
> > To quote Imre,
> >
> > "intel_hpd_poll_disable() is needed during system resume as well, since it does
> > an explicit connector probing. This probing is needed also when you resume
> > from S3 etc, for monitors that got connected during the system was
> > suspended."
> >
> Thanks for the clarification.
>
> Thanks and Regards,
> Arun R Murthy
> -------------------
next prev parent reply other threads:[~2024-08-23 12:51 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-20 17:14 [PATCH v3 0/3] handle HPD polling on display pm runtime s/r Vinod Govindapillai
2024-08-20 17:14 ` [PATCH v3 1/3] drm/xe: Suspend/resume user access only during system s/r Vinod Govindapillai
2024-08-23 4:46 ` Murthy, Arun R
2024-08-20 17:14 ` [PATCH v3 2/3] drm/xe: Handle polling only for system s/r in xe_display_pm_suspend/resume() Vinod Govindapillai
2024-08-23 5:30 ` Murthy, Arun R
2024-08-23 7:07 ` Govindapillai, Vinod
2024-08-23 8:43 ` Murthy, Arun R
2024-08-23 9:08 ` Govindapillai, Vinod
2024-08-23 9:15 ` Govindapillai, Vinod
2024-08-23 9:34 ` Murthy, Arun R
2024-08-23 12:51 ` Imre Deak [this message]
2024-08-20 17:14 ` [PATCH v3 3/3] drm/xe/display: handle HPD polling in display runtime suspend/resume Vinod Govindapillai
2024-08-23 5:30 ` Murthy, Arun R
2024-08-20 18:25 ` ✓ CI.Patch_applied: success for handle HPD polling on display pm runtime s/r Patchwork
2024-08-20 18:25 ` ✓ CI.checkpatch: " Patchwork
2024-08-20 18:26 ` ✓ CI.KUnit: " Patchwork
2024-08-20 18:38 ` ✓ CI.Build: " Patchwork
2024-08-20 18:40 ` ✓ CI.Hooks: " Patchwork
2024-08-20 18:41 ` ✓ CI.checksparse: " Patchwork
2024-08-20 19:02 ` ✓ CI.BAT: " Patchwork
2024-08-21 0:16 ` ✗ CI.FULL: failure " Patchwork
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=ZsiF2msfc_4Cj1xm@ideak-desk.fi.intel.com \
--to=imre.deak@intel.com \
--cc=arun.r.murthy@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=rodrigo.vivi@intel.com \
--cc=uma.shankar@intel.com \
--cc=ville.syrala@intel.com \
--cc=vinod.govindapillai@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox