From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
Zou Nan hai <Nanhai.zou@intel.com>,
Zhenyu Wang <zhenyuw@linux.intel.com>,
Eric Anholt <eric@anholt.net>
Subject: [05/30] drm/i915: remove loop in Ironlake interrupt handler
Date: Wed, 20 Jan 2010 20:15:26 -0800 [thread overview]
Message-ID: <20100121041833.110428612@mini.kroah.org> (raw)
In-Reply-To: <20100121041852.GA9656@kroah.com>
2.6.32-stable review patch. If anyone has any objections, please let us know.
------------------
From: Zou Nan hai <Nanhai.zou@intel.com>
commit c7c85101afd0cb8ce497456d12ee1cad4aad152f upstream.
On Ironlake, there is an interrupt master control bit. With the bit
disabled before clearing IIR, we do not need to handle extra interrupt
in a loop. This patch removes the loop in Ironlake interrupt handler.
It fixed irq lost issue on some Ironlake platforms.
Signed-off-by: Zou Nan hai <Nanhai.zou@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/gpu/drm/i915/i915_irq.c | 43 ++++++++++++++++------------------------
1 file changed, 18 insertions(+), 25 deletions(-)
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -255,7 +255,6 @@ irqreturn_t igdng_irq_handler(struct drm
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
int ret = IRQ_NONE;
u32 de_iir, gt_iir, de_ier;
- u32 new_de_iir, new_gt_iir;
struct drm_i915_master_private *master_priv;
/* disable master interrupt before clearing iir */
@@ -266,35 +265,29 @@ irqreturn_t igdng_irq_handler(struct drm
de_iir = I915_READ(DEIIR);
gt_iir = I915_READ(GTIIR);
- for (;;) {
- if (de_iir == 0 && gt_iir == 0)
- break;
-
- ret = IRQ_HANDLED;
-
- I915_WRITE(DEIIR, de_iir);
- new_de_iir = I915_READ(DEIIR);
- I915_WRITE(GTIIR, gt_iir);
- new_gt_iir = I915_READ(GTIIR);
+ if (de_iir == 0 && gt_iir == 0)
+ goto done;
- if (dev->primary->master) {
- master_priv = dev->primary->master->driver_priv;
- if (master_priv->sarea_priv)
- master_priv->sarea_priv->last_dispatch =
- READ_BREADCRUMB(dev_priv);
- }
+ ret = IRQ_HANDLED;
- if (gt_iir & GT_USER_INTERRUPT) {
- u32 seqno = i915_get_gem_seqno(dev);
- dev_priv->mm.irq_gem_seqno = seqno;
- trace_i915_gem_request_complete(dev, seqno);
- DRM_WAKEUP(&dev_priv->irq_queue);
- }
+ if (dev->primary->master) {
+ master_priv = dev->primary->master->driver_priv;
+ if (master_priv->sarea_priv)
+ master_priv->sarea_priv->last_dispatch =
+ READ_BREADCRUMB(dev_priv);
+ }
- de_iir = new_de_iir;
- gt_iir = new_gt_iir;
+ if (gt_iir & GT_USER_INTERRUPT) {
+ u32 seqno = i915_get_gem_seqno(dev);
+ dev_priv->mm.irq_gem_seqno = seqno;
+ trace_i915_gem_request_complete(dev, seqno);
+ DRM_WAKEUP(&dev_priv->irq_queue);
}
+ I915_WRITE(GTIIR, gt_iir);
+ I915_WRITE(DEIIR, de_iir);
+
+done:
I915_WRITE(DEIER, de_ier);
(void)I915_READ(DEIER);
next prev parent reply other threads:[~2010-01-21 4:30 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-21 4:18 [00/30] 2.6.32.5 review Greg KH
2010-01-21 4:15 ` [01/30] inotify: do not reuse watch descriptors Greg KH
2010-01-21 4:15 ` [02/30] inotify: only warn once for inotify problems Greg KH
2010-01-21 4:15 ` [03/30] revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC Framebuffer" Greg KH
2010-01-21 4:15 ` [04/30] memcg: ensure list is empty at rmdir Greg KH
2010-01-21 4:15 ` Greg KH [this message]
2010-01-21 4:15 ` [06/30] block: Fix incorrect reporting of partition alignment Greg KH
2010-01-21 4:15 ` [07/30] x86, mce: Thermal monitoring depends on APIC being enabled Greg KH
2010-01-21 4:15 ` [08/30] futexes: Remove rw parameter from get_futex_key() Greg KH
2010-01-21 4:15 ` [09/30] page allocator: update NR_FREE_PAGES only when necessary Greg KH
2010-01-21 4:15 ` [10/30] x86, apic: use physical mode for IBM summit platforms Greg KH
2010-01-21 4:15 ` [11/30] edac: i5000_edac critical fix panic out of bounds Greg KH
2010-01-21 4:15 ` [12/30] x86: SGI UV: Fix mapping of MMIO registers Greg KH
2010-01-21 4:15 ` [13/30] mfd: WM835x GPIO direction register is not locked Greg KH
2010-01-21 4:15 ` [14/30] mfd: Correct WM835x ISINK ramp time defines Greg KH
2010-01-21 4:15 ` [15/30] ALSA: hda - Fix missing capture mixer for ALC861/660 codecs Greg KH
2010-01-21 4:15 ` [16/30] V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned Greg KH
2010-01-21 4:15 ` [17/30] reiserfs: truncate blocks not used by a write Greg KH
2010-01-21 4:15 ` [18/30] HID: add device IDs for new model of Apple Wireless Keyboard Greg KH
2010-01-21 4:15 ` [19/30] PCI/cardbus: Add a fixup hook and fix powerpc Greg KH
2010-01-21 4:15 ` [20/30] [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable permissions Greg KH
2010-01-21 4:15 ` [21/30] Input: pmouse - move Sentelic probe down the list Greg KH
2010-01-21 4:15 ` [22/30] asus-laptop: add Lenovo SL hotkey support Greg KH
2010-01-21 4:15 ` [23/30] sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK Greg KH
2010-01-21 4:15 ` [24/30] sparc64: Fix NMI programming when perf events are active Greg KH
2010-01-21 4:15 ` [25/30] sparc64: Fix Niagara2 perf event handling Greg KH
2010-01-21 4:15 ` [26/30] i2c: Do not use device name after device_unregister Greg KH
2010-01-21 4:15 ` [27/30] i2c/pca: Dont use *_interruptible Greg KH
2010-01-21 4:15 ` [28/30] serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device Greg KH
2010-01-21 4:15 ` [29/30] sched: Fix task priority bug Greg KH
2010-01-21 4:15 ` [30/30] vfs: Fix vmtruncate() regression Greg KH
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=20100121041833.110428612@mini.kroah.org \
--to=gregkh@suse.de \
--cc=Nanhai.zou@intel.com \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=eric@anholt.net \
--cc=linux-kernel@vger.kernel.org \
--cc=stable-review@kernel.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=zhenyuw@linux.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
Powered by JetHome