Message ID | 20190117121328.13395-3-mpe@ellerman.id.au (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/4] powerpc/64s: Always set mmu_slb_size using slb_set_size() | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | next/apply_patch Successfully applied |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 61 lines checked |
Michael Ellerman <mpe@ellerman.id.au> writes: > The SLB initialisation code is spread around a bit between prom.c and > hash_utils_64.c. Consolidate it all in hash_utils_64.c. > > This slightly changes the timing of when mmu_slb_size is initialised, > but that should have no effect. Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> > > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> > --- > arch/powerpc/kernel/prom.c | 16 ---------------- > arch/powerpc/mm/hash_utils_64.c | 15 ++++++++++----- > 2 files changed, 10 insertions(+), 21 deletions(-) > > diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c > index 14693f8ccb80..018ededd1948 100644 > --- a/arch/powerpc/kernel/prom.c > +++ b/arch/powerpc/kernel/prom.c > @@ -229,21 +229,6 @@ static void __init check_cpu_pa_features(unsigned long node) > ibm_pa_features, ARRAY_SIZE(ibm_pa_features)); > } > > -#ifdef CONFIG_PPC_BOOK3S_64 > -static void __init init_mmu_slb_size(unsigned long node) > -{ > - const __be32 *slb_size_ptr; > - > - slb_size_ptr = of_get_flat_dt_prop(node, "slb-size", NULL) ? : > - of_get_flat_dt_prop(node, "ibm,slb-size", NULL); > - > - if (slb_size_ptr) > - slb_set_size(be32_to_cpup(slb_size_ptr)); > -} > -#else > -#define init_mmu_slb_size(node) do { } while(0) > -#endif > - > static struct feature_property { > const char *name; > u32 min_value; > @@ -379,7 +364,6 @@ static int __init early_init_dt_scan_cpus(unsigned long node, > } > > identical_pvr_fixup(node); > - init_mmu_slb_size(node); > > #ifdef CONFIG_PPC64 > if (nthreads == 1) > diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c > index 4aa0797000f7..33ce76be17de 100644 > --- a/arch/powerpc/mm/hash_utils_64.c > +++ b/arch/powerpc/mm/hash_utils_64.c > @@ -344,9 +344,8 @@ static int __init parse_disable_1tb_segments(char *p) > } > early_param("disable_1tb_segments", parse_disable_1tb_segments); > > -static int __init htab_dt_scan_seg_sizes(unsigned long node, > - const char *uname, int depth, > - void *data) > +static int __init htab_dt_scan_slb(unsigned long node, const char *uname, > + int depth, void *data) > { > const char *type = of_get_flat_dt_prop(node, "device_type", NULL); > const __be32 *prop; > @@ -356,6 +355,12 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node, > if (type == NULL || strcmp(type, "cpu") != 0) > return 0; > > + prop = of_get_flat_dt_prop(node, "slb-size", NULL); > + if (!prop) > + prop = of_get_flat_dt_prop(node, "ibm,slb-size", NULL); > + if (prop) > + slb_set_size(be32_to_cpup(prop)); > + > prop = of_get_flat_dt_prop(node, "ibm,processor-segment-sizes", &size); > if (prop == NULL) > return 0; > @@ -954,8 +959,8 @@ static void __init htab_initialize(void) > > void __init hash__early_init_devtree(void) > { > - /* Initialize segment sizes */ > - of_scan_flat_dt(htab_dt_scan_seg_sizes, NULL); > + /* Initialize SLB size and segment sizes */ > + of_scan_flat_dt(htab_dt_scan_slb, NULL); > > /* Initialize page sizes */ > htab_scan_page_sizes(); > -- > 2.20.1
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index 14693f8ccb80..018ededd1948 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c @@ -229,21 +229,6 @@ static void __init check_cpu_pa_features(unsigned long node) ibm_pa_features, ARRAY_SIZE(ibm_pa_features)); } -#ifdef CONFIG_PPC_BOOK3S_64 -static void __init init_mmu_slb_size(unsigned long node) -{ - const __be32 *slb_size_ptr; - - slb_size_ptr = of_get_flat_dt_prop(node, "slb-size", NULL) ? : - of_get_flat_dt_prop(node, "ibm,slb-size", NULL); - - if (slb_size_ptr) - slb_set_size(be32_to_cpup(slb_size_ptr)); -} -#else -#define init_mmu_slb_size(node) do { } while(0) -#endif - static struct feature_property { const char *name; u32 min_value; @@ -379,7 +364,6 @@ static int __init early_init_dt_scan_cpus(unsigned long node, } identical_pvr_fixup(node); - init_mmu_slb_size(node); #ifdef CONFIG_PPC64 if (nthreads == 1) diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 4aa0797000f7..33ce76be17de 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c @@ -344,9 +344,8 @@ static int __init parse_disable_1tb_segments(char *p) } early_param("disable_1tb_segments", parse_disable_1tb_segments); -static int __init htab_dt_scan_seg_sizes(unsigned long node, - const char *uname, int depth, - void *data) +static int __init htab_dt_scan_slb(unsigned long node, const char *uname, + int depth, void *data) { const char *type = of_get_flat_dt_prop(node, "device_type", NULL); const __be32 *prop; @@ -356,6 +355,12 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node, if (type == NULL || strcmp(type, "cpu") != 0) return 0; + prop = of_get_flat_dt_prop(node, "slb-size", NULL); + if (!prop) + prop = of_get_flat_dt_prop(node, "ibm,slb-size", NULL); + if (prop) + slb_set_size(be32_to_cpup(prop)); + prop = of_get_flat_dt_prop(node, "ibm,processor-segment-sizes", &size); if (prop == NULL) return 0; @@ -954,8 +959,8 @@ static void __init htab_initialize(void) void __init hash__early_init_devtree(void) { - /* Initialize segment sizes */ - of_scan_flat_dt(htab_dt_scan_seg_sizes, NULL); + /* Initialize SLB size and segment sizes */ + of_scan_flat_dt(htab_dt_scan_slb, NULL); /* Initialize page sizes */ htab_scan_page_sizes();
The SLB initialisation code is spread around a bit between prom.c and hash_utils_64.c. Consolidate it all in hash_utils_64.c. This slightly changes the timing of when mmu_slb_size is initialised, but that should have no effect. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> --- arch/powerpc/kernel/prom.c | 16 ---------------- arch/powerpc/mm/hash_utils_64.c | 15 ++++++++++----- 2 files changed, 10 insertions(+), 21 deletions(-)