|
@@ -494,7 +494,7 @@ static int __meminit __add_zone(struct zone *zone, unsigned long phys_start_pfn)
|
|
|
}
|
|
|
|
|
|
static int __meminit __add_section(int nid, struct zone *zone,
|
|
|
- unsigned long phys_start_pfn)
|
|
|
+ unsigned long phys_start_pfn, bool want_memblock)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
@@ -511,6 +511,9 @@ static int __meminit __add_section(int nid, struct zone *zone,
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
|
+ if (!want_memblock)
|
|
|
+ return 0;
|
|
|
+
|
|
|
return register_new_memory(nid, __pfn_to_section(phys_start_pfn));
|
|
|
}
|
|
|
|
|
@@ -521,7 +524,7 @@ static int __meminit __add_section(int nid, struct zone *zone,
|
|
|
* add the new pages.
|
|
|
*/
|
|
|
int __ref __add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,
|
|
|
- unsigned long nr_pages)
|
|
|
+ unsigned long nr_pages, bool want_memblock)
|
|
|
{
|
|
|
unsigned long i;
|
|
|
int err = 0;
|
|
@@ -549,7 +552,7 @@ int __ref __add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn,
|
|
|
}
|
|
|
|
|
|
for (i = start_sec; i <= end_sec; i++) {
|
|
|
- err = __add_section(nid, zone, section_nr_to_pfn(i));
|
|
|
+ err = __add_section(nid, zone, section_nr_to_pfn(i), want_memblock);
|
|
|
|
|
|
/*
|
|
|
* EEXIST is finally dealt with by ioresource collision
|