|
|
@@ -888,12 +888,14 @@ static unsigned long handle_pg_range(unsigned long pg_start,
|
|
|
pfn_cnt -= pgs_ol;
|
|
|
/*
|
|
|
* Check if the corresponding memory block is already
|
|
|
- * online by checking its last previously backed page.
|
|
|
- * In case it is we need to bring rest (which was not
|
|
|
- * backed previously) online too.
|
|
|
+ * online. It is possible to observe struct pages still
|
|
|
+ * being uninitialized here so check section instead.
|
|
|
+ * In case the section is online we need to bring the
|
|
|
+ * rest of pfns (which were not backed previously)
|
|
|
+ * online too.
|
|
|
*/
|
|
|
if (start_pfn > has->start_pfn &&
|
|
|
- !PageReserved(pfn_to_page(start_pfn - 1)))
|
|
|
+ online_section_nr(pfn_to_section_nr(start_pfn)))
|
|
|
hv_bring_pgs_online(has, start_pfn, pgs_ol);
|
|
|
|
|
|
}
|