Patchwork [1/1] qemu: Fix the qemu GL application start failure.

login
register
mail settings
Submitter Zhai, Edwin
Date April 12, 2011, 12:11 a.m.
Message ID <0323ebf6b38d0ba0d1e955c4a3aca7f96ff3e803.1302565606.git.lei.mei@intel.com>
Download mbox | patch
Permalink /patch/2159/
State New, archived
Headers show

Comments

Zhai, Edwin - April 12, 2011, 12:11 a.m.
From: Zhai Edwin <edwin.zhai@intel.com>

Some turn-on macro/variable are re-arranged, buffer pointer is extended to
support 32/64b combination of target/host.

[YOCTO #688] fixed.

Signed-off-by:  Zhai Edwin <edwin.zhai@intel.com>
---
 .../qemu/qemu-0.14.0/qemugl-fix.patch              |   70 ++++++++++++++++++++
 meta/recipes-devtools/qemu/qemu_0.14.0.bb          |    1 +
 meta/recipes-sato/pimlico/dates_git.bb             |    2 +
 3 files changed, 73 insertions(+), 0 deletions(-)
 create mode 100644 meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
Koen Kooi - April 12, 2011, 12:35 a.m.
Why are the mesa demo packages needed?

Op 11 apr. 2011 om 17:11 heeft Zhai Edwin <edwin.zhai@intel.com> het volgende geschreven:

> From: Zhai Edwin <edwin.zhai@intel.com>
> 
> Some turn-on macro/variable are re-arranged, buffer pointer is extended to
> support 32/64b combination of target/host.
> 
> [YOCTO #688] fixed.
> 
> Signed-off-by:  Zhai Edwin <edwin.zhai@intel.com>
> ---
> .../qemu/qemu-0.14.0/qemugl-fix.patch              |   70 ++++++++++++++++++++
> meta/recipes-devtools/qemu/qemu_0.14.0.bb          |    1 +
> meta/recipes-sato/pimlico/dates_git.bb             |    2 +
> 3 files changed, 73 insertions(+), 0 deletions(-)
> create mode 100644 meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
> 
> diff --git a/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch b/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
> new file mode 100644
> index 0000000..c395b60
> --- /dev/null
> +++ b/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
> @@ -0,0 +1,70 @@
> +This patch fix GL application start failure on qemu 0.14.0.
> +
> +Some turn-on macro/variable are re-arranged, buffer pointer is extended to
> +support 32/64b combination of target/host.
> +
> +This is not perfect fix, and we need consider other GL alternatives in future.
> +
> +Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
> +Index: qemu-0.14.0/target-i386/opengl_func.h
> +===================================================================
> +--- qemu-0.14.0.orig/target-i386/opengl_func.h    2011-04-08 16:43:46.000000000 +0800
> ++++ qemu-0.14.0/target-i386/opengl_func.h    2011-04-08 16:45:55.000000000 +0800
> +@@ -26,8 +26,9 @@
> + #include "mesa_glext.h"
> + 
> + /* Argument list are internally of a type that can hold a target pointer
> +- * or a host pointer.  */
> +-typedef target_phys_addr_t arg_t;
> ++ * 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;
> + 
> + enum {
> +     TYPE_NONE,
> +Index: qemu-0.14.0/target-i386/translate.c
> +===================================================================
> +--- qemu-0.14.0.orig/target-i386/translate.c    2011-04-08 16:19:15.000000000 +0800
> ++++ qemu-0.14.0/target-i386/translate.c    2011-04-08 16:22:03.000000000 +0800
> +@@ -2652,17 +2652,19 @@
> +     s->is_jmp = DISAS_TB_JUMP;
> + }
> + 
> +-int enable_gl = 0;
> ++extern int enable_gl;
> + 
> + /* an interrupt is different from an exception because of the
> +    privilege checks */
> + static void gen_interrupt(DisasContext *s, int intno,
> +                           target_ulong cur_eip, target_ulong next_eip)
> + {
> ++#if !defined(CONFIG_USER_ONLY)
> +     if (enable_gl && intno == 0x99) {
> +         gen_helper_opengl();
> +         return;
> +     }
> ++#endif
> + 
> +     if (s->cc_op != CC_OP_DYNAMIC)
> +         gen_op_set_cc_op(s->cc_op);
> +Index: qemu-0.14.0/vl.c
> +===================================================================
> +--- qemu-0.14.0.orig/vl.c    2011-04-08 16:11:43.000000000 +0800
> ++++ qemu-0.14.0/vl.c    2011-04-08 16:20:05.000000000 +0800
> +@@ -229,7 +229,7 @@
> + unsigned int nb_prom_envs = 0;
> + const char *prom_envs[MAX_PROM_ENVS];
> + int boot_menu;
> +-extern int enable_gl;
> ++int enable_gl = 0;
> + 
> + typedef struct FWBootEntry FWBootEntry;
> + 
> +@@ -1909,6 +1909,7 @@
> +     return popt;
> + }
> + 
> ++#define TARGET_OPENGL_OK
> + int main(int argc, char **argv, char **envp)
> + {
> +     const char *gdbstub_dev = NULL;
> diff --git a/meta/recipes-devtools/qemu/qemu_0.14.0.bb b/meta/recipes-devtools/qemu/qemu_0.14.0.bb
> index d8535b2..e440759 100644
> --- a/meta/recipes-devtools/qemu/qemu_0.14.0.bb
> +++ b/meta/recipes-devtools/qemu/qemu_0.14.0.bb
> @@ -24,6 +24,7 @@ SRC_URI = "\
>     file://spice-qxl-locking-fix-for-qemu-kvm.patch \
>     file://Detect-and-use-GCC-atomic-builtins-for-locking.patch \
>     file://larger_default_ram_size.patch \
> +    file://qemugl-fix.patch \
>     "
> SRC_URI[md5sum] = "f9d145d5c09de9f0984ffe9bd1229970"
> SRC_URI[sha256sum] = "ba21e84d7853217830e167dae9999cdbff481189c6a0bb600ac7fb7201453108"
> diff --git a/meta/recipes-sato/pimlico/dates_git.bb b/meta/recipes-sato/pimlico/dates_git.bb
> index f0a12f8..2823594 100644
> --- a/meta/recipes-sato/pimlico/dates_git.bb
> +++ b/meta/recipes-sato/pimlico/dates_git.bb
> @@ -13,3 +13,5 @@ S = "${WORKDIR}/git"
> SRC_URI = "git://git.gnome.org/${BPN};protocol=git \
>       file://make-382.patch \
>       file://dso_linking_change_build_fix.patch"
> +
> +RDEPENDS_${PN} = "mesa-demos"
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Zhai, Edwin - April 12, 2011, 1:40 a.m.
Sorry,
My mistake.
I forget to remove this debug stuff:(

I'll sending new pull request.


Koen Kooi wrote:
>
> Why are the mesa demo packages needed?
>
> Op 11 apr. 2011 om 17:11 heeft Zhai Edwin <edwin.zhai@intel.com> het 
> volgende geschreven:
>
> > From: Zhai Edwin <edwin.zhai@intel.com>
> >
> > Some turn-on macro/variable are re-arranged, buffer pointer is 
> extended to
> > support 32/64b combination of target/host.
> >
> > [YOCTO #688] fixed.
> >
> > Signed-off-by:  Zhai Edwin <edwin.zhai@intel.com>
> > ---
> > .../qemu/qemu-0.14.0/qemugl-fix.patch              |   70 
> ++++++++++++++++++++
> > meta/recipes-devtools/qemu/qemu_0.14.0.bb          |    1 +
> > meta/recipes-sato/pimlico/dates_git.bb             |    2 +
> > 3 files changed, 73 insertions(+), 0 deletions(-)
> > create mode 100644 
> meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
> >
> > diff --git a/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch 
> b/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
>
> > new file mode 100644
> > index 0000000..c395b60
> > --- /dev/null
> > +++ b/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
> > @@ -0,0 +1,70 @@
> > +This patch fix GL application start failure on qemu 0.14.0.
> > +
> > +Some turn-on macro/variable are re-arranged, buffer pointer is 
> extended to
> > +support 32/64b combination of target/host.
> > +
> > +This is not perfect fix, and we need consider other GL alternatives 
> in future.
> > +
> > +Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
> > +Index: qemu-0.14.0/target-i386/opengl_func.h
> > +===================================================================
> > +--- qemu-0.14.0.orig/target-i386/opengl_func.h    2011-04-08 
> 16:43:46.000000000 +0800
> > ++++ qemu-0.14.0/target-i386/opengl_func.h    2011-04-08 
> 16:45:55.000000000 +0800
> > +@@ -26,8 +26,9 @@
> > + #include "mesa_glext.h"
> > +
> > + /* Argument list are internally of a type that can hold a target 
> pointer
> > +- * or a host pointer.  */
> > +-typedef target_phys_addr_t arg_t;
> > ++ * 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;
> > +
> > + enum {
> > +     TYPE_NONE,
> > +Index: qemu-0.14.0/target-i386/translate.c
> > +===================================================================
> > +--- qemu-0.14.0.orig/target-i386/translate.c    2011-04-08 
> 16:19:15.000000000 +0800
> > ++++ qemu-0.14.0/target-i386/translate.c    2011-04-08 
> 16:22:03.000000000 +0800
> > +@@ -2652,17 +2652,19 @@
> > +     s->is_jmp = DISAS_TB_JUMP;
> > + }
> > +
> > +-int enable_gl = 0;
> > ++extern int enable_gl;
> > +
> > + /* an interrupt is different from an exception because of the
> > +    privilege checks */
> > + static void gen_interrupt(DisasContext *s, int intno,
> > +                           target_ulong cur_eip, target_ulong 
> next_eip)
> > + {
> > ++#if !defined(CONFIG_USER_ONLY)
> > +     if (enable_gl && intno == 0x99) {
> > +         gen_helper_opengl();
> > +         return;
> > +     }
> > ++#endif
> > +
> > +     if (s->cc_op != CC_OP_DYNAMIC)
> > +         gen_op_set_cc_op(s->cc_op);
> > +Index: qemu-0.14.0/vl.c
> > +===================================================================
> > +--- qemu-0.14.0.orig/vl.c    2011-04-08 16:11:43.000000000 +0800
> > ++++ qemu-0.14.0/vl.c    2011-04-08 16:20:05.000000000 +0800
> > +@@ -229,7 +229,7 @@
> > + unsigned int nb_prom_envs = 0;
> > + const char *prom_envs[MAX_PROM_ENVS];
> > + int boot_menu;
> > +-extern int enable_gl;
> > ++int enable_gl = 0;
> > +
> > + typedef struct FWBootEntry FWBootEntry;
> > +
> > +@@ -1909,6 +1909,7 @@
> > +     return popt;
> > + }
> > +
> > ++#define TARGET_OPENGL_OK
> > + int main(int argc, char **argv, char **envp)
> > + {
> > +     const char *gdbstub_dev = NULL;
> > diff --git a/meta/recipes-devtools/qemu/qemu_0.14.0.bb 
> b/meta/recipes-devtools/qemu/qemu_0.14.0.bb
> > index d8535b2..e440759 100644
> > --- a/meta/recipes-devtools/qemu/qemu_0.14.0.bb
> > +++ b/meta/recipes-devtools/qemu/qemu_0.14.0.bb
> > @@ -24,6 +24,7 @@ SRC_URI = "\
> >     file://spice-qxl-locking-fix-for-qemu-kvm.patch \
> >     file://Detect-and-use-GCC-atomic-builtins-for-locking.patch \
> >     file://larger_default_ram_size.patch \
> > +    file://qemugl-fix.patch \
> >     "
> > SRC_URI[md5sum] = "f9d145d5c09de9f0984ffe9bd1229970"
> > SRC_URI[sha256sum] = 
> "ba21e84d7853217830e167dae9999cdbff481189c6a0bb600ac7fb7201453108"
> > diff --git a/meta/recipes-sato/pimlico/dates_git.bb 
> b/meta/recipes-sato/pimlico/dates_git.bb
> > index f0a12f8..2823594 100644
> > --- a/meta/recipes-sato/pimlico/dates_git.bb
> > +++ b/meta/recipes-sato/pimlico/dates_git.bb
> > @@ -13,3 +13,5 @@ S = "${WORKDIR}/git"
> > SRC_URI = "git://git.gnome.org/${BPN};protocol=git \
> >       file://make-382.patch \
> >       file://dso_linking_change_build_fix.patch"
> > +
> > +RDEPENDS_${PN} = "mesa-demos"
> > --
> > 1.7.1
> >
> >
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>

Patch

diff --git a/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch b/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
new file mode 100644
index 0000000..c395b60
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.14.0/qemugl-fix.patch
@@ -0,0 +1,70 @@ 
+This patch fix GL application start failure on qemu 0.14.0.
+
+Some turn-on macro/variable are re-arranged, buffer pointer is extended to
+support 32/64b combination of target/host.
+
+This is not perfect fix, and we need consider other GL alternatives in future.
+
+Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
+Index: qemu-0.14.0/target-i386/opengl_func.h
+===================================================================
+--- qemu-0.14.0.orig/target-i386/opengl_func.h	2011-04-08 16:43:46.000000000 +0800
++++ qemu-0.14.0/target-i386/opengl_func.h	2011-04-08 16:45:55.000000000 +0800
+@@ -26,8 +26,9 @@
+ #include "mesa_glext.h"
+ 
+ /* Argument list are internally of a type that can hold a target pointer
+- * or a host pointer.  */
+-typedef target_phys_addr_t arg_t;
++ * 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;
+ 
+ enum {
+     TYPE_NONE,
+Index: qemu-0.14.0/target-i386/translate.c
+===================================================================
+--- qemu-0.14.0.orig/target-i386/translate.c	2011-04-08 16:19:15.000000000 +0800
++++ qemu-0.14.0/target-i386/translate.c	2011-04-08 16:22:03.000000000 +0800
+@@ -2652,17 +2652,19 @@
+     s->is_jmp = DISAS_TB_JUMP;
+ }
+ 
+-int enable_gl = 0;
++extern int enable_gl;
+ 
+ /* an interrupt is different from an exception because of the
+    privilege checks */
+ static void gen_interrupt(DisasContext *s, int intno,
+                           target_ulong cur_eip, target_ulong next_eip)
+ {
++#if !defined(CONFIG_USER_ONLY)
+     if (enable_gl && intno == 0x99) {
+         gen_helper_opengl();
+         return;
+     }
++#endif
+ 
+     if (s->cc_op != CC_OP_DYNAMIC)
+         gen_op_set_cc_op(s->cc_op);
+Index: qemu-0.14.0/vl.c
+===================================================================
+--- qemu-0.14.0.orig/vl.c	2011-04-08 16:11:43.000000000 +0800
++++ qemu-0.14.0/vl.c	2011-04-08 16:20:05.000000000 +0800
+@@ -229,7 +229,7 @@
+ unsigned int nb_prom_envs = 0;
+ const char *prom_envs[MAX_PROM_ENVS];
+ int boot_menu;
+-extern int enable_gl;
++int enable_gl = 0;
+ 
+ typedef struct FWBootEntry FWBootEntry;
+ 
+@@ -1909,6 +1909,7 @@
+     return popt;
+ }
+ 
++#define TARGET_OPENGL_OK
+ int main(int argc, char **argv, char **envp)
+ {
+     const char *gdbstub_dev = NULL;
diff --git a/meta/recipes-devtools/qemu/qemu_0.14.0.bb b/meta/recipes-devtools/qemu/qemu_0.14.0.bb
index d8535b2..e440759 100644
--- a/meta/recipes-devtools/qemu/qemu_0.14.0.bb
+++ b/meta/recipes-devtools/qemu/qemu_0.14.0.bb
@@ -24,6 +24,7 @@  SRC_URI = "\
     file://spice-qxl-locking-fix-for-qemu-kvm.patch \
     file://Detect-and-use-GCC-atomic-builtins-for-locking.patch \
     file://larger_default_ram_size.patch \
+    file://qemugl-fix.patch \
     "
 SRC_URI[md5sum] = "f9d145d5c09de9f0984ffe9bd1229970"
 SRC_URI[sha256sum] = "ba21e84d7853217830e167dae9999cdbff481189c6a0bb600ac7fb7201453108"
diff --git a/meta/recipes-sato/pimlico/dates_git.bb b/meta/recipes-sato/pimlico/dates_git.bb
index f0a12f8..2823594 100644
--- a/meta/recipes-sato/pimlico/dates_git.bb
+++ b/meta/recipes-sato/pimlico/dates_git.bb
@@ -13,3 +13,5 @@  S = "${WORKDIR}/git"
 SRC_URI = "git://git.gnome.org/${BPN};protocol=git \
 	   file://make-382.patch \
 	   file://dso_linking_change_build_fix.patch"
+
+RDEPENDS_${PN} = "mesa-demos"