Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[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").
  • 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.