@@ -822,18 +822,17 @@ static int add_memory_block(unsigned long block_id, unsigned long state,
static int __init add_boot_memory_block(unsigned long base_section_nr)
{
- int section_count = 0;
unsigned long nr;
- for (nr = base_section_nr; nr < base_section_nr + sections_per_block;
- nr++)
- if (present_section_nr(nr))
- section_count++;
+ for_each_present_section_nr(base_section_nr, nr) {
+ if (nr >= (base_section_nr + sections_per_block))
+ break;
- if (section_count == 0)
- return 0;
- return add_memory_block(memory_block_id(base_section_nr),
- MEM_ONLINE, NULL, NULL);
+ return add_memory_block(memory_block_id(base_section_nr),
+ MEM_ONLINE, NULL, NULL);
+ }
+
+ return 0;
}
static int add_hotplug_memory_block(unsigned long block_id,
@@ -2097,6 +2097,11 @@ static inline unsigned long next_present_section_nr(unsigned long section_nr)
return -1;
}
+#define for_each_present_section_nr(start, section_nr) \
+ for (section_nr = next_present_section_nr(start - 1); \
+ section_nr != -1; \
+ section_nr = next_present_section_nr(section_nr))
+
/*
* These are _only_ used during initialisation, therefore they
* can use __initdata ... They could have names to indicate
@@ -170,11 +170,6 @@ static void __section_mark_present(struct mem_section *ms,
ms->section_mem_map |= SECTION_MARKED_PRESENT;
}
-#define for_each_present_section_nr(start, section_nr) \
- for (section_nr = next_present_section_nr(start-1); \
- section_nr != -1; \
- section_nr = next_present_section_nr(section_nr))
-
static inline unsigned long first_present_section_nr(void)
{
return next_present_section_nr(-1);