Message ID | 1400624735-4220-3-git-send-email-jbarnes@virtuousgeek.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, May 20, 2014 at 03:25:35PM -0700, Jesse Barnes wrote: > Gets the detect code (which may take awhile) out of the resume path, > speeding things up a bit. > > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> > --- > drivers/gpu/drm/i915/i915_drv.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 302495f..571f688 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -606,7 +606,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) > intel_hpd_init(dev); > dev_priv->enable_hotplug_processing = true; > /* Config may have changed between suspend and resume */ > - drm_helper_hpd_irq_event(dev); > + async_schedule(drm_helper_hpd_irq_event_async, dev); Does that really help all that much? I've thought the driver core sychnronizes all the async workers again once resume is done. I'm better to schedule this as a fully async work with e.g. a 1s delay, like we do with the rps resume work. -Daniel > } > > intel_opregion_init(dev); > -- > 1.8.4.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
On Wed, 21 May 2014 08:52:34 +0200 Daniel Vetter <daniel@ffwll.ch> wrote: > On Tue, May 20, 2014 at 03:25:35PM -0700, Jesse Barnes wrote: > > Gets the detect code (which may take awhile) out of the resume path, > > speeding things up a bit. > > > > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> > > --- > > drivers/gpu/drm/i915/i915_drv.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > > index 302495f..571f688 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.c > > +++ b/drivers/gpu/drm/i915/i915_drv.c > > @@ -606,7 +606,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) > > intel_hpd_init(dev); > > dev_priv->enable_hotplug_processing = true; > > /* Config may have changed between suspend and resume */ > > - drm_helper_hpd_irq_event(dev); > > + async_schedule(drm_helper_hpd_irq_event_async, dev); > > Does that really help all that much? I've thought the driver core > sychnronizes all the async workers again once resume is done. I'm better > to schedule this as a fully async work with e.g. a 1s delay, like we do > with the rps resume work. That might be better, I'll check on the synchronization. I thought async_schedule was the new hotness we were supposed to use everywhere...
On Wed, May 21, 2014 at 08:00:22AM -0700, Jesse Barnes wrote: > On Wed, 21 May 2014 08:52:34 +0200 > Daniel Vetter <daniel@ffwll.ch> wrote: > > > On Tue, May 20, 2014 at 03:25:35PM -0700, Jesse Barnes wrote: > > > Gets the detect code (which may take awhile) out of the resume path, > > > speeding things up a bit. > > > > > > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> > > > --- > > > drivers/gpu/drm/i915/i915_drv.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > > > index 302495f..571f688 100644 > > > --- a/drivers/gpu/drm/i915/i915_drv.c > > > +++ b/drivers/gpu/drm/i915/i915_drv.c > > > @@ -606,7 +606,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) > > > intel_hpd_init(dev); > > > dev_priv->enable_hotplug_processing = true; > > > /* Config may have changed between suspend and resume */ > > > - drm_helper_hpd_irq_event(dev); > > > + async_schedule(drm_helper_hpd_irq_event_async, dev); > > > > Does that really help all that much? I've thought the driver core > > sychnronizes all the async workers again once resume is done. I'm better > > to schedule this as a fully async work with e.g. a 1s delay, like we do > > with the rps resume work. > > That might be better, I'll check on the synchronization. I thought > async_schedule was the new hotness we were supposed to use everywhere... It's pretty cool for easy async in driver load/resume since it autosyncs. You can even create more async domains if you need finer-grained sync points. But if we know that we can be more lenient than full sync before our driver load/resume completes we need to use classical work queues. But for stuff like doing paralle modeset restore async domains look like the right thing. -Daniel
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 302495f..571f688 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -606,7 +606,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) intel_hpd_init(dev); dev_priv->enable_hotplug_processing = true; /* Config may have changed between suspend and resume */ - drm_helper_hpd_irq_event(dev); + async_schedule(drm_helper_hpd_irq_event_async, dev); } intel_opregion_init(dev);
Gets the detect code (which may take awhile) out of the resume path, speeding things up a bit. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> --- drivers/gpu/drm/i915/i915_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)