diff options
author | Michael Neuling <mikey@neuling.org> | 2007-12-06 01:24:48 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-12-10 21:45:56 -0500 |
commit | 584f8b71a2e8abdaeb4b6f4fddaf542b61392453 (patch) | |
tree | c14f26334e3a3524046f0790f96564a4a4f22d92 /arch/powerpc/kernel/prom.c | |
parent | 44ef339073f67d4abcc62ae52a5fbc069d7a4d29 (diff) |
[POWERPC] Use SLB size from the device tree
Currently we hardwire the number of SLBs to 64, but PAPR says we
should use the ibm,slb-size property to obtain the number of SLB
entries. This uses this property instead of assuming 64. If no
property is found, we assume 64 entries as before.
This soft patches the SLB handler, so it shouldn't change performance
at all.
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/prom.c')
-rw-r--r-- | arch/powerpc/kernel/prom.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index acc0d247d3c3..6c2d8836f77d 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -583,6 +583,20 @@ static void __init check_cpu_pa_features(unsigned long node) | |||
583 | ibm_pa_features, ARRAY_SIZE(ibm_pa_features)); | 583 | ibm_pa_features, ARRAY_SIZE(ibm_pa_features)); |
584 | } | 584 | } |
585 | 585 | ||
586 | #ifdef CONFIG_PPC64 | ||
587 | static void __init check_cpu_slb_size(unsigned long node) | ||
588 | { | ||
589 | u32 *slb_size_ptr; | ||
590 | |||
591 | slb_size_ptr = of_get_flat_dt_prop(node, "ibm,slb-size", NULL); | ||
592 | if (slb_size_ptr != NULL) { | ||
593 | mmu_slb_size = *slb_size_ptr; | ||
594 | } | ||
595 | } | ||
596 | #else | ||
597 | #define check_cpu_slb_size(node) do { } while(0) | ||
598 | #endif | ||
599 | |||
586 | static struct feature_property { | 600 | static struct feature_property { |
587 | const char *name; | 601 | const char *name; |
588 | u32 min_value; | 602 | u32 min_value; |
@@ -713,6 +727,7 @@ static int __init early_init_dt_scan_cpus(unsigned long node, | |||
713 | 727 | ||
714 | check_cpu_feature_properties(node); | 728 | check_cpu_feature_properties(node); |
715 | check_cpu_pa_features(node); | 729 | check_cpu_pa_features(node); |
730 | check_cpu_slb_size(node); | ||
716 | 731 | ||
717 | #ifdef CONFIG_PPC_PSERIES | 732 | #ifdef CONFIG_PPC_PSERIES |
718 | if (nthreads > 1) | 733 | if (nthreads > 1) |