All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Tejun Heo <tj@kernel.org>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
	yinghai@kernel.org, tj@kernel.org, tglx@linutronix.de,
	rientjes@google.com
Subject: [tip:x86/numa] x86-32, numa: Calculate remap size in common code
Date: Thu, 7 Apr 2011 02:06:23 GMT	[thread overview]
Message-ID: <tip-7210cf9217937e470a9acbc113a590f476b9c047@git.kernel.org> (raw)
In-Reply-To: <1301955840-7246-8-git-send-email-tj@kernel.org>

Commit-ID:  7210cf9217937e470a9acbc113a590f476b9c047
Gitweb:     http://git.kernel.org/tip/7210cf9217937e470a9acbc113a590f476b9c047
Author:     Tejun Heo <tj@kernel.org>
AuthorDate: Tue, 5 Apr 2011 00:23:53 +0200
Committer:  H. Peter Anvin <hpa@zytor.com>
CommitDate: Wed, 6 Apr 2011 17:57:16 -0700

x86-32, numa: Calculate remap size in common code

Only pgdat and memmap use remap area and there isn't much benefit in
allowing per-node override.  In addition, the use of node_remap_size[]
is confusing in that it contains number of bytes before remap
initialization and then number of pages afterwards.

Move remap size calculation for memap from specific NUMA config
implementations to init_alloc_remap() and make node_remap_size[]
static.

The only behavior difference is that, before this patch, numaq_32
didn't consider max_pfn when calculating the memmap size but it's
enforced after this patch, which is the right thing to do.

Signed-off-by: Tejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/r/1301955840-7246-8-git-send-email-tj@kernel.org
Acked-by: Yinghai Lu <yinghai@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
---
 arch/x86/include/asm/topology.h |    1 -
 arch/x86/kernel/apic/numaq_32.c |    4 ----
 arch/x86/mm/numa_32.c           |   10 ++++------
 arch/x86/mm/srat_32.c           |    1 -
 4 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index 910a708..8dba769 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -95,7 +95,6 @@ extern void setup_node_to_cpumask_map(void);
 #ifdef CONFIG_X86_32
 extern unsigned long node_start_pfn[];
 extern unsigned long node_end_pfn[];
-extern unsigned long node_remap_size[];
 #define node_has_online_mem(nid) (node_start_pfn[nid] != node_end_pfn[nid])
 
 # define SD_CACHE_NICE_TRIES	1
diff --git a/arch/x86/kernel/apic/numaq_32.c b/arch/x86/kernel/apic/numaq_32.c
index 6273eee..0aced70 100644
--- a/arch/x86/kernel/apic/numaq_32.c
+++ b/arch/x86/kernel/apic/numaq_32.c
@@ -93,10 +93,6 @@ static inline void numaq_register_node(int node, struct sys_cfg_data *scd)
 						node_end_pfn[node]);
 
 	memory_present(node, node_start_pfn[node], node_end_pfn[node]);
-
-	node_remap_size[node] = node_memmap_size_bytes(node,
-					node_start_pfn[node],
-					node_end_pfn[node]);
 }
 
 /*
diff --git a/arch/x86/mm/numa_32.c b/arch/x86/mm/numa_32.c
index 99310d2..9a73365 100644
--- a/arch/x86/mm/numa_32.c
+++ b/arch/x86/mm/numa_32.c
@@ -104,7 +104,7 @@ extern unsigned long highend_pfn, highstart_pfn;
 
 #define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE)
 
-unsigned long node_remap_size[MAX_NUMNODES];
+static unsigned long node_remap_size[MAX_NUMNODES];
 static void *node_remap_start_vaddr[MAX_NUMNODES];
 void set_pmd_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags);
 
@@ -129,7 +129,6 @@ int __init get_memcfg_numa_flat(void)
 	node_end_pfn[0] = max_pfn;
 	memblock_x86_register_active_regions(0, 0, max_pfn);
 	memory_present(0, 0, max_pfn);
-	node_remap_size[0] = node_memmap_size_bytes(0, 0, max_pfn);
 
         /* Indicate there is one node available. */
 	nodes_clear(node_online_map);
@@ -282,11 +281,10 @@ static __init unsigned long init_alloc_remap(int nid, unsigned long offset)
 	if (node_end_pfn[nid] > max_pfn)
 		node_end_pfn[nid] = max_pfn;
 
-	/* ensure the remap includes space for the pgdat. */
-	size = node_remap_size[nid];
+	/* calculate the necessary space aligned to large page size */
+	size = node_memmap_size_bytes(nid, node_start_pfn[nid],
+				      min(node_end_pfn[nid], max_pfn));
 	size += ALIGN(sizeof(pg_data_t), PAGE_SIZE);
-
-	/* align to large page */
 	size = ALIGN(size, LARGE_PAGE_BYTES);
 
 	node_pa = memblock_find_in_range(node_start_pfn[nid] << PAGE_SHIFT,
diff --git a/arch/x86/mm/srat_32.c b/arch/x86/mm/srat_32.c
index 48651c6..1b9e82c 100644
--- a/arch/x86/mm/srat_32.c
+++ b/arch/x86/mm/srat_32.c
@@ -276,7 +276,6 @@ int __init get_memcfg_from_srat(void)
 		unsigned long end = min(node_end_pfn[nid], max_pfn);
 
 		memory_present(nid, start, end);
-		node_remap_size[nid] = node_memmap_size_bytes(nid, start, end);
 	}
 	return 1;
 out_fail:

  parent reply	other threads:[~2011-04-07  2:06 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 ` [PATCH 03/14] x86-32, NUMA: Remove redundant top-down alloc code from remap initialization Tejun Heo
2011-04-05 17:37   ` 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-bot for Tejun Heo [this message]
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=tip-7210cf9217937e470a9acbc113a590f476b9c047@git.kernel.org \
    --to=tj@kernel.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@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.