Bug 1406827
| Summary: | Blacklist TSX feature from specific Intel CPU models | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Eduardo Habkost <ehabkost> |
| Component: | qemu-kvm-rhev | Assignee: | Eduardo Habkost <ehabkost> |
| Status: | CLOSED ERRATA | QA Contact: | Guo, Zhiyi <zhguo> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.4 | CC: | berrange, chayang, fweimer, jdenemar, juzhang, knoel, mrezanin, rbalakri, virt-bugs, virt-maint |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qemu-kvm-rhev-2.9.0-1.el7 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1406791 | Environment: | |
| Last Closed: | 2017-08-01 23:42:15 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Eduardo Habkost
2016-12-21 15:11:39 UTC
(In reply to Eduardo Habkost from comment #0) > Cloning bug for qemu-kvm-rhev: we need the same rules implemented in the > "host" CPU model in QEMU, so libvirt won't need to keep the workaround once > it starts using the new query-cpu-model-* QMP commands. NB Libvirt will need its own support for this for years, since libvirt doesn't drop support for older QEMU versions when it starts using a new QMP command. Upstream v2 submitted: From: Eduardo Habkost <ehabkost> To: qemu-devel Subject: [PATCH v2 0/3] Use non-blacklisted family/model/stepping for Haswell CPU model Date: Wed, 22 Feb 2017 19:07:06 -0300 Message-Id: <20170222220709.3707-1-ehabkost> Included in upstream pull request: Subject: [PULL 0/3] x86: Haswell TSX blacklist fix for 2.9 Date: Fri, 10 Mar 2017 15:45:49 -0300 Message-Id: <20170310184552.1481-1-ehabkost> Merged upstream:
commit f962709c69a05183bf314d3d8c69802d1e3f139c
Merge: b1616fe0e2 ec56a4a7b0
Author: Peter Maydell <peter.maydell>
Date: Mon Mar 13 13:16:35 2017 +0000
Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging
x86: Haswell TSX blacklist fix for 2.9
# gpg: Signature made Fri 10 Mar 2017 18:45:08 GMT
# gpg: using RSA key 0x2807936F984DC5A6
# gpg: Good signature from "Eduardo Habkost <ehabkost>"
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6
* remotes/ehabkost/tags/x86-pull-request:
i386: Change stepping of Haswell to non-blacklisted value
i386/kvm: Blacklist TSX on known broken hosts
i386: host_vendor_fms() helper function
Signed-off-by: Peter Maydell <peter.maydell>
Test against qemu-kvm-rhev-2.8.0-6.el7.x86_64 on TSX broken haswell host, host info:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 144
On-line CPU(s) list: 0-143
Thread(s) per core: 2
Core(s) per socket: 18
Socket(s): 4
NUMA node(s): 4
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E7-8890 v3 @ 2.50GHz
Stepping: 3
Boot rhel7.4 guest witch cli:
/usr/libexec/qemu-kvm -name intel74 -m 32G \
-cpu host,enforce \
-smp 1 \
-monitor stdio \
-qmp tcp:0:4444,server,nowait \
-vga std \
-vnc :0 \
-serial unix:/tmp/console,server,nowait \
-drive file=sea74-0428.qcow2,if=none,id=drive-scsi-disk0,format=qcow2,ca
che=none,werror=stop,rerror=stop -device virtio-scsi-pci,id=scsi0,addr=04 -devic
e scsi-hd,drive=drive-scsi-disk0,bus=scsi0.0,scsi-id=0,lun=0,id=scsi-disk0,booti
ndex=1 \
-netdev tap,id=idinWyYp,vhost=on -device virtio-net-pci,mac=42:ce:a9:d2:
4d:d7,id=idlbq7eA,netdev=idinWyYp \
Check flags inside guest, can find hle and rtm:
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E7-8890 v3 @ 2.50GHz
Stepping: 3
CPU MHz: 2494.012
BogoMIPS: 4988.02
Virtualization: VT-x
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
L3 cache: 16384K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constan
t_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma
cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16
c rdrand hypervisor lahf_lm abm tpr_shadow vnmi flexpriority ept vpid fsgsbase t
sc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt arat
Change qemu cpu model to Haswell, check cpu info, stepping is 1 and can find hle and rtm:
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel Core Processor (Haswell)
Stepping: 1
CPU MHz: 2494.012
BogoMIPS: 4988.02
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
L3 cache: 16384K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_g
ood nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2ap
ic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm
abm fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt arat
For qemu Haswell-noTSX cpu model, stepping in cpu info is:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel Core Processor (Haswell, no TSX)
Stepping: 1
Test against qemu-kvm-rhev-2.9.0-5.el7.x86_64, boot rhel7.4 guest and check flags inside guest, cannot find hle and rtm.
Try to boot guest with Haswell,enforce, qemu cannot launch with warning prompt:
QEMU 2.9.0 monitor - type 'help' for more information
(qemu) warning: host doesn't support requested feature: CPUID.07H:EBX.hle [bit 4
]
warning: host doesn't support requested feature: CPUID.07H:EBX.rtm [bit 11]
qemu-kvm: Host doesn't support requested features
Try to boot guest with Haswell-noTSX,enforce, guest can boot and cpu info remain the same
query unavailable cpu flags from qmp, it show lacking of hle and rtm correctly:
{ "execute": "query-cpu-definitions"}
...
{"name": "Haswell", "typename": "Haswell-x86_
64-cpu", "unavailable-features": ["hle", "rtm"], "static": false, "migration-saf
e": true}
...
{"name": "Broadwell", "typename": "Broadwell-x86_64
-cpu", "unavailable-features": ["hle", "rtm", "rdseed", "adx", "smap", "3dnowpre
fetch"], "static": false, "migration-safe": true}
...
{"name": "Skylake-Client", "typename": "Skylake-Clie
nt-x86_64-cpu", "unavailable-features": ["hle", "rtm", "mpx", "rdseed", "adx", "
smap", "3dnowprefetch", "xsavec", "xgetbv1", "mpx", "mpx"], "static": false, "mi
gration-safe": true}
...
Test against qemu-kvm-rhev-2.9.0-5.el7.x86_64 and host has workable TSX, host info:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 144
On-line CPU(s) list: 0-143
Thread(s) per core: 2
Core(s) per socket: 18
Socket(s): 4
NUMA node(s): 4
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E7-8890 v3 @ 2.50GHz
Stepping: 4
....
Boot guest with Haswell,enforce, can find hle and rtm inside guest and stepping is 4:
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel Core Processor (Haswell)
Stepping: 4
CPU MHz: 2493.988
BogoMIPS: 4987.97
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
L3 cache: 16384K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_g
ood nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2ap
ic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm
abm fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt arat
Boot guest with host,enforce, can also find hle and rtm inside guest
query unavailable cpu flags from qmp, it show host has workable hle and rtm:
{ "execute": "query-cpu-definitions"}
...
{"name": "Haswell", "typename": "Haswell-x86_64-cpu", "unav
ailable-features": [], "static": false, "migration-safe": true}
...
{"name": "Broadwell", "typename": "Broadwell-x86_64-cpu", "unavailable-featur
es": ["rdseed", "adx", "smap", "3dnowprefetch"], "static": false, "migration-saf
e": true}
...
{"name": "Skylake-Client", "typename": "Skylake-Clie
nt-x86_64-cpu", "unavailable-features": ["mpx", "rdseed", "adx", "smap", "3dnowp
refetch", "xsavec", "xgetbv1", "mpx", "mpx"], "static": false, "migration-safe":
true}
...
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2392 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2392 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2392 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2392 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2392 |