MIPS: Separate MAAR V bit into VL and VH for XPA
authorJames Hogan <james.hogan@imgtec.com>
Tue, 14 Mar 2017 10:15:09 +0000 (10:15 +0000)
committerJames Hogan <james.hogan@imgtec.com>
Tue, 28 Mar 2017 13:49:01 +0000 (14:49 +0100)
The MAAR V bit has been renamed VL since another bit called VH is added
at the top of the register when it is extended to 64-bits on a 32-bit
processor with XPA. Rename the V definition, fix the various users, and
add definitions for the VH bit. Also add a definition for the MAARI
Index field.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
arch/mips/include/asm/maar.h
arch/mips/include/asm/mipsregs.h
arch/mips/mm/init.c

index 21d9607c80d7deaa1ef2174c0dde62bda9985bde..e10f78befbd9b2b8185e39e0e5dca63ae3e5a78f 100644 (file)
@@ -36,7 +36,7 @@ unsigned platform_maar_init(unsigned num_pairs);
  * @upper:     The highest address that the MAAR pair will affect. Must be
  *             aligned to one byte before a 2^16 byte boundary.
  * @attrs:     The accessibility attributes to program, eg. MIPS_MAAR_S. The
- *             MIPS_MAAR_V attribute will automatically be set.
+ *             MIPS_MAAR_VL attribute will automatically be set.
  *
  * Program the pair of MAAR registers specified by idx to apply the attributes
  * specified by attrs to the range of addresses from lower to higher.
@@ -49,10 +49,10 @@ static inline void write_maar_pair(unsigned idx, phys_addr_t lower,
        BUG_ON(((upper & 0xffff) != 0xffff)
                || ((upper & ~0xffffull) & ~(MIPS_MAAR_ADDR << 4)));
 
-       /* Automatically set MIPS_MAAR_V */
-       attrs |= MIPS_MAAR_V;
+       /* Automatically set MIPS_MAAR_VL */
+       attrs |= MIPS_MAAR_VL;
 
-       /* Write the upper address & attributes (only MIPS_MAAR_V matters) */
+       /* Write the upper address & attributes (only MIPS_MAAR_VL matters) */
        write_c0_maari(idx << 1);
        back_to_back_c0_hazard();
        write_c0_maar(((upper >> 4) & MIPS_MAAR_ADDR) | attrs);
@@ -81,7 +81,7 @@ extern void maar_init(void);
  * @upper:     The highest address that the MAAR pair will affect. Must be
  *             aligned to one byte before a 2^16 byte boundary.
  * @attrs:     The accessibility attributes to program, eg. MIPS_MAAR_S. The
- *             MIPS_MAAR_V attribute will automatically be set.
+ *             MIPS_MAAR_VL attribute will automatically be set.
  *
  * Describes the configuration of a pair of Memory Accessibility Attribute
  * Registers - applying attributes from attrs to the range of physical
index f8d1d2f1d80d55a3969b9eeb1ff05d7d484b18a9..c20df608147977f8dadc1c5b6079f26b537ba2d5 100644 (file)
  */
 #ifdef __ASSEMBLY__
 #define _ULCAST_
+#define _U64CAST_
 #else
 #define _ULCAST_ (unsigned long)
+#define _U64CAST_ (u64)
 #endif
 
 /*
 #define XLR_PERFCTRL_ALLTHREADS        (_ULCAST_(1) << 13)
 
 /* MAAR bit definitions */
+#define MIPS_MAAR_VH           (_U64CAST_(1) << 63)
 #define MIPS_MAAR_ADDR         ((BIT_ULL(BITS_PER_LONG - 12) - 1) << 12)
 #define MIPS_MAAR_ADDR_SHIFT   12
 #define MIPS_MAAR_S            (_ULCAST_(1) << 1)
-#define MIPS_MAAR_V            (_ULCAST_(1) << 0)
+#define MIPS_MAAR_VL           (_ULCAST_(1) << 0)
+
+/* MAARI bit definitions */
+#define MIPS_MAARI_INDEX       (_ULCAST_(0x3f) << 0)
 
 /* EBase bit definitions */
 #define MIPS_EBASE_CPUNUM_SHIFT        0
index aa75849c36bcdd79489e4933d334232985d298c5..3ca20283b31eaf3e9a35a165fe59ed298c5691e2 100644 (file)
@@ -348,7 +348,7 @@ void maar_init(void)
                upper = ((upper & MIPS_MAAR_ADDR) << 4) | 0xffff;
 
                pr_info("  [%d]: ", i / 2);
-               if (!(attr & MIPS_MAAR_V)) {
+               if (!(attr & MIPS_MAAR_VL)) {
                        pr_cont("disabled\n");
                        continue;
                }