powerpc/44x: Support 16K/64K base page sizes on 44x
[deliverable/linux.git] / arch / powerpc / Kconfig
index f7f5448f863dfa54f1ca9746ca601b3ce6907503..1af22579e3d4af54158d24b667b43d7bd24f5aa3 100644 (file)
@@ -405,23 +405,53 @@ config PPC_HAS_HASH_64K
        depends on PPC64
        default n
 
-config PPC_64K_PAGES
-       bool "64k page size"
-       depends on PPC64
-       select PPC_HAS_HASH_64K
+choice
+       prompt "Page size"
+       default PPC_4K_PAGES
        help
-         This option changes the kernel logical page size to 64k. On machines
-         without processor support for 64k pages, the kernel will simulate
-         them by loading each individual 4k page on demand transparently,
-         while on hardware with such support, it will be used to map
-         normal application pages.
+         Select the kernel logical page size. Increasing the page size
+         will reduce software overhead at each page boundary, allow
+         hardware prefetch mechanisms to be more effective, and allow
+         larger dma transfers increasing IO efficiency and reducing
+         overhead. However the utilization of memory will increase.
+         For example, each cached file will using a multiple of the
+         page size to hold its contents and the difference between the
+         end of file and the end of page is wasted.
+
+         Some dedicated systems, such as software raid serving with
+         accelerated calculations, have shown significant increases.
+
+         If you configure a 64 bit kernel for 64k pages but the
+         processor does not support them, then the kernel will simulate
+         them with 4k pages, loading them on demand, but with the
+         reduced software overhead and larger internal fragmentation.
+         For the 32 bit kernel, a large page option will not be offered
+         unless it is supported by the configured processor.
+
+         If unsure, choose 4K_PAGES.
+
+config PPC_4K_PAGES
+       bool "4k page size"
+
+config PPC_16K_PAGES
+       bool "16k page size" if 44x
+
+config PPC_64K_PAGES
+       bool "64k page size" if 44x || PPC_STD_MMU_64
+       select PPC_HAS_HASH_64K if PPC_STD_MMU_64
+
+endchoice
 
 config FORCE_MAX_ZONEORDER
        int "Maximum zone order"
-       range 9 64 if PPC_64K_PAGES
-       default "9" if PPC_64K_PAGES
-       range 13 64 if PPC64 && !PPC_64K_PAGES
-       default "13" if PPC64 && !PPC_64K_PAGES
+       range 9 64 if PPC_STD_MMU_64 && PPC_64K_PAGES
+       default "9" if PPC_STD_MMU_64 && PPC_64K_PAGES
+       range 13 64 if PPC_STD_MMU_64 && !PPC_64K_PAGES
+       default "13" if PPC_STD_MMU_64 && !PPC_64K_PAGES
+       range 9 64 if PPC_STD_MMU_32 && PPC_16K_PAGES
+       default "9" if PPC_STD_MMU_32 && PPC_16K_PAGES
+       range 7 64 if PPC_STD_MMU_32 && PPC_64K_PAGES
+       default "7" if PPC_STD_MMU_32 && PPC_64K_PAGES
        range 11 64
        default "11"
        help
@@ -441,7 +471,7 @@ config FORCE_MAX_ZONEORDER
 
 config PPC_SUBPAGE_PROT
        bool "Support setting protections for 4k subpages"
-       depends on PPC_64K_PAGES
+       depends on PPC_STD_MMU_64 && PPC_64K_PAGES
        help
          This option adds support for a system call to allow user programs
          to set access permissions (read/write, readonly, or no access)
This page took 0.033318 seconds and 5 git commands to generate.