]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From: Anton Blanchard <anton@samba.org> |
2 | Subject: powerpc/mm: Reduce hashtable size when using 64kB pages | |
3 | Date: Fri Feb 13 11:57:30 2009 +0000 | |
4 | References: bnc#501160 | |
5 | Patch-upstream: yes | |
6 | Git: 13870b657578bcce167978ee93dc02bf54e3beb0 | |
7 | ||
8 | powerpc/mm: Reduce hashtable size when using 64kB pages | |
9 | ||
10 | At the moment we size the hashtable based on 4kB pages / 2, even on a | |
11 | 64kB kernel. This results in a hashtable that is much larger than it | |
12 | needs to be. | |
13 | ||
14 | Grab the real page size and size the hashtable based on that | |
15 | ||
16 | Note: This only has effect on non hypervisor machines. | |
17 | ||
18 | Signed-off-by: Anton Blanchard <anton@samba.org> | |
19 | Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> | |
20 | Acked-by: Nick Piggin <npiggin@suse.de> | |
21 | ||
22 | --- | |
23 | arch/powerpc/mm/hash_utils_64.c | 5 +++-- | |
24 | 1 file changed, 3 insertions(+), 2 deletions(-) | |
25 | ||
26 | --- a/arch/powerpc/mm/hash_utils_64.c | |
27 | +++ b/arch/powerpc/mm/hash_utils_64.c | |
28 | @@ -514,7 +514,7 @@ static int __init htab_dt_scan_pftsize(u | |
29 | ||
30 | static unsigned long __init htab_get_table_size(void) | |
31 | { | |
32 | - unsigned long mem_size, rnd_mem_size, pteg_count; | |
33 | + unsigned long mem_size, rnd_mem_size, pteg_count, psize; | |
34 | ||
35 | /* If hash size isn't already provided by the platform, we try to | |
36 | * retrieve it from the device-tree. If it's not there neither, we | |
37 | @@ -532,7 +532,8 @@ static unsigned long __init htab_get_tab | |
38 | rnd_mem_size <<= 1; | |
39 | ||
40 | /* # pages / 2 */ | |
41 | - pteg_count = max(rnd_mem_size >> (12 + 1), 1UL << 11); | |
42 | + psize = mmu_psize_defs[mmu_virtual_psize].shift; | |
43 | + pteg_count = max(rnd_mem_size >> (psize + 1), 1UL << 11); | |
44 | ||
45 | return pteg_count << 7; | |
46 | } |