From 5a840cd6f592f8bc6ac633b6bccbbd0cb0e0b742 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Thu, 8 Dec 2011 10:22:08 -0800 Subject: [PATCH] --- yaml --- r: 277175 b: refs/heads/master c: 7fb0bc3f06fdc3a35e41bcea7a15e53d2515362f h: refs/heads/master i: 277173: 1943a10dd85c864ad845f70054c48dbb62e27913 277171: cf3aadfffb70529a68a33040f06fff470aa04a23 277167: fc713ef241466a1eca0a21edbef2e20c8e8267f0 v: v3 --- [refs] | 2 +- trunk/include/linux/memblock.h | 1 + trunk/mm/memblock.c | 20 +++++++++++++------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 7feb52d946ec..71cd266493ce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1aadc0560f46530f8a0f11055285b876a8a31770 +refs/heads/master: 7fb0bc3f06fdc3a35e41bcea7a15e53d2515362f diff --git a/trunk/include/linux/memblock.h b/trunk/include/linux/memblock.h index c5b3bbc75897..c7b68f489d46 100644 --- a/trunk/include/linux/memblock.h +++ b/trunk/include/linux/memblock.h @@ -52,6 +52,7 @@ int memblock_free_reserved_regions(void); int memblock_reserve_reserved_regions(void); void memblock_allow_resize(void); +int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid); int memblock_add(phys_addr_t base, phys_addr_t size); int memblock_remove(phys_addr_t base, phys_addr_t size); int memblock_free(phys_addr_t base, phys_addr_t size); diff --git a/trunk/mm/memblock.c b/trunk/mm/memblock.c index a3ca95f35e03..ef4987b03afd 100644 --- a/trunk/mm/memblock.c +++ b/trunk/mm/memblock.c @@ -324,6 +324,7 @@ static void __init_memblock memblock_insert_region(struct memblock_type *type, * @type: memblock type to add new region into * @base: base address of the new region * @size: size of the new region + * @nid: nid of the new region * * Add new memblock region [@base,@base+@size) into @type. The new region * is allowed to overlap with existing ones - overlaps don't affect already @@ -334,7 +335,7 @@ static void __init_memblock memblock_insert_region(struct memblock_type *type, * 0 on success, -errno on failure. */ static int __init_memblock memblock_add_region(struct memblock_type *type, - phys_addr_t base, phys_addr_t size) + phys_addr_t base, phys_addr_t size, int nid) { bool insert = false; phys_addr_t obase = base; @@ -346,7 +347,7 @@ static int __init_memblock memblock_add_region(struct memblock_type *type, WARN_ON(type->cnt != 1 || type->total_size); type->regions[0].base = base; type->regions[0].size = size; - memblock_set_region_node(&type->regions[0], MAX_NUMNODES); + memblock_set_region_node(&type->regions[0], nid); type->total_size = size; return 0; } @@ -376,7 +377,7 @@ static int __init_memblock memblock_add_region(struct memblock_type *type, nr_new++; if (insert) memblock_insert_region(type, i++, base, - rbase - base, MAX_NUMNODES); + rbase - base, nid); } /* area below @rend is dealt with, forget about it */ base = min(rend, end); @@ -386,8 +387,7 @@ static int __init_memblock memblock_add_region(struct memblock_type *type, if (base < end) { nr_new++; if (insert) - memblock_insert_region(type, i, base, end - base, - MAX_NUMNODES); + memblock_insert_region(type, i, base, end - base, nid); } /* @@ -406,9 +406,15 @@ static int __init_memblock memblock_add_region(struct memblock_type *type, } } +int __init_memblock memblock_add_node(phys_addr_t base, phys_addr_t size, + int nid) +{ + return memblock_add_region(&memblock.memory, base, size, nid); +} + int __init_memblock memblock_add(phys_addr_t base, phys_addr_t size) { - return memblock_add_region(&memblock.memory, base, size); + return memblock_add_region(&memblock.memory, base, size, MAX_NUMNODES); } /** @@ -522,7 +528,7 @@ int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size) (void *)_RET_IP_); BUG_ON(0 == size); - return memblock_add_region(_rgn, base, size); + return memblock_add_region(_rgn, base, size, MAX_NUMNODES); } /**