diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2008-10-21 16:25:42 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@openedhand.com> | 2008-10-21 16:26:53 +0200 |
commit | e169b23e66575856c5712b8f2162e305d8560d6b (patch) | |
tree | 44b2549bfc20563c79808b92db16baf7101adda1 /meta-moblin/packages/linux/linux-moblin-2.6.27/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch | |
parent | e5c53ce035eb36fc1b416e9971582a45754844be (diff) | |
download | poky-e169b23e66575856c5712b8f2162e305d8560d6b.tar.gz |
linux-moblin: Add 2.6.27 moblin kernel
This will be the default moblin kernel.
We also moved the 2.6.27-rc* kernels to meta-moblin.
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.27/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch')
-rw-r--r-- | meta-moblin/packages/linux/linux-moblin-2.6.27/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.27/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch b/meta-moblin/packages/linux/linux-moblin-2.6.27/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch new file mode 100644 index 0000000000..8736250f00 --- /dev/null +++ b/meta-moblin/packages/linux/linux-moblin-2.6.27/0006-i915-Track-progress-inside-of-batchbuffers-for-dete.patch | |||
@@ -0,0 +1,46 @@ | |||
1 | commit 1236e8610ab9c6f9f8297e60530bedb2640c7224 | ||
2 | Author: Keith Packard <keithp@keithp.com> | ||
3 | Date: Wed Jul 30 12:21:20 2008 -0700 | ||
4 | |||
5 | i915: Track progress inside of batchbuffers for determining wedgedness. | ||
6 | |||
7 | This avoids early termination for long-running commands. | ||
8 | |||
9 | Signed-off-by: Eric Anholt <eric@anholt.net> | ||
10 | Signed-off-by: Dave Airlie <airlied@redhat.com> | ||
11 | |||
12 | diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c | ||
13 | index 10bfb0c..4c72a01 100644 | ||
14 | --- a/drivers/gpu/drm/i915/i915_dma.c | ||
15 | +++ b/drivers/gpu/drm/i915/i915_dma.c | ||
16 | @@ -40,11 +40,15 @@ int i915_wait_ring(struct drm_device * dev, int n, const char *caller) | ||
17 | { | ||
18 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
19 | drm_i915_ring_buffer_t *ring = &(dev_priv->ring); | ||
20 | + u32 acthd_reg = IS_I965G(dev) ? ACTHD_I965 : ACTHD; | ||
21 | + u32 last_acthd = I915_READ(acthd_reg); | ||
22 | + u32 acthd; | ||
23 | u32 last_head = I915_READ(PRB0_HEAD) & HEAD_ADDR; | ||
24 | int i; | ||
25 | |||
26 | - for (i = 0; i < 10000; i++) { | ||
27 | + for (i = 0; i < 100000; i++) { | ||
28 | ring->head = I915_READ(PRB0_HEAD) & HEAD_ADDR; | ||
29 | + acthd = I915_READ(acthd_reg); | ||
30 | ring->space = ring->head - (ring->tail + 8); | ||
31 | if (ring->space < 0) | ||
32 | ring->space += ring->Size; | ||
33 | @@ -55,8 +59,13 @@ int i915_wait_ring(struct drm_device * dev, int n, const char *caller) | ||
34 | |||
35 | if (ring->head != last_head) | ||
36 | i = 0; | ||
37 | + if (acthd != last_acthd) | ||
38 | + i = 0; | ||
39 | |||
40 | last_head = ring->head; | ||
41 | + last_acthd = acthd; | ||
42 | + msleep_interruptible(10); | ||
43 | + | ||
44 | } | ||
45 | |||
46 | return -EBUSY; | ||