1 |
remi 08/10/19 21:36:06 |
2 |
|
3 |
Added: |
4 |
2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch |
5 |
2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch |
6 |
Log: |
7 |
x11-libs/libdrm: bump to 2.4.0 (under p.mask, some drivers are broken, see bug #242698) |
8 |
(Portage version: 2.2_rc12/cvs/Linux 2.6.26-gentoo-r1 i686) |
9 |
|
10 |
Revision Changes Path |
11 |
1.1 x11-libs/libdrm/files/2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch |
12 |
|
13 |
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 |
14 |
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 |
15 |
|
16 |
Index: 2.4.0-intel-avoid-deadlock-in-intel_bufmgr_fake.patch |
17 |
=================================================================== |
18 |
From 769197c8f16eaf3c0a476a4459e535afd4a939cb Mon Sep 17 00:00:00 2001 |
19 |
From: Xiang, Haihao <haihao.xiang@×××××.com> |
20 |
Date: Thu, 16 Oct 2008 10:37:30 +0800 |
21 |
Subject: [PATCH] intel: avoid deadlock in intel_bufmgr_fake. |
22 |
|
23 |
--- |
24 |
libdrm/intel/intel_bufmgr_fake.c | 12 ++++++------ |
25 |
1 files changed, 6 insertions(+), 6 deletions(-) |
26 |
|
27 |
diff --git a/libdrm/intel/intel_bufmgr_fake.c b/libdrm/intel/intel_bufmgr_fake.c |
28 |
index 8e476c4..c82ce5a 100644 |
29 |
--- a/libdrm/intel/intel_bufmgr_fake.c |
30 |
+++ b/libdrm/intel/intel_bufmgr_fake.c |
31 |
@@ -1053,12 +1053,10 @@ dri_fake_bo_unmap(dri_bo *bo) |
32 |
} |
33 |
|
34 |
static void |
35 |
-dri_fake_kick_all(dri_bufmgr_fake *bufmgr_fake) |
36 |
+dri_fake_kick_all_locked(dri_bufmgr_fake *bufmgr_fake) |
37 |
{ |
38 |
struct block *block, *tmp; |
39 |
|
40 |
- pthread_mutex_lock(&bufmgr_fake->lock); |
41 |
- |
42 |
bufmgr_fake->performed_rendering = 0; |
43 |
/* okay for ever BO that is on the HW kick it off. |
44 |
seriously not afraid of the POLICE right now */ |
45 |
@@ -1073,7 +1071,6 @@ dri_fake_kick_all(dri_bufmgr_fake *bufmgr_fake) |
46 |
bo_fake->dirty = 1; |
47 |
} |
48 |
|
49 |
- pthread_mutex_unlock(&bufmgr_fake->lock); |
50 |
} |
51 |
|
52 |
static int |
53 |
@@ -1358,7 +1355,7 @@ dri_fake_bo_exec(dri_bo *bo, int used, |
54 |
if (bufmgr_fake->fail == 1) { |
55 |
if (retry_count == 0) { |
56 |
retry_count++; |
57 |
- dri_fake_kick_all(bufmgr_fake); |
58 |
+ dri_fake_kick_all_locked(bufmgr_fake); |
59 |
bufmgr_fake->fail = 0; |
60 |
goto restart; |
61 |
} else /* dump out the memory here */ |
62 |
@@ -1369,8 +1366,10 @@ dri_fake_bo_exec(dri_bo *bo, int used, |
63 |
|
64 |
if (bufmgr_fake->exec != NULL) { |
65 |
int ret = bufmgr_fake->exec(bo, used, bufmgr_fake->exec_priv); |
66 |
- if (ret != 0) |
67 |
+ if (ret != 0) { |
68 |
+ pthread_mutex_unlock(&bufmgr_fake->lock); |
69 |
return ret; |
70 |
+ } |
71 |
} else { |
72 |
batch.start = bo->offset; |
73 |
batch.used = used; |
74 |
@@ -1382,6 +1381,7 @@ dri_fake_bo_exec(dri_bo *bo, int used, |
75 |
if (drmCommandWrite(bufmgr_fake->fd, DRM_I915_BATCHBUFFER, &batch, |
76 |
sizeof(batch))) { |
77 |
drmMsg("DRM_I915_BATCHBUFFER: %d\n", -errno); |
78 |
+ pthread_mutex_unlock(&bufmgr_fake->lock); |
79 |
return -errno; |
80 |
} |
81 |
} |
82 |
-- |
83 |
1.6.0.2 |
84 |
|
85 |
|
86 |
|
87 |
|
88 |
1.1 x11-libs/libdrm/files/2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch |
89 |
|
90 |
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 |
91 |
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 |
92 |
|
93 |
Index: 2.4.0-intel-ioctl-is-not-defined-to-return-errno.patch |
94 |
=================================================================== |
95 |
From a59ea02ff839fa0801763a90beb8b232b933c746 Mon Sep 17 00:00:00 2001 |
96 |
From: Keith Packard <keithp@××××××.com> |
97 |
Date: Thu, 16 Oct 2008 21:15:01 -0700 |
98 |
Subject: [PATCH] intel: ioctl is not defined to return -errno |
99 |
|
100 |
Don't count on ioctl returning -errno; use errno directly. |
101 |
|
102 |
Signed-off-by: Keith Packard <keithp@××××××.com> |
103 |
Signed-off-by: Eric Anholt <eric@××××××.net> |
104 |
--- |
105 |
libdrm/intel/intel_bufmgr_gem.c | 2 +- |
106 |
1 files changed, 1 insertions(+), 1 deletions(-) |
107 |
|
108 |
diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c |
109 |
index 33853c4..081eb2a 100644 |
110 |
--- a/libdrm/intel/intel_bufmgr_gem.c |
111 |
+++ b/libdrm/intel/intel_bufmgr_gem.c |
112 |
@@ -790,7 +790,7 @@ dri_gem_bo_exec(dri_bo *bo, int used, |
113 |
|
114 |
do { |
115 |
ret = ioctl(bufmgr_gem->fd, DRM_IOCTL_I915_GEM_EXECBUFFER, &execbuf); |
116 |
- } while (ret == -EAGAIN); |
117 |
+ } while (ret != 0 && errno == EAGAIN); |
118 |
|
119 |
intel_update_buffer_offsets (bufmgr_gem); |
120 |
|
121 |
-- |
122 |
1.6.0.2 |