linux-mips
[Top] [All Lists]

[PATCH] 64K page size

To: linux-mips@linux-mips.org
Subject: [PATCH] 64K page size
From: Peter Watkins <treestem@gmail.com>
Date: Wed, 23 Aug 2006 11:15:49 -0400
Cc: Ralf Baechle <ralf@linux-mips.org>
Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:user-agent:x-accept-language:mime-version:to:cc:subject:content-type; b=p+mDl69esesKxvfS4CFU9Sjxpt9vRfum2DrsAsEvYpvoUfVeRdVYxeffeF/ebRO4JhKTgNcaNu+5mrca7vr97yvtxIrwaRGwmZLT/h2jOOYKAeOA2xgvKArCECg0z464V2BfmLtAaRVgt8x7k8+HaLYCaaDNIUTfx0B/rI1FMMA=
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla Thunderbird 1.0.6 (X11/20050831)
Hello,

There are a number of changes required to support larger page sizes, but this one I thought worth sending up right away.

The code in pgtable-64.h assumes TASK_SIZE is always bigger than a first level PGDIR_SIZE. This is not the case for 64K pages, where task size is 40 bits (1TB) and a pgd entry can map 42 bits. This leads to USER_PTRS_PER_PGD being zero for 64K pages.

If there is interest in other changes for 64K pages, I can send more.

Signed-off-by: Peter Watkins <treestem@gmail.com>

diff --git a/include/asm-mips/pgtable-64.h b/include/asm-mips/pgtable-64.h
index e3db932..9ce72bd 100644
--- a/include/asm-mips/pgtable-64.h
+++ b/include/asm-mips/pgtable-64.h
@@ -93,8 +93,12 @@ #define PTRS_PER_PGD ((PAGE_SIZE << PGD_
 #define PTRS_PER_PMD   ((PAGE_SIZE << PMD_ORDER) / sizeof(pmd_t))
 #define PTRS_PER_PTE   ((PAGE_SIZE << PTE_ORDER) / sizeof(pte_t))
 
+#if PGDIR_SIZE >= TASK_SIZE
+#define USER_PTRS_PER_PGD       (1)
+#else
 #define USER_PTRS_PER_PGD      (TASK_SIZE / PGDIR_SIZE)
-#define FIRST_USER_ADDRESS     0
+#endif
+#define FIRST_USER_ADDRESS     0UL
 
 #define VMALLOC_START          MAP_BASE
 #define VMALLOC_END    \
<Prev in Thread] Current Thread [Next in Thread>