mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
mm: concentrate modification of totalram_pages into the mm core
Concentrate code to modify totalram_pages into the mm core, so the arch memory initialized code doesn't need to take care of it. With these changes applied, only following functions from mm core modify global variable totalram_pages: free_bootmem_late(), free_all_bootmem(), free_all_bootmem_node(), adjust_managed_page_count(). With this patch applied, it will be much more easier for us to keep totalram_pages and zone->managed_pages in consistence. Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Acked-by: David Howells <dhowells@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: <sworddragon2@aol.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Chris Metcalf <cmetcalf@tilera.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Cc: Jianguo Wu <wujianguo@huawei.com> Cc: Joonsoo Kim <js1304@gmail.com> Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Michel Lespinasse <walken@google.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Rik van Riel <riel@redhat.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Tang Chen <tangchen@cn.fujitsu.com> Cc: Tejun Heo <tj@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Wen Congyang <wency@cn.fujitsu.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Cc: Yinghai Lu <yinghai@kernel.org> Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
3dcc0571cd
commit
0c98853473
@@ -309,7 +309,7 @@ void __init
|
||||
mem_init(void)
|
||||
{
|
||||
max_mapnr = num_physpages = max_low_pfn;
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
|
||||
|
||||
printk_memory_info();
|
||||
|
||||
@@ -334,7 +334,7 @@ void __init mem_init(void)
|
||||
/*
|
||||
* This will free up the bootmem, ie, slot 0 memory
|
||||
*/
|
||||
totalram_pages += free_all_bootmem_node(NODE_DATA(nid));
|
||||
free_all_bootmem_node(NODE_DATA(nid));
|
||||
|
||||
pfn = NODE_DATA(nid)->node_start_pfn;
|
||||
for (i = 0; i < node_spanned_pages(nid); i++, pfn++)
|
||||
|
||||
@@ -111,7 +111,7 @@ void __init mem_init(void)
|
||||
|
||||
high_memory = (void *)(CONFIG_LINUX_LINK_BASE + arc_mem_sz);
|
||||
|
||||
totalram_pages = free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
/* count all reserved pages [kernel code/data/mem_map..] */
|
||||
reserved_pages = 0;
|
||||
|
||||
@@ -596,8 +596,7 @@ void __init mem_init(void)
|
||||
|
||||
/* this will put all unused low memory onto the freelists */
|
||||
free_unused_memmap(&meminfo);
|
||||
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
#ifdef CONFIG_SA1111
|
||||
/* now that our DMA memory is actually so designated, we can free it */
|
||||
|
||||
@@ -284,7 +284,7 @@ void __init mem_init(void)
|
||||
free_unused_memmap();
|
||||
#endif
|
||||
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
reserved_pages = free_pages = 0;
|
||||
|
||||
|
||||
@@ -117,8 +117,6 @@ void __init mem_init(void)
|
||||
if (pgdat->node_spanned_pages != 0)
|
||||
node_pages = free_all_bootmem_node(pgdat);
|
||||
|
||||
totalram_pages += node_pages;
|
||||
|
||||
for (i = 0; i < node_pages; i++)
|
||||
if (PageReserved(pgdat->node_mem_map + i))
|
||||
reservedpages++;
|
||||
|
||||
@@ -104,7 +104,7 @@ void __init mem_init(void)
|
||||
printk(KERN_DEBUG "Kernel managed physical pages: %lu\n", num_physpages);
|
||||
|
||||
/* This will put all low memory onto the freelists. */
|
||||
totalram_pages = free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
reservedpages = 0;
|
||||
for (tmp = ARCH_PFN_OFFSET; tmp < max_mapnr; tmp++)
|
||||
|
||||
@@ -65,7 +65,7 @@ void __init mem_init(void)
|
||||
high_memory = (void *)(memory_end & PAGE_MASK);
|
||||
|
||||
/* this will put all memory onto the freelists */
|
||||
totalram_pages = free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
codek = (_etext - _stext) >> 10;
|
||||
datak = (_end - _sdata) >> 10;
|
||||
|
||||
@@ -33,7 +33,7 @@ mem_init(void)
|
||||
max_mapnr = num_physpages = max_low_pfn - min_low_pfn;
|
||||
|
||||
/* this will put all memory onto the freelists */
|
||||
totalram_pages = free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
reservedpages = 0;
|
||||
for (tmp = 0; tmp < max_mapnr; tmp++) {
|
||||
|
||||
@@ -123,7 +123,7 @@ void __init mem_init(void)
|
||||
int codek = 0, datak = 0;
|
||||
|
||||
/* this will put all low memory onto the freelists */
|
||||
totalram_pages = free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
for (loop = 0 ; loop < npages ; loop++)
|
||||
|
||||
@@ -140,7 +140,7 @@ void __init mem_init(void)
|
||||
max_mapnr = num_physpages = MAP_NR(high_memory);
|
||||
|
||||
/* this will put all low memory onto the freelists */
|
||||
totalram_pages = free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
codek = (_etext - _stext) >> 10;
|
||||
datak = (__bss_stop - _sdata) >> 10;
|
||||
|
||||
@@ -70,7 +70,7 @@ unsigned long long kmap_generation;
|
||||
void __init mem_init(void)
|
||||
{
|
||||
/* No idea where this is actually declared. Seems to evade LXR. */
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
num_physpages = bootmem_lastpg-ARCH_PFN_OFFSET;
|
||||
|
||||
printk(KERN_INFO "totalram_pages = %ld\n", totalram_pages);
|
||||
|
||||
@@ -622,7 +622,7 @@ mem_init (void)
|
||||
|
||||
for_each_online_pgdat(pgdat)
|
||||
if (pgdat->bdata->node_bootmem_map)
|
||||
totalram_pages += free_all_bootmem_node(pgdat);
|
||||
free_all_bootmem_node(pgdat);
|
||||
|
||||
reserved_pages = 0;
|
||||
efi_memmap_walk(count_reserved_pages, &reserved_pages);
|
||||
|
||||
@@ -158,7 +158,7 @@ void __init mem_init(void)
|
||||
|
||||
/* this will put all low memory onto the freelists */
|
||||
for_each_online_node(nid)
|
||||
totalram_pages += free_all_bootmem_node(NODE_DATA(nid));
|
||||
free_all_bootmem_node(NODE_DATA(nid));
|
||||
|
||||
reservedpages = reservedpages_count() - hole_pages;
|
||||
codesize = (unsigned long) &_etext - (unsigned long)&_text;
|
||||
|
||||
@@ -155,11 +155,11 @@ void __init mem_init(void)
|
||||
int i;
|
||||
|
||||
/* this will put all memory onto the freelists */
|
||||
totalram_pages = num_physpages = 0;
|
||||
num_physpages = 0;
|
||||
for_each_online_pgdat(pgdat) {
|
||||
num_physpages += pgdat->node_present_pages;
|
||||
|
||||
totalram_pages += free_all_bootmem_node(pgdat);
|
||||
free_all_bootmem_node(pgdat);
|
||||
for (i = 0; i < pgdat->node_spanned_pages; i++) {
|
||||
struct page *page = pgdat->node_mem_map + i;
|
||||
char *addr = page_to_virt(page);
|
||||
|
||||
@@ -393,14 +393,11 @@ void __init mem_init(void)
|
||||
|
||||
for_each_online_node(nid) {
|
||||
pg_data_t *pgdat = NODE_DATA(nid);
|
||||
unsigned long node_pages = 0;
|
||||
|
||||
num_physpages += pgdat->node_present_pages;
|
||||
|
||||
if (pgdat->node_spanned_pages)
|
||||
node_pages = free_all_bootmem_node(pgdat);
|
||||
|
||||
totalram_pages += node_pages;
|
||||
free_all_bootmem_node(pgdat);
|
||||
}
|
||||
|
||||
pr_info("Memory: %luk/%luk available\n",
|
||||
|
||||
@@ -252,7 +252,7 @@ void __init mem_init(void)
|
||||
high_memory = (void *)__va(memory_start + lowmem_size - 1);
|
||||
|
||||
/* this will put all memory onto the freelists */
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
for_each_online_pgdat(pgdat) {
|
||||
unsigned long i;
|
||||
|
||||
@@ -374,7 +374,7 @@ void __init mem_init(void)
|
||||
#endif
|
||||
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
|
||||
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
setup_zero_pages(); /* Setup zeroed pages. */
|
||||
|
||||
reservedpages = ram = 0;
|
||||
|
||||
@@ -489,7 +489,7 @@ void __init mem_init(void)
|
||||
/*
|
||||
* This will free up the bootmem, ie, slot 0 memory.
|
||||
*/
|
||||
totalram_pages += free_all_bootmem_node(NODE_DATA(node));
|
||||
free_all_bootmem_node(NODE_DATA(node));
|
||||
}
|
||||
|
||||
setup_zero_pages(); /* This comes from node 0 */
|
||||
|
||||
@@ -114,7 +114,7 @@ void __init mem_init(void)
|
||||
memset(empty_zero_page, 0, PAGE_SIZE);
|
||||
|
||||
/* this will put all low memory onto the freelists */
|
||||
totalram_pages += free_all_bootmem();
|
||||
free_all_bootmem();
|
||||
|
||||
reservedpages = 0;
|
||||
for (tmp = 0; tmp < num_physpages; tmp++)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user