target/ppc: Improve accuracy of guest HTM availability on P8s
authorSam Bobroff <sam.bobroff@au1.ibm.com>
Wed, 29 Mar 2017 05:01:28 +0000 (16:01 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Wed, 26 Apr 2017 02:00:41 +0000 (12:00 +1000)
commitf3d9f303acba2fcb97aaa68fdcd4b058c332d0f8
treedf5a68c8ce8c0b0b42e27893fe38335cdf2de871
parentfe491fa85c4634453b340b18046aae2eaf8147db
target/ppc: Improve accuracy of guest HTM availability on P8s

On Power8 hosts it is currently theoretically possible for QEMU/KVM-HV guests
to receive a ibm,pa-features property indicating that HTM support is available
when it is not.  The situation would occur if the platform firmware of
a Power8 host cleared the HTM bit of the ibm,pa-features property.
QEMU would query KVM for the availability of HTM, which will return no
support, but workaround code in kvm_arch_init_vcpu() would then
re-enable it because KVM_HV is in use and the processor is P8.

This patch adjusts the workaround in kvm_arch_init_vcpu() so that it does not
enable HTM (in the above case) unless the host kernel indicates to the QEMU
process, via the auxiliary vector, that userspace can use HTM (via the HWCAP2
bit KVM_FEATURE2_HTM).

The reason to use the value from the auxiliary vector is that it is
set based only on what the host kernel found in the ibm,pa-features
HTM bit at boot time.

Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
target/ppc/kvm.c