remi 08/10/19 21:36:06
Added:
2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch
2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch
Log:
x11-libs/libdrm: bump to 2.4.0 (under p.mask, some drivers are broken, see bug #242698)
(Portage version: 2.2_rc12/cvs/Linux 2.6.26-gentoo-r1 i686)
Revision Changes Path
1.1 x11-libs/libdrm/files/2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/libdrm/files/2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/libdrm/files/2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch?rev=1.1&content-type=text/plain
Index: 2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch
===================================================================
From 769197c8f16eaf3c0a476a4459e535afd4a939cb Mon Sep 17 00:00:00 2001
From: Xiang, Haihao <haihao.xiang@...>
Date: Thu, 16 Oct 2008 10:37:30 +0800
Subject: [PATCH] intel: avoid deadlock in intel_bufmgr_fake.
---
libdrm/intel/intel_bufmgr_fake.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/libdrm/intel/intel_bufmgr_fake.c b/libdrm/intel/intel_bufmgr_fake.c
index 8e476c4..c82ce5a 100644
--- a/libdrm/intel/intel_bufmgr_fake.c
+++ b/libdrm/intel/intel_bufmgr_fake.c
@@ -1053,12 +1053,10 @@ dri_fake_bo_unmap(dri_bo *bo)
}
static void
-dri_fake_kick_all(dri_bufmgr_fake *bufmgr_fake)
+dri_fake_kick_all_locked(dri_bufmgr_fake *bufmgr_fake)
{
struct block *block, *tmp;
- pthread_mutex_lock(&bufmgr_fake->lock);
-
bufmgr_fake->performed_rendering = 0;
/* okay for ever BO that is on the HW kick it off.
seriously not afraid of the POLICE right now */
@@ -1073,7 +1071,6 @@ dri_fake_kick_all(dri_bufmgr_fake *bufmgr_fake)
bo_fake->dirty = 1;
}
- pthread_mutex_unlock(&bufmgr_fake->lock);
}
static int
@@ -1358,7 +1355,7 @@ dri_fake_bo_exec(dri_bo *bo, int used,
if (bufmgr_fake->fail == 1) {
if (retry_count == 0) {
retry_count++;
- dri_fake_kick_all(bufmgr_fake);
+ dri_fake_kick_all_locked(bufmgr_fake);
bufmgr_fake->fail = 0;
goto restart;
} else /* dump out the memory here */
@@ -1369,8 +1366,10 @@ dri_fake_bo_exec(dri_bo *bo, int used,
if (bufmgr_fake->exec != NULL) {
int ret = bufmgr_fake->exec(bo, used, bufmgr_fake->exec_priv);
- if (ret != 0)
+ if (ret != 0) {
+ pthread_mutex_unlock(&bufmgr_fake->lock);
return ret;
+ }
} else {
batch.start = bo->offset;
batch.used = used;
@@ -1382,6 +1381,7 @@ dri_fake_bo_exec(dri_bo *bo, int used,
if (drmCommandWrite(bufmgr_fake->fd, DRM_I915_BATCHBUFFER, &batch,
sizeof(batch))) {
drmMsg("DRM_I915_BATCHBUFFER: %d\n", -errno);
+ pthread_mutex_unlock(&bufmgr_fake->lock);
return -errno;
}
}
--
1.6.0.2
1.1 x11-libs/libdrm/files/2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/libdrm/files/2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/x11-libs/libdrm/files/2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch?rev=1.1&content-type=text/plain
Index: 2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch
===================================================================
From a59ea02ff839fa0801763a90beb8b232b933c746 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@...>
Date: Thu, 16 Oct 2008 21:15:01 -0700
Subject: [PATCH] intel: ioctl is not defined to return -errno
Don't count on ioctl returning -errno; use errno directly.
Signed-off-by: Keith Packard <keithp@...>
Signed-off-by: Eric Anholt <eric@...>
---
libdrm/intel/intel_bufmgr_gem.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c
index 33853c4..081eb2a 100644
--- a/libdrm/intel/intel_bufmgr_gem.c
+++ b/libdrm/intel/intel_bufmgr_gem.c
@@ -790,7 +790,7 @@ dri_gem_bo_exec(dri_bo *bo, int used,
do {
ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_EXECBUFFER, &execbuf);
- } while (ret == -EAGAIN);
+ } while (ret != 0 && errno == EAGAIN);
intel_update_buffer_offsets (bufmgr_gem);
--
1.6.0.2
|