EFI firmware has bugs which may mean that calling EFI runtime services will
authorkettenis <kettenis@openbsd.org>
Fri, 4 Nov 2022 16:49:31 +0000 (16:49 +0000)
committerkettenis <kettenis@openbsd.org>
Fri, 4 Nov 2022 16:49:31 +0000 (16:49 +0000)
commitf3c5c95847748917f53bb3c184de66e11387cddb
treec9c370f06156ff94cc39b5b7106c89843a122ee0
parent0d31972d56cc3c9cdd7f287e49b8ffd6e3b247a6
EFI firmware has bugs which may mean that calling EFI runtime services will
fault because it does memory accesses outside of the regions it told us to
map.  Try to mitigate this by installing a fault handler (using the
pcb_onfault mechanism) and bail out using longjmp(9) if we encounter a
page fault while executing an EFI runtime services call.

Since some firmware bugs result in us executing code that isn't mapped,
make kpageflttrap() handle execution faults as well as data faults.

ok guenther@
sys/arch/amd64/amd64/efi_machdep.c
sys/arch/amd64/amd64/locore.S
sys/arch/amd64/amd64/trap.c