diff options
author | Paul Mackerras <paulus@ozlabs.org> | 2017-06-21 16:01:27 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@ozlabs.org> | 2017-06-22 11:25:31 +1000 |
commit | 2ed4f9dd19c0f76f7fb56c4b201696d29149325c (patch) | |
tree | dc386c28edb9885280d62e1fb51fe2dd5b693a94 /arch/powerpc/kvm/powerpc.c | |
parent | e20bbd3d8d5c4432db8fd6f091b096963236064f (diff) | |
download | op-kernel-dev-2ed4f9dd19c0f76f7fb56c4b201696d29149325c.zip op-kernel-dev-2ed4f9dd19c0f76f7fb56c4b201696d29149325c.tar.gz |
KVM: PPC: Book3S HV: Add capability to report possible virtual SMT modes
Now that userspace can set the virtual SMT mode by enabling the
KVM_CAP_PPC_SMT capability, it is useful for userspace to be able
to query the set of possible virtual SMT modes. This provides a
new capability, KVM_CAP_PPC_SMT_POSSIBLE, to provide this
information. The return value is a bitmap of possible modes, with
bit N set if virtual SMT mode 2^N is available. That is, 1 indicates
SMT1 is available, 2 indicates that SMT2 is available, 3 indicates
that both SMT1 and SMT2 are available, and so on.
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Diffstat (limited to 'arch/powerpc/kvm/powerpc.c')
-rw-r--r-- | arch/powerpc/kvm/powerpc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index ccaa7a4..b14736f 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c @@ -566,6 +566,16 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) r = threads_per_subcore; } break; + case KVM_CAP_PPC_SMT_POSSIBLE: + r = 1; + if (hv_enabled) { + if (!cpu_has_feature(CPU_FTR_ARCH_300)) + r = ((threads_per_subcore << 1) - 1); + else + /* P9 can emulate dbells, so allow any mode */ + r = 8 | 4 | 2 | 1; + } + break; case KVM_CAP_PPC_RMA: r = 0; break; |