drm/i915: disable rps irqs earlier during suspend/unload
After the previous patch RPS disabling doesn't depend any more on the first level interrupts being disabled, so we can move it everywhere earlier. Doing so let's us think about the uninitialization steps afterwards independently of any asynchronous RPS events that can happen atm. It also makes the system/runtime suspend time RPS disabling more uniform. Finally this gets rid of the WARN in intel_suspend_gt_powersave(), which we can hit if a final RPS work runs after we disabled the first level interrupts. Testcase: igt/pm_rpm Reference: https://bugs.freedesktop.org/show_bug.cgi?id=82939 Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Este cometimento está contido em:

cometido por
Daniel Vetter

ascendente
d4d70aa596
cometimento
2eb5252e2f
@@ -13540,11 +13540,13 @@ void intel_modeset_cleanup(struct drm_device *dev)
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
struct drm_connector *connector;
|
||||
|
||||
intel_disable_gt_powersave(dev);
|
||||
|
||||
intel_backlight_unregister(dev);
|
||||
|
||||
/*
|
||||
* Interrupts and polling as the first thing to avoid creating havoc.
|
||||
* Too much stuff here (turning of rps, connectors, ...) would
|
||||
* Too much stuff here (turning of connectors, ...) would
|
||||
* experience fancy races otherwise.
|
||||
*/
|
||||
intel_irq_uninstall(dev_priv);
|
||||
@@ -13561,8 +13563,6 @@ void intel_modeset_cleanup(struct drm_device *dev)
|
||||
|
||||
intel_disable_fbc(dev);
|
||||
|
||||
intel_disable_gt_powersave(dev);
|
||||
|
||||
ironlake_teardown_rc6(dev);
|
||||
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador