From: Greg KH <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk, Daniel Vetter <daniel.vetter@ffwll.ch>,
Chris Wilson <chris@chris-wilson.co.uk>,
Keith Packard <keithp@keithp.com>,
Eugeni Dodonov <eugeni.dodonov@intel.com>
Subject: [patch 28/55] drm/i915: check ACTHD of all rings
Date: Fri, 10 Feb 2012 14:33:32 -0800 [thread overview]
Message-ID: <20120210223442.735734708@clark.kroah.org> (raw)
In-Reply-To: <20120210223500.GA24178@kroah.com>
3.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Vetter <daniel.vetter@ffwll.ch>
commit 097354eb14fa94d31a09c64d640643f58e4a5a9a upstream.
Otherwise hangcheck spuriously fires when running blitter/bsd-only
workloads.
Contrary to a similar patch by Ben Widawsky this does not check
INSTDONE of the other rings. Chris Wilson implied that in a failure to
detect a hang, most likely because INSTDONE was fluctuating. Thus only
check ACTHD, which as far as I know is rather reliable. Also, blitter
and bsd rings can't launch complex tasks from a single instruction
(like 3D_PRIM on the render with complex or even infinite shaders).
This fixes spurious gpu hang detection when running
tests/gem_hangcheck_forcewake on snb/ivb.
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/i915/i915_drv.h | 2 ++
drivers/gpu/drm/i915/i915_irq.c | 13 ++++++++++---
2 files changed, 12 insertions(+), 3 deletions(-)
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -325,6 +325,8 @@ typedef struct drm_i915_private {
struct timer_list hangcheck_timer;
int hangcheck_count;
uint32_t last_acthd;
+ uint32_t last_acthd_bsd;
+ uint32_t last_acthd_blt;
uint32_t last_instdone;
uint32_t last_instdone1;
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1665,7 +1665,7 @@ void i915_hangcheck_elapsed(unsigned lon
{
struct drm_device *dev = (struct drm_device *)data;
drm_i915_private_t *dev_priv = dev->dev_private;
- uint32_t acthd, instdone, instdone1;
+ uint32_t acthd, instdone, instdone1, acthd_bsd, acthd_blt;
bool err = false;
/* If all work is done then ACTHD clearly hasn't advanced. */
@@ -1679,16 +1679,21 @@ void i915_hangcheck_elapsed(unsigned lon
}
if (INTEL_INFO(dev)->gen < 4) {
- acthd = I915_READ(ACTHD);
instdone = I915_READ(INSTDONE);
instdone1 = 0;
} else {
- acthd = I915_READ(ACTHD_I965);
instdone = I915_READ(INSTDONE_I965);
instdone1 = I915_READ(INSTDONE1);
}
+ acthd = intel_ring_get_active_head(&dev_priv->ring[RCS]);
+ acthd_bsd = HAS_BSD(dev) ?
+ intel_ring_get_active_head(&dev_priv->ring[VCS]) : 0;
+ acthd_blt = HAS_BLT(dev) ?
+ intel_ring_get_active_head(&dev_priv->ring[BCS]) : 0;
if (dev_priv->last_acthd == acthd &&
+ dev_priv->last_acthd_bsd == acthd_bsd &&
+ dev_priv->last_acthd_blt == acthd_blt &&
dev_priv->last_instdone == instdone &&
dev_priv->last_instdone1 == instdone1) {
if (dev_priv->hangcheck_count++ > 1) {
@@ -1720,6 +1725,8 @@ void i915_hangcheck_elapsed(unsigned lon
dev_priv->hangcheck_count = 0;
dev_priv->last_acthd = acthd;
+ dev_priv->last_acthd_bsd = acthd_bsd;
+ dev_priv->last_acthd_blt = acthd_blt;
dev_priv->last_instdone = instdone;
dev_priv->last_instdone1 = instdone1;
}
next prev parent reply other threads:[~2012-02-10 22:47 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-10 22:35 [patch 00/55] 3.0.21-stable review Greg KH
2012-02-10 22:33 ` [patch 01/55] readahead: fix pipeline break caused by block plug Greg KH
2012-02-10 22:33 ` [patch 02/55] ALSA: HDA: Fix duplicated output to more than one codec Greg KH
2012-02-10 22:33 ` [patch 03/55] ASoC: wm_hubs: Enable line out VMID buffer for single ended line outputs Greg KH
2012-02-10 22:33 ` [patch 04/55] ASoC: wm_hubs: fix wrong bits for LINEOUT2 N/P mixer Greg KH
2012-02-10 22:33 ` [patch 05/55] ARM: 7306/1: vfp: flush thread hwstate before restoring context from sigframe Greg KH
2012-02-10 22:33 ` [patch 06/55] ARM: 7307/1: vfp: fix ptrace regset modification race Greg KH
2012-02-10 22:33 ` [patch 07/55] ARM: 7308/1: vfp: flush thread hwstate before copying ptrace registers Greg KH
2012-02-10 22:33 ` [patch 08/55] ARM: OMAP2+: GPMC: fix device size setup Greg KH
2012-02-10 22:33 ` [patch 09/55] drivers/tty/vt/vt_ioctl.c: fix KDFONTOP 32bit compatibility layer Greg KH
2012-02-10 22:33 ` [patch 10/55] proc: mem_release() should check mm != NULL Greg KH
2012-02-10 22:33 ` [patch 11/55] proc: unify mem_read() and mem_write() Greg KH
2012-02-10 22:33 ` [patch 12/55] proc: make sure mem_open() doesnt pin the targets memory Greg KH
2012-02-10 22:33 ` [patch 13/55] firewire: ohci: add reset packet quirk for SB Audigy Greg KH
2012-02-10 22:33 ` [patch 14/55] firewire: ohci: disable MSI on Ricoh controllers Greg KH
2012-02-10 22:33 ` [patch 15/55] IB/mlx4: pass SMP vendor-specific attribute MADs to firmware Greg KH
2012-02-10 22:33 ` [patch 16/55] kprobes: fix a memory leak in function pre_handler_kretprobe() Greg KH
2012-02-10 22:33 ` [patch 17/55] at_hdmac: bugfix for enabling channel irq Greg KH
2012-02-10 22:33 ` [patch 18/55] mm/filemap_xip.c: fix race condition in xip_file_fault() Greg KH
2012-02-10 22:33 ` [patch 19/55] mm: compaction: check pfn_valid when entering a new MAX_ORDER_NR_PAGES block during isolation for migration Greg KH
2012-02-10 22:33 ` [patch 20/55] drm/radeon: Set DESKTOP_HEIGHT register to the framebuffer (not mode) height Greg KH
2012-02-10 22:33 ` [patch 21/55] drm/nouveau/gem: fix fence_sync race / oops Greg KH
2012-02-10 22:33 ` [patch 22/55] drm/radeon/kms: disable output polling when suspended Greg KH
2012-02-10 22:33 ` [patch 23/55] sched/rt: Fix task stack corruption under __ARCH_WANT_INTERRUPTS_ON_CTXSW Greg KH
2012-02-10 22:33 ` [patch 24/55] ASoC: Ensure we generate a driver name Greg KH
2012-02-10 22:33 ` [patch 25/55] udf: Mark LVID buffer as uptodate before marking it dirty Greg KH
2012-02-10 22:33 ` [patch 26/55] drm/i915: HDMI hot remove notification to audio driver Greg KH
2012-02-10 22:33 ` [patch 27/55] drm/i915: DisplayPort " Greg KH
2012-02-10 22:33 ` Greg KH [this message]
2012-02-10 22:33 ` [patch 29/55] drm/i915: Fix TV Out refresh rate Greg KH
2012-02-10 22:33 ` [patch 30/55] drm/i915: handle 3rd pipe Greg KH
2012-02-10 22:33 ` [patch 31/55] eCryptfs: Infinite loop due to overflow in ecryptfs_write() Greg KH
2012-02-10 22:33 ` [patch 32/55] cifs: Fix oops in session setup code for null user mounts Greg KH
2012-02-10 22:33 ` [patch 33/55] atmel_lcdfb: fix usage of CONTRAST_CTR in suspend/resume Greg KH
2012-02-10 22:33 ` [patch 34/55] lockdep, bug: Exclude TAINT_FIRMWARE_WORKAROUND from disabling lockdep Greg KH
2012-02-10 22:33 ` [patch 35/55] hwmon: (w83627ehf) Fix number of fans for NCT6776F Greg KH
2012-02-10 22:33 ` [patch 36/55] ASoC: wm_hubs: Fix routing of input PGAs to line output mixer Greg KH
2012-02-10 22:33 ` [patch 37/55] ASoC: wm_hubs: Correct line input to line output 2 paths Greg KH
2012-02-10 22:33 ` [patch 38/55] ASoC: wm8962: Fix word length configuration Greg KH
2012-02-10 22:33 ` [patch 39/55] pcmcia: fix socket refcount decrementing on each resume Greg KH
2012-02-10 22:33 ` [patch 40/55] mm: compaction: check for overlapping nodes during isolation for migration Greg KH
2012-02-10 22:33 ` [patch 41/55] mm: fix UP THP spin_is_locked BUGs Greg KH
2012-02-10 22:33 ` [patch 42/55] target: Use correct preempted registration sense code Greg KH
2012-02-10 22:33 ` [patch 43/55] target: Allow PERSISTENT RESERVE IN for non-reservation holder Greg KH
2012-02-10 22:33 ` [patch 44/55] target: Correct sense key for INVALID FIELD IN {PARAMETER LIST,CDB} Greg KH
2012-02-10 22:33 ` [patch 45/55] Staging: asus_oled: fix image processing Greg KH
2012-02-10 22:33 ` [patch 46/55] Staging: asus_oled: fix NULL-ptr crash on unloading Greg KH
2012-02-10 22:33 ` [patch 47/55] staging: r8712u: Add new Sitecom UsB ID Greg KH
2012-02-10 22:33 ` [patch 48/55] usb: gadget: zero: fix bug in loopback autoresume handling Greg KH
2012-02-10 22:33 ` [patch 49/55] usb: Skip PCI USB quirk handling for Netlogic XLP Greg KH
2012-02-10 22:33 ` [patch 50/55] USB: usbserial: add new PID number (0xa951) to the ftdi driver Greg KH
2012-02-10 22:33 ` [patch 51/55] USB: add new zte 3g-dongles pid to option.c Greg KH
2012-02-10 22:33 ` [patch 52/55] mmc: cb710 core: Add missing spin_lock_init for irq_lock of struct cb710_chip Greg KH
2012-02-10 22:33 ` [patch 53/55] [CPUFREQ] powernow-k8: Avoid Pstate MSR accesses on systems supporting CPB Greg KH
2012-02-10 22:33 ` [patch 54/55] [CPUFREQ] powernow-k8: Fix indexing issue Greg KH
2012-02-10 22:33 ` [patch 55/55] [PATCH] net: fix NULL dereferences in check_peer_redir() 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=20120210223442.735734708@clark.kroah.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chris@chris-wilson.co.uk \
--cc=daniel.vetter@ffwll.ch \
--cc=eugeni.dodonov@intel.com \
--cc=keithp@keithp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.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
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