All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Thomas Renninger <trenn@suse.de>,
	Tang Chen <tangchen@cn.fujitsu.com>
Cc: linux-kernel@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>,
	Tejun Heo <tj@kernel.org>
Subject: [PATCH 07/14] x86, mm, numa: call numa_meminfo_cover_memory() early
Date: Thu,  7 Mar 2013 20:58:33 -0800	[thread overview]
Message-ID: <1362718720-27048-8-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1362718720-27048-1-git-send-email-yinghai@kernel.org>

We do not need to use nid in memblock to find out absent pages.

So could move that numa_meminfo_cover_memory() early before set
memblock nid.

Also could make __absent_pages_in_range() to static and use
absent_pages_in_range() directly.

Later will only set memblock nid one time on successful path.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
---
 arch/x86/mm/numa.c |    7 ++++---
 include/linux/mm.h |    2 --
 mm/page_alloc.c    |    2 +-
 3 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 24c20f0..6df5028 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -460,7 +460,7 @@ static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi)
 		u64 s = mi->blk[i].start >> PAGE_SHIFT;
 		u64 e = mi->blk[i].end >> PAGE_SHIFT;
 		numaram += e - s;
-		numaram -= __absent_pages_in_range(mi->blk[i].nid, s, e);
+		numaram -= absent_pages_in_range(s, e);
 		if ((s64)numaram < 0)
 			numaram = 0;
 	}
@@ -488,6 +488,9 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
 	if (WARN_ON(nodes_empty(node_possible_map)))
 		return -EINVAL;
 
+	if (!numa_meminfo_cover_memory(mi))
+		return -EINVAL;
+
 	for (i = 0; i < mi->nr_blks; i++) {
 		struct numa_memblk *mb = &mi->blk[i];
 		memblock_set_node(mb->start, mb->end - mb->start, mb->nid);
@@ -506,8 +509,6 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
 		return -EINVAL;
 	}
 #endif
-	if (!numa_meminfo_cover_memory(mi))
-		return -EINVAL;
 
 	return 0;
 }
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 7acc9dc..2ae2050 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1324,8 +1324,6 @@ extern void free_initmem(void);
  */
 extern void free_area_init_nodes(unsigned long *max_zone_pfn);
 unsigned long node_map_pfn_alignment(void);
-unsigned long __absent_pages_in_range(int nid, unsigned long start_pfn,
-						unsigned long end_pfn);
 extern unsigned long absent_pages_in_range(unsigned long start_pfn,
 						unsigned long end_pfn);
 extern void get_pfn_range_for_nid(unsigned int nid,
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 8fcced7..580d919 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4356,7 +4356,7 @@ static unsigned long __meminit zone_spanned_pages_in_node(int nid,
  * Return the number of holes in a range on a node. If nid is MAX_NUMNODES,
  * then all holes in the requested range will be accounted for.
  */
-unsigned long __meminit __absent_pages_in_range(int nid,
+static unsigned long __meminit __absent_pages_in_range(int nid,
 				unsigned long range_start_pfn,
 				unsigned long range_end_pfn)
 {
-- 
1.7.10.4


  parent reply	other threads:[~2013-03-08  5:00 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-08  4:58 [PATCH 00/14] x86, ACPI, numa: Parse numa info early Yinghai Lu
2013-03-08  4:58 ` [PATCH 01/14] x86, ACPI, mm: Kill max_low_pfn_mapped Yinghai Lu
2013-03-08  4:58   ` Yinghai Lu
2013-03-08  5:10   ` Tejun Heo
2013-03-08  5:10     ` Tejun Heo
2013-03-08  5:22     ` Yinghai Lu
2013-03-08  5:25       ` Tejun Heo
2013-03-08  5:27         ` Yinghai Lu
2013-03-08  5:28           ` Tejun Heo
2013-03-08  6:09             ` H. Peter Anvin
2013-03-11 22:50               ` Daniel Vetter
2013-03-11 23:09                 ` Chris Wilson
2013-03-12  1:51                 ` H. Peter Anvin
2013-03-08  4:58 ` [PATCH 02/14] x86, ACPI: Split find/copy from acpi_initrd_override Yinghai Lu
2013-03-08  5:33   ` Tejun Heo
2013-03-08  6:47     ` Yinghai Lu
2013-03-08  4:58 ` [PATCH 03/14] x86, ACPI: store override acpi tables phys addr Yinghai Lu
2013-03-08  5:36   ` Tejun Heo
2013-03-08  6:49     ` Yinghai Lu
2013-03-08  7:08       ` Tejun Heo
2013-03-08  4:58 ` [PATCH 04/14] x86, ACPI: make acpi override finding work with 32bit flat mode Yinghai Lu
2013-03-08  5:50   ` Tejun Heo
2013-03-08  6:57     ` Yinghai Lu
2013-03-08  7:06       ` Tejun Heo
2013-03-08  7:25         ` Yinghai Lu
2013-03-08  7:28           ` Tejun Heo
2013-03-08  7:16       ` Andrew Morton
2013-03-08 21:25       ` Thomas Gleixner
2013-03-08  4:58 ` [PATCH 05/14] x86, ACPI: Find acpi tables in initrd early at head_32.S/head64.c Yinghai Lu
2013-03-08  5:57   ` Tejun Heo
2013-03-08  7:02     ` Yinghai Lu
2013-03-08  7:07       ` Tejun Heo
2013-03-08  4:58 ` [PATCH 06/14] x86, mm, numa: Move successful path handling code later Yinghai Lu
2013-03-08  6:04   ` Tejun Heo
2013-03-08  7:03     ` Yinghai Lu
2013-03-08  4:58 ` Yinghai Lu [this message]
2013-03-08  4:58 ` [PATCH 08/14] x86, mm, numa: use numa_meminfo to check node_map_pfn alignment Yinghai Lu
2013-03-08  6:26   ` Tejun Heo
2013-03-08  7:05     ` Yinghai Lu
2013-03-08  4:58 ` [PATCH 09/14] x86, mm, numa: set memblock nid later Yinghai Lu
2013-03-08  6:28   ` Tejun Heo
2013-03-08  7:11     ` Yinghai Lu
2013-03-08  4:58 ` [PATCH 10/14] x86, mm, numa: Move emulation handling down Yinghai Lu
2013-03-08  6:42   ` Tejun Heo
2013-03-08  7:13     ` Yinghai Lu
2013-03-08  4:58 ` [PATCH 11/14] x86, acpi, numa: split SLIT handling out Yinghai Lu
2013-03-08  6:46   ` Tejun Heo
2013-03-08  7:18     ` Yinghai Lu
2013-03-08  7:19       ` Tejun Heo
2013-03-08  7:33         ` Yinghai Lu
2013-03-08  4:58 ` [PATCH 12/14] x86, mm, numa: Add early_initmem_init() stub Yinghai Lu
2013-03-08  4:58 ` [PATCH 13/14] x86, mm: Parse numa info early Yinghai Lu
2013-03-08  4:58 ` [PATCH 14/14] x86, mm: Put pagetable on local node ram Yinghai Lu
2013-03-08  7:01   ` Tejun Heo
2013-03-08  7:44     ` Yinghai Lu
2013-03-08  8:20   ` Tang Chen
2013-03-08 17:25     ` Yinghai Lu

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=1362718720-27048-8-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tangchen@cn.fujitsu.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=trenn@suse.de \
    /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.