- qemu_cpu: only i386, x86_64 virt_test_type = qemu type = cpuid start_vm = "no" kill_vm = yes kill_vm_gracefully = no smp = 1 # ask autotest to not mess with the cpu_model settings auto_cpu_model = no # QEMU versions: variants qemu_flavor: - @unknown: - rhel: variants rhel_version: - 6_0: - 6_1: - 6_2: - 6_3: - 6_4: - upstream: variants qemu_version: - 1_0: - 1_1: - 1_2: - 1_3: - 1_4: - 1_5: # uncomment the line corresponding to the QEMU version, if you know it: only (qemu_flavor = unknown) #only (qemu_flavor = rhel).(rhel_version = 6_4) #only (qemu_flavor = upstream).(qemu_version = 1_5) # CPU model lists: variants: - cpu.unset: # this variant will not force cpu_model to any value - cpu.intel: variants: - 486: cpu_model = "486" - core2duo: cpu_model = "core2duo" - kvm32: cpu_model = "kvm32" - kvm64: cpu_model = "kvm64" - qemu32: cpu_model = "qemu32" - coreduo: cpu_model = "coreduo" - pentium: cpu_model = "pentium" - pentium2: cpu_model = "pentium2" - pentium3: cpu_model = "pentium3" - n270: cpu_model = "n270" - Conroe: cpu_model = "Conroe" - Penryn: cpu_model = "Penryn" - Nehalem: cpu_model = "Nehalem" - Westmere: cpu_model = "Westmere" - SandyBridge: cpu_model = "SandyBridge" - Haswell: cpu_model = "Haswell" - cpu.amd: variants: - qemu64: cpu_model = "qemu64" - phenom: cpu_model = "phenom" - athlon: cpu_model = "athlon" - Opteron_G1: cpu_model = "Opteron_G1" - Opteron_G2: cpu_model = "Opteron_G2" - Opteron_G3: cpu_model = "Opteron_G3" - Opteron_G4: cpu_model = "Opteron_G4" - Opteron_G5: cpu_model = "Opteron_G5" - cpu64_rhel6: only (qemu_flavor = rhel) cpu_model = "cpu64-rhel6" - cpu64_rhel4: only (qemu_flavor = rhel) cpu_model = "cpu64-rhel5" variants: - kvm: - nokvm: enable_kvm = "no" disable_kvm = "yes" variants: - check_models: test_type = "test_qemu_cpu_models_list" no cpu.unset # no need to check this with both kvm enabled and disabled: only nokvm # we don't know if all models will be available if QEMU # version is unknown: no (qemu_flavor = unknown) # CPUID data tests: - cpuid: variants: - full_dump: # machine types: # parameter is named "machine_type_to_check" because # somehow "machine_type" is being overwritten by another # config file section somewhere variants: - machine.rhel: only (qemu_flavor = rhel) variants: - rhel600: machine_type_to_check = "rhel6.0.0" - rhel610: machine_type_to_check = "rhel6.1.0" - rhel620: machine_type_to_check = "rhel6.2.0" - rhel630: machine_type_to_check = "rhel6.3.0" - rhel640: machine_type_to_check = "rhel6.4.0" - machine.upstream: only (qemu_flavor = upstream) variants: - pc_1_0: machine_type_to_check = "pc-1.0" - pc_1_1: machine_type_to_check = "pc-1.1" - pc_1_2: machine_type_to_check = "pc-1.2" - pc_1_3: machine_type_to_check = "pc-1.3" - pc_q35_1_4: machine_type_to_check = "pc-q35-1.4" - pc_i440fx_1_4: machine_type_to_check = "pc-i440fx-1.4" - pc_q35_1_5: machine_type_to_check = "pc-q35-1.5" - pc_i440fx_1_5: machine_type_to_check = "pc-i440fx-1.5" test_type = "check_cpuid_dump" no cpu.unset #FEATURE: Ignore vendor string on KVM because it depends on host # CPU vendor: kvm: ignore_cpuid_leaves += " 0,0,ebx 0,0,ecx 0,0,edx" #KNOWN BUG: Processor Extended State leaf depends on host, # currently: ignore_cpuid_leaves += " 0xd,0" #KNOWN BUG: ignore brand string on those CPU models because # they change depending on QEMU version: cpu.intel.qemu32: ignore_cpuid_leaves += " 0x80000002 0x80000003 0x80000004" cpu.amd.qemu64: ignore_cpuid_leaves += " 0x80000002 0x80000003 0x80000004" cpu.amd.athlon: ignore_cpuid_leaves += " 0x80000002 0x80000003 0x80000004" #FIXED BUG: QEMU v1.1 and older have unstable host-dependent # data on the KVM leaf, so we will ignore it by now: machine.upstream.pc_1_0: ignore_cpuid_leaves += " 0x40000001,0x00,eax" machine.upstream.pc_1_1: ignore_cpuid_leaves += " 0x40000001,0x00,eax" #FIXED BUG: QEMU v1.0 had broken feature aliases on # 0x80000001.EDX, so ignore it: machine.upstream.pc_1_0: cpu.intel: ignore_cpuid_leaves += " 0x80000001,0x00,edx" #KNOWN BUG: the PMU CPUID leaf is unstable on QEMU 1.5 and # older, so ignore it: # (to be fixed on QEMU 1.6.0) ignore_cpuid_leaves += " 0xA" # CPU models without the "apic" feature can't boot # using RHEL-6 Seabios machine.rhel: no cpu.intel.pentium, cpu.intel.pentium2, cpu.intel.pentium3 # known RHEL-6 ABI breakage bugs: machine.rhel: # Max physical address depends on host: ignore_cpuid_leaves += " 0x80000008,0,eax" # KVM features depend on host kernel, as well: ignore_cpuid_leaves += " 0x40000001,0,eax" # SEP bit depended on host kernel on 6.3 and older: machine.rhel.rhel630: ignore_cpuid_leaves += " 1,0,edx,11" machine.rhel.rhel620: ignore_cpuid_leaves += " 1,0,edx,11" machine.rhel.rhel610: ignore_cpuid_leaves += " 1,0,edx,11" machine.rhel.rhel600: ignore_cpuid_leaves += " 1,0,edx,11" # unsupported-bits behavior changed between some RHEL-6 # versions, and 0xC0000000 looks different now: machine.rhel: ignore_cpuid_leaves += " 0xc0000000,0x0" # RHEL-6.0 QEMU had broken feature aliases on # 0x80000001.EDX, so ignore it: machine.rhel.rhel600: cpu.intel: ignore_cpuid_leaves += " 0x80000001,0x00,edx" # bz#819562: broken passthrough mode of CPUID leaf 7 machine.rhel.rhel620: ignore_cpuid_leaves += " 7,0" #KNOWN BUG: Intel models had SVM information available, # even though the SVM feature isn't available. # Guest OSes should ignore those bits, anyway. machine.rhel..cpu.intel: ignore_cpuid_leaves += " 0x8000000a" - default.vendor: test_type = "default_vendor" kvm: # when KVM is enabled, all CPU models have vendor set # to match host, by default vendor = "host" # instead of running one test case per CPU model, # run only one test that checks every single model, # even the ones not listed in the "cpu.*" variants above only cpu.unset cpu_models = "*" nokvm: # we don't know if all models will be available if QEMU # version is unknown: no (qemu_flavor = unknown) only cpu.intel cpu.amd cpu.intel: vendor = "GenuineIntel" cpu.amd: vendor = "AuthenticAMD" - signature: only kvm only cpu.unset test_type = "cpuid_signature" variants: - KVM: signature = "KVMKVMKVM\x00\x00\x00" - hv_relaxed: signature = "Microsoft Hv" flags = "hv_relaxed" - hv_vapic: signature = "Microsoft Hv" flags = "hv_vapic" - hv_spinlocks: signature = "Microsoft Hv" flags = "hv_spinlocks=4095" - 0x40000001: signature = "Hv#1" leaf = "0x40000001" flags = "hv_relaxed" regs = "eax" - hyperv: only kvm only cpu.unset test_type = "cpuid_bit_test" variants: - vapic40000003: bits = "4 5" leaf = "0x40000003" flags = "hv_vapic" - relaxed40000003: bits = "5" leaf = "0x40000003" flags = "hv_relaxed" - vapic40000004: bits = "3" leaf = "0x40000004" flags = "hv_vapic" - relaxed40000004: bits = "5" leaf = "0x40000004" flags = "hv_relaxed" - hv_spinlocks: test_type = "cpuid_reg_test" reg = "ebx" leaf = "0x40000004" variants: - min: value = "4095" flags = "hv_spinlocks=0xfff" - nan: xfail = "yes" value = "4095" flags = "hv_spinlocks=0xg" - FFFFFFFF_xfail: xfail = "yes" value = "4294967295" flags = "hv_spinlocks=0xffffffff" - def: value = "4294967295" flags = "hv_relaxed" - max_leaf: test_type = "cpuid_reg_test" reg = "eax" leaf = "0x40000000" value = "1073741829" flags = "hv_relaxed" - build: test_type = "cpuid_reg_test" reg = "eax" leaf = "0x40000002" value = "7100" flags = "hv_relaxed" - version: test_type = "cpuid_reg_test" reg = "ebx" leaf = "0x40000002" value = "393217" flags = "hv_relaxed" - max_vcpus: test_type = "cpuid_reg_test" reg = "eax" leaf = "0x40000005" value = "64" flags = "hv_relaxed" - max_logical_cpus: test_type = "cpuid_reg_test" reg = "eax" leaf = "0x40000005" value = "64" flags = "hv_relaxed" - custom: # the checks below will be run without setting the CPU model # explicitly. they can be repeated for each known CPU model # if removing the following line: only cpu.unset variants: - vendor: test_type = "custom_vendor" variants: - normal: vendor = "QWERasdfZXCV" - tooshort: vendor = "Q" xfail = "yes" - empty: xfail = "yes" vendor = "" - level: test_type = "custom_level" variants: - level5: level = 5 - NaN: xfail = "yes" level = "five" - family: test_type = "custom_family" variants: - family6: family = 6 - ext: family = 21 - max: # 0xff + 0xf = 270 family = 270 - NaN: xfail = "yes" family = foo - out_of_range: xfail = "yes" family = 271 - model: test_type = "custom_model" variants: - model15: model = 15 - max: model = 255 - out_of_range: xfail = "yes" model = 256 - NaN: xfail = "yes" model = foo - stepping: test_type = "custom_stepping" variants: - stepping5: stepping = 5 - max: stepping = 15 - out_of_range: xfail = "yes" stepping = 16 - Nan: xfail = "yes" stepping = foo - xlevel: test_type = "custom_xlevel" variants: - fixup: # fix me when fixup in QEMU is removed xlevel = 5 # expect fixup to 0x80000005 expect_xlevel = 2147483653 - level80000001: # xlevel = 0x80000001 xlevel = 2147483649 - supported_max: # xlevel = 0x8000000A xlevel = 2147483658 - Nan: xfail = "yes" xlevel = foo - model_id: test_type = "custom_model_id" model_id = "QEMU CPU Brand by virt-test"