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

Yi Zhao yi.zhao at windriver.com
Tue Nov 1 22:05:49 PDT 2016


Hi Zhenhuan,


在 2016年11月02日 11:50, Zhenhua Luo 写道:
> Hi Yi,
>
> Due to the ppc64 support limitation of qemu-native, please don't add the following line in local.conf, the core-image-sato can be built with default configuration.
>
> QEMU_TARGETS_append = " ppc64"

Remove this line would also generate a failure for  running intercept 
scripts:
tmp/sysroots/p5040ds-64b/usr/bin/crossscripts/qemuwrapper: line 2: 
qemu-ppc64: command not found

Regrads,
Yi

>
>
> Best Regards,
>
> Zhenhua
>
>> -----Original Message-----
>> From: Yi Zhao [mailto:yi.zhao at windriver.com]
>> Sent: Tuesday, November 01, 2016 5:40 PM
>> To: Zhenhua Luo <zhenhua.luo at nxp.com>; meta-freescale at yoctoproject.org
>> Cc: Kevin Hao <kexin.hao at windriver.com>
>> Subject: Re: Invalid instruction with qemu-ppc64 for ppc64e6500
>>
>> Hi Zhenhua,
>>
>> I use morty branch for both poky and meta-fsl-ppc, machine is t4240rdb-64b.
>>
>> Add the following line in conf/local.conf:
>>
>> QEMU_TARGETS_append = " ppc64"
>>
>> Then run bitbake core-image-sato
>>
>> You could check the log in
>> tmp/work/t4240rdb_64b-poky-linux/core-image-sato/1.0-
>> r0/temp/log.do_rootfs
>>
>>
>> Thanks,
>>
>> Yi
>>
>>
>> 在 2016年10月31日 21:58, Zhenhua Luo 写道:
>>> 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