All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Tejun Heo <tj@kernel.org>
Cc: mingo@redhat.com, hpa@zytor.com, tglx@linutronix.de,
	benh@kernel.crashing.org, davem@davemloft.net,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	x86@kernel.org
Subject: Re: [PATCHSET x86/mm] memblock, x86: Allow node info in memblock and remove x86 specific memblock code
Date: Tue, 12 Jul 2011 16:26:57 -0700	[thread overview]
Message-ID: <CAE9FiQUfHB=EtzDBhPr2ntn__0AC0NcCdi0e7NiwmKb0bZmBbg@mail.gmail.com> (raw)
In-Reply-To: <1310462166-31469-1-git-send-email-tj@kernel.org>

On Tue, Jul 12, 2011 at 2:15 AM, Tejun Heo <tj@kernel.org> wrote:
> Hello,
>
> There are multiple ways to represent memory configuration during boot.
> Even with the latest incarnation - nobootmem, the configuration isn't
> centralized or easy to use.  NUMA information lives in
> early_node_map[] while memory config and alloc/reservation live in
> memblock.  This leads to ugly code pieces which try to combine the two
> separate information sources both in generic and arch specfic parts.
>
> This patchset extends memblock such that it can also host node
> information and allows an arch to do away with early_node_map[] and
> use memblock as the sole early memory config / allocation mechanism.
>
> For short term, this adds yet another config option -
> HAVE_MEMBLOCK_NODE_MAP in this area.  Longer term goal is removing
> early_node_map[] completely and convert everyone over to memblock.  As
> early_node_map[] usage is limited only to NUMA archs, this should be
> easiser than bootmem allocator conversion.  In the end, memblock will
> be the only early mem mechanism.
>
> Note that this patchset still leaves good amount of code which can be
> removed / cleaned up in not too distant future.  For example, memblock
> non-NUMA alloc code can simply be degenerate case of NUMA aware alloc,
> which can also be implemented in simpler and more efficient way with
> reverse free area iterator.
>
> This patchset first extends memblock so that it can contain node
> information and then replaces x86 specific memblock code with the
> generic one.
>
>  0001-memblock-Remove-memblock_memory_can_coalesce.patch
>  0002-memblock-Reimplement-memblock_add_region.patch
>  0003-memblock-Add-optional-region-nid.patch
>  0004-x86-Use-HAVE_MEMBLOCK_NODE_MAP.patch
>  0005-x86-Use-__memblock_alloc_base-in-early_reserve_e820.patch
>  0006-memblock-Implement-for_each_free_mem_range.patch
>  0007-x86-Replace-memblock_x86_find_in_range_size-with-for.patch
>  0008-memblock-x86-Make-free_all_memory_core_early-explici.patch
>  0009-memblock-x86-Replace-__get_free_all_memory_range-wit.patch
>  0010-memblock-x86-Reimplement-memblock_find_dma_reserve-u.patch
>  0011-x86-Use-absent_pages_in_range-instead-of-memblock_x8.patch
>  0012-memblock-x86-Make-ARCH_DISCARD_MEMBLOCK-a-config-opt.patch
>  0013-memblock-x86-Replace-memblock_x86_reserve-free_range.patch
>
> 0001-0004 implement HAVE_MEMBLOCK_NODE_MAP and use it in x86.
>
> 0005-0013 adds generic memblock free area iterator and gradually
> replaces x86 specific memblock mechanism with generic one.

that is great, merge early_node_map into memblock array.

looks it comes with some mismatch section warning...

WARNING: vmlinux.o(.text+0x120ba5): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120baa): Section mismatch in reference from
the function memblock_set_node() to the function
.init.text:memblock_double_array()
The function memblock_set_node() references
the function __init memblock_double_array().
This is often because memblock_set_node lacks a __init
annotation or the annotation of memblock_double_array is wrong.

WARNING: vmlinux.o(.text+0x120bb9): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120bc4): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120bd9): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120c10): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120c15): Section mismatch in reference from
the function memblock_set_node() to the function
.init.text:memblock_insert_region()
The function memblock_set_node() references
the function __init memblock_insert_region().
This is often because memblock_set_node lacks a __init
annotation or the annotation of memblock_insert_region is wrong.

WARNING: vmlinux.o(.text+0x120c3e): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120c43): Section mismatch in reference from
the function memblock_set_node() to the function
.init.text:memblock_insert_region()
The function memblock_set_node() references
the function __init memblock_insert_region().
This is often because memblock_set_node lacks a __init
annotation or the annotation of memblock_insert_region is wrong.

WARNING: vmlinux.o(.text+0x120c59): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120c66): Section mismatch in reference from
the function memblock_set_node() to the variable .init.data:memblock
The function memblock_set_node() references
the variable __initdata memblock.
This is often because memblock_set_node lacks a __initdata
annotation or the annotation of memblock is wrong.

WARNING: vmlinux.o(.text+0x120c6b): Section mismatch in reference from
the function memblock_set_node() to the function
.init.text:memblock_merge_regions()
The function memblock_set_node() references
the function __init memblock_merge_regions().
This is often because memblock_set_node lacks a __init
annotation or the annotation of memblock_merge_regions is wrong.

WARNING: vmlinux.o(.meminit.text+0xacc): Section mismatch in reference
from the function __early_pfn_to_nid() to the function
.init.text:__next_mem_pfn_range()
The function __meminit __early_pfn_to_nid() references
a function __init __next_mem_pfn_range().
If __next_mem_pfn_range is only used by __early_pfn_to_nid then
annotate __next_mem_pfn_range with a matching annotation.

WARNING: vmlinux.o(.meminit.text+0xb70): Section mismatch in reference
from the function get_pfn_range_for_nid() to the function
.init.text:__next_mem_pfn_range()
The function __meminit get_pfn_range_for_nid() references
a function __init __next_mem_pfn_range().
If __next_mem_pfn_range is only used by get_pfn_range_for_nid then
annotate __next_mem_pfn_range with a matching annotation.

WARNING: vmlinux.o(.meminit.text+0xbad): Section mismatch in reference
from the function get_pfn_range_for_nid() to the function
.init.text:__next_mem_pfn_range()
The function __meminit get_pfn_range_for_nid() references
a function __init __next_mem_pfn_range().
If __next_mem_pfn_range is only used by get_pfn_range_for_nid then
annotate __next_mem_pfn_range with a matching annotation.

WARNING: vmlinux.o(.meminit.text+0xcc9): Section mismatch in reference
from the function __absent_pages_in_range() to the function
.init.text:__next_mem_pfn_range()
The function __meminit __absent_pages_in_range() references
a function __init __next_mem_pfn_range().
If __next_mem_pfn_range is only used by __absent_pages_in_range then
annotate __next_mem_pfn_range with a matching annotation.

WARNING: vmlinux.o(.meminit.text+0xd1a): Section mismatch in reference
from the function __absent_pages_in_range() to the function
.init.text:__next_mem_pfn_range()
The function __meminit __absent_pages_in_range() references
a function __init __next_mem_pfn_range().
If __next_mem_pfn_range is only used by __absent_pages_in_range then
annotate __next_mem_pfn_range with a matching annotation.

  parent reply	other threads:[~2011-07-12 23:27 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-12  9:15 [PATCHSET x86/mm] memblock, x86: Allow node info in memblock and remove x86 specific memblock code Tejun Heo
2011-07-12  9:15 ` [PATCH 01/13] memblock: Remove memblock_memory_can_coalesce() Tejun Heo
2011-07-14 21:31   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:15 ` [PATCH 02/13] memblock: Reimplement memblock_add_region() Tejun Heo
2011-07-14 21:32   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:15 ` [PATCH 03/13] memblock: Add optional region->nid Tejun Heo
2011-07-14  9:43   ` [PATCH UPDATED " Tejun Heo
2011-07-14  9:43     ` Tejun Heo
2011-07-14 21:32     ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:15 ` [PATCH 04/13] x86: Use HAVE_MEMBLOCK_NODE_MAP Tejun Heo
2011-07-14  1:35   ` H. Peter Anvin
2011-07-14  9:44   ` [PATCH UPDATED " Tejun Heo
2011-07-14  9:44     ` Tejun Heo
2011-07-14 21:33     ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:15 ` [PATCH 05/13] x86: Use __memblock_alloc_base() in early_reserve_e820() Tejun Heo
2011-07-14 21:33   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:15 ` [PATCH 06/13] memblock: Implement for_each_free_mem_range() Tejun Heo
2011-07-14 21:34   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 07/13] x86: Replace memblock_x86_find_in_range_size() with for_each_free_mem_range() Tejun Heo
2011-07-14 21:34   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 08/13] memblock, x86: Make free_all_memory_core_early() explicitly free lowmem only Tejun Heo
2011-07-14 21:35   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 09/13] memblock, x86: Replace __get_free_all_memory_range() with for_each_free_mem_range() Tejun Heo
2011-07-14 21:35   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 10/13] memblock, x86: Reimplement memblock_find_dma_reserve() using iterators Tejun Heo
2011-07-14 21:36   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 11/13] x86: Use absent_pages_in_range() instead of memblock_x86_hole_size() Tejun Heo
2011-07-14 21:36   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 12/13] memblock, x86: Make ARCH_DISCARD_MEMBLOCK a config option Tejun Heo
2011-07-14  9:46   ` [PATCH UPDATED " Tejun Heo
2011-07-14  9:46     ` Tejun Heo
2011-07-14 21:37     ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-12  9:16 ` [PATCH 13/13] memblock, x86: Replace memblock_x86_reserve/free_range() with generic ones Tejun Heo
2011-07-14 20:10   ` H. Peter Anvin
2011-07-14 20:20     ` Tejun Heo
2011-07-14 20:23       ` H. Peter Anvin
2011-07-14 20:32         ` Tejun Heo
2011-07-14 20:38           ` H. Peter Anvin
2011-07-14 20:41             ` Tejun Heo
2011-07-14 20:43               ` H. Peter Anvin
2011-07-14 21:38     ` [tip:x86/memblock] memblock: Cast phys_addr_t to unsigned long long for printf use tip-bot for H. Peter Anvin
2011-07-14 21:37   ` [tip:x86/memblock] memblock, x86: Replace memblock_x86_reserve/free_range() with generic ones tip-bot for Tejun Heo
2011-07-26 21:06   ` [PATCH 13/13] " Yinghai Lu
2011-07-26 21:46     ` Tejun Heo
2011-07-27  0:59       ` Yinghai Lu
2011-07-27  8:07         ` Tejun Heo
2011-07-12 23:26 ` Yinghai Lu [this message]
2011-07-13  3:21   ` [PATCHSET x86/mm] memblock, x86: Allow node info in memblock and remove x86 specific memblock code H. Peter Anvin
2011-07-13  9:16     ` Tejun Heo
2011-07-13  9:11   ` Tejun Heo
2011-07-13 19:06     ` Yinghai Lu
2011-07-14  9:42 ` [PATCH 2.5/13] memblock: Use __meminit[data] instead of __init[data] Tejun Heo
2011-07-14  9:42   ` Tejun Heo
2011-07-14 21:00   ` Yinghai Lu
2011-07-14 21:24     ` H. Peter Anvin
2011-07-14 21:24       ` H. Peter Anvin
2011-07-15  5:45     ` Tejun Heo
2011-07-14 21:32   ` [tip:x86/memblock] " tip-bot for Tejun Heo
2011-07-14  9:49 ` [PATCHSET x86/mm] memblock, x86: Allow node info in memblock and remove x86 specific memblock code 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='CAE9FiQUfHB=EtzDBhPr2ntn__0AC0NcCdi0e7NiwmKb0bZmBbg@mail.gmail.com' \
    --to=yinghai@kernel.org \
    --cc=benh@kernel.crashing.org \
    --cc=davem@davemloft.net \
    --cc=hpa@zytor.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=x86@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.