[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] xen:arm: arm64: Add correct MPIDR_HWID_MASK value for ARM64



commit 132d4aa00ed2447afe4bc7d2d37abc97e7ece209
Author:     Wei Chen <wei.chen@xxxxxxxxxx>
AuthorDate: Tue May 31 10:54:13 2016 +0800
Commit:     Stefano Stabellini <sstabellini@xxxxxxxxxx>
CommitDate: Wed Jun 1 11:13:37 2016 +0100

    xen:arm: arm64: Add correct MPIDR_HWID_MASK value for ARM64
    
    Currently, MPIDR_HWID_MASK is using the bit definition of AArch32
    MPIDR register. But from D7.2.67 of ARM ARM (DDI 0487A.i) we can see
    there are 4 levels of affinity on AArch64 whilst AArch32 has only 3.
    So, this value is not correct when Xen is running on AArch64.
    
    Now, we use the value 0xff00ffffff for this macro on AArch64. But
    neither of this value and its bitwise invert value can be used in mov
    instruction with the encoding of {imm16:shift} or {imms:immr}. So we
    have to use ldr to load the bitwise invert value to register.
    
    The details of mov immediate encoding are listed in C4.2.5 of ARM ARM
    (DDI 0487A.i).
    
    Signed-off-by: Wei Chen <Wei.Chen@xxxxxxxxxx>
    Reviewed-by: Julien Grall <julien.grall@xxxxxxx>
    Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
 xen/arch/arm/arm64/head.S       | 2 +-
 xen/include/asm-arm/processor.h | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index d5831f2..3090beb 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -270,7 +270,7 @@ common_start:
         tbz   x0, _MPIDR_SMP, 1f     /* Multiprocessor extension not 
supported? */
         tbnz  x0, _MPIDR_UP, 1f      /* Uniprocessor system? */
 
-        mov   x13, #(~MPIDR_HWID_MASK)
+        ldr   x13, =(~MPIDR_HWID_MASK)
         bic   x24, x0, x13           /* Mask out flags to get CPU ID */
 1:
 
diff --git a/xen/include/asm-arm/processor.h b/xen/include/asm-arm/processor.h
index b4cce7e..284ad6a 100644
--- a/xen/include/asm-arm/processor.h
+++ b/xen/include/asm-arm/processor.h
@@ -18,7 +18,11 @@
 #define MPIDR_SMP           (_AC(1,U) << _MPIDR_SMP)
 #define MPIDR_AFF0_SHIFT    (0)
 #define MPIDR_AFF0_MASK     (_AC(0xff,U) << MPIDR_AFF0_SHIFT)
+#ifdef CONFIG_ARM_64
+#define MPIDR_HWID_MASK     _AC(0xff00ffffff,UL)
+#else
 #define MPIDR_HWID_MASK     _AC(0xffffff,U)
+#endif
 #define MPIDR_INVALID       (~MPIDR_HWID_MASK)
 #define MPIDR_LEVEL_BITS    (8)
 
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.