sparc64: Remove 4MB and 512K base page size options.
authorDavid S. Miller <davem@davemloft.net>
Fri, 18 Jul 2008 06:43:55 +0000 (23:43 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Jul 2008 06:44:53 +0000 (23:44 -0700)
Adrian Bunk reported that enabling 4MB page size breaks the build.
The problem is that MAX_ORDER combined with the page shift exceeds the
SECTION_SIZE_BITS we use in asm-sparc64/sparsemem.h

There are several ways I suppose we could work around this.  For one
we could define a CONFIG_FORCE_MAX_ZONEORDER to decrease MAX_ORDER in
these higher page size cases.

But I also know that these page size cases are broken wrt. TLB miss
handling especially on pre-hypervisor systems, and there isn't an easy
way to fix that.

These options were meant to be fun experimental hacks anyways, and
only 8K and 64K make any sense to support.

So remove 512K and 4M base page size support.  Of course, we still
support these page sizes for huge pages.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/Kconfig
arch/sparc64/lib/copy_page.S
arch/sparc64/mm/tsb.c
include/asm-sparc/mmu_64.h
include/asm-sparc/page_64.h
include/asm-sparc/pgtable_64.h

index 1aeb1da9829ded6805c86a8039f31412a60755fd..7c88263256af216c2b6889481297eeb95434949c 100644 (file)
@@ -98,19 +98,11 @@ config SPARC64_PAGE_SIZE_8KB
          8KB and 64KB work quite well, since SPARC ELF sections
          provide for up to 64KB alignment.
 
-         Therefore, 512KB and 4MB are for expert hackers only.
-
          If you don't know what to do, choose 8KB.
 
 config SPARC64_PAGE_SIZE_64KB
        bool "64KB"
 
-config SPARC64_PAGE_SIZE_512KB
-       bool "512KB"
-
-config SPARC64_PAGE_SIZE_4MB
-       bool "4MB"
-
 endchoice
 
 config SECCOMP
@@ -226,11 +218,10 @@ config HUGETLB_PAGE_SIZE_4MB
        bool "4MB"
 
 config HUGETLB_PAGE_SIZE_512K
-       depends on !SPARC64_PAGE_SIZE_4MB && !SPARC64_PAGE_SIZE_512KB
        bool "512K"
 
 config HUGETLB_PAGE_SIZE_64K
-       depends on !SPARC64_PAGE_SIZE_4MB && !SPARC64_PAGE_SIZE_512KB && !SPARC64_PAGE_SIZE_64KB
+       depends on !SPARC64_PAGE_SIZE_64KB
        bool "64K"
 
 endchoice
index 37460666a5c3250177742db6409e2f69714421d7..b243d3b606ba447106ea4ce756b1e31171b6aeb7 100644 (file)
@@ -25,9 +25,9 @@
 
 #define        DCACHE_SIZE     (PAGE_SIZE * 2)
 
-#if (PAGE_SHIFT == 13) || (PAGE_SHIFT == 19)
+#if (PAGE_SHIFT == 13)
 #define PAGE_SIZE_REM  0x80
-#elif (PAGE_SHIFT == 16) || (PAGE_SHIFT == 22)
+#elif (PAGE_SHIFT == 16)
 #define PAGE_SIZE_REM  0x100
 #else
 #error Wrong PAGE_SHIFT specified
@@ -198,7 +198,7 @@ cheetah_copy_page_insn:
        cmp             %o2, PAGE_SIZE_REM
        bne,pt          %xcc, 1b
         add            %o0, 0x40, %o0
-#if (PAGE_SHIFT == 16) || (PAGE_SHIFT == 22)
+#if (PAGE_SHIFT == 16)
        TOUCH(f0, f2, f4, f6, f8, f10, f12, f14)
        ldda            [%o1] ASI_BLK_P, %f32
        stda            %f48, [%o0] %asi
index fe70c8a557b58ae1c96cb4312878797b8d881d49..3547937b17a2f2d43c5d9f667dcfca7e8ce0c1eb 100644 (file)
@@ -96,12 +96,6 @@ void flush_tsb_user(struct mmu_gather *mp)
 #elif defined(CONFIG_SPARC64_PAGE_SIZE_64KB)
 #define HV_PGSZ_IDX_BASE       HV_PGSZ_IDX_64K
 #define HV_PGSZ_MASK_BASE      HV_PGSZ_MASK_64K
-#elif defined(CONFIG_SPARC64_PAGE_SIZE_512KB)
-#define HV_PGSZ_IDX_BASE       HV_PGSZ_IDX_512K
-#define HV_PGSZ_MASK_BASE      HV_PGSZ_MASK_512K
-#elif defined(CONFIG_SPARC64_PAGE_SIZE_4MB)
-#define HV_PGSZ_IDX_BASE       HV_PGSZ_IDX_4MB
-#define HV_PGSZ_MASK_BASE      HV_PGSZ_MASK_4MB
 #else
 #error Broken base page size setting...
 #endif
index 8abc58f0f9d707b0f79d438b2c238643843539e5..9067dc5005352ad29df931724c6cc1655507b961 100644 (file)
 #define CTX_PGSZ_BASE  CTX_PGSZ_8KB
 #elif defined(CONFIG_SPARC64_PAGE_SIZE_64KB)
 #define CTX_PGSZ_BASE  CTX_PGSZ_64KB
-#elif defined(CONFIG_SPARC64_PAGE_SIZE_512KB)
-#define CTX_PGSZ_BASE  CTX_PGSZ_512KB
-#elif defined(CONFIG_SPARC64_PAGE_SIZE_4MB)
-#define CTX_PGSZ_BASE  CTX_PGSZ_4MB
 #else
 #error No page size specified in kernel configuration
 #endif
index 93f0881b766e2ad4ff39462f945cce7290cb840f..a8a2bba032c1a158704279383b0d59cfac0877fb 100644 (file)
@@ -7,10 +7,6 @@
 #define PAGE_SHIFT   13
 #elif defined(CONFIG_SPARC64_PAGE_SIZE_64KB)
 #define PAGE_SHIFT   16
-#elif defined(CONFIG_SPARC64_PAGE_SIZE_512KB)
-#define PAGE_SHIFT   19
-#elif defined(CONFIG_SPARC64_PAGE_SIZE_4MB)
-#define PAGE_SHIFT   22
 #else
 #error No page size specified in kernel configuration
 #endif
index 78d5594964a34c2dbea6bfa31adf9f4c146cbcb2..bb9ec2cce355a56ed6822fda43fb8c9634d87c04 100644 (file)
 #elif PAGE_SHIFT == 16
 #define _PAGE_SZBITS_4U        _PAGE_SZ64K_4U
 #define _PAGE_SZBITS_4V        _PAGE_SZ64K_4V
-#elif PAGE_SHIFT == 19
-#define _PAGE_SZBITS_4U        _PAGE_SZ512K_4U
-#define _PAGE_SZBITS_4V        _PAGE_SZ512K_4V
-#elif PAGE_SHIFT == 22
-#define _PAGE_SZBITS_4U        _PAGE_SZ4MB_4U
-#define _PAGE_SZBITS_4V        _PAGE_SZ4MB_4V
 #else
 #error Wrong PAGE_SHIFT specified
 #endif