Skip to content

Commit

Permalink
mm/MIPS: prepare for removing num_physpages and simplify mem_init()
Browse files Browse the repository at this point in the history
Prepare for removing num_physpages and simplify mem_init().

Signed-off-by: Jiang Liu <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: David Daney <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Jiri Kosina <[email protected]>
Cc: John Crispin <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Minchan Kim <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
jiangliu authored and torvalds committed Jul 3, 2013
1 parent 6879ea8 commit 1132137
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 59 deletions.
57 changes: 18 additions & 39 deletions arch/mips/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -359,11 +359,24 @@ void __init paging_init(void)
static struct kcore_list kcore_kseg0;
#endif

void __init mem_init(void)
static inline void mem_init_free_highmem(void)
{
unsigned long codesize, reservedpages, datasize, initsize;
unsigned long tmp, ram;
#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)
{
#ifdef CONFIG_HIGHMEM
#ifdef CONFIG_DISCONTIGMEM
#error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet"
Expand All @@ -376,32 +389,8 @@ void __init mem_init(void)

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

reservedpages = ram = 0;
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;
mem_init_free_highmem();
mem_init_print_info(NULL);

#ifdef CONFIG_64BIT
if ((unsigned long) &_text > (unsigned long) CKSEG0)
Expand All @@ -410,16 +399,6 @@ void __init mem_init(void)
kclist_add(&kcore_kseg0, (void *) CKSEG0,
0x80000000 - 4, KCORE_TEXT);
#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 */

Expand Down
2 changes: 1 addition & 1 deletion arch/mips/pci/pci-lantiq.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ static inline u32 ltq_calc_bar11mask(void)
u32 mem, bar11mask;

/* 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;

return bar11mask;
Expand Down
21 changes: 2 additions & 19 deletions arch/mips/sgi-ip27/ip27-memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,6 @@ static void __init szmem(void)
int slot;
cnodeid_t node;

num_physpages = 0;

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

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

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

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

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

codesize = (unsigned long) &_etext - (unsigned long) &_text;
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));
mem_init_print_info(NULL);
}

0 comments on commit 1132137

Please sign in to comment.