From: Mel Gorman <mgorman@suse.de> To: Linux-MM <linux-mm@kvack.org> Cc: Nathan Zimmer <nzimmer@sgi.com>, Dave Hansen <dave.hansen@intel.com>, Waiman Long <waiman.long@hp.com>, Scott Norton <scott.norton@hp.com>, Daniel J Blueman <daniel@numascale.com>, LKML <linux-kernel@vger.kernel.org>, Mel Gorman <mgorman@suse.de> Subject: [PATCH 03/13] mm: meminit: Only set page reserved in the memblock region Date: Wed, 22 Apr 2015 18:07:43 +0100 [thread overview] Message-ID: <1429722473-28118-4-git-send-email-mgorman@suse.de> (raw) In-Reply-To: <1429722473-28118-1-git-send-email-mgorman@suse.de> From: Nathan Zimmer <nzimmer@sgi.com> Currently we when we initialze each page struct is set as reserved upon initialization. This changes to starting with the reserved bit clear and then only setting the bit in the reserved region. Signed-off-by: Robin Holt <holt@sgi.com> Signed-off-by: Nathan Zimmer <nzimmer@sgi.com> --- include/linux/mm.h | 2 ++ mm/nobootmem.c | 3 +++ mm/page_alloc.c | 11 ++++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 47a93928b90f..b6f82a31028a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1711,6 +1711,8 @@ extern void free_highmem_page(struct page *page); extern void adjust_managed_page_count(struct page *page, long count); extern void mem_init_print_info(const char *str); +extern void reserve_bootmem_region(unsigned long start, unsigned long end); + /* Free the reserved page into the buddy system, so it gets managed. */ static inline void __free_reserved_page(struct page *page) { diff --git a/mm/nobootmem.c b/mm/nobootmem.c index 90b50468333e..396f9e450dc1 100644 --- a/mm/nobootmem.c +++ b/mm/nobootmem.c @@ -121,6 +121,9 @@ static unsigned long __init free_low_memory_core_early(void) memblock_clear_hotplug(0, -1); + for_each_reserved_mem_region(i, &start, &end) + reserve_bootmem_region(start, end); + for_each_free_mem_range(i, NUMA_NO_NODE, &start, &end, NULL) count += __free_memory_core(start, end); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index fd7a6d09062d..2abb3b861e70 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -788,7 +788,6 @@ static void __meminit __init_single_page(struct page *page, unsigned long pfn, init_page_count(page); page_mapcount_reset(page); page_cpupid_reset_last(page); - SetPageReserved(page); /* * Mark the block movable so that blocks are reserved for @@ -823,6 +822,16 @@ static void __meminit __init_single_pfn(unsigned long pfn, unsigned long zone, return __init_single_page(pfn_to_page(pfn), pfn, zone, nid); } +void reserve_bootmem_region(unsigned long start, unsigned long end) +{ + unsigned long start_pfn = PFN_DOWN(start); + unsigned long end_pfn = PFN_UP(end); + + for (; start_pfn < end_pfn; start_pfn++) + if (pfn_valid(start_pfn)) + SetPageReserved(pfn_to_page(start_pfn)); +} + static bool free_pages_prepare(struct page *page, unsigned int order) { bool compound = PageCompound(page); -- 2.1.2
WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mgorman@suse.de> To: Linux-MM <linux-mm@kvack.org> Cc: Nathan Zimmer <nzimmer@sgi.com>, Dave Hansen <dave.hansen@intel.com>, Waiman Long <waiman.long@hp.com>, Scott Norton <scott.norton@hp.com>, Daniel J Blueman <daniel@numascale.com>, LKML <linux-kernel@vger.kernel.org>, Mel Gorman <mgorman@suse.de> Subject: [PATCH 03/13] mm: meminit: Only set page reserved in the memblock region Date: Wed, 22 Apr 2015 18:07:43 +0100 [thread overview] Message-ID: <1429722473-28118-4-git-send-email-mgorman@suse.de> (raw) In-Reply-To: <1429722473-28118-1-git-send-email-mgorman@suse.de> From: Nathan Zimmer <nzimmer@sgi.com> Currently we when we initialze each page struct is set as reserved upon initialization. This changes to starting with the reserved bit clear and then only setting the bit in the reserved region. Signed-off-by: Robin Holt <holt@sgi.com> Signed-off-by: Nathan Zimmer <nzimmer@sgi.com> --- include/linux/mm.h | 2 ++ mm/nobootmem.c | 3 +++ mm/page_alloc.c | 11 ++++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 47a93928b90f..b6f82a31028a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1711,6 +1711,8 @@ extern void free_highmem_page(struct page *page); extern void adjust_managed_page_count(struct page *page, long count); extern void mem_init_print_info(const char *str); +extern void reserve_bootmem_region(unsigned long start, unsigned long end); + /* Free the reserved page into the buddy system, so it gets managed. */ static inline void __free_reserved_page(struct page *page) { diff --git a/mm/nobootmem.c b/mm/nobootmem.c index 90b50468333e..396f9e450dc1 100644 --- a/mm/nobootmem.c +++ b/mm/nobootmem.c @@ -121,6 +121,9 @@ static unsigned long __init free_low_memory_core_early(void) memblock_clear_hotplug(0, -1); + for_each_reserved_mem_region(i, &start, &end) + reserve_bootmem_region(start, end); + for_each_free_mem_range(i, NUMA_NO_NODE, &start, &end, NULL) count += __free_memory_core(start, end); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index fd7a6d09062d..2abb3b861e70 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -788,7 +788,6 @@ static void __meminit __init_single_page(struct page *page, unsigned long pfn, init_page_count(page); page_mapcount_reset(page); page_cpupid_reset_last(page); - SetPageReserved(page); /* * Mark the block movable so that blocks are reserved for @@ -823,6 +822,16 @@ static void __meminit __init_single_pfn(unsigned long pfn, unsigned long zone, return __init_single_page(pfn_to_page(pfn), pfn, zone, nid); } +void reserve_bootmem_region(unsigned long start, unsigned long end) +{ + unsigned long start_pfn = PFN_DOWN(start); + unsigned long end_pfn = PFN_UP(end); + + for (; start_pfn < end_pfn; start_pfn++) + if (pfn_valid(start_pfn)) + SetPageReserved(pfn_to_page(start_pfn)); +} + static bool free_pages_prepare(struct page *page, unsigned int order) { bool compound = PageCompound(page); -- 2.1.2 -- 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>
next prev parent reply other threads:[~2015-04-22 17:12 UTC|newest] Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-04-22 17:07 [RFC PATCH 0/14] Parallel struct page initialisation v5r4 Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 01/13] memblock: Introduce a for_each_reserved_mem_region iterator Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 02/13] mm: meminit: Move page initialization into a separate function Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` Mel Gorman [this message] 2015-04-22 17:07 ` [PATCH 03/13] mm: meminit: Only set page reserved in the memblock region Mel Gorman 2015-04-22 17:07 ` [PATCH 04/13] mm: page_alloc: Pass PFN to __free_pages_bootmem Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 05/13] mm: meminit: Make __early_pfn_to_nid SMP-safe and introduce meminit_pfn_in_nid Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 06/13] mm: meminit: Inline some helper functions Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 07/13] mm: meminit: Only a subset of struct pages if CONFIG_DEFERRED_STRUCT_PAGE_INIT is set Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 08/13] mm: meminit: Initialise remaining struct pages in parallel with kswapd Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 09/13] mm: meminit: Minimise number of pfn->page lookups during initialisation Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 10/13] x86: mm: Enable deferred struct page initialisation on x86-64 Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 23:45 ` Andrew Morton 2015-04-22 23:45 ` Andrew Morton 2015-04-23 9:23 ` Mel Gorman 2015-04-23 9:23 ` Mel Gorman 2015-04-24 14:35 ` Waiman Long 2015-04-24 14:35 ` Waiman Long 2015-04-24 15:20 ` Mel Gorman 2015-04-24 15:20 ` Mel Gorman 2015-04-24 19:04 ` Waiman Long 2015-04-24 19:04 ` Waiman Long 2015-04-25 17:28 ` Mel Gorman 2015-04-25 17:28 ` Mel Gorman 2015-04-27 20:07 ` Waiman Long 2015-04-27 20:07 ` Waiman Long 2015-04-22 17:07 ` [PATCH 11/13] mm: meminit: Free pages in large chunks where possible Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 12/13] mm: meminit: Reduce number of times pageblocks are set during struct page init Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:07 ` [PATCH 13/13] mm: meminit: Remove mminit_verify_page_links Mel Gorman 2015-04-22 17:07 ` Mel Gorman 2015-04-22 17:11 ` [RFC PATCH 0/14] Parallel struct page initialisation v5r4 Mel Gorman 2015-04-22 17:11 ` Mel Gorman 2015-04-23 10:33 [PATCH 0/13] Parallel struct page initialisation v3 Mel Gorman 2015-04-23 10:33 ` [PATCH 03/13] mm: meminit: Only set page reserved in the memblock region Mel Gorman 2015-04-23 10:33 ` Mel Gorman 2015-04-27 22:43 ` Andrew Morton 2015-04-27 22:43 ` Andrew Morton 2015-04-28 14:36 [PATCH 0/13] Parallel struct page initialisation v4 Mel Gorman 2015-04-28 14:37 ` [PATCH 03/13] mm: meminit: Only set page reserved in the memblock region Mel Gorman 2015-04-28 14:37 ` Mel Gorman 2015-05-22 20:31 ` Tony Luck 2015-05-22 20:31 ` Tony Luck 2015-05-26 10:22 ` Mel Gorman 2015-05-26 10:22 ` Mel Gorman 2015-07-30 23:41 Alex Ng (LIS)
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=1429722473-28118-4-git-send-email-mgorman@suse.de \ --to=mgorman@suse.de \ --cc=daniel@numascale.com \ --cc=dave.hansen@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=nzimmer@sgi.com \ --cc=scott.norton@hp.com \ --cc=waiman.long@hp.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.