Page MenuHomeFreeBSD

Allow guest device MMIO access from bootmem memory segments.

Authored by grehan on Aug 5 2020, 11:25 AM.



Recent versions of UEFI have moved local APIC timer initialization into
the early SEC phase which runs out of ROM, prior to self-relocating
into RAM. This results in a hypervisor exit.

Currently bhyve prevents instruction emulation from segments that aren't
marked as "sysmem" aka guest RAM, with the vm_gpa_hold() routine failing.
However, there is no reason for this restriction: the hypervisor already
controls whether EPT mappings are marked as executable.

Fix by dropping the redundant check of sysmem.

(Note: this problem was first seen by D Scott Phillips and worked around in
UEFI by moving APIC initialization to the later PEI phase

Test Plan

Boot the most recent bcran UEFI snapshot.

Diff Detail

rS FreeBSD src repository
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.