All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: mingo@redhat.com, hpa@zytor.com, tglx@linutronix.de,
	rientjes@google.com, yinghai@kernel.org,
	linux-kernel@vger.kernel.org
Cc: Tejun Heo <tj@kernel.org>
Subject: [PATCH 03/14] x86-32, NUMA: Remove redundant top-down alloc code from remap initialization
Date: Tue,  5 Apr 2011 00:23:49 +0200	[thread overview]
Message-ID: <1301955840-7246-4-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1301955840-7246-1-git-send-email-tj@kernel.org>

memblock_find_in_range() now does top-down allocation by default, so
there's no reason for its callers to explicitly implement it by
gradually lowering the start address.

Remove redundant top-down allocation logic from init_meminit() and
calculate_numa_remap_pages().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
---
 arch/x86/mm/numa_32.c |   43 ++++++++++++++-----------------------------
 1 files changed, 14 insertions(+), 29 deletions(-)

diff --git a/arch/x86/mm/numa_32.c b/arch/x86/mm/numa_32.c
index 50e8250..60701a5 100644
--- a/arch/x86/mm/numa_32.c
+++ b/arch/x86/mm/numa_32.c
@@ -270,8 +270,7 @@ static __init unsigned long calculate_numa_remap_pages(void)
 	unsigned long size, reserve_pages = 0;
 
 	for_each_online_node(nid) {
-		u64 node_kva_target;
-		u64 node_kva_final;
+		u64 node_kva;
 
 		/*
 		 * The acpi/srat node info can show hot-add memroy zones
@@ -295,19 +294,11 @@ static __init unsigned long calculate_numa_remap_pages(void)
 		/* now the roundup is correct, convert to PAGE_SIZE pages */
 		size = size * PTRS_PER_PTE;
 
-		node_kva_target = round_down(node_end_pfn[nid] - size,
-						 PTRS_PER_PTE);
-		node_kva_target <<= PAGE_SHIFT;
-		do {
-			node_kva_final = memblock_find_in_range(node_kva_target,
+		node_kva = memblock_find_in_range(node_start_pfn[nid] << PAGE_SHIFT,
 					((u64)node_end_pfn[nid])<<PAGE_SHIFT,
-						((u64)size)<<PAGE_SHIFT,
-						LARGE_PAGE_BYTES);
-			node_kva_target -= LARGE_PAGE_BYTES;
-		} while (node_kva_final == MEMBLOCK_ERROR &&
-			 (node_kva_target>>PAGE_SHIFT) > (node_start_pfn[nid]));
-
-		if (node_kva_final == MEMBLOCK_ERROR)
+					((u64)size)<<PAGE_SHIFT,
+					LARGE_PAGE_BYTES);
+		if (node_kva == MEMBLOCK_ERROR)
 			panic("Can not get kva ram\n");
 
 		node_remap_size[nid] = size;
@@ -315,7 +306,7 @@ static __init unsigned long calculate_numa_remap_pages(void)
 		reserve_pages += size;
 		printk(KERN_DEBUG "Reserving %ld pages of KVA for lmem_map of"
 				  " node %d at %llx\n",
-				size, nid, node_kva_final>>PAGE_SHIFT);
+				size, nid, node_kva >> PAGE_SHIFT);
 
 		/*
 		 *  prevent kva address below max_low_pfn want it on system
@@ -328,11 +319,11 @@ static __init unsigned long calculate_numa_remap_pages(void)
 		 *  to use it as free.
 		 *  So memblock_x86_reserve_range here, hope we don't run out of that array
 		 */
-		memblock_x86_reserve_range(node_kva_final,
-			      node_kva_final+(((u64)size)<<PAGE_SHIFT),
-			      "KVA RAM");
+		memblock_x86_reserve_range(node_kva,
+					   node_kva + (((u64)size)<<PAGE_SHIFT),
+					   "KVA RAM");
 
-		node_remap_start_pfn[nid] = node_kva_final>>PAGE_SHIFT;
+		node_remap_start_pfn[nid] = node_kva >> PAGE_SHIFT;
 	}
 	printk(KERN_INFO "Reserving total of %lx pages for numa KVA remap\n",
 			reserve_pages);
@@ -356,7 +347,6 @@ static void init_remap_allocator(int nid)
 void __init initmem_init(void)
 {
 	int nid;
-	long kva_target_pfn;
 
 	/*
 	 * When mapping a NUMA machine we allocate the node_mem_map arrays
@@ -371,15 +361,10 @@ void __init initmem_init(void)
 
 	kva_pages = roundup(calculate_numa_remap_pages(), PTRS_PER_PTE);
 
-	kva_target_pfn = round_down(max_low_pfn - kva_pages, PTRS_PER_PTE);
-	do {
-		kva_start_pfn = memblock_find_in_range(kva_target_pfn<<PAGE_SHIFT,
-					max_low_pfn<<PAGE_SHIFT,
-					kva_pages<<PAGE_SHIFT,
-					PTRS_PER_PTE<<PAGE_SHIFT) >> PAGE_SHIFT;
-		kva_target_pfn -= PTRS_PER_PTE;
-	} while (kva_start_pfn == MEMBLOCK_ERROR && kva_target_pfn > min_low_pfn);
-
+	kva_start_pfn = memblock_find_in_range(min_low_pfn << PAGE_SHIFT,
+				max_low_pfn << PAGE_SHIFT,
+				kva_pages << PAGE_SHIFT,
+				PTRS_PER_PTE << PAGE_SHIFT) >> PAGE_SHIFT;
 	if (kva_start_pfn == MEMBLOCK_ERROR)
 		panic("Can not get kva space\n");
 
-- 
1.7.1


  parent reply	other threads:[~2011-04-04 22:26 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-04 22:23 [PATCHSET tip:x86/mm] x86-32, NUMA: Clean up alloc_remap Tejun Heo
2011-04-04 22:23 ` [PATCH 01/14] x86-32, NUMA: Fix failure condition check in alloc_remap() Tejun Heo
2011-04-05 17:20   ` Yinghai Lu
2011-04-07  2:03   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 02/14] x86-32, NUMA: Align pgdat size while initializing alloc_remap Tejun Heo
2011-04-05 17:28   ` Yinghai Lu
2011-04-07  2:04   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` Tejun Heo [this message]
2011-04-05 17:37   ` [PATCH 03/14] x86-32, NUMA: Remove redundant top-down alloc code from remap initialization Yinghai Lu
2011-04-07  2:04   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 04/14] x86-32, NUMA: Reorganize calculate_numa_remap_page() Tejun Heo
2011-04-05 17:42   ` Yinghai Lu
2011-04-07  2:05   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 05/14] x86-32, NUMA: Rename @node_kva to @node_pa in init_alloc_remap() Tejun Heo
2011-04-05 17:44   ` Yinghai Lu
2011-04-07  2:05   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 06/14] x86-32, NUMA: Make @size in init_aloc_remap() represent bytes Tejun Heo
2011-04-05 17:54   ` Yinghai Lu
2011-04-07  2:05   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 07/14] x86-32, NUMA: Calculate remap size in common code Tejun Heo
2011-04-05 18:04   ` Yinghai Lu
2011-04-07  2:06   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 08/14] x86-32, NUMA: Make init_alloc_remap() less panicky Tejun Heo
2011-04-07  2:06   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 09/14] x86-32, NUMA: Move lowmem address space reservation to init_alloc_remap() Tejun Heo
2011-04-05 18:41   ` Yinghai Lu
2011-04-07  2:07   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 10/14] x86-32, NUMA: Move remapping for remap allocator into init_alloc_remap() Tejun Heo
2011-04-05 18:59   ` Yinghai Lu
2011-04-07  2:07   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 11/14] x86-32, NUMA: Make pgdat allocation use alloc_remap() Tejun Heo
2011-04-05 19:14   ` Yinghai Lu
2011-04-07  2:08   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 12/14] x86-32, NUMA: Remove now useless node_remap_offset[] Tejun Heo
2011-04-05 19:15   ` Yinghai Lu
2011-04-07  2:08   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:23 ` [PATCH 13/14] x86-32, NUMA: Remove redundant node_remap_size[] Tejun Heo
2011-04-07  2:08   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo
2011-04-04 22:24 ` [PATCH 14/14] x86-32, NUMA: Update remap allocator comments Tejun Heo
2011-04-07  2:09   ` [tip:x86/numa] x86-32, numa: " tip-bot for Tejun Heo

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=1301955840-7246-4-git-send-email-tj@kernel.org \
    --to=tj@kernel.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=rientjes@google.com \
    --cc=tglx@linutronix.de \
    --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 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.