2012/11/13 6:17, Yinghai Lu wrote: > So make init_memory_mapping smaller and readable. > > Suggested-by: Ingo Molnar <mi...@elte.hu> > Signed-off-by: Yinghai Lu <ying...@kernel.org> > Reviewed-by: Pekka Enberg <penb...@kernel.org> > --- > arch/x86/mm/init.c | 42 ++++++++++++++++++++++++++---------------- > 1 files changed, 26 insertions(+), 16 deletions(-) > > diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c > index aa5b0da..6d8e102 100644 > --- a/arch/x86/mm/init.c > +++ b/arch/x86/mm/init.c > @@ -146,25 +146,13 @@ static int __meminit save_mr(struct map_range *mr, int > nr_range, > return nr_range; > } > > -/* > - * Setup the direct mapping of the physical memory at PAGE_OFFSET. > - * This runs before bootmem is initialized and gets pages directly from > - * the physical memory. To access them they are temporarily mapped. > - */ > -unsigned long __init_refok init_memory_mapping(unsigned long start, > - unsigned long end) > +static int __meminit split_mem_range(struct map_range *mr, int nr_range, > + unsigned long start, > + unsigned long end) > { > unsigned long start_pfn, end_pfn; > - unsigned long ret = 0; > unsigned long pos; > - struct map_range mr[NR_RANGE_MR]; > - int nr_range, i; > - > - printk(KERN_INFO "init_memory_mapping: [mem %#010lx-%#010lx]\n", > - start, end - 1); > - > - memset(mr, 0, sizeof(mr)); > - nr_range = 0; > + int i; > > /* head if not big page alignment ? */ > start_pfn = start >> PAGE_SHIFT; > @@ -258,6 +246,28 @@ unsigned long __init_refok init_memory_mapping(unsigned > long start, > (mr[i].page_size_mask & (1<<PG_LEVEL_1G))?"1G":( > (mr[i].page_size_mask & (1<<PG_LEVEL_2M))?"2M":"4k")); > > + return nr_range; > +} > + > +/* > + * Setup the direct mapping of the physical memory at PAGE_OFFSET. > + * This runs before bootmem is initialized and gets pages directly from > + * the physical memory. To access them they are temporarily mapped. > + */ > +unsigned long __init_refok init_memory_mapping(unsigned long start, > + unsigned long end) > +{ > + struct map_range mr[NR_RANGE_MR]; > + unsigned long ret = 0; > + int nr_range, i; > + > + pr_info("init_memory_mapping: [mem %#010lx-%#010lx]\n", > + start, end - 1); > + > + memset(mr, 0, sizeof(mr));
> + nr_range = 0; This is unnecessary since it is set in the below. > + nr_range = split_mem_range(mr, nr_range, start, end); Thanks, Yasuaki Ishimatsu > + > /* > * Find space for the kernel direct mapping tables. > * > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/