git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lis3lv02d: add axes knowledge for HP 6510b
[safe/jmp/linux-2.6]
/
mm
/
memory_hotplug.c
diff --git
a/mm/memory_hotplug.c
b/mm/memory_hotplug.c
index
3b49758
..
c083cf5
100644
(file)
--- a/
mm/memory_hotplug.c
+++ b/
mm/memory_hotplug.c
@@
-22,7
+22,6
@@
#include <linux/highmem.h>
#include <linux/vmalloc.h>
#include <linux/ioport.h>
#include <linux/highmem.h>
#include <linux/vmalloc.h>
#include <linux/ioport.h>
-#include <linux/cpuset.h>
#include <linux/delay.h>
#include <linux/migrate.h>
#include <linux/page-isolation.h>
#include <linux/delay.h>
#include <linux/migrate.h>
#include <linux/page-isolation.h>
@@
-190,7
+189,7
@@
static void grow_pgdat_span(struct pglist_data *pgdat, unsigned long start_pfn,
pgdat->node_start_pfn;
}
pgdat->node_start_pfn;
}
-static int __add_zone(struct zone *zone, unsigned long phys_start_pfn)
+static int __
meminit __
add_zone(struct zone *zone, unsigned long phys_start_pfn)
{
struct pglist_data *pgdat = zone->zone_pgdat;
int nr_pages = PAGES_PER_SECTION;
{
struct pglist_data *pgdat = zone->zone_pgdat;
int nr_pages = PAGES_PER_SECTION;
@@
-217,7
+216,8
@@
static int __add_zone(struct zone *zone, unsigned long phys_start_pfn)
return 0;
}
return 0;
}
-static int __add_section(struct zone *zone, unsigned long phys_start_pfn)
+static int __meminit __add_section(int nid, struct zone *zone,
+ unsigned long phys_start_pfn)
{
int nr_pages = PAGES_PER_SECTION;
int ret;
{
int nr_pages = PAGES_PER_SECTION;
int ret;
@@
-235,7
+235,7
@@
static int __add_section(struct zone *zone, unsigned long phys_start_pfn)
if (ret < 0)
return ret;
if (ret < 0)
return ret;
- return register_new_memory(__pfn_to_section(phys_start_pfn));
+ return register_new_memory(
nid,
__pfn_to_section(phys_start_pfn));
}
#ifdef CONFIG_SPARSEMEM_VMEMMAP
}
#ifdef CONFIG_SPARSEMEM_VMEMMAP
@@
-274,8
+274,8
@@
static int __remove_section(struct zone *zone, struct mem_section *ms)
* call this function after deciding the zone to which to
* add the new pages.
*/
* call this function after deciding the zone to which to
* add the new pages.
*/
-int __
add_pages(
struct zone *zone, unsigned long phys_start_pfn,
- unsigned long nr_pages)
+int __
ref __add_pages(int nid,
struct zone *zone, unsigned long phys_start_pfn,
+
unsigned long nr_pages)
{
unsigned long i;
int err = 0;
{
unsigned long i;
int err = 0;
@@
-285,7
+285,7
@@
int __add_pages(struct zone *zone, unsigned long phys_start_pfn,
end_sec = pfn_to_section_nr(phys_start_pfn + nr_pages - 1);
for (i = start_sec; i <= end_sec; i++) {
end_sec = pfn_to_section_nr(phys_start_pfn + nr_pages - 1);
for (i = start_sec; i <= end_sec; i++) {
- err = __add_section(zone, i << PFN_SECTION_SHIFT);
+ err = __add_section(
nid,
zone, i << PFN_SECTION_SHIFT);
/*
* EEXIST is finally dealt with by ioresource collision
/*
* EEXIST is finally dealt with by ioresource collision
@@
-324,11
+324,11
@@
int __remove_pages(struct zone *zone, unsigned long phys_start_pfn,
BUG_ON(phys_start_pfn & ~PAGE_SECTION_MASK);
BUG_ON(nr_pages % PAGES_PER_SECTION);
BUG_ON(phys_start_pfn & ~PAGE_SECTION_MASK);
BUG_ON(nr_pages % PAGES_PER_SECTION);
- release_mem_region(phys_start_pfn << PAGE_SHIFT, nr_pages * PAGE_SIZE);
-
sections_to_remove = nr_pages / PAGES_PER_SECTION;
for (i = 0; i < sections_to_remove; i++) {
unsigned long pfn = phys_start_pfn + i*PAGES_PER_SECTION;
sections_to_remove = nr_pages / PAGES_PER_SECTION;
for (i = 0; i < sections_to_remove; i++) {
unsigned long pfn = phys_start_pfn + i*PAGES_PER_SECTION;
+ release_mem_region(pfn << PAGE_SHIFT,
+ PAGES_PER_SECTION << PAGE_SHIFT);
ret = __remove_section(zone, __pfn_to_section(pfn));
if (ret)
break;
ret = __remove_section(zone, __pfn_to_section(pfn));
if (ret)
break;
@@
-471,7
+471,8
@@
static void rollback_node_hotadd(int nid, pg_data_t *pgdat)
}
}
-int add_memory(int nid, u64 start, u64 size)
+/* we are OK calling __meminit stuff here - we have CONFIG_MEMORY_HOTPLUG */
+int __ref add_memory(int nid, u64 start, u64 size)
{
pg_data_t *pgdat = NULL;
int new_pgdat = 0;
{
pg_data_t *pgdat = NULL;
int new_pgdat = 0;
@@
-498,8
+499,6
@@
int add_memory(int nid, u64 start, u64 size)
/* we online node here. we can't roll back from here. */
node_set_online(nid);
/* we online node here. we can't roll back from here. */
node_set_online(nid);
- cpuset_track_online_nodes();
-
if (new_pgdat) {
ret = register_one_node(nid);
/*
if (new_pgdat) {
ret = register_one_node(nid);
/*
@@
-628,15
+627,12
@@
int scan_lru_pages(unsigned long start, unsigned long end)
}
static struct page *
}
static struct page *
-hotremove_migrate_alloc(struct page *page,
- unsigned long private,
- int **x)
+hotremove_migrate_alloc(struct page *page, unsigned long private, int **x)
{
{
- /* This should be improoooo
o
ved!! */
- return alloc_page(GFP_HIGHUSER_
PAGECACH
E);
+ /* This should be improooooved!! */
+ return alloc_page(GFP_HIGHUSER_
MOVABL
E);
}
}
-
#define NR_OFFLINE_AT_ONCE_PAGES (256)
static int
do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
#define NR_OFFLINE_AT_ONCE_PAGES (256)
static int
do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)