xen: check memory area against e820 map
Provide a service routine to check a physical memory area against the E820 map. The routine will return false if the complete area is RAM according to the E820 map and true otherwise. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: David Vrabel <david.vrabel@citrix.com> Acked-by: Konrad Rzeszutek Wilk <Konrad.wilk@oracle.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
This commit is contained in:

committed by
David Vrabel

parent
5097cdf6ce
commit
e612b4a7db
@@ -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>
|
||||
|
Reference in New Issue
Block a user