summaryrefslogtreecommitdiff
path: root/arch/arm/kvm/coproc_a15.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kvm/coproc_a15.c')
-rw-r--r--arch/arm/kvm/coproc_a15.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/arm/kvm/coproc_a15.c b/arch/arm/kvm/coproc_a15.c
index cf93472b9dd6..bbd4b888dbf3 100644
--- a/arch/arm/kvm/coproc_a15.c
+++ b/arch/arm/kvm/coproc_a15.c
@@ -27,14 +27,11 @@
static void reset_mpidr(struct kvm_vcpu *vcpu, const struct coproc_reg *r)
{
/*
- * Compute guest MPIDR:
- * (Even if we present only one VCPU to the guest on an SMP
- * host we don't set the U bit in the MPIDR, or vice versa, as
- * revealing the underlying hardware properties is likely to
- * be the best choice).
+ * Compute guest MPIDR. No need to mess around with different clusters
+ * but we read the 'U' bit from the underlying hardware directly.
*/
- vcpu->arch.cp15[c0_MPIDR] = (read_cpuid_mpidr() & ~MPIDR_LEVEL_MASK)
- | (vcpu->vcpu_id & MPIDR_LEVEL_MASK);
+ vcpu->arch.cp15[c0_MPIDR] = (read_cpuid_mpidr() & MPIDR_SMP_BITMASK)
+ | vcpu->vcpu_id;
}
#include "coproc.h"