[meta-freescale] Invalid instruction with qemu-ppc64 for ppc64e6500

Zhenhua Luo zhenhua.luo at nxp.com
Mon Oct 31 06:58:21 PDT 2016


Hi Yi, 

Due to ppce6500 is not supported by qemu-native, the patch is a workaround for the limitation. 

May I know which version of poky and meta-fsl-ppc can reproduce the problem? 


Best Regards, 

Zhenhua

> -----Original Message-----
> From: Yi Zhao [mailto:yi.zhao at windriver.com]
> Sent: Monday, October 31, 2016 5:13 PM
> To: meta-freescale at yoctoproject.org
> Cc: Zhenhua Luo <zhenhua.luo at nxp.com>; Kevin Hao
> <kexin.hao at windriver.com>
> Subject: Invalid instruction with qemu-ppc64 for ppc64e6500
> 
> Hi folks,
> 
> I tried to build an image with nxp4xxx (DEFAULTTUNE="ppc64e6500"), when
> do_rootfs tried to run intercept scripts, I got an invalid instruction
> error:
> 
> NOTE: Running intercept scripts:
> NOTE: > Executing update_gio_module_cache intercept ...
> Invalid instruction
> NIP 00000000008046ac LR 0000000000000000 CTR 0000000000000000 XER
> 0000000000000000 CPU#0
> MSR 8000000000006000 HID0 0000000000000000 HF 0000000000006000 iidx 0
> didx 0 TB 00510390 2192111342502858 [snip]
> qemu: uncaught target signal 4 (Illegal instruction) - core dumped
> /buildarea/build-nxp/tmp/sysroots/nxp-
> t4xxx/usr/bin/crossscripts/qemuwrapper:
> line 2: 25969 Illegal instruction (core dumped) qemu-ppc64 -r 3.2.0 -cpu e500mc
> "$@"
> WARNING: The postinstall intercept hook 'update_gio_module_cache' failed
> (exit code: 132)! See log for details!
> WARNING: The postinstalls for the following packages will be postponed for
> first boot: libglib-2.0-0
> 
> The issue is most likely introduced by the commit:
> 
> commit 27e202f2d9114a64b67c83eb7eafeb12de5ceea7
> Author: Zhenhua Luo <zhenhua.luo at nxp.com>
> Date:   Thu Apr 14 17:26:44 2016 +0800
> 
>      meta/classes/qemu.bbclass: set -cpu of ppce5500/ppce6500 to e500mc
> 
>      The e5500 and e6500 cpu types are not supported by native qemu, set the
> value
>      of -cpu to e500mc. Without this change, build will fail for packages which use
>      qemuwrapper in compile phase due to the following error.
>      | Unable to find CPU definition
> 
>      e.g. gobject-introspection
> 
>      (From OE-Core rev: e06c5c5447350049ebd1a6245fc2dd2608b265e5)
> 
>      Signed-off-by: Zhenhua Luo <zhenhua.luo at nxp.com>
>      Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> 
> diff --git a/meta/classes/qemu.bbclass b/meta/classes/qemu.bbclass index
> f3d3be8..75739db 100644
> --- a/meta/classes/qemu.bbclass
> +++ b/meta/classes/qemu.bbclass
> @@ -52,8 +52,8 @@ QEMU_OPTIONS[vardeps] +=
> "QEMU_EXTRAOPTIONS_${PACKAGE_ARCH}"
> 
>   QEMU_EXTRAOPTIONS_ppce500v2 = " -cpu e500v2"
>   QEMU_EXTRAOPTIONS_ppce500mc = " -cpu e500mc"
> -QEMU_EXTRAOPTIONS_ppce5500 = " -cpu e5500"
> -QEMU_EXTRAOPTIONS_ppc64e5500 = " -cpu e5500"
> -QEMU_EXTRAOPTIONS_ppce6500 = " -cpu e6500"
> -QEMU_EXTRAOPTIONS_ppc64e6500 = " -cpu e6500"
> +QEMU_EXTRAOPTIONS_ppce5500 = " -cpu e500mc"
> +QEMU_EXTRAOPTIONS_ppc64e5500 = " -cpu e500mc"
> +QEMU_EXTRAOPTIONS_ppce6500 = " -cpu e500mc"
> +QEMU_EXTRAOPTIONS_ppc64e6500 = " -cpu e500mc"
>   QEMU_EXTRAOPTIONS_ppc7400 = " -cpu 7400"
> 
> 
> For my limited knowledge, the ppc64e6500 is a 64bit cpu but e500mc is 32bit, so
> when qemuwrapper running command qemu-ppc64 -r 3.2.0 -cpu e500mc "$@"
> would cause this failure.
> Since the qemu native still doesn't support e6500 cpu, I just remove the
> line: QEMU_EXTRAOPTIONS_ppc64e6500 = " -cpu e500mc", and the
> qemuwrapper could work.
> 
> Is it a appropriate method to solve this issue ?  I'm not familiar with ppc, so don't
> know if this change could break something else?
> 
> Thanks,
> Yi
> 



More information about the meta-freescale mailing list