]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Check /dev/kvm more thoroughly.
authorJoerg Behrmann <behrmann@physik.fu-berlin.de>
Wed, 23 Feb 2022 08:16:47 +0000 (09:16 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 28 Feb 2022 14:39:00 +0000 (14:39 +0000)
Some CI runners, among them apparently GA, present non-working KVM
devices. Let's try to open it, to see whether we can.

Fixes: #914
mkosi/__init__.py

index 0164fa727155379c0725ef79b8bd942c2d71edb4..9eea3907ce24db645d96632ceeb111c3dc708932 100644 (file)
@@ -7555,9 +7555,21 @@ def find_ovmf_vars() -> Path:
     die("Couldn't find OVMF UEFI variables file.")
 
 
+def qemu_check_kvm_support() -> bool:
+    kvm = Path("/dev/kvm")
+    if not kvm.is_char_device():
+        return False
+    # some CI runners may present a non-working KVM device
+    try:
+        with kvm.open("r+b"):
+            return True
+    except OSError:
+        return False
+
+
 @contextlib.contextmanager
 def run_qemu_cmdline(args: MkosiArgs) -> Iterator[List[str]]:
-    has_kvm = os.path.exists("/dev/kvm")
+    has_kvm = qemu_check_kvm_support()
     accel = "kvm" if has_kvm else "tcg"
 
     firmware, fw_supports_sb = find_qemu_firmware()