|
@@ -573,6 +573,29 @@ static unsigned long __init xen_count_remap_pages(unsigned long max_pfn)
|
|
|
return extra;
|
|
|
}
|
|
|
|
|
|
+bool __init xen_is_e820_reserved(phys_addr_t start, phys_addr_t size)
|
|
|
+{
|
|
|
+ struct e820entry *entry;
|
|
|
+ unsigned mapcnt;
|
|
|
+ phys_addr_t end;
|
|
|
+
|
|
|
+ if (!size)
|
|
|
+ return false;
|
|
|
+
|
|
|
+ end = start + size;
|
|
|
+ entry = xen_e820_map;
|
|
|
+
|
|
|
+ for (mapcnt = 0; mapcnt < xen_e820_map_entries; mapcnt++) {
|
|
|
+ if (entry->type == E820_RAM && entry->addr <= start &&
|
|
|
+ (entry->addr + entry->size) >= end)
|
|
|
+ return false;
|
|
|
+
|
|
|
+ entry++;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Reserve Xen mfn_list.
|
|
|
* See comment above "struct start_info" in <xen/interface/xen.h>
|