mm/MIPS: prepare for removing num_physpages and simplify mem_init()
Prepare for removing num_physpages and simplify mem_init(). Signed-off-by: Jiang 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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
6879ea83c6
commit
1132137e87
@ -359,11 +359,24 @@ void __init paging_init(void)
|
|||||||
static struct kcore_list kcore_kseg0;
|
static struct kcore_list kcore_kseg0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline void mem_init_free_highmem(void)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_HIGHMEM
|
||||||
|
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)
|
void __init mem_init(void)
|
||||||
{
|
{
|
||||||
unsigned long codesize, reservedpages, datasize, initsize;
|
|
||||||
unsigned long tmp, ram;
|
|
||||||
|
|
||||||
#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 */
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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));
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user