From: Saul Wold <sgw@linux.intel.com>
To: Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH 1/1] qemu: Fix gl failure from 64b target on 32b host
Date: Sat, 07 Apr 2012 13:13:15 -0700 [thread overview]
Message-ID: <4F809FDB.6030303@linux.intel.com> (raw)
In-Reply-To: <0d5664e615f94682afe05c5889c53373ba837b36.1333699326.git.edwin.zhai@intel.com>
On 04/06/2012 01:04 AM, edwin.zhai@intel.com wrote:
> From: Zhai Edwin<edwin.zhai@intel.com>
>
> 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.
>
> Signed-off-by: Zhai Edwin<edwin.zhai@intel.com>
> ---
> .../qemu/qemu-0.15.1/opengl-args-copy-fix.patch | 66 ++++++++++++++++++++
> meta/recipes-devtools/qemu/qemu_0.15.1.bb | 1 +
> 2 files changed, 67 insertions(+), 0 deletions(-)
> create mode 100644 meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch
>
> 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 0000000..ddf4e4a
> --- /dev/null
> +++ b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch
> @@ -0,0 +1,66 @@
> +This patch fix GL application failure from 64b target on 32b host
> +
> +64b target produce 64b args buffer, but qemu parse it as 32b and get wrong
> +data. To avoid this, the type of args buffer in qemu should be same as target,
> +that is, target_phys_addr_t. The only potential issue is that we need copy
> +the data in buffer one by one, or else data corruption when 32b/64b for
> +target/host combination.
> +
> +Upstream-Status: Inappropriate [other] - depends on qemu gl patch
> +
> +Signed-off-by: Zhai Edwin<edwin.zhai@intel.com>
> +
> +Index: qemu-0.15.1/target-i386/opengl_func.h
> +===================================================================
> +--- qemu-0.15.1.orig/target-i386/opengl_func.h 2012-04-06 10:00:08.000000000 +0800
> ++++ qemu-0.15.1/target-i386/opengl_func.h 2012-04-06 10:47:38.000000000 +0800
> +@@ -25,10 +25,10 @@
> + #include "mesa_gl.h"
> + #include "mesa_glext.h"
> +
> +-/* Argument list are internally of a type that can hold a target pointer
> +- * or a host pointer. If 32b target runs on 64b host, it should be big enough
> +- * to hold host pointer */
> +-typedef long unsigned int arg_t;
> ++/* Argument list are internally of a type that point to a buffer passed from
> ++ * target. It should have same type as target, so that we can support 32b
> ++ * target on 64b host, and vice versa */
> ++typedef target_phys_addr_t arg_t;
> +
> + enum {
> + TYPE_NONE,
> +Index: qemu-0.15.1/Makefile.target
> +===================================================================
> +--- qemu-0.15.1.orig/Makefile.target 2012-04-06 10:00:08.000000000 +0800
> ++++ qemu-0.15.1/Makefile.target 2012-04-06 10:00:08.000000000 +0800
> +@@ -128,7 +128,7 @@
> + gl_beginend.h: ../target-i386/beginend_funcs.sh
> + $< > $@
> + opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h
> +- $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386
> ++ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H
> +
> + #########################################################
> + # Linux user emulator target
> +Index: qemu-0.15.1/target-i386/opengl_exec.c
> +===================================================================
> +--- qemu-0.15.1.orig/target-i386/opengl_exec.c 2012-04-06 10:00:08.000000000 +0800
> ++++ qemu-0.15.1/target-i386/opengl_exec.c 2012-04-06 10:39:22.000000000 +0800
> +@@ -37,16 +37,12 @@
> + #include<mesa_gl.h>
> + #include<mesa_glx.h>
> +
> +-// TODO
> +-typedef long unsigned int target_phys_addr_t;
> +-
> ++#include "exec.h"
> + #include "opengl_func.h"
> +
> + #include "mesa_glu.h"
> + #include "mesa_mipmap.c"
> +
> +-#include "../qemu-common.h"
> +-
> + //#define SYSTEMATIC_ERROR_CHECK
> + #define BUFFER_BEGINEND
> + #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 3a4ef32..d01e79d 100644
> --- a/meta/recipes-devtools/qemu/qemu_0.15.1.bb
> +++ b/meta/recipes-devtools/qemu/qemu_0.15.1.bb
> @@ -29,6 +29,7 @@ QEMUGLPATCHES = "\
> file://enable-i386-linux-user.patch \
> file://qemugl-fix.patch \
> file://opengl-sdl-fix.patch \
> + file://opengl-args-copy-fix.patch \
> "
>
> SRC_URI_append_virtclass-native = "\
Needs a PR bump, which I added for testing.
Sau!
next prev parent reply other threads:[~2012-04-07 20:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-06 8:04 [PATCH 0/1] Fix gl failure when 64b target on 32b host, Edwin, Apr6, 2012 edwin.zhai
2012-04-06 8:04 ` [PATCH 1/1] qemu: Fix gl failure from 64b target on 32b host edwin.zhai
2012-04-07 20:13 ` Saul Wold [this message]
2012-04-10 15:27 ` [PATCH 0/1] Fix gl failure when 64b target on 32b host, Edwin, Apr6, 2012 Saul Wold
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F809FDB.6030303@linux.intel.com \
--to=sgw@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.