aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/arm/setup.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2013-02-22 08:58:22 +0000
committerIan Campbell <ian.campbell@citrix.com>2013-02-22 12:14:55 +0000
commit36bec0096e0fcda9964e91a4c8b76561a47d842f (patch)
tree48cf494bde8251a76d27647a227b2093dc3a70f7 /xen/arch/arm/setup.c
parent7a016c8427353f9876560d7e01ea16f7a42d7fcb (diff)
downloadxen-36bec0096e0fcda9964e91a4c8b76561a47d842f.tar.gz
xen-36bec0096e0fcda9964e91a4c8b76561a47d842f.tar.bz2
xen-36bec0096e0fcda9964e91a4c8b76561a47d842f.zip
xen: arm: Explicitly setup VPIDR & VMPIDR at start of day
These are supposed to reset to the value of the underlying hardware but appears not to be on at least some v8 models. There's no harm in setting them explicitly. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'xen/arch/arm/setup.c')
-rw-r--r--xen/arch/arm/setup.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index f40cc7fe34..832603466b 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -56,6 +56,11 @@ static void __init init_idle_domain(void)
static void __init processor_id(void)
{
+
+ /* Setup the virtual ID to match the physical */
+ WRITE_SYSREG32(READ_SYSREG32(MIDR_EL1), VPIDR_EL2);
+ WRITE_SYSREG(READ_SYSREG(MPIDR_EL1), VMPIDR_EL2);
+
#if defined(CONFIG_ARM_64)
printk("64-bit Processor Features: %016"PRIx64" %016"PRIx64"\n",
READ_SYSREG64(ID_AA64PFR0_EL1), READ_SYSREG64(ID_AA64PFR1_EL1));