As long as the memory stolen is always above 1MB. This allows the PVH
Dom0 builder to be used on a memory map that only has a single RAM
region starting at 0.
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Tested-by: Andrew Cooper <andrew.cooper3@citrix.com>
{
struct e820entry *entry = &d->arch.e820[i];
- if ( entry->type != E820_RAM || entry->addr + entry->size > limit ||
- entry->addr < MB(1) )
+ if ( entry->type != E820_RAM || entry->addr + entry->size > limit )
continue;
*addr = (entry->addr + entry->size - size) & ~(align - 1);
- if ( *addr < entry->addr )
+ if ( *addr < entry->addr ||
+ /* Don't steal from the low 1MB due to the copying done there. */
+ *addr < MB(1) )
continue;
entry->size = *addr - entry->addr;