aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@ezchip.com>2015-12-22 12:28:51 -0500
committerChris Metcalf <cmetcalf@ezchip.com>2016-01-05 08:16:09 -0500
commitc1b27ab5d69099718f519127eea017120c180e71 (patch)
tree8d97ed94ddd5915443c1a2cf599ae860ddc9172e
parent9f9499ae8e6415cefc4fe0a96ad0e27864353c89 (diff)
tile: provide CONFIG_PAGE_SIZE_64KB etc for tilepro
This allows the build system to know that it can't attempt to configure the Lustre virtual block device, for example, when tilepro is using 64KB pages (as it does by default). The tilegx build already provided those symbols. Previously we required that the tilepro hypervisor be rebuilt with a different hardcoded page size in its headers, and then Linux be rebuilt using the updated hypervisor header. Now we allow each of the hypervisor and Linux to be built independently. We still check at boot time to ensure that the page size provided by the hypervisor matches what Linux expects. Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com> Cc: stable@vger.kernel.org [3.19+]
-rw-r--r--arch/tile/Kconfig11
-rw-r--r--arch/tile/include/asm/page.h8
2 files changed, 10 insertions, 9 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 106c21bd7f44..8ec7a4599c08 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -176,8 +176,6 @@ config NR_CPUS
176 smaller kernel memory footprint results from using a smaller 176 smaller kernel memory footprint results from using a smaller
177 value on chips with fewer tiles. 177 value on chips with fewer tiles.
178 178
179if TILEGX
180
181choice 179choice
182 prompt "Kernel page size" 180 prompt "Kernel page size"
183 default PAGE_SIZE_64KB 181 default PAGE_SIZE_64KB
@@ -188,8 +186,11 @@ choice
188 connections, etc., it may be better to select 16KB, which uses 186 connections, etc., it may be better to select 16KB, which uses
189 memory more efficiently at some cost in TLB performance. 187 memory more efficiently at some cost in TLB performance.
190 188
191 Note that this option is TILE-Gx specific; currently 189 Note that for TILEPro, you must also rebuild the hypervisor
192 TILEPro page size is set by rebuilding the hypervisor. 190 with a matching page size.
191
192config PAGE_SIZE_4KB
193 bool "4KB" if TILEPRO
193 194
194config PAGE_SIZE_16KB 195config PAGE_SIZE_16KB
195 bool "16KB" 196 bool "16KB"
@@ -199,8 +200,6 @@ config PAGE_SIZE_64KB
199 200
200endchoice 201endchoice
201 202
202endif
203
204source "kernel/Kconfig.hz" 203source "kernel/Kconfig.hz"
205 204
206config KEXEC 205config KEXEC
diff --git a/arch/tile/include/asm/page.h b/arch/tile/include/asm/page.h
index a213a8d84a95..8eca6a0e1762 100644
--- a/arch/tile/include/asm/page.h
+++ b/arch/tile/include/asm/page.h
@@ -20,15 +20,17 @@
20#include <arch/chip.h> 20#include <arch/chip.h>
21 21
22/* PAGE_SHIFT and HPAGE_SHIFT determine the page sizes. */ 22/* PAGE_SHIFT and HPAGE_SHIFT determine the page sizes. */
23#if defined(CONFIG_PAGE_SIZE_16KB) 23#if defined(CONFIG_PAGE_SIZE_4KB) /* tilepro only */
24#define PAGE_SHIFT 12
25#define CTX_PAGE_FLAG HV_CTX_PG_SM_4K
26#elif defined(CONFIG_PAGE_SIZE_16KB)
24#define PAGE_SHIFT 14 27#define PAGE_SHIFT 14
25#define CTX_PAGE_FLAG HV_CTX_PG_SM_16K 28#define CTX_PAGE_FLAG HV_CTX_PG_SM_16K
26#elif defined(CONFIG_PAGE_SIZE_64KB) 29#elif defined(CONFIG_PAGE_SIZE_64KB)
27#define PAGE_SHIFT 16 30#define PAGE_SHIFT 16
28#define CTX_PAGE_FLAG HV_CTX_PG_SM_64K 31#define CTX_PAGE_FLAG HV_CTX_PG_SM_64K
29#else 32#else
30#define PAGE_SHIFT HV_LOG2_DEFAULT_PAGE_SIZE_SMALL 33#error Page size not specified in Kconfig
31#define CTX_PAGE_FLAG 0
32#endif 34#endif
33#define HPAGE_SHIFT HV_LOG2_DEFAULT_PAGE_SIZE_LARGE 35#define HPAGE_SHIFT HV_LOG2_DEFAULT_PAGE_SIZE_LARGE
34 36