]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
cputest: Ignore missing MSRs in cpu-data.py
authorJiri Denemark <jdenemar@redhat.com>
Thu, 6 Nov 2025 12:40:14 +0000 (13:40 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 7 Nov 2025 14:54:56 +0000 (15:54 +0100)
The current code made sense when we were reading only one MSR, but since
we started reading more MSRs, the host CPU would have to support all of
them otherwise the function would just return an empty dict.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tests/cputestdata/cpu-data.py

index b280eed43607d1d2a62de0a20759d80c2d63cf28..4d89cd6d5c9249372c4f382b45595aca20e363d9 100755 (executable)
@@ -151,20 +151,28 @@ def gather_msr():
     try:
         with open("/dev/cpu/0/msr", "rb") as f:
             for addr in addresses:
-                f.seek(addr)
-                buf = f.read(8)
-                msrs[addr] = struct.unpack("=Q", buf)[0]
-            return "", msrs
+                try:
+                    f.seek(addr)
+                    buf = f.read(8)
+                    msrs[addr] = struct.unpack("=Q", buf)[0]
+                except IOError:
+                    pass
+            if msrs:
+                return "", msrs
     except IOError as e:
         print("Warning: {}".format(e), file=sys.stderr)
 
     try:
         with open("/dev/kvm", "rb") as f:
             for addr in addresses:
-                bufIn = struct.pack("=LLLLQ", 1, 0, addr, 0, 0)
-                bufOut = fcntl.ioctl(f, KVM_GET_MSRS, bufIn)
-                msrs[addr] = struct.unpack("=LLLLQ", bufOut)[4]
-            return " via KVM", msrs
+                try:
+                    bufIn = struct.pack("=LLLLQ", 1, 0, addr, 0, 0)
+                    bufOut = fcntl.ioctl(f, KVM_GET_MSRS, bufIn)
+                    msrs[addr] = struct.unpack("=LLLLQ", bufOut)[4]
+                except IOError:
+                    pass
+            if msrs:
+                return " via KVM", msrs
     except IOError as e:
         print("Warning: {}".format(e), file=sys.stderr)