david/ipxe
Archived
1
0

[pcbios] Add additional sanity check for bogus e820 map

At POST time some BIOSes return invalid e820 maps even though
they indicate that the data is valid.  We add a check that the first
region returned by e820 is RAM type and declare the map to be invalid
if it is not.

This extends the sanity checks from 8b20e5d ("[pcbios] Sanity-check
the INT15,e820 and INT15,e801 memory maps").
This commit is contained in:
Marty Connor 2008-12-17 23:28:27 -05:00 committed by Michael Brown
parent 57bbf0ec98
commit 8674bc05a0

View File

@ -201,6 +201,13 @@ static int meme820 ( struct memory_map *memmap ) {
break;
}
/* If first region is not RAM, assume map is invalid */
if ( ( memmap->count == 0 ) &&
( e820buf.type != E820_TYPE_RAM ) ) {
DBG ( "INT 15,e820 failed, first entry not RAM\n" );
return -EINVAL;
}
DBG ( "INT 15,e820 region [%llx,%llx) type %d",
e820buf.start, ( e820buf.start + e820buf.len ),
( int ) e820buf.type );