Laurentiu Palcu : qemu: add wrapper for qemu-mips binary
A message that is not in the archive (sent off-list or not yet received): 20121003114821.8D16410375@opal
Quoted 46 lines · On Wed, Oct 03, 2012 at 11:48:21AM +0000, [email protected] wrote:
Module: openembedded-core.git Branch: master Commit: 53b3103abdf21123b1c7be49b05cfe97a7cd9ed7 URL: http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=53b3103abdf21123b1c7be49b05cfe97a7cd9ed7Author: Laurentiu Palcu <[email protected]> Date: Wed Oct 3 14:23:26 2012 +0300qemu: add wrapper for qemu-mips binary
qemu-mips user emulation binary segfaults when running any kind of binary. This is due to a MMU access fault in the virtual CPU. This problem has been introduced in qemu when 4GB of vmem were reserved for 32-on-64 bit.
This workaround will need to be reverted once the proper fix is found.
[YOCTO #3143]
Signed-off-by Laurentiu Palcu <[email protected]>Signed-off-by Richard Purdie <[email protected]>---
meta/recipes-devtools/qemu/qemu_1.2.0.bb | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-)meta/recipes-devtools/qemu/qemu_1.2.0.bb +3
-1@@ -17,7 +17,7 @@ SRC_URI = "\ SRC_URI[md5sum] = "78eb1e984f4532aa9f2bdd3c127b5b61" SRC_URI[sha256sum] = "c8b84420d9f4869397f84cad2dabd9a475b7723d619a924a873740353e9df936" -PR = "r2" +PR = "r3" SRC_URI_append_virtclass-nativesdk = "\ file://relocatable_sdk.patch \@@ -29,6 +29,19 @@ do_configure_prepend_virtclass-nativesdk() { sed -i 's/-lX11//g' Makefile.target fi } + +# The following fragment will create a wrapper for qemu-mips user emulation
meta/recipes-devtools/qemu/qemu_1.2.0.bb do_configure_prepend_virtclass-nativesdk() { · line 43
Quoted 10 lines
meta/recipes-devtools/qemu/qemu_1.2.0.bb +10
-0+# binary in order to work around a segmentation fault issue. Basically, by +# default, the reserved virtual address space for 32-on-64 bit is set to 4GB. +# This will trigger a MMU access fault in the virtual CPU. With this change, +# the qemu-mips works fine. +# IMPORTANT: This piece needs to be removed once the root cause is fixed! +do_install_append() { + create_wrapper ${D}/${bindir}/qemu-mips \ + QEMU_RESERVED_VA=0x0 +} +# END of qemu-mips workaround
What about checking if mips is in QEMU_TARGETS before doing this?
Right now this breaks all distros without mips in QEMU_TARGETS.
Cheers,
Quoted 10 lines
meta/recipes-devtools/qemu/qemu_1.2.0.bb +1
-0+ do_configure_prepend_virtclass-native() { # Undo the -lX11 added by linker-flags.patch, don't assume that host has libX11 installed sed -i 's/-lX11//g' Makefile.target_______________________________________________
Openembedded-commits mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-commits
Signature · 1 line
Martin 'JaMa' Jansa jabber: [email protected]
Quoted 10 lines · Martin Jansa
Review
Quoted 7 lines
(quoted diff) +6
-0+# IMPORTANT: This piece needs to be removed once the root cause is fixed! +do_install_append() { + create_wrapper ${D}/${bindir}/qemu-mips \ + QEMU_RESERVED_VA=0x0 +} +# END of qemu-mips workaroundWhat about checking if mips is in
QEMU_TARGETSbefore doing this?
or simply for check for existence of qemu-mips before creating the wrapper
Quoted 3 lines
Right now this breaks all distros without mips in
QEMU_TARGETS.Cheers,
Quoted 12 lines · Khem Raj
Quoted 10 lines · Martin Jansa
Review
Quoted 7 lines
(quoted diff) +6
-0+# IMPORTANT: This piece needs to be removed once the root cause is fixed! +do_install_append() { + create_wrapper ${D}/${bindir}/qemu-mips \ + QEMU_RESERVED_VA=0x0 +} +# END of qemu-mips workaroundWhat about checking if mips is in
QEMU_TARGETSbefore doing this?
Quoted 1 line
or simply for check for existence of qemu-mips before creating the wrapper
I've added a patch in doing this.
Cheers,
Richard
Quoted 12 lines · Khem Raj
Quoted 10 lines · Martin Jansa
Review
Quoted 7 lines
(quoted diff) +6
-0+# IMPORTANT: This piece needs to be removed once the root cause is fixed! +do_install_append() { + create_wrapper ${D}/${bindir}/qemu-mips \ + QEMU_RESERVED_VA=0x0 +} +# END of qemu-mips workaroundWhat about checking if mips is in
QEMU_TARGETSbefore doing this?
Quoted 3 lines
or simply for check for existence of qemu-mips before creating the wrapper
Quoted 1 line
Right now this breaks all distros without mips in
QEMU_TARGETS.
Sorry, I totally missed this. :| What about adding a simple check in the create_wrapper script itself? We create the wrapper only if the target binary exists. It sounds better this way and the user does not necessarily have to remember to check for the binary existence before creating the wrapper.
I'll prepare a patch.
Thanks,
Laurentiu
Quoted 2 lines
Quoted 2 lines
Cheers,
Quoted 16 lines · Laurentiu Palcu
Quoted 14 lines · Khem Raj
Quoted 10 lines · Martin Jansa
Review
Quoted 7 lines
(quoted diff) +6
-0+# IMPORTANT: This piece needs to be removed once the root cause is fixed! +do_install_append() { + create_wrapper ${D}/${bindir}/qemu-mips \ + QEMU_RESERVED_VA=0x0 +} +# END of qemu-mips workaroundWhat about checking if mips is in
QEMU_TARGETSbefore doing this?or simply for check for existence of qemu-mips before creating the wrapper
Quoted 8 lines
Quoted 1 line
Quoted 1 line
Right now this breaks all distros without mips in
QEMU_TARGETS.Sorry, I totally missed this. :| What about adding a simple check in the
create_wrapperscript itself? We create the wrapper only if the target binary exists. It sounds better this way and the user does not necessarily have to remember to check for the binary existence before creating the wrapper.I'll prepare a patch.
In general I think we expect the target to exist. qemu is a little special since the user can configure it different ways. I therefore see qemu as being the exception in this case rather than the rule and think the default behaviour for create_wrapper should be to fail if it doesn't exist as there is likely some other issue.
Cheers.
Richard