memory hotplug: small fixes to bootmem freeing for memory hotremove
- Change some naming * Magic -> types * MIX_INFO -> MIX_SECTION_INFO * Change definition of bootmem type from direct hex value - __free_pages_bootmem() becomes __meminit. Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Cc: Andy Whitcroft <apw@shadowen.org> Cc: Badari Pulavarty <pbadari@us.ibm.com> Cc: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Johannes Weiner <hannes@saeurebad.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
48c906823f
commit
af370fb8cb
|
@ -13,12 +13,12 @@ struct mem_section;
|
||||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Magic number for free bootmem.
|
* Types for free bootmem.
|
||||||
* The normal smallest mapcount is -1. Here is smaller value than it.
|
* The normal smallest mapcount is -1. Here is smaller value than it.
|
||||||
*/
|
*/
|
||||||
#define SECTION_INFO 0xfffffffe
|
#define SECTION_INFO (-1 - 1)
|
||||||
#define MIX_INFO 0xfffffffd
|
#define MIX_SECTION_INFO (-1 - 2)
|
||||||
#define NODE_INFO 0xfffffffc
|
#define NODE_INFO (-1 - 3)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pgdat resizing functions
|
* pgdat resizing functions
|
||||||
|
|
|
@ -62,9 +62,9 @@ static void release_memory_resource(struct resource *res)
|
||||||
|
|
||||||
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
|
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
|
||||||
#ifndef CONFIG_SPARSEMEM_VMEMMAP
|
#ifndef CONFIG_SPARSEMEM_VMEMMAP
|
||||||
static void get_page_bootmem(unsigned long info, struct page *page, int magic)
|
static void get_page_bootmem(unsigned long info, struct page *page, int type)
|
||||||
{
|
{
|
||||||
atomic_set(&page->_mapcount, magic);
|
atomic_set(&page->_mapcount, type);
|
||||||
SetPagePrivate(page);
|
SetPagePrivate(page);
|
||||||
set_page_private(page, info);
|
set_page_private(page, info);
|
||||||
atomic_inc(&page->_count);
|
atomic_inc(&page->_count);
|
||||||
|
@ -72,10 +72,10 @@ static void get_page_bootmem(unsigned long info, struct page *page, int magic)
|
||||||
|
|
||||||
void put_page_bootmem(struct page *page)
|
void put_page_bootmem(struct page *page)
|
||||||
{
|
{
|
||||||
int magic;
|
int type;
|
||||||
|
|
||||||
magic = atomic_read(&page->_mapcount);
|
type = atomic_read(&page->_mapcount);
|
||||||
BUG_ON(magic >= -1);
|
BUG_ON(type >= -1);
|
||||||
|
|
||||||
if (atomic_dec_return(&page->_count) == 1) {
|
if (atomic_dec_return(&page->_count) == 1) {
|
||||||
ClearPagePrivate(page);
|
ClearPagePrivate(page);
|
||||||
|
@ -119,7 +119,7 @@ static void register_page_bootmem_info_section(unsigned long start_pfn)
|
||||||
mapsize = PAGE_ALIGN(usemap_size()) >> PAGE_SHIFT;
|
mapsize = PAGE_ALIGN(usemap_size()) >> PAGE_SHIFT;
|
||||||
|
|
||||||
for (i = 0; i < mapsize; i++, page++)
|
for (i = 0; i < mapsize; i++, page++)
|
||||||
get_page_bootmem(section_nr, page, MIX_INFO);
|
get_page_bootmem(section_nr, page, MIX_SECTION_INFO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -533,7 +533,7 @@ static void __free_pages_ok(struct page *page, unsigned int order)
|
||||||
/*
|
/*
|
||||||
* permit the bootmem allocator to evade page validation on high-order frees
|
* permit the bootmem allocator to evade page validation on high-order frees
|
||||||
*/
|
*/
|
||||||
void __free_pages_bootmem(struct page *page, unsigned int order)
|
void __meminit __free_pages_bootmem(struct page *page, unsigned int order)
|
||||||
{
|
{
|
||||||
if (order == 0) {
|
if (order == 0) {
|
||||||
__ClearPageReserved(page);
|
__ClearPageReserved(page);
|
||||||
|
|
Loading…
Reference in New Issue