summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhai Edwin <edwin.zhai@intel.com>2012-04-06 14:39:39 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-04-10 13:31:59 +0100
commitfe0b3333a5000918e06417205584d6efe007e2b5 (patch)
treed2e600d421e961a7a7c62f52be3e1f430f0f21dc
parentc54831fa897b43944d53db5e6b898e1c828fd582 (diff)
downloadpoky-fe0b3333a5000918e06417205584d6efe007e2b5.tar.gz
qemu: Fix gl failure from 64b target on 32b host
Data from 64b target is truncated by 32b host. This patch makes type of data buf in host same as target. [YOCTO #2221] got fixed. (From OE-Core rev: d9f12cee3847cbf1cf9fc20cb614f8cd67d2a2ee) Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> [Bumped PR - sgw] Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch66
-rw-r--r--meta/recipes-devtools/qemu/qemu_0.15.1.bb3
2 files changed, 68 insertions, 1 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch
new file mode 100644
index 0000000000..ddf4e4a676
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch
@@ -0,0 +1,66 @@
1This patch fix GL application failure from 64b target on 32b host
2
364b target produce 64b args buffer, but qemu parse it as 32b and get wrong
4data. To avoid this, the type of args buffer in qemu should be same as target,
5that is, target_phys_addr_t. The only potential issue is that we need copy
6the data in buffer one by one, or else data corruption when 32b/64b for
7target/host combination.
8
9Upstream-Status: Inappropriate [other] - depends on qemu gl patch
10
11Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
12
13Index: qemu-0.15.1/target-i386/opengl_func.h
14===================================================================
15--- qemu-0.15.1.orig/target-i386/opengl_func.h 2012-04-06 10:00:08.000000000 +0800
16+++ qemu-0.15.1/target-i386/opengl_func.h 2012-04-06 10:47:38.000000000 +0800
17@@ -25,10 +25,10 @@
18 #include "mesa_gl.h"
19 #include "mesa_glext.h"
20
21-/* Argument list are internally of a type that can hold a target pointer
22- * or a host pointer. If 32b target runs on 64b host, it should be big enough
23- * to hold host pointer */
24-typedef long unsigned int arg_t;
25+/* Argument list are internally of a type that point to a buffer passed from
26+ * target. It should have same type as target, so that we can support 32b
27+ * target on 64b host, and vice versa */
28+typedef target_phys_addr_t arg_t;
29
30 enum {
31 TYPE_NONE,
32Index: qemu-0.15.1/Makefile.target
33===================================================================
34--- qemu-0.15.1.orig/Makefile.target 2012-04-06 10:00:08.000000000 +0800
35+++ qemu-0.15.1/Makefile.target 2012-04-06 10:00:08.000000000 +0800
36@@ -128,7 +128,7 @@
37 gl_beginend.h: ../target-i386/beginend_funcs.sh
38 $< > $@
39 opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h
40- $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386
41+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H
42
43 #########################################################
44 # Linux user emulator target
45Index: qemu-0.15.1/target-i386/opengl_exec.c
46===================================================================
47--- qemu-0.15.1.orig/target-i386/opengl_exec.c 2012-04-06 10:00:08.000000000 +0800
48+++ qemu-0.15.1/target-i386/opengl_exec.c 2012-04-06 10:39:22.000000000 +0800
49@@ -37,16 +37,12 @@
50 #include <mesa_gl.h>
51 #include <mesa_glx.h>
52
53-// TODO
54-typedef long unsigned int target_phys_addr_t;
55-
56+#include "exec.h"
57 #include "opengl_func.h"
58
59 #include "mesa_glu.h"
60 #include "mesa_mipmap.c"
61
62-#include "../qemu-common.h"
63-
64 //#define SYSTEMATIC_ERROR_CHECK
65 #define BUFFER_BEGINEND
66 #define glGetError() 0
diff --git a/meta/recipes-devtools/qemu/qemu_0.15.1.bb b/meta/recipes-devtools/qemu/qemu_0.15.1.bb
index 3a4ef32a83..05ea5f8ac7 100644
--- a/meta/recipes-devtools/qemu/qemu_0.15.1.bb
+++ b/meta/recipes-devtools/qemu/qemu_0.15.1.bb
@@ -3,7 +3,7 @@ require qemu.inc
3LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \ 3LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
4 file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913" 4 file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
5 5
6PR = "r4" 6PR = "r5"
7 7
8FILESPATH = "${FILE_DIRNAME}/qemu-${PV}" 8FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
9FILESDIR = "${WORKDIR}" 9FILESDIR = "${WORKDIR}"
@@ -29,6 +29,7 @@ QEMUGLPATCHES = "\
29 file://enable-i386-linux-user.patch \ 29 file://enable-i386-linux-user.patch \
30 file://qemugl-fix.patch \ 30 file://qemugl-fix.patch \
31 file://opengl-sdl-fix.patch \ 31 file://opengl-sdl-fix.patch \
32 file://opengl-args-copy-fix.patch \
32 " 33 "
33 34
34SRC_URI_append_virtclass-native = "\ 35SRC_URI_append_virtclass-native = "\