diff options
author | Anton Blanchard <anton@samba.org> | 2009-02-13 06:57:30 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-02-22 18:48:58 -0500 |
commit | 13870b657578bcce167978ee93dc02bf54e3beb0 (patch) | |
tree | c7c5ece57c707eacf465af5b954c7b4234b71d96 /arch/powerpc/mm | |
parent | 33f00dcedb0e22cdb156a23632814fc580fcfcf8 (diff) |
powerpc/mm: Reduce hashtable size when using 64kB pages
At the moment we size the hashtable based on 4kB pages / 2, even on a
64kB kernel. This results in a hashtable that is much larger than it
needs to be.
Grab the real page size and size the hashtable based on that
Note: This only has effect on non hypervisor machines.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 8d5b4758c13a..f5bc1b213f24 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -516,7 +516,7 @@ static int __init htab_dt_scan_pftsize(unsigned long node, | |||
516 | 516 | ||
517 | static unsigned long __init htab_get_table_size(void) | 517 | static unsigned long __init htab_get_table_size(void) |
518 | { | 518 | { |
519 | unsigned long mem_size, rnd_mem_size, pteg_count; | 519 | unsigned long mem_size, rnd_mem_size, pteg_count, psize; |
520 | 520 | ||
521 | /* If hash size isn't already provided by the platform, we try to | 521 | /* If hash size isn't already provided by the platform, we try to |
522 | * retrieve it from the device-tree. If it's not there neither, we | 522 | * retrieve it from the device-tree. If it's not there neither, we |
@@ -534,7 +534,8 @@ static unsigned long __init htab_get_table_size(void) | |||
534 | rnd_mem_size <<= 1; | 534 | rnd_mem_size <<= 1; |
535 | 535 | ||
536 | /* # pages / 2 */ | 536 | /* # pages / 2 */ |
537 | pteg_count = max(rnd_mem_size >> (12 + 1), 1UL << 11); | 537 | psize = mmu_psize_defs[mmu_virtual_psize].shift; |
538 | pteg_count = max(rnd_mem_size >> (psize + 1), 1UL << 11); | ||
538 | 539 | ||
539 | return pteg_count << 7; | 540 | return pteg_count << 7; |
540 | } | 541 | } |