]> xenbits.xensource.com Git - libvirt.git/commitdiff
cpu-data.py: Filter out apic current logical processor
authorTim Wiederhake <twiederh@redhat.com>
Tue, 28 Mar 2023 14:14:55 +0000 (16:14 +0200)
committerTim Wiederhake <twiederh@redhat.com>
Tue, 23 May 2023 14:25:12 +0000 (16:25 +0200)
Commit 10b5e789c5 attempts to filter out the logical processor id
in the generated data to remove noise and irrelevant changes in the
output.

cpuid-leaf 0x0B may have more than two sub-leaves though. Filter out
logical processor id from all sub-leaves of 0x0B and 0x1F (superset
of the information in 0x0B).

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
tests/cputestdata/cpu-data.py

index 498e07b2f7c1c1bde2d1a8119ca79630df7f0739..b5641f7c16924d21682a662bb15c5d5d898c1f30 100755 (executable)
@@ -107,11 +107,14 @@ def gather_cpuid_leaves_kcpuid(output):
 
 def gather_cpuid_leaves(args):
     def mask(regs, eax_in, ecx_in, eax_mask, ebx_mask, ecx_mask, edx_mask):
-        if regs["eax_in"] == eax_in and regs["ecx_in"] == ecx_in:
-            regs["eax"] &= eax_mask
-            regs["ebx"] &= ebx_mask
-            regs["ecx"] &= ecx_mask
-            regs["edx"] &= edx_mask
+        if eax_in != regs["eax_in"]:
+            return
+        if ecx_in != regs["ecx_in"] and ecx_in is not None:
+            return
+        regs["eax"] &= eax_mask
+        regs["ebx"] &= ebx_mask
+        regs["ecx"] &= ecx_mask
+        regs["edx"] &= edx_mask
 
     cpuid = args.path_to_cpuid or "cpuid"
     try:
@@ -132,8 +135,8 @@ def gather_cpuid_leaves(args):
     for regs in reglist:
         # local apic id. Pretend to always run on logical processor #0.
         mask(regs, 0x01, 0x00, 0xffffffff, 0x00ffffff, 0xffffffff, 0xffffffff)
-        mask(regs, 0x0b, 0x00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff00)
-        mask(regs, 0x0b, 0x01, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff00)
+        mask(regs, 0x0b, None, 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000)
+        mask(regs, 0x1f, None, 0xffffffff, 0xffffffff, 0xffffffff, 0x00000000)
 
         yield regs