From: Daniel Vetter <daniel.vetter@ffwll.ch> To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter <daniel.vetter@ffwll.ch>, Ben Widawsky <ben@bwidawsk.net> Subject: [PATCH] drm/i915: properly cancel rps_work on module unload Date: Mon, 5 Sep 2011 10:15:28 +0200 Message-ID: <1315210528-10976-1-git-send-email-daniel.vetter@ffwll.ch> (raw) In-Reply-To: <20110904195731.GD2799@phenom.ffwll.local> The rps disabling code wasn't properly cancelling outstanding work items. Also add a comment that explains why we're not racing with the work item that could unmask interrupts - that piece of code confused me quite a bit. v2: Ben Widawsky pointed out that the first patch would deadlock (and a few lesser problems). All corrected. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/i915/intel_display.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 56a8554..2e425be 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -7484,6 +7484,10 @@ void gen6_disable_rps(struct drm_device *dev) I915_WRITE(GEN6_RPNSWREQ, 1 << 31); I915_WRITE(GEN6_PMINTRMSK, 0xffffffff); I915_WRITE(GEN6_PMIER, 0); + /* Complete PM interrupt masking here doesn't race with the rps work + * item again unmasking PM interrupts because that is using a different + * register (PMIMR) to mask PM interrupts. The only risk is in leaving + * stale bits in PMIIR and PMIMR which gen6_enable_rps will clean up. */ spin_lock_irq(&dev_priv->rps_lock); dev_priv->pm_iir = 0; @@ -8478,6 +8482,7 @@ void intel_modeset_cleanup(struct drm_device *dev) * enqueue unpin/hotplug work. */ drm_irq_uninstall(dev); cancel_work_sync(&dev_priv->hotplug_work); + cancel_work_sync(&dev_priv->rps_work); /* flush any delayed tasks or pending work */ flush_scheduled_work(); -- 1.7.6
next prev parent reply index Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-09-04 3:24 [PATCH] drm/i915: Fix rps irq warning Ben Widawsky 2011-09-04 9:03 ` Chris Wilson 2011-09-04 15:49 ` Ben Widawsky 2011-09-04 15:34 ` [PATCH 0/3] slaughter rps races some more Daniel Vetter 2011-09-04 15:35 ` [PATCH 1/3] drm/i915: close PM interrupt masking races in the irq handler Daniel Vetter 2011-09-04 17:09 ` Ben Widawsky 2011-09-04 15:35 ` [PATCH 2/3] drm/i915: close PM interrupt masking races in the rps work func Daniel Vetter 2011-09-04 17:08 ` Ben Widawsky 2011-09-04 19:26 ` Daniel Vetter 2011-09-04 19:56 ` Ben Widawsky 2011-09-04 20:10 ` Daniel Vetter 2011-09-04 21:38 ` Ben Widawsky 2011-09-05 6:38 ` Daniel Vetter 2011-09-05 6:51 ` Ben Widawsky 2011-09-05 12:15 ` Chris Wilson 2011-09-04 15:35 ` [PATCH 3/3] drm/i915: close rps work vs. rps disable races Daniel Vetter 2011-09-04 17:23 ` Ben Widawsky 2011-09-04 19:17 ` Daniel Vetter 2011-09-04 19:50 ` Ben Widawsky 2011-09-04 19:57 ` Daniel Vetter 2011-09-05 8:15 ` Daniel Vetter [this message] 2011-09-05 17:27 ` [PATCH] drm/i915: properly cancel rps_work on module unload Ben Widawsky
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=1315210528-10976-1-git-send-email-daniel.vetter@ffwll.ch \ --to=daniel.vetter@ffwll.ch \ --cc=ben@bwidawsk.net \ --cc=intel-gfx@lists.freedesktop.org \ /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
Intel-GFX Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/intel-gfx/0 intel-gfx/git/0.git git clone --mirror https://lore.kernel.org/intel-gfx/1 intel-gfx/git/1.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 intel-gfx intel-gfx/ https://lore.kernel.org/intel-gfx \ intel-gfx@lists.freedesktop.org public-inbox-index intel-gfx Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.freedesktop.lists.intel-gfx AGPL code for this site: git clone https://public-inbox.org/public-inbox.git