Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> --- tests/cputestdata/cpu-cpuid.py | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/tests/cputestdata/cpu-cpuid.py b/tests/cputestdata/cpu-cpuid.py index a4dc23378..9ea858d98 100755 --- a/tests/cputestdata/cpu-cpuid.py +++ b/tests/cputestdata/cpu-cpuid.py @@ -171,6 +171,24 @@ cpuidMap = [ ] +def cpuidIsSet(cpuid, feature): + in_eax = feature["in_eax"] + in_ecx = feature["in_ecx"] + eax = feature["eax"] + ebx = feature["ebx"] + ecx = feature["ecx"] + edx = feature["edx"] + + if in_eax not in cpuid or in_ecx not in cpuid[in_eax]: + return False + else: + leaf = cpuid[in_eax][in_ecx] + return ((eax > 0 and leaf["eax"] & eax > 0) or + (ebx > 0 and leaf["ebx"] & ebx > 0) or + (ecx > 0 and leaf["ecx"] & ecx > 0) or + (edx > 0 and leaf["edx"] & edx > 0)) + + def parseFeatureWords(path): features = None @@ -217,30 +235,13 @@ def parseFeatureWords(path): return props, cpuid -def propAdd(props, feature, value): - for name in feature["names"]: - props[name] = value - - def convert(path): props, cpuid = parseFeatureWords(path) for feature in cpuidMap: - in_eax = feature["in_eax"] - in_ecx = feature["in_ecx"] - eax = feature["eax"] - ebx = feature["ebx"] - ecx = feature["ecx"] - edx = feature["edx"] - - if in_eax not in cpuid or in_ecx not in cpuid[in_eax]: - propAdd(props, feature, False) - else: - leaf = cpuid[in_eax][in_ecx] - propAdd(props, feature, ((eax > 0 and leaf["eax"] & eax > 0) or - (ebx > 0 and leaf["ebx"] & ebx > 0) or - (ecx > 0 and leaf["ecx"] & ecx > 0) or - (edx > 0 and leaf["edx"] & edx > 0))) + value = cpuidIsSet(cpuid, feature) + for name in feature["names"]: + props[name] = value with open(path, "w") as f: json.dump({"return": {"model": {"name": "base", "props": props}}, -- 2.12.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list