Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d09c6b809432668371b5de9102f4f9aa6a7c79cc
Commit:     d09c6b809432668371b5de9102f4f9aa6a7c79cc
Parent:     902233ee494f9d9da6dbb818316fcbf892bebbed
Author:     Paul Mundt <[EMAIL PROTECTED]>
AuthorDate: Thu Jun 14 15:13:16 2007 +0900
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Fri Jun 15 16:18:08 2007 -0700

    mm: Fix memory/cpu hotplug section mismatch and oops.
    
    When building with memory hotplug enabled and cpu hotplug disabled, we
    end up with the following section mismatch:
    
    WARNING: mm/built-in.o(.text+0x4e58): Section mismatch: reference to
    .init.text: (between 'free_area_init_node' and '__build_all_zonelists')
    
    This happens as a result of:
    
            -> free_area_init_node()
              -> free_area_init_core()
                -> zone_pcp_init() <-- all __meminit up to this point
                  -> zone_batchsize() <-- marked as __cpuinit                   
  fo
    
    This happens because CONFIG_HOTPLUG_CPU=n sets __cpuinit to __init, but
    CONFIG_MEMORY_HOTPLUG=y unsets __meminit.
    
    Changing zone_batchsize() to __devinit fixes this.
    
    __devinit is the only thing that is common between CONFIG_HOTPLUG_CPU=y and
    CONFIG_MEMORY_HOTPLUG=y. In the long run, perhaps this should be moved to
    another section identifier completely. Without this, memory hot-add
    of offline nodes (via hotadd_new_pgdat()) will oops if CPU hotplug is
    not also enabled.
    
    Signed-off-by: Paul Mundt <[EMAIL PROTECTED]>
    Acked-by: Yasunori Goto <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
    
    --
    
     mm/page_alloc.c |    2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
---
 mm/page_alloc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index bd8e335..05ace44 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1968,7 +1968,7 @@ void zone_init_free_lists(struct pglist_data *pgdat, 
struct zone *zone,
        memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY)
 #endif
 
-static int __cpuinit zone_batchsize(struct zone *zone)
+static int __devinit zone_batchsize(struct zone *zone)
 {
        int batch;
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to