diff options
author | Samuel Ortiz <sameo@openedhand.com> | 2008-10-09 17:00:45 +0000 |
---|---|---|
committer | Samuel Ortiz <sameo@openedhand.com> | 2008-10-09 17:00:45 +0000 |
commit | d89d52d3ec86cf95dd93bb78c9b0ab537200e180 (patch) | |
tree | ac2667cd2ffa466be3f333c032045b9e3a8805d2 /meta/packages/linux/linux-moblin-2.6.27-rc6/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch | |
parent | 3d40acdf3e5e6d7da75862fa309b58f0d555141a (diff) | |
download | openembedded-core-d89d52d3ec86cf95dd93bb78c9b0ab537200e180.tar.gz openembedded-core-d89d52d3ec86cf95dd93bb78c9b0ab537200e180.tar.bz2 openembedded-core-d89d52d3ec86cf95dd93bb78c9b0ab537200e180.tar.xz openembedded-core-d89d52d3ec86cf95dd93bb78c9b0ab537200e180.zip |
linux-moblin: 2.6.27-rc6 kernel
That includes the fastboot patches. An eee boots in 10s with that
kernel.
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5470 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/linux/linux-moblin-2.6.27-rc6/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch')
-rw-r--r-- | meta/packages/linux/linux-moblin-2.6.27-rc6/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/packages/linux/linux-moblin-2.6.27-rc6/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch b/meta/packages/linux/linux-moblin-2.6.27-rc6/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch new file mode 100644 index 000000000..8736250f0 --- /dev/null +++ b/meta/packages/linux/linux-moblin-2.6.27-rc6/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch @@ -0,0 +1,46 @@ +commit 1236e8610ab9c6f9f8297e60530bedb2640c7224 +Author: Keith Packard <keithp@keithp.com> +Date: Wed Jul 30 12:21:20 2008 -0700 + + i915: Track progress inside of batchbuffers for determining wedgedness. + + This avoids early termination for long-running commands. + + Signed-off-by: Eric Anholt <eric@anholt.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + +diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c +index 10bfb0c..4c72a01 100644 +--- a/drivers/gpu/drm/i915/i915_dma.c ++++ b/drivers/gpu/drm/i915/i915_dma.c +@@ -40,11 +40,15 @@ int i915_wait_ring(struct drm_device * dev, int n, const char *caller) + { + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_ring_buffer_t *ring = &(dev_priv->ring); ++ u32 acthd_reg = IS_I965G(dev) ? ACTHD_I965 : ACTHD; ++ u32 last_acthd = I915_READ(acthd_reg); ++ u32 acthd; + u32 last_head = I915_READ(PRB0_HEAD) & HEAD_ADDR; + int i; + +- for (i = 0; i < 10000; i++) { ++ for (i = 0; i < 100000; i++) { + ring->head = I915_READ(PRB0_HEAD) & HEAD_ADDR; ++ acthd = I915_READ(acthd_reg); + ring->space = ring->head - (ring->tail + 8); + if (ring->space < 0) + ring->space += ring->Size; +@@ -55,8 +59,13 @@ int i915_wait_ring(struct drm_device * dev, int n, const char *caller) + + if (ring->head != last_head) + i = 0; ++ if (acthd != last_acthd) ++ i = 0; + + last_head = ring->head; ++ last_acthd = acthd; ++ msleep_interruptible(10); ++ + } + + return -EBUSY; |