arch: consolidate existing CONFIG_PAGE_SIZE_*KB definitions
[linux-2.6-microblaze.git] / arch / Kconfig
index a5af0ed..fd18b7d 100644 (file)
@@ -1078,17 +1078,107 @@ config HAVE_ARCH_COMPAT_MMAP_BASES
          and vice-versa 32-bit applications to call 64-bit mmap().
          Required for applications doing different bitness syscalls.
 
+config HAVE_PAGE_SIZE_4KB
+       bool
+
+config HAVE_PAGE_SIZE_8KB
+       bool
+
+config HAVE_PAGE_SIZE_16KB
+       bool
+
+config HAVE_PAGE_SIZE_32KB
+       bool
+
+config HAVE_PAGE_SIZE_64KB
+       bool
+
+config HAVE_PAGE_SIZE_256KB
+       bool
+
+choice
+       prompt "MMU page size"
+
+config PAGE_SIZE_4KB
+       bool "4KiB pages"
+       depends on HAVE_PAGE_SIZE_4KB
+       help
+         This option select the standard 4KiB Linux page size and the only
+         available option on many architectures. Using 4KiB page size will
+         minimize memory consumption and is therefore recommended for low
+         memory systems.
+         Some software that is written for x86 systems makes incorrect
+         assumptions about the page size and only runs on 4KiB pages.
+
+config PAGE_SIZE_8KB
+       bool "8KiB pages"
+       depends on HAVE_PAGE_SIZE_8KB
+       help
+         This option is the only supported page size on a few older
+         processors, and can be slightly faster than 4KiB pages.
+
+config PAGE_SIZE_16KB
+       bool "16KiB pages"
+       depends on HAVE_PAGE_SIZE_16KB
+       help
+         This option is usually a good compromise between memory
+         consumption and performance for typical desktop and server
+         workloads, often saving a level of page table lookups compared
+         to 4KB pages as well as reducing TLB pressure and overhead of
+         per-page operations in the kernel at the expense of a larger
+         page cache.
+
+config PAGE_SIZE_32KB
+       bool "32KiB pages"
+       depends on HAVE_PAGE_SIZE_32KB
+       help
+         Using 32KiB page size will result in slightly higher performance
+         kernel at the price of higher memory consumption compared to
+         16KiB pages.  This option is available only on cnMIPS cores.
+         Note that you will need a suitable Linux distribution to
+         support this.
+
+config PAGE_SIZE_64KB
+       bool "64KiB pages"
+       depends on HAVE_PAGE_SIZE_64KB
+       help
+         Using 64KiB page size will result in slightly higher performance
+         kernel at the price of much higher memory consumption compared to
+         4KiB or 16KiB pages.
+         This is not suitable for general-purpose workloads but the
+         better performance may be worth the cost for certain types of
+         supercomputing or database applications that work mostly with
+         large in-memory data rather than small files.
+
+config PAGE_SIZE_256KB
+       bool "256KiB pages"
+       depends on HAVE_PAGE_SIZE_256KB
+       help
+         256KiB pages have little practical value due to their extreme
+         memory usage.  The kernel will only be able to run applications
+         that have been compiled with '-zmax-page-size' set to 256KiB
+         (the default is 64KiB or 4KiB on most architectures).
+
+endchoice
+
 config PAGE_SIZE_LESS_THAN_64KB
        def_bool y
-       depends on !ARM64_64K_PAGES
        depends on !PAGE_SIZE_64KB
-       depends on !PARISC_PAGE_SIZE_64KB
        depends on PAGE_SIZE_LESS_THAN_256KB
 
 config PAGE_SIZE_LESS_THAN_256KB
        def_bool y
        depends on !PAGE_SIZE_256KB
 
+config PAGE_SHIFT
+       int
+       default 12 if PAGE_SIZE_4KB
+       default 13 if PAGE_SIZE_8KB
+       default 14 if PAGE_SIZE_16KB
+       default 15 if PAGE_SIZE_32KB
+       default 16 if PAGE_SIZE_64KB
+       default 18 if PAGE_SIZE_256KB
+
 # This allows to use a set of generic functions to determine mmap base
 # address by giving priority to top-down scheme only if the process
 # is not in legacy mode (compat task, unlimited stack size or