[PATCH] wait_table and zonelist initializing for memory hotadd: change to meminit for build_zonelist
Change definitions of some functions and data from __init to __meminit. These functions and data can be used after bootup by this patch to be used for hot-add codes. Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
02b694dea4
commit
86356ab147
@ -91,8 +91,8 @@ static inline void *alloc_remap(int nid, unsigned long size)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern unsigned long __initdata nr_kernel_pages;
|
extern unsigned long nr_kernel_pages;
|
||||||
extern unsigned long __initdata nr_all_pages;
|
extern unsigned long nr_all_pages;
|
||||||
|
|
||||||
extern void *__init alloc_large_system_hash(const char *tablename,
|
extern void *__init alloc_large_system_hash(const char *tablename,
|
||||||
unsigned long bucketsize,
|
unsigned long bucketsize,
|
||||||
|
@ -83,8 +83,8 @@ EXPORT_SYMBOL(zone_table);
|
|||||||
static char *zone_names[MAX_NR_ZONES] = { "DMA", "DMA32", "Normal", "HighMem" };
|
static char *zone_names[MAX_NR_ZONES] = { "DMA", "DMA32", "Normal", "HighMem" };
|
||||||
int min_free_kbytes = 1024;
|
int min_free_kbytes = 1024;
|
||||||
|
|
||||||
unsigned long __initdata nr_kernel_pages;
|
unsigned long __meminitdata nr_kernel_pages;
|
||||||
unsigned long __initdata nr_all_pages;
|
unsigned long __meminitdata nr_all_pages;
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_VM
|
#ifdef CONFIG_DEBUG_VM
|
||||||
static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
|
static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
|
||||||
@ -1517,7 +1517,7 @@ void show_free_areas(void)
|
|||||||
*
|
*
|
||||||
* Add all populated zones of a node to the zonelist.
|
* Add all populated zones of a node to the zonelist.
|
||||||
*/
|
*/
|
||||||
static int __init build_zonelists_node(pg_data_t *pgdat,
|
static int __meminit build_zonelists_node(pg_data_t *pgdat,
|
||||||
struct zonelist *zonelist, int nr_zones, int zone_type)
|
struct zonelist *zonelist, int nr_zones, int zone_type)
|
||||||
{
|
{
|
||||||
struct zone *zone;
|
struct zone *zone;
|
||||||
@ -1553,7 +1553,7 @@ static inline int highest_zone(int zone_bits)
|
|||||||
|
|
||||||
#ifdef CONFIG_NUMA
|
#ifdef CONFIG_NUMA
|
||||||
#define MAX_NODE_LOAD (num_online_nodes())
|
#define MAX_NODE_LOAD (num_online_nodes())
|
||||||
static int __initdata node_load[MAX_NUMNODES];
|
static int __meminitdata node_load[MAX_NUMNODES];
|
||||||
/**
|
/**
|
||||||
* find_next_best_node - find the next node that should appear in a given node's fallback list
|
* find_next_best_node - find the next node that should appear in a given node's fallback list
|
||||||
* @node: node whose fallback list we're appending
|
* @node: node whose fallback list we're appending
|
||||||
@ -1568,7 +1568,7 @@ static int __initdata node_load[MAX_NUMNODES];
|
|||||||
* on them otherwise.
|
* on them otherwise.
|
||||||
* It returns -1 if no node is found.
|
* It returns -1 if no node is found.
|
||||||
*/
|
*/
|
||||||
static int __init find_next_best_node(int node, nodemask_t *used_node_mask)
|
static int __meminit find_next_best_node(int node, nodemask_t *used_node_mask)
|
||||||
{
|
{
|
||||||
int n, val;
|
int n, val;
|
||||||
int min_val = INT_MAX;
|
int min_val = INT_MAX;
|
||||||
@ -1614,7 +1614,7 @@ static int __init find_next_best_node(int node, nodemask_t *used_node_mask)
|
|||||||
return best_node;
|
return best_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init build_zonelists(pg_data_t *pgdat)
|
static void __meminit build_zonelists(pg_data_t *pgdat)
|
||||||
{
|
{
|
||||||
int i, j, k, node, local_node;
|
int i, j, k, node, local_node;
|
||||||
int prev_node, load;
|
int prev_node, load;
|
||||||
@ -1666,7 +1666,7 @@ static void __init build_zonelists(pg_data_t *pgdat)
|
|||||||
|
|
||||||
#else /* CONFIG_NUMA */
|
#else /* CONFIG_NUMA */
|
||||||
|
|
||||||
static void __init build_zonelists(pg_data_t *pgdat)
|
static void __meminit build_zonelists(pg_data_t *pgdat)
|
||||||
{
|
{
|
||||||
int i, j, k, node, local_node;
|
int i, j, k, node, local_node;
|
||||||
|
|
||||||
@ -2071,7 +2071,7 @@ static __meminit void init_currently_empty_zone(struct zone *zone,
|
|||||||
* - mark all memory queues empty
|
* - mark all memory queues empty
|
||||||
* - clear the memory bitmaps
|
* - clear the memory bitmaps
|
||||||
*/
|
*/
|
||||||
static void __init free_area_init_core(struct pglist_data *pgdat,
|
static void __meminit free_area_init_core(struct pglist_data *pgdat,
|
||||||
unsigned long *zones_size, unsigned long *zholes_size)
|
unsigned long *zones_size, unsigned long *zholes_size)
|
||||||
{
|
{
|
||||||
unsigned long j;
|
unsigned long j;
|
||||||
@ -2159,7 +2159,7 @@ static void __init alloc_node_mem_map(struct pglist_data *pgdat)
|
|||||||
#endif /* CONFIG_FLAT_NODE_MEM_MAP */
|
#endif /* CONFIG_FLAT_NODE_MEM_MAP */
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init free_area_init_node(int nid, struct pglist_data *pgdat,
|
void __meminit free_area_init_node(int nid, struct pglist_data *pgdat,
|
||||||
unsigned long *zones_size, unsigned long node_start_pfn,
|
unsigned long *zones_size, unsigned long node_start_pfn,
|
||||||
unsigned long *zholes_size)
|
unsigned long *zholes_size)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user