Skip to content

Commit

Permalink
[pcbios] Add additional sanity check for bogus e820 map
Browse files Browse the repository at this point in the history
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").
  • Loading branch information
Marty Connor authored and Michael Brown committed Dec 18, 2008
1 parent 57bbf0e commit 8674bc0
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/arch/i386/firmware/pcbios/memmap.c
Expand Up @@ -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 );
Expand Down

0 comments on commit 8674bc0

Please sign in to comment.