[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:
parent
57bbf0ec98
commit
8674bc05a0
@ -201,6 +201,13 @@ static int meme820 ( struct memory_map *memmap ) {
|
|||||||
break;
|
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",
|
DBG ( "INT 15,e820 region [%llx,%llx) type %d",
|
||||||
e820buf.start, ( e820buf.start + e820buf.len ),
|
e820buf.start, ( e820buf.start + e820buf.len ),
|
||||||
( int ) e820buf.type );
|
( int ) e820buf.type );
|
||||||
|
Reference in New Issue
Block a user