From: Jiang Liu <liuj97@gmail.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Jiang Liu <jiang.liu@huawei.com>,
David Rientjes <rientjes@google.com>,
Wen Congyang <wency@cn.fujitsu.com>, Mel Gorman <mgorman@suse.de>,
Minchan Kim <minchan@kernel.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Michal Hocko <mhocko@suse.cz>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
David Howells <dhowells@redhat.com>,
Mark Salter <msalter@redhat.com>,
Jianguo Wu <wujianguo@huawei.com>,
linux-mm@kvack.org, linux-arch@vger.kernel.org,
linux-kernel@vger.kernel.org,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4, part3 13/41] mm/ARM: prepare for removing num_physpages and simplify mem_init()
Date: Sat, 20 Apr 2013 23:19:58 +0800 [thread overview]
Message-ID: <5172B21E.9000805@gmail.com> (raw)
In-Reply-To: <20130419165429.GA14496@n2100.arm.linux.org.uk>
On 04/20/2013 12:54 AM, Russell King - ARM Linux wrote:
> On Sat, Apr 06, 2013 at 10:32:12PM +0800, Jiang Liu wrote:
>> Prepare for removing num_physpages and simplify mem_init().
>>
>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>> Cc: Russell King <linux@arm.linux.org.uk>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Cc: linux-arm-kernel@lists.infradead.org
>> Cc: linux-kernel@vger.kernel.org
>> ---
>> arch/arm/mm/init.c | 47 ++---------------------------------------------
>> 1 file changed, 2 insertions(+), 45 deletions(-)
>>
>> diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
>> index add4fcb..7a911d1 100644
>> --- a/arch/arm/mm/init.c
>> +++ b/arch/arm/mm/init.c
>> @@ -582,9 +582,6 @@ static void __init free_highpages(void)
>> */
>> void __init mem_init(void)
>> {
>> - unsigned long reserved_pages, free_pages;
>> - struct memblock_region *reg;
>> - int i;
>> #ifdef CONFIG_HAVE_TCM
>> /* These pointers are filled in on TCM detection */
>> extern u32 dtcm_end;
>> @@ -605,47 +602,7 @@ void __init mem_init(void)
>>
>> free_highpages();
>>
>> - reserved_pages = free_pages = 0;
>> -
>> - for_each_bank(i, &meminfo) {
>> - struct membank *bank = &meminfo.bank[i];
>> - unsigned int pfn1, pfn2;
>> - struct page *page, *end;
>> -
>> - pfn1 = bank_pfn_start(bank);
>> - pfn2 = bank_pfn_end(bank);
>> -
>> - page = pfn_to_page(pfn1);
>> - end = pfn_to_page(pfn2 - 1) + 1;
>> -
>> - do {
>> - if (PageReserved(page))
>> - reserved_pages++;
>> - else if (!page_count(page))
>> - free_pages++;
>> - page++;
>> - } while (page < end);
>> - }
>> -
>> - /*
>> - * Since our memory may not be contiguous, calculate the
>> - * real number of pages we have in this system
>> - */
>> - printk(KERN_INFO "Memory:");
>> - num_physpages = 0;
>> - for_each_memblock(memory, reg) {
>> - unsigned long pages = memblock_region_memory_end_pfn(reg) -
>> - memblock_region_memory_base_pfn(reg);
>> - num_physpages += pages;
>> - printk(" %ldMB", pages >> (20 - PAGE_SHIFT));
>> - }
>> - printk(" = %luMB total\n", num_physpages >> (20 - PAGE_SHIFT));
>> -
>> - printk(KERN_NOTICE "Memory: %luk/%luk available, %luk reserved, %luK highmem\n",
>> - nr_free_pages() << (PAGE_SHIFT-10),
>> - free_pages << (PAGE_SHIFT-10),
>> - reserved_pages << (PAGE_SHIFT-10),
>> - totalhigh_pages << (PAGE_SHIFT-10));
>> + mem_init_print_info(NULL);
>
> I'm concerned about this. We explicitly do not use the memblock information
> when walking the memory above for the reserved/free pages because memblock
> merges the various banks of memory together - and those may cross sparsemem
> boundaries. Any crossing of the sparsemem boundaries needs the struct page
> pointer to be re-evaluated because it can be part of a different array of
> such things.
>
> Where's the rest of the patches?
>
Hi Russel,
Thanks for review the patch. You may find the patch introducing
mem_init_print_info() at: http://marc.info/?l=linux-mm&m=136525938817934&w=2
Basically it prints standard memory statistics info as below for all architectures
without walking the page structure array.
Memory: 7744624K/8074824K available (6969K kernel code, 1011K data, 2828K rodata, 1016K init, 9640K bss, 330200K reserved)
On the other hand, the patch does change information printed on boot, especially
it doesn't print size of each memory block. If needed, I can revert the code to
print size of each memory block.
Regards!
Gerry
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Jiang Liu <liuj97@gmail.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Jiang Liu <jiang.liu@huawei.com>,
David Rientjes <rientjes@google.com>,
Wen Congyang <wency@cn.fujitsu.com>, Mel Gorman <mgorman@suse.de>,
Minchan Kim <minchan@kernel.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Michal Hocko <mhocko@suse.cz>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>,
David Howells <dhowells@redhat.com>,
Mark Salter <msalter@redhat.com>,
Jianguo Wu <wujianguo@huawei.com>,
linux-mm@kvack.org, linux-arch@vger.kernel.org,
linux-kernel@vger.kernel.org,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4, part3 13/41] mm/ARM: prepare for removing num_physpages and simplify mem_init()
Date: Sat, 20 Apr 2013 23:19:58 +0800 [thread overview]
Message-ID: <5172B21E.9000805@gmail.com> (raw)
Message-ID: <20130420151958.cTVWYiLzRd0QII9LXlCjarvovnyetzKjW8Zqp-S4u8Y@z> (raw)
In-Reply-To: <20130419165429.GA14496@n2100.arm.linux.org.uk>
On 04/20/2013 12:54 AM, Russell King - ARM Linux wrote:
> On Sat, Apr 06, 2013 at 10:32:12PM +0800, Jiang Liu wrote:
>> Prepare for removing num_physpages and simplify mem_init().
>>
>> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
>> Cc: Russell King <linux@arm.linux.org.uk>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Cc: linux-arm-kernel@lists.infradead.org
>> Cc: linux-kernel@vger.kernel.org
>> ---
>> arch/arm/mm/init.c | 47 ++---------------------------------------------
>> 1 file changed, 2 insertions(+), 45 deletions(-)
>>
>> diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
>> index add4fcb..7a911d1 100644
>> --- a/arch/arm/mm/init.c
>> +++ b/arch/arm/mm/init.c
>> @@ -582,9 +582,6 @@ static void __init free_highpages(void)
>> */
>> void __init mem_init(void)
>> {
>> - unsigned long reserved_pages, free_pages;
>> - struct memblock_region *reg;
>> - int i;
>> #ifdef CONFIG_HAVE_TCM
>> /* These pointers are filled in on TCM detection */
>> extern u32 dtcm_end;
>> @@ -605,47 +602,7 @@ void __init mem_init(void)
>>
>> free_highpages();
>>
>> - reserved_pages = free_pages = 0;
>> -
>> - for_each_bank(i, &meminfo) {
>> - struct membank *bank = &meminfo.bank[i];
>> - unsigned int pfn1, pfn2;
>> - struct page *page, *end;
>> -
>> - pfn1 = bank_pfn_start(bank);
>> - pfn2 = bank_pfn_end(bank);
>> -
>> - page = pfn_to_page(pfn1);
>> - end = pfn_to_page(pfn2 - 1) + 1;
>> -
>> - do {
>> - if (PageReserved(page))
>> - reserved_pages++;
>> - else if (!page_count(page))
>> - free_pages++;
>> - page++;
>> - } while (page < end);
>> - }
>> -
>> - /*
>> - * Since our memory may not be contiguous, calculate the
>> - * real number of pages we have in this system
>> - */
>> - printk(KERN_INFO "Memory:");
>> - num_physpages = 0;
>> - for_each_memblock(memory, reg) {
>> - unsigned long pages = memblock_region_memory_end_pfn(reg) -
>> - memblock_region_memory_base_pfn(reg);
>> - num_physpages += pages;
>> - printk(" %ldMB", pages >> (20 - PAGE_SHIFT));
>> - }
>> - printk(" = %luMB total\n", num_physpages >> (20 - PAGE_SHIFT));
>> -
>> - printk(KERN_NOTICE "Memory: %luk/%luk available, %luk reserved, %luK highmem\n",
>> - nr_free_pages() << (PAGE_SHIFT-10),
>> - free_pages << (PAGE_SHIFT-10),
>> - reserved_pages << (PAGE_SHIFT-10),
>> - totalhigh_pages << (PAGE_SHIFT-10));
>> + mem_init_print_info(NULL);
>
> I'm concerned about this. We explicitly do not use the memblock information
> when walking the memory above for the reserved/free pages because memblock
> merges the various banks of memory together - and those may cross sparsemem
> boundaries. Any crossing of the sparsemem boundaries needs the struct page
> pointer to be re-evaluated because it can be part of a different array of
> such things.
>
> Where's the rest of the patches?
>
Hi Russel,
Thanks for review the patch. You may find the patch introducing
mem_init_print_info() at: http://marc.info/?l=linux-mm&m=136525938817934&w=2
Basically it prints standard memory statistics info as below for all architectures
without walking the page structure array.
Memory: 7744624K/8074824K available (6969K kernel code, 1011K data, 2828K rodata, 1016K init, 9640K bss, 330200K reserved)
On the other hand, the patch does change information printed on boot, especially
it doesn't print size of each memory block. If needed, I can revert the code to
print size of each memory block.
Regards!
Gerry
next prev parent reply other threads:[~2013-04-20 15:19 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-06 14:31 [PATCH v4, part3 00/41] Simplify mem_init() implementations and kill num_physpages Jiang Liu
2013-04-06 14:31 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 01/41] vmlinux.lds: add comments for global variables and clean up useless declarations Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 02/41] avr32: normalize global variables exported by vmlinux.lds Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-07 8:00 ` Hans-Christian Egtvedt
2013-04-07 8:00 ` Hans-Christian Egtvedt
2013-04-06 14:32 ` [PATCH v4, part3 03/41] c6x: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 04/41] h8300: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 05/41] score: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 06/41] tile: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-12 20:54 ` Chris Metcalf
2013-04-06 14:32 ` [PATCH v4, part3 07/41] UML: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 08/41] mm: introduce helper function mem_init_print_info() to simplify mem_init() Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 09/41] mm: use totalram_pages instead of num_physpages at runtime Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 10/41] mm/hotplug: prepare for removing num_physpages Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 11/41] mm/alpha: prepare for removing num_physpages and simplify mem_init() Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 12/41] mm/ARC: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 13/41] mm/ARM: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-19 16:54 ` Russell King - ARM Linux
2013-04-20 15:19 ` Jiang Liu [this message]
2013-04-20 15:19 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 14/41] mm/ARM64: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 15/41] mm/AVR32: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-07 7:59 ` Hans-Christian Egtvedt
2013-04-07 7:59 ` Hans-Christian Egtvedt
2013-04-06 14:32 ` [PATCH v4, part3 16/41] mm/blackfin: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 17/41] mm/c6x: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 18/41] mm/cris: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-08 9:52 ` Jesper Nilsson
2013-04-06 14:32 ` [PATCH v4, part3 19/41] mm/frv: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 20/41] mm/h8300: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 21/41] mm/hexagon: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 22/41] mm/IA64: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 23/41] mm/m32r: " Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 24/41] mm/m68k: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-08 1:34 ` Greg Ungerer
2013-04-08 1:34 ` Greg Ungerer
2013-04-06 14:32 ` [PATCH v4, part3 25/41] mm/metag: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 26/41] mm/microblaze: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 27/41] mm/MIPS: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 28/41] mm/mn10300: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 29/41] mm/openrisc: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 30/41] mm/PARISC: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 31/41] mm/ppc: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 32/41] mm/s390: " Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 33/41] mm/score: " Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 34/41] mm/SH: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 35/41] mm/SPARC: " Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 36/41] mm/tile: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-12 20:56 ` Chris Metcalf
2013-04-06 14:32 ` [PATCH v4, part3 37/41] mm/um: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 38/41] mm/unicore32: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 39/41] mm/x86: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 40/41] mm/xtensa: " Jiang Liu
2013-04-06 14:32 ` Jiang Liu
2013-04-06 14:32 ` [PATCH v4, part3 41/41] mm: kill global variable num_physpages Jiang Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5172B21E.9000805@gmail.com \
--to=liuj97@gmail.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=dhowells@redhat.com \
--cc=jiang.liu@huawei.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux@arm.linux.org.uk \
--cc=mgorman@suse.de \
--cc=mhocko@suse.cz \
--cc=minchan@kernel.org \
--cc=msalter@redhat.com \
--cc=rientjes@google.com \
--cc=sergei.shtylyov@cogentembedded.com \
--cc=wency@cn.fujitsu.com \
--cc=will.deacon@arm.com \
--cc=wujianguo@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).