LKML Archive on 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
next prev 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: linkBe 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; as well as URLs for NNTP newsgroup(s).