Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1132137e authored by Jiang Liu's avatar Jiang Liu Committed by Linus Torvalds
Browse files

mm/MIPS: prepare for removing num_physpages and simplify mem_init()



Prepare for removing num_physpages and simplify mem_init().

Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: David Daney <david.daney@cavium.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: John Crispin <blogic@openwrt.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6879ea83
Loading
Loading
Loading
Loading
+18 −39
Original line number Original line Diff line number Diff line
@@ -359,11 +359,24 @@ void __init paging_init(void)
static struct kcore_list kcore_kseg0;
static struct kcore_list kcore_kseg0;
#endif
#endif


void __init mem_init(void)
static inline void mem_init_free_highmem(void)
{
{
	unsigned long codesize, reservedpages, datasize, initsize;
#ifdef CONFIG_HIGHMEM
	unsigned long tmp, ram;
	unsigned long tmp;

	for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {
		struct page *page = pfn_to_page(tmp);


		if (!page_is_ram(tmp))
			SetPageReserved(page);
		else
			free_highmem_page(page);
	}
#endif
}

void __init mem_init(void)
{
#ifdef CONFIG_HIGHMEM
#ifdef CONFIG_HIGHMEM
#ifdef CONFIG_DISCONTIGMEM
#ifdef CONFIG_DISCONTIGMEM
#error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet"
#error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet"
@@ -376,32 +389,8 @@ void __init mem_init(void)


	free_all_bootmem();
	free_all_bootmem();
	setup_zero_pages();	/* Setup zeroed pages.  */
	setup_zero_pages();	/* Setup zeroed pages.  */

	mem_init_free_highmem();
	reservedpages = ram = 0;
	mem_init_print_info(NULL);
	for (tmp = 0; tmp < max_low_pfn; tmp++)
		if (page_is_ram(tmp) && pfn_valid(tmp)) {
			ram++;
			if (PageReserved(pfn_to_page(tmp)))
				reservedpages++;
		}
	num_physpages = ram;

#ifdef CONFIG_HIGHMEM
	for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {
		struct page *page = pfn_to_page(tmp);

		if (!page_is_ram(tmp)) {
			SetPageReserved(page);
			continue;
		}
		free_highmem_page(page);
	}
	num_physpages += totalhigh_pages;
#endif

	codesize =  (unsigned long) &_etext - (unsigned long) &_text;
	datasize =  (unsigned long) &_edata - (unsigned long) &_etext;
	initsize =  (unsigned long) &__init_end - (unsigned long) &__init_begin;


#ifdef CONFIG_64BIT
#ifdef CONFIG_64BIT
	if ((unsigned long) &_text > (unsigned long) CKSEG0)
	if ((unsigned long) &_text > (unsigned long) CKSEG0)
@@ -410,16 +399,6 @@ void __init mem_init(void)
		kclist_add(&kcore_kseg0, (void *) CKSEG0,
		kclist_add(&kcore_kseg0, (void *) CKSEG0,
				0x80000000 - 4, KCORE_TEXT);
				0x80000000 - 4, KCORE_TEXT);
#endif
#endif

	printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
	       "%ldk reserved, %ldk data, %ldk init, %ldk highmem)\n",
	       nr_free_pages() << (PAGE_SHIFT-10),
	       ram << (PAGE_SHIFT-10),
	       codesize >> 10,
	       reservedpages << (PAGE_SHIFT-10),
	       datasize >> 10,
	       initsize >> 10,
	       totalhigh_pages << (PAGE_SHIFT-10));
}
}
#endif /* !CONFIG_NEED_MULTIPLE_NODES */
#endif /* !CONFIG_NEED_MULTIPLE_NODES */


+1 −1
Original line number Original line Diff line number Diff line
@@ -89,7 +89,7 @@ static inline u32 ltq_calc_bar11mask(void)
	u32 mem, bar11mask;
	u32 mem, bar11mask;


	/* BAR11MASK value depends on available memory on system. */
	/* BAR11MASK value depends on available memory on system. */
	mem = num_physpages * PAGE_SIZE;
	mem = get_num_physpages() * PAGE_SIZE;
	bar11mask = (0x0ffffff0 & ~((1 << (fls(mem) - 1)) - 1)) | 8;
	bar11mask = (0x0ffffff0 & ~((1 << (fls(mem) - 1)) - 1)) | 8;


	return bar11mask;
	return bar11mask;
+2 −19
Original line number Original line Diff line number Diff line
@@ -357,8 +357,6 @@ static void __init szmem(void)
	int slot;
	int slot;
	cnodeid_t node;
	cnodeid_t node;


	num_physpages = 0;

	for_each_online_node(node) {
	for_each_online_node(node) {
		nodebytes = 0;
		nodebytes = 0;
		for (slot = 0; slot < MAX_MEM_SLOTS; slot++) {
		for (slot = 0; slot < MAX_MEM_SLOTS; slot++) {
@@ -381,7 +379,6 @@ static void __init szmem(void)
				slot = MAX_MEM_SLOTS;
				slot = MAX_MEM_SLOTS;
				continue;
				continue;
			}
			}
			num_physpages += slot_psize;
			memblock_add_node(PFN_PHYS(slot_getbasepfn(node, slot)),
			memblock_add_node(PFN_PHYS(slot_getbasepfn(node, slot)),
					  PFN_PHYS(slot_psize), node);
					  PFN_PHYS(slot_psize), node);
		}
		}
@@ -480,10 +477,9 @@ void __init paging_init(void)


void __init mem_init(void)
void __init mem_init(void)
{
{
	unsigned long codesize, datasize, initsize, tmp;
	unsigned node;
	unsigned node;


	high_memory = (void *) __va(num_physpages << PAGE_SHIFT);
	high_memory = (void *) __va(get_num_physpages() << PAGE_SHIFT);


	for_each_online_node(node) {
	for_each_online_node(node) {
		/*
		/*
@@ -494,18 +490,5 @@ void __init mem_init(void)


	setup_zero_pages();	/* This comes from node 0 */
	setup_zero_pages();	/* This comes from node 0 */


	codesize =  (unsigned long) &_etext - (unsigned long) &_text;
	mem_init_print_info(NULL);
	datasize =  (unsigned long) &_edata - (unsigned long) &_etext;
	initsize =  (unsigned long) &__init_end - (unsigned long) &__init_begin;

	tmp = nr_free_pages();
	printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, "
	       "%ldk reserved, %ldk data, %ldk init, %ldk highmem)\n",
	       tmp << (PAGE_SHIFT-10),
	       num_physpages << (PAGE_SHIFT-10),
	       codesize >> 10,
	       (num_physpages - tmp) << (PAGE_SHIFT-10),
	       datasize >> 10,
	       initsize >> 10,
	       totalhigh_pages << (PAGE_SHIFT-10));
}
}