[OE-core] [oe-commits] Laurentiu Palcu : qemu: add wrapper for qemu-mips binary

Martin Jansa martin.jansa at gmail.com
Sat Oct 6 16:21:36 UTC 2012


On Wed, Oct 03, 2012 at 11:48:21AM +0000, git at git.openembedded.org wrote:
> Module: openembedded-core.git
> Branch: master
> Commit: 53b3103abdf21123b1c7be49b05cfe97a7cd9ed7
> URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=53b3103abdf21123b1c7be49b05cfe97a7cd9ed7
> 
> Author: Laurentiu Palcu <laurentiu.palcu at intel.com>
> Date:   Wed Oct  3 14:23:26 2012 +0300
> 
> qemu: 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 <laurentiu.palcu at intel.com>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> 
> ---
> 
>  meta/recipes-devtools/qemu/qemu_1.2.0.bb |   15 ++++++++++++++-
>  1 files changed, 14 insertions(+), 1 deletions(-)
> 
> diff --git a/meta/recipes-devtools/qemu/qemu_1.2.0.bb b/meta/recipes-devtools/qemu/qemu_1.2.0.bb
> index 191ee48..cbdb4d4 100644
> --- a/meta/recipes-devtools/qemu/qemu_1.2.0.bb
> +++ b/meta/recipes-devtools/qemu/qemu_1.2.0.bb
> @@ -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
> +# 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,

> +
>  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
> Openembedded-commits at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-commits

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20121006/892ffc2e/attachment-0002.sig>


More information about the Openembedded-core mailing list