Merge branch 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux into drm-core-next
* 'drm-intel-next' of git://people.freedesktop.org/~keithp/linux: drm/i915: check ACTHD of all rings drm/i915: DisplayPort hot remove notification to audio driver drm/i915: HDMI hot remove notification to audio driver drm/i915: dont trigger hotplug events on unchanged ELD drm/i915: rename audio ELD registers drm/i915: fix ELD writing for SandyBridge
This commit is contained in:
@@ -1669,7 +1669,7 @@ void i915_hangcheck_elapsed(unsigned long data)
|
||||
{
|
||||
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 (!i915_enable_hangcheck)
|
||||
@@ -1686,16 +1686,21 @@ void i915_hangcheck_elapsed(unsigned long data)
|
||||
}
|
||||
|
||||
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) {
|
||||
@@ -1727,6 +1732,8 @@ void i915_hangcheck_elapsed(unsigned long data)
|
||||
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user