From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 6/9] KVM: ARM: Fix calculation of virtual CPU ID
Date: Tue, 15 Oct 2013 17:49:34 -0700 [thread overview]
Message-ID: <1381884577-24747-7-git-send-email-christoffer.dall@linaro.org> (raw)
In-Reply-To: <1381884577-24747-1-git-send-email-christoffer.dall@linaro.org>
From: Jonathan Austin <jonathan.austin@arm.com>
KVM does not have a notion of multiple clusters for CPUs, just a linear
array of CPUs. When using a system with cores in more than one cluster, the
current method for calculating the virtual MPIDR will leak the (physical)
cluster information into the virtual MPIDR. One effect of this is that
Linux under KVM fails to boot multiple CPUs that aren't in the 0th cluster.
This patch does away with exposing the real MPIDR fields in favour of simply
using the virtual CPU number (but preserving the U bit, as before).
Signed-off-by: Jonathan Austin <jonathan.austin@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
---
arch/arm/kvm/coproc_a15.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/arch/arm/kvm/coproc_a15.c b/arch/arm/kvm/coproc_a15.c
index cf93472..bbd4b88 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"
--
1.7.10.4
next prev parent reply other threads:[~2013-10-16 0:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-16 0:49 [GIT PULL] KVM/ARM Updates for kvm/next Christoffer Dall
2013-10-16 0:49 ` [PATCH 1/9] KVM: ARM: Fix typo in comments of inject_abt() Christoffer Dall
2013-10-16 0:49 ` [PATCH 2/9] ARM: KVM: Implement kvm_vcpu_preferred_target() function Christoffer Dall
2013-10-16 0:49 ` [PATCH 3/9] ARM64: " Christoffer Dall
2013-10-16 0:49 ` [PATCH 4/9] ARM/ARM64: KVM: Implement KVM_ARM_PREFERRED_TARGET ioctl Christoffer Dall
2013-10-16 0:49 ` [PATCH 5/9] KVM: Add documentation for " Christoffer Dall
2013-10-16 0:49 ` Christoffer Dall [this message]
2013-10-16 0:49 ` [PATCH 7/9] KVM: ARM: fix the size of TTBCR_{T0SZ,T1SZ} masks Christoffer Dall
2013-10-16 0:49 ` [PATCH 8/9] KVM: ARM: Add support for Cortex-A7 Christoffer Dall
2013-10-16 0:49 ` [PATCH 9/9] KVM: ARM: Remove non-ASCII space characters Christoffer Dall
2013-10-16 12:38 ` [GIT PULL] KVM/ARM Updates for kvm/next Gleb Natapov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1381884577-24747-7-git-send-email-christoffer.dall@linaro.org \
--to=christoffer.dall@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).