3 fixes for runqemu and qemurunner.py
cover 3 fixes for runqemu and qemurunner.py
The following changes since commit 39c1719a32ed5567e3bf2df5c4f9068d0f5a9400:
uninative-tarball: Add nativesdk-libnss-nis to resolve glibc symbol issues (2018-07-24 17:03:39 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/qemu
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/qemu
Robert Yang (3):
qemurunner.py: fix is_alive() to avoid confusing with recycled pid
runqemu: default qemumips memory to 256M
runqemu: let qemuparams override previous settings
meta/lib/oeqa/utils/qemurunner.py | 2 +- scripts/runqemu | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-)
Signature · 1 line
2.7.4
PATCH 1/3 qemurunner.py: fix is_alive() to avoid confusing with recycled pid
[YOCTO #12493]
Fixed:
- qemu started with pid 10000
- qemu exited unexpectedly
- The pid 10000 is re-used by another different process.
The is_alive() returned True in such a case because both qemu_pidfile and /proc/10000 exist, but it's another process, this patch fixed the problem.
--- meta/lib/oeqa/utils/qemurunner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/lib/oeqa/utils/qemurunner.py +1 -1
@@ -400,7 +400,7 @@ class QemuRunner: return False def is_alive(self): - if not self.runqemu: + if not self.runqemu or self.runqemu.poll() is not None: return False if os.path.isfile(self.qemu_pidfile): f = open(self.qemu_pidfile, 'r')
Signature · 1 line
2.7.4
PATCH 2/3 runqemu: default qemumips memory to 256M
In reply to Robert YangThe qemumips or qemumips64 can't be boot with 512M.
*Fixed when no QB_MEM is set:
- runqemu qemumips nographic core-image-minimal
[ 0.000000] Call Trace: [ 0.000000] [<8011c010>] clear_page+0x0/0x128 [ 0.000000] [<8022b818>] get_page_from_freelist+0xa1c/0xb48 [ 0.000000] [<8022c00c>] __alloc_pages_nodemask+0xd8/0xf0c [ 0.000000] [<8022ce58>] __get_free_pages+0x18/0x60 [ 0.000000] [<80118674>] setup_zero_pages+0x1c/0x98 [ 0.000000] [<80bd23e4>] mem_init+0x44/0x54 [ 0.000000] [<80bca964>] start_kernel+0x20c/0x4bc [ 0.000000] [<80920090>] kernel_entry+0x0/0x40 [ 0.000000] Code: 00000000 00000000 00000000 <34860f80> cc9e0000 cc9e0010 cc9e0020 cc9e0030 cc9e0040 [ 0.000000] [ 0.000000] ---[ end trace 0000000000000000 ]--- [ 0.000000] Kernel panic - not syncing: Attempted to kill the idle task! [ 0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the idle task!
[YOCTO #11521]
--- scripts/runqemu | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
scripts/runqemu +7 -2
@@ -665,8 +665,13 @@ class BaseConfig(object): if s: self.set('QB_MEM', '-m %s' % s.group(1)) elif not self.get('QB_MEM'): - logger.info('QB_MEM is not set, use 512M by default') - self.set('QB_MEM', '-m 512') + mach = self.get('MACHINE') + if mach.startswith('qemumips'): + logger.info('QB_MEM is not set, use 256M by default') + self.set('QB_MEM', '-m 256') + else: + logger.info('QB_MEM is not set, use 512M by default') + self.set('QB_MEM', '-m 512') mach = self.get('MACHINE') if not mach.startswith('qemumips'):
Signature · 1 line
2.7.4
Re: [PATCH 2/3] runqemu: default qemumips memory to 256M
Sorry, please ignore this one, it had been fixed by:
commit c68e4c6e3eb612bb7afd9d7f1e9a6dc295d44346
Author: He Zhe <[email protected]> Date: Sun Jul 8 20:14:43 2018 -0700
scripts/runqemu: fix qemumips qemumips64 memory detection kernel panic
I removed it from repo.
// Robert
Quoted 47 lines · Robert Yang
The qemumips or qemumips64 can't be boot with 512M.
*Fixed when no
QB_MEMis set:
- runqemu qemumips nographic core-image-minimal[ 0.000000] Call Trace: [ 0.000000] [<8011c010>] clear_page+0x0/0x128 [ 0.000000] [<8022b818>] get_page_from_freelist+0xa1c/0xb48 [ 0.000000] [<8022c00c>] __alloc_pages_nodemask+0xd8/0xf0c [ 0.000000] [<8022ce58>] __get_free_pages+0x18/0x60 [ 0.000000] [<80118674>] setup_zero_pages+0x1c/0x98 [ 0.000000] [<80bd23e4>] mem_init+0x44/0x54 [ 0.000000] [<80bca964>] start_kernel+0x20c/0x4bc [ 0.000000] [<80920090>] kernel_entry+0x0/0x40 [ 0.000000] Code: 00000000 00000000 00000000 <34860f80> cc9e0000 cc9e0010 cc9e0020 cc9e0030 cc9e0040 [ 0.000000] [ 0.000000] ---[ end trace 0000000000000000 ]--- [ 0.000000] Kernel panic - not syncing: Attempted to kill the idle task! [ 0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the idle task![YOCTO #11521]
Signed-off-by Robert Yang <[email protected]>--- scripts/runqemu | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)scripts/runqemu +7
-2@@ -665,8 +665,13 @@ class BaseConfig(object): if s: self.set('QB_MEM', '-m %s' % s.group(1)) elif not self.get('QB_MEM'): - logger.info('QB_MEM is not set, use 512M by default') - self.set('QB_MEM', '-m 512') + mach = self.get('MACHINE') + if mach.startswith('qemumips'): + logger.info('QB_MEM is not set, use 256M by default') + self.set('QB_MEM', '-m 256') + else: + logger.info('QB_MEM is not set, use 512M by default') + self.set('QB_MEM', '-m 512') mach = self.get('MACHINE') if not mach.startswith('qemumips'):
PATCH 3/3 runqemu: let qemuparams override previous settings
In reply to Robert YangFixed:
$ runqemu qemux86-64 qemuparams="-cpu coreduo" The default cpu is core2duo, but coreduo should be used here.
Append qemuparams to the last can fix the problem.
[YOCTO #11773]
--- scripts/runqemu | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)
scripts/runqemu +12 -5
@@ -188,6 +188,7 @@ class BaseConfig(object): self.qemu_opt = '' self.qemu_opt_script = '' + self.qemuparams = '' self.clean_nfs_dir = False self.nfs_server = '' self.rootfs = ''
@@ -451,7 +452,7 @@ class BaseConfig(object): elif arg.startswith('biosfilename='): self.qemu_opt_script += ' -bios %s' % arg[len('biosfilename='):] elif arg.startswith('qemuparams='): - self.qemu_opt_script += ' %s' % arg[len('qemuparams='):] + self.qemuparams = ' %s' % arg[len('qemuparams='):] elif arg.startswith('bootparams='): self.bootparams = arg[len('bootparams='):] elif os.path.exists(arg) or (re.search(':', arg) and re.search('/', arg)):
@@ -661,10 +662,12 @@ class BaseConfig(object): raise RunQemuError("Invalid custombiosdir: %s" % self.custombiosdir) def check_mem(self): - s = re.search('-m +([0-9]+)', self.qemu_opt_script) - if s: - self.set('QB_MEM', '-m %s' % s.group(1)) - elif not self.get('QB_MEM'): + for opt in (self.qemu_opt_script, self.qemuparams): + s = re.search('-m +([0-9]+)', opt) + if s: + self.set('QB_MEM', '-m %s' % s.group(1)) + + if not self.get('QB_MEM'): mach = self.get('MACHINE') if mach.startswith('qemumips'): logger.info('QB_MEM is not set, use 256M by default')
@@ -1166,6 +1169,10 @@ class BaseConfig(object): self.qemu_opt += ' ' + self.qemu_opt_script + # Append qemuparams to override previous settings + if self.qemuparams: + self.qemu_opt += ' ' + self.qemuparams + if self.snapshot: self.qemu_opt += " -snapshot"
Signature · 1 line
2.7.4