summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2019-01-04 15:15:43 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-06 16:38:30 +0000
commit6b6b442f3e7091f4b1314766cf2d3a9919df07bd (patch)
treeaaccdde0d62bf597a8f52eb03e95b968009dcf70
parente82e4d2cb05dcbafb70af3ecfd89897bf16f983c (diff)
downloadpoky-6b6b442f3e7091f4b1314766cf2d3a9919df07bd.tar.gz
oeqa: Fix for QEMU_USE_KVM
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. (From OE-Core rev: 7c1a8a624cad8d967635c6cb5f99cf655bde3d44) (From OE-Core rev: 2c12e1d9c262fb7e5fe02ae2d092789d6536413f) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/testimage.bbclass8
-rw-r--r--meta/lib/oe/types.py24
-rw-r--r--meta/lib/oeqa/targetcontrol.py8
3 files changed, 26 insertions, 14 deletions
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index f2ff91da9d..614df87d02 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -248,13 +248,7 @@ def testimage_main(d):
248 boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")) 248 boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT"))
249 249
250 # Get use_kvm 250 # Get use_kvm
251 qemu_use_kvm = d.getVar("QEMU_USE_KVM") 251 kvm = oe.types.qemu_use_kvm(d.getVar('QEMU_USE_KVM'), d.getVar('TARGET_ARCH'))
252 if qemu_use_kvm and \
253 (d.getVar('MACHINE') in qemu_use_kvm.split() or \
254 oe.types.boolean(qemu_use_kvm) and 'x86' in machine):
255 kvm = True
256 else:
257 kvm = False
258 252
259 # TODO: We use the current implementatin of qemu runner because of 253 # TODO: We use the current implementatin of qemu runner because of
260 # time constrains, qemu runner really needs a refactor too. 254 # time constrains, qemu runner really needs a refactor too.
diff --git a/meta/lib/oe/types.py b/meta/lib/oe/types.py
index f4017130df..1eebba5a38 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'):
156 raise ValueError("{0}: {1}".format(value, os.strerror(errno.ENOENT))) 156 raise ValueError("{0}: {1}".format(value, os.strerror(errno.ENOENT)))
157 157
158 return value 158 return value
159
160def is_x86(arch):
161 """
162 Check whether arch is x86 or x86_64
163 """
164 if arch.startswith('x86_') or re.match('i.*86', arch):
165 return True
166 else:
167 return False
168
169def qemu_use_kvm(kvm, target_arch):
170 """
171 Enable kvm if target_arch == build_arch or both of them are x86 archs.
172 """
173
174 use_kvm = False
175 if kvm and boolean(kvm):
176 build_arch = os.uname()[4]
177 if is_x86(build_arch) and is_x86(target_arch):
178 use_kvm = True
179 elif build_arch == target_arch:
180 use_kvm = True
181 return use_kvm
182
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 02ea1c037c..97d67adbde 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -107,13 +107,7 @@ class QemuTarget(BaseTarget):
107 dump_target_cmds = d.getVar("testimage_dump_target") 107 dump_target_cmds = d.getVar("testimage_dump_target")
108 dump_host_cmds = d.getVar("testimage_dump_host") 108 dump_host_cmds = d.getVar("testimage_dump_host")
109 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR") 109 dump_dir = d.getVar("TESTIMAGE_DUMP_DIR")
110 qemu_use_kvm = d.getVar("QEMU_USE_KVM") 110 use_kvm = oe.types.qemu_use_kvm(d.getVar('QEMU_USE_KVM'), d.getVar('TARGET_ARCH'))
111 if qemu_use_kvm and \
112 (oe.types.boolean(qemu_use_kvm) and "x86" in d.getVar("MACHINE") or \
113 d.getVar("MACHINE") in qemu_use_kvm.split()):
114 use_kvm = True
115 else:
116 use_kvm = False
117 111
118 # Log QemuRunner log output to a file 112 # Log QemuRunner log output to a file
119 import oe.path 113 import oe.path