Michael Ellerman <m...@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.ku...@linux.ibm.com> > > Signed-off-by: Michael Ellerman <m...@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