sparc64: redefine first version
authorPavel Tatashin <pasha.tatashin@oracle.com>
Wed, 31 May 2017 15:25:22 +0000 (11:25 -0400)
committerSasha Levin <alexander.levin@verizon.com>
Mon, 26 Jun 2017 02:02:18 +0000 (22:02 -0400)
[ Upstream commit c4415235b2be0cc791572e8e7f7466ab8f73a2bf ]

CTX_FIRST_VERSION defines the first context version, but also it defines
first context. This patch redefines it to only include the first context
version.

Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
Reviewed-by: Bob Picco <bob.picco@oracle.com>
Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
arch/sparc/include/asm/mmu_64.h
arch/sparc/mm/init_64.c

index 70067ce184b16a9d91de2737bf804dbb89e94307..d2e8f03690f6b2ab2861fb99ddf9eea0d538be82 100644 (file)
@@ -52,7 +52,7 @@
 #define CTX_NR_MASK            TAG_CONTEXT_BITS
 #define CTX_HW_MASK            (CTX_NR_MASK | CTX_PGSZ_MASK)
 
-#define CTX_FIRST_VERSION      ((_AC(1,UL) << CTX_VERSION_SHIFT) + _AC(1,UL))
+#define CTX_FIRST_VERSION      BIT(CTX_VERSION_SHIFT)
 #define CTX_VALID(__ctx)       \
         (!(((__ctx.sparc64_ctx_val) ^ tlb_context_cache) & CTX_VERSION_MASK))
 #define CTX_HWBITS(__ctx)      ((__ctx.sparc64_ctx_val) & CTX_HW_MASK)
index 851129c5cba5f924d015fed820525c880d85757c..c9b7090b5e20aac46cbee3be8dd0fc0d6008076c 100644 (file)
@@ -665,7 +665,7 @@ EXPORT_SYMBOL(__flush_dcache_range);
 
 /* get_new_mmu_context() uses "cache + 1".  */
 DEFINE_SPINLOCK(ctx_alloc_lock);
-unsigned long tlb_context_cache = CTX_FIRST_VERSION - 1;
+unsigned long tlb_context_cache = CTX_FIRST_VERSION;
 #define MAX_CTX_NR     (1UL << CTX_NR_BITS)
 #define CTX_BMAP_SLOTS BITS_TO_LONGS(MAX_CTX_NR)
 DECLARE_BITMAP(mmu_context_bmap, MAX_CTX_NR);
@@ -696,9 +696,9 @@ void get_new_mmu_context(struct mm_struct *mm)
                if (new_ctx >= ctx) {
                        int i;
                        new_ctx = (tlb_context_cache & CTX_VERSION_MASK) +
-                               CTX_FIRST_VERSION;
+                               CTX_FIRST_VERSION + 1;
                        if (new_ctx == 1)
-                               new_ctx = CTX_FIRST_VERSION;
+                               new_ctx = CTX_FIRST_VERSION + 1;
 
                        /* Don't call memset, for 16 entries that's just
                         * plain silly...