* [PATCH v2 1/3] oeqa: Fix for QEMU_USE_KVM
2019-01-04 7:15 [PATCH v2 0/3] oeqa: Fix for QEMU_USE_KVM Robert Yang
@ 2019-01-04 7:15 ` Robert Yang
2019-01-07 15:24 ` Richard Purdie
2019-01-04 7:15 ` [PATCH v2 2/3] oeqa/manual/bsp-qemu.json: Update " Robert Yang
2019-01-04 7:15 ` [PATCH v2 3/3] oeqa/selftest/runqemu: Enable kvm when QEMU_USE_KVM is set Robert Yang
2 siblings, 1 reply; 5+ messages in thread
From: Robert Yang @ 2019-01-04 7:15 UTC (permalink / raw)
To: openembedded-core
Fixed:
MACHINE = "qemux86"
QEMU_USE_KVM = "qemux86"
IMAGE_CLASSES += "testimage"
$ oe-selftest -r runqemu.RunqemuTests.test_boot_rootfs
[snip]
File "/buildarea1/lyang1/poky/meta/lib/oe/types.py", line 122, in boolean
raise ValueError("Invalid boolean value '%s'" % value)
ValueError: Invalid boolean value 'qemux86'
Now QEMU_USE_KVM can only be boolean, can not contain MACHINE any more, kvm
will be enabled if target_arch == build_arch or both of them are x86 archs.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
meta/classes/testimage.bbclass | 8 +-------
meta/lib/oe/types.py | 24 ++++++++++++++++++++++++
meta/lib/oeqa/targetcontrol.py | 8 +-------
3 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index 3c2209a..73cd375 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -231,13 +231,7 @@ def testimage_main(d):
boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT"))
# Get use_kvm
- qemu_use_kvm = d.getVar("QEMU_USE_KVM")
- if qemu_use_kvm and \
- (d.getVar('MACHINE') in qemu_use_kvm.split() or \
- oe.types.boolean(qemu_use_kvm) and 'x86' in machine):
- kvm = True
- else:
- kvm = False
+ kvm = oe.types.qemu_use_kvm(d.getVar('QEMU_USE_KVM'), d.getVar('TARGET_ARCH'))
slirp = False
if d.getVar("QEMU_USE_SLIRP"):
diff --git a/meta/lib/oe/types.py b/meta/lib/oe/types.py
index f401713..b9462e0 100644
--- a/meta/lib/oe/types.py
+++ b/meta/lib/oe/types.py
@@ -156,3 +156,27 @@ def path(value, relativeto='', normalize='true', mustexist='false'):
raise ValueError("{0}: {1}".format(value, os.strerror(errno.ENOENT)))
return value
+
+def is_x86(arch):
+ """
+ Check whether arch is x86 or x86_64
+ """
+ if arch.startswith('x86_') or re.match('i.*86', arch) or arch == 'ia64':
+ return True
+ else:
+ return False
+
+def qemu_use_kvm(kvm, target_arch):
+ """
+ Enable kvm if target_arch == build_arch or both of them are x86 archs.
+ """
+
+ use_kvm = False
+ if kvm and boolean(kvm):
+ build_arch = os.uname()[4]
+ if is_x86(build_arch) and is_x86(target_arch):
+ use_kvm = True
+ elif build_arch == target_arch:
+ use_kvm = True
+ return use_kvm
+
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 59a9c35..288e747 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -107,13 +107,7 @@ class QemuTarget(BaseTarget):
dump_target_cmds = d.getVar("testimage_dump_target")
dump_host_cmds = d.getVar("testimage_dump_host")
dump_dir = d.getVar("TESTIMAGE_DUMP_DIR")
- qemu_use_kvm = d.getVar("QEMU_USE_KVM")
- if qemu_use_kvm and \
- (oe.types.boolean(qemu_use_kvm) and "x86" in d.getVar("MACHINE") or \
- d.getVar("MACHINE") in qemu_use_kvm.split()):
- use_kvm = True
- else:
- use_kvm = False
+ use_kvm = oe.types.qemu_use_kvm(d.getVar('QEMU_USE_KVM'), d.getVar('TARGET_ARCH'))
# Log QemuRunner log output to a file
import oe.path
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v2 1/3] oeqa: Fix for QEMU_USE_KVM
2019-01-04 7:15 ` [PATCH v2 1/3] " Robert Yang
@ 2019-01-07 15:24 ` Richard Purdie
0 siblings, 0 replies; 5+ messages in thread
From: Richard Purdie @ 2019-01-07 15:24 UTC (permalink / raw)
To: Robert Yang, openembedded-core; +Cc: Jon Mason
On Fri, 2019-01-04 at 15:15 +0800, Robert Yang wrote:
> Fixed:
> MACHINE = "qemux86"
> QEMU_USE_KVM = "qemux86"
> IMAGE_CLASSES += "testimage"
>
> $ oe-selftest -r runqemu.RunqemuTests.test_boot_rootfs
>
> [snip]
> File "/buildarea1/lyang1/poky/meta/lib/oe/types.py", line 122, in
> boolean
> raise ValueError("Invalid boolean value '%s'" % value)
> ValueError: Invalid boolean value 'qemux86'
>
> Now QEMU_USE_KVM can only be boolean, can not contain MACHINE any
> more, kvm
> will be enabled if target_arch == build_arch or both of them are x86
> archs.
>
[...]
> +def is_x86(arch):
> + """
> + Check whether arch is x86 or x86_64
> + """
> + if arch.startswith('x86_') or re.match('i.*86', arch) or arch ==
> 'ia64':
> + return True
Thanks, I've queued this for testing. I did remove the ia64 test here
as ia64 is itanium which can't do x86 KVM from what I know.
We may also need to add something for arm == aarch64 comparisons, I'm
not 100% sure what is supproted. I've cc'd Jon on that...
Cheers,
Richard
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 2/3] oeqa/manual/bsp-qemu.json: Update for QEMU_USE_KVM
2019-01-04 7:15 [PATCH v2 0/3] oeqa: Fix for QEMU_USE_KVM Robert Yang
2019-01-04 7:15 ` [PATCH v2 1/3] " Robert Yang
@ 2019-01-04 7:15 ` Robert Yang
2019-01-04 7:15 ` [PATCH v2 3/3] oeqa/selftest/runqemu: Enable kvm when QEMU_USE_KVM is set Robert Yang
2 siblings, 0 replies; 5+ messages in thread
From: Robert Yang @ 2019-01-04 7:15 UTC (permalink / raw)
To: openembedded-core
Now QEMU_USE_KVM can only be boolean, can not contain MACHINE any more.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
meta/lib/oeqa/manual/bsp-qemu.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/lib/oeqa/manual/bsp-qemu.json b/meta/lib/oeqa/manual/bsp-qemu.json
index 1260af4..cf51b6a 100644
--- a/meta/lib/oeqa/manual/bsp-qemu.json
+++ b/meta/lib/oeqa/manual/bsp-qemu.json
@@ -10,7 +10,7 @@
],
"execution": {
"1": {
- "action": "Build a kernel with KVM enabled \n\nIn Local.conf add \n\nQEMU_USE_KVM = \"${@ 'intel-corei7-64 intel-core2-32 qemux86 qemux86-64' if os.access('/dev/kvm', os.R_OK|os.W_OK) else '' }\" \n\n ",
+ "action": "Build a kernel with KVM enabled \n\nIn Local.conf add \n\nQEMU_USE_KVM = \"${@ '1' if os.access('/dev/kvm', os.R_OK|os.W_OK) else '0' }\" \n\n ",
"expected_results": ""
},
"2": {
@@ -219,4 +219,4 @@
"summary": "check_bash_in_image"
}
}
-]
\ No newline at end of file
+]
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v2 3/3] oeqa/selftest/runqemu: Enable kvm when QEMU_USE_KVM is set
2019-01-04 7:15 [PATCH v2 0/3] oeqa: Fix for QEMU_USE_KVM Robert Yang
2019-01-04 7:15 ` [PATCH v2 1/3] " Robert Yang
2019-01-04 7:15 ` [PATCH v2 2/3] oeqa/manual/bsp-qemu.json: Update " Robert Yang
@ 2019-01-04 7:15 ` Robert Yang
2 siblings, 0 replies; 5+ messages in thread
From: Robert Yang @ 2019-01-04 7:15 UTC (permalink / raw)
To: openembedded-core
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
meta/lib/oeqa/selftest/cases/runqemu.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/meta/lib/oeqa/selftest/cases/runqemu.py b/meta/lib/oeqa/selftest/cases/runqemu.py
index 4e35bb9..f69d470 100644
--- a/meta/lib/oeqa/selftest/cases/runqemu.py
+++ b/meta/lib/oeqa/selftest/cases/runqemu.py
@@ -5,6 +5,7 @@
import re
import tempfile
import time
+import oe.types
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import bitbake, runqemu, get_bb_var, runCmd
from oeqa.core.decorator.oeid import OETestID
@@ -22,6 +23,10 @@ class RunqemuTests(OESelftestTestCase):
self.fstypes = "ext4 iso hddimg wic.vmdk wic.qcow2 wic.vdi"
self.cmd_common = "runqemu nographic"
+ kvm = oe.types.qemu_use_kvm(get_bb_var('QEMU_USE_KVM'), 'x86_64')
+ if kvm:
+ self.cmd_common += " kvm"
+
self.write_config(
"""
MACHINE = "%s"
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread