aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile/Kconfig
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2012-03-29 13:58:43 -0400
committerChris Metcalf <cmetcalf@tilera.com>2012-05-25 12:48:24 -0400
commitd5d14ed6f2db7287a5088e1350cf422bf72140b3 (patch)
tree19f0bc20bb6f1995a1e4f75dc58e388c047f7d23 /arch/tile/Kconfig
parent47d632f9f8f3ed62b21f725e98b726d65769b6d7 (diff)
arch/tile: Allow tilegx to build with either 16K or 64K page size
This change introduces new flags for the hv_install_context() API that passes a page table pointer to the hypervisor. Clients can explicitly request 4K, 16K, or 64K small pages when they install a new context. In practice, the page size is fixed at kernel compile time and the same size is always requested every time a new page table is installed. The <hv/hypervisor.h> header changes so that it provides more abstract macros for managing "page" things like PFNs and page tables. For example there is now a HV_DEFAULT_PAGE_SIZE_SMALL instead of the old HV_PAGE_SIZE_SMALL. The various PFN routines have been eliminated and only PA- or PTFN-based ones remain (since PTFNs are always expressed in fixed 2KB "page" size). The page-table management macros are renamed with a leading underscore and take page-size arguments with the presumption that clients will use those macros in some single place to provide the "real" macros they will use themselves. I happened to notice the old hv_set_caching() API was totally broken (it assumed 4KB pages) so I changed it so it would nominally work correctly with other page sizes. Tag modules with the page size so you can't load a module built with a conflicting page size. (And add a test for SMP while we're at it.) Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile/Kconfig')
-rw-r--r--arch/tile/Kconfig25
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 74239dd77e06..38c3957e0b40 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -139,6 +139,31 @@ config NR_CPUS
139 smaller kernel memory footprint results from using a smaller 139 smaller kernel memory footprint results from using a smaller
140 value on chips with fewer tiles. 140 value on chips with fewer tiles.
141 141
142if TILEGX
143
144choice
145 prompt "Kernel page size"
146 default PAGE_SIZE_64KB
147 help
148 This lets you select the page size of the kernel. For best
149 performance on memory-intensive applications, a page size of 64KB
150 is recommended. For workloads involving many small files, many
151 connections, etc., it may be better to select 16KB, which uses
152 memory more efficiently at some cost in TLB performance.
153
154 Note that this option is TILE-Gx specific; currently
155 TILEPro page size is set by rebuilding the hypervisor.
156
157config PAGE_SIZE_16KB
158 bool "16KB"
159
160config PAGE_SIZE_64KB
161 bool "64KB"
162
163endchoice
164
165endif
166
142source "kernel/time/Kconfig" 167source "kernel/time/Kconfig"
143 168
144source "kernel/Kconfig.hz" 169source "kernel/Kconfig.hz"