linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: tj@kernel.org, linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
	Santosh Shilimkar <santosh.shilimkar@ti.com>,
	Yinghai Lu <yinghai@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Grygorii Strashko <grygorii.strashko@ti.com>
Subject: [PATCH 12/24] mm/page_alloc: Use memblock apis for early memory allocations
Date: Fri, 8 Nov 2013 18:41:48 -0500	[thread overview]
Message-ID: <1383954120-24368-13-git-send-email-santosh.shilimkar@ti.com> (raw)
In-Reply-To: <1383954120-24368-1-git-send-email-santosh.shilimkar@ti.com>

Switch to memblock interfaces for early memory allocator instead of
bootmem allocator. No functional change in beahvior than what it is
in current code from bootmem users points of view.

Archs already converted to NO_BOOTMEM now directly use memblock
interfaces instead of bootmem wrappers build on top of memblock. And the
archs which still uses bootmem, these new apis just fallback to exiting
bootmem APIs.

Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
---
 mm/page_alloc.c |   27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 0ee638f..5b9143e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4218,7 +4218,6 @@ static noinline __init_refok
 int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages)
 {
 	int i;
-	struct pglist_data *pgdat = zone->zone_pgdat;
 	size_t alloc_size;
 
 	/*
@@ -4234,7 +4233,8 @@ int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages)
 
 	if (!slab_is_available()) {
 		zone->wait_table = (wait_queue_head_t *)
-			alloc_bootmem_node_nopanic(pgdat, alloc_size);
+			memblock_virt_alloc_node_nopanic(
+				alloc_size, zone->zone_pgdat->node_id);
 	} else {
 		/*
 		 * This case means that a zone whose size was 0 gets new memory
@@ -4354,13 +4354,14 @@ bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
 #endif
 
 /**
- * free_bootmem_with_active_regions - Call free_bootmem_node for each active range
+ * free_bootmem_with_active_regions - Call memblock_free_early_nid for each active range
  * @nid: The node to free memory on. If MAX_NUMNODES, all nodes are freed.
- * @max_low_pfn: The highest PFN that will be passed to free_bootmem_node
+ * @max_low_pfn: The highest PFN that will be passed to memblock_free_early_nid
  *
  * If an architecture guarantees that all ranges registered with
  * add_active_ranges() contain no holes and may be freed, this
- * this function may be used instead of calling free_bootmem() manually.
+ * this function may be used instead of calling memblock_free_early_nid()
+ * manually.
  */
 void __init free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn)
 {
@@ -4372,9 +4373,9 @@ void __init free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn)
 		end_pfn = min(end_pfn, max_low_pfn);
 
 		if (start_pfn < end_pfn)
-			free_bootmem_node(NODE_DATA(this_nid),
-					  PFN_PHYS(start_pfn),
-					  (end_pfn - start_pfn) << PAGE_SHIFT);
+			memblock_free_early_nid(PFN_PHYS(start_pfn),
+					(end_pfn - start_pfn) << PAGE_SHIFT,
+					this_nid);
 	}
 }
 
@@ -4645,8 +4646,9 @@ static void __init setup_usemap(struct pglist_data *pgdat,
 	unsigned long usemapsize = usemap_size(zone_start_pfn, zonesize);
 	zone->pageblock_flags = NULL;
 	if (usemapsize)
-		zone->pageblock_flags = alloc_bootmem_node_nopanic(pgdat,
-								   usemapsize);
+		zone->pageblock_flags =
+			memblock_virt_alloc_node_nopanic(usemapsize,
+							 pgdat->node_id);
 }
 #else
 static inline void setup_usemap(struct pglist_data *pgdat, struct zone *zone,
@@ -4840,7 +4842,8 @@ static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
 		size =  (end - start) * sizeof(struct page);
 		map = alloc_remap(pgdat->node_id, size);
 		if (!map)
-			map = alloc_bootmem_node_nopanic(pgdat, size);
+			map = memblock_virt_alloc_node_nopanic(size,
+							       pgdat->node_id);
 		pgdat->node_mem_map = map + (pgdat->node_start_pfn - start);
 	}
 #ifndef CONFIG_NEED_MULTIPLE_NODES
@@ -5866,7 +5869,7 @@ void *__init alloc_large_system_hash(const char *tablename,
 	do {
 		size = bucketsize << log2qty;
 		if (flags & HASH_EARLY)
-			table = alloc_bootmem_nopanic(size);
+			table = memblock_virt_alloc_nopanic(size);
 		else if (hashdist)
 			table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL);
 		else {
-- 
1.7.9.5

--
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>

  parent reply	other threads:[~2013-11-08 23:43 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-08 23:41 [PATCH 00/24] mm: Use memblock interface instead of bootmem Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 01/24] mm/memblock: debug: correct displaying of upper memory boundary Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 02/24] mm/memblock: debug: don't free reserved array if !ARCH_DISCARD_MEMBLOCK Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 03/24] mm/bootmem: remove duplicated declaration of __free_pages_bootmem() Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 04/24] mm/block: remove unnecessary inclusion of bootmem.h Santosh Shilimkar
2013-11-13  2:09   ` Jens Axboe
2013-11-13 23:10     ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 05/24] mm/memory_hotplug: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 06/24] mm/staging: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 07/24] mm/char: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 08/24] mm/memblock: drop WARN and use SMP_CACHE_BYTES as a default alignment Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 09/24] mm/memblock: Add memblock memory allocation apis Santosh Shilimkar
2013-12-03  0:31   ` Andrew Morton
2013-12-03  0:48     ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 10/24] mm/init: Use memblock apis for early memory allocations Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 11/24] mm/printk: " Santosh Shilimkar
2013-11-08 23:41 ` Santosh Shilimkar [this message]
2013-11-08 23:41 ` [PATCH 13/24] mm/power: " Santosh Shilimkar
2013-11-09  1:30   ` Rafael J. Wysocki
2013-11-09 19:08     ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 14/24] mm/lib/swiotlb: " Santosh Shilimkar
2013-11-09 16:55   ` Konrad Rzeszutek Wilk
2013-11-09 19:07     ` Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 15/24] mm/lib/cpumask: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 16/24] mm/sparse: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 17/24] mm/hugetlb: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 18/24] mm/page_cgroup: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 19/24] mm/percpu: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 20/24] mm/memory_hotplug: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 21/24] mm/firmware: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 22/24] mm/ARM: kernel: " Santosh Shilimkar
2013-11-08 23:41 ` [PATCH 23/24] mm/ARM: mm: " Santosh Shilimkar
2013-11-08 23:42 ` [PATCH 24/24] mm/ARM: OMAP: " Santosh Shilimkar
2013-11-29 16:50 ` [PATCH 00/24] mm: Use memblock interface instead of bootmem Santosh Shilimkar
2013-12-03  0:32   ` Andrew Morton
2013-12-03  0:40     ` Santosh Shilimkar

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=1383954120-24368-13-git-send-email-santosh.shilimkar@ti.com \
    --to=santosh.shilimkar@ti.com \
    --cc=akpm@linux-foundation.org \
    --cc=grygorii.strashko@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=tj@kernel.org \
    --cc=yinghai@kernel.org \
    /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