EDKII can allocate adjacent E820 entries only if they are at a page boundary.
For some unknown and probably strange reasons, Intel puts it's OpRegion at an
offset of 0x18 bytes. If the VBT lays directly behind the OpRegion, we're going
to try allocating two adjacent E820 sharing the same page. This causes EDKII to
do not properly allocate those entries. A Linux guest then isn't able to map
the VBT and those fails to find it.
Details
Details
- Reviewers
jhb markj - Group Reviewers
bhyve - Commits
- rG660e7182dbee: bhyve: merge adjacent E820 entries
rG08139140c5f9: bhyve: merge adjacent E820 entries
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Suppose there are two E820 entries with a hole in the middle, and then a new entry fills that hole. Then we could potentially merge the new entry with both the predecessor and successor. Do we need to handle that case?
usr.sbin/bhyve/amd64/e820.c | ||
---|---|---|
253 |