[OE-core] [PATCH 0/8] runqemu: refactor it and remove machine knowledge

Mark Hatle mark.hatle at windriver.com
Fri Aug 19 01:45:42 UTC 2016


On 8/18/16 8:06 PM, Robert Yang wrote:
> 
> 
> On 08/19/2016 05:47 AM, Mark Hatle wrote:
>> General comment on the patch set.
>>
>> I do like what this change is trying to accomplish.  However, I think putting
>> QEMU knowledge into the 'arch' is a bad idea -- unless it's being used to run
>> the emulator for build-time work.
>>
>> The arch could very well be used by kernels that simply can't run in QEMU.  I'd
>> prefer if the QEMU settings were .inc files that were included into BSPs that
>> were compatible or something like that -- keep them out of the tunes, but make
>> it easy for a BSP creator to include them.
> 
> Hi Mark,
> 
> Thanks for your reply, did you mean the settings that I put into files
> like arch-x86.inc ? The benefit is that we can reduce duplicated code,
> otherwise we would have at least 4 copies for x86/x86_64, (qemux86, qemux86-64,
> genericx86, genericx86-64 and perhaps more bsps out of oe-core. Put the
> settings in files like arch-x86.inc is harmless in my opinion, and the bsp
> conf files can override them easily.

My concern is this is mixing BSP settings with the tunings.  It is also defining
qemu compatibility for things that may not be compatible with qemu.

As far as the duplicated code issue, I'd suggest these chunks be put into
something like:

conf/machine/qemux86.inc
conf/machine/qemux86-64.inc

And then have those included by the regular BSP files, or another BSP as necessary.

--Mark

> // Robert
> 
>>
>> --Mark
>>
>> On 8/18/16 1:15 AM, Robert Yang wrote:
>>> Previously, runqemu had hard coded machine knowledge, which limited its
>>> usage, for example, qemu can boot genericx86, but runqemu can't, we need
>>> edit runqemu/runqemu-internal a lot if we want to boot genericx86.
>>>
>>> Now bsp conf files can set vars to make it can be boot by runqemu, and
>>> qemuboot.bbclass will save these info to DEPLOY_DIR_IMAGE/qemuboot.py.
>>> Please see qemuboot.bbclass' comments on how to set the vars.
>>>
>>> * Re-write it in python3, which can reduce lines from 1239 to about 750
>>>   lines
>>> * All the machine knowledges are gone
>>> * Most of the TUN_ARCH knowledge are gone except aarch64 and powerpc,
>>>   it's not easy to remove the two, so leave them there atm
>>> * All the previous options are preserved, and there is a new way to run
>>>   runqemu: (it doesn't need run "bitake -e" in such a case)
>>>   $ runqemu tmp/deploy/images/qemux86
>>>   or:
>>>   $ runqemu tmp/deploy/images/qemuarm/<image>.ext4
>>>   or:
>>>   $ runqemu tmp/deploy/images/qemuarm/qemuboot.py
>>> * Fixed audio support, not limited on x86 or x86_64
>>> * The kvm support is not limited on x86 or x86_64
>>> * Fix SLIRP mode
>>> * Fix NFS boot, it will extract <image>.tar.bz2 or tar.gz to
>>>   DEPLOY_DIR_IMAGE/<image>-nfsroot when no NFS_DIR, and remove it after
>>>   stop.
>>> * More bsps can be boot, such as genericx86 and genericx86-64.
>>> * The patch for qemuzynq, qemuzynqmp, qemumicroblaze has been sent to
>>>   meta-xilinx' mailing list.
>>> * I can't find any qemush4 bsp or how to build it, so it is not
>>>   considered atm.
>>>
>>> * Tested the following machines, all of them work well:
>>>   genericx86 genericx86-64
>>>   qemuarm qemuarm64
>>>   qemumips qemumips64 qemuppc
>>>   qemux86 qemux86-64
>>>   qemuzynq qemuzynqmp
>>>
>>> And also test "bitbake core-image-sato -ctestimage" which uses runqemu, it
>>> also works.
>>>
>>> // Robert
>>>
>>> The following changes since commit c86bf80abd87acb0da5860806822c64ec9dee089:
>>>
>>>   oeqa.buildperf: use oe.path.remove() (2016-08-17 10:35:27 +0100)
>>>
>>> are available in the git repository at:
>>>
>>>   git://git.openembedded.org/openembedded-core-contrib rbt/runqemu
>>>   http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/runqemu
>>>
>>> Robert Yang (8):
>>>   qemu.inc: inherit qemu-boot.bbclass
>>>   arm: set vars for runqemu
>>>   qemuarm64.conf: set vars for runqemu
>>>   arch-x86.inc: set vars for runqemu
>>>   arch-mips.inc: set vars for runqemu
>>>   qemuppc.conf: set vars for runqemu
>>>   qemuboot.bbclass: add it for runqemu
>>>   runqemu: refactor it and remove machine knowledge
>>>
>>>  meta/classes/qemuboot.bbclass                |   59 ++
>>>  meta/conf/machine/include/mips/arch-mips.inc |    6 +
>>>  meta/conf/machine/include/qemu.inc           |    2 +
>>>  meta/conf/machine/include/tune-cortexa8.inc  |    4 +
>>>  meta/conf/machine/include/x86/arch-x86.inc   |   15 +
>>>  meta/conf/machine/qemuarm.conf               |    5 +
>>>  meta/conf/machine/qemuarm64.conf             |    9 +
>>>  meta/conf/machine/qemuppc.conf               |    6 +
>>>  scripts/runqemu                              | 1261 +++++++++++++++-----------
>>>  scripts/runqemu-internal                     |  739 ---------------
>>>  10 files changed, 842 insertions(+), 1264 deletions(-)
>>>  create mode 100644 meta/classes/qemuboot.bbclass
>>>  delete mode 100755 scripts/runqemu-internal
>>>
>>
>>




More information about the Openembedded-core mailing list