diff --git a/sys/dev/efidev/efirt.c b/sys/dev/efidev/efirt.c index 9a3b2509c4c..12d570dbdb9 100644 --- a/sys/dev/efidev/efirt.c +++ b/sys/dev/efidev/efirt.c @@ -131,6 +131,7 @@ efi_init(void) { struct efi_map_header *efihdr; struct efi_md *map; + struct efi_rt *rtdm; caddr_t kmdp; size_t efisz; int rt_disabled; @@ -207,10 +208,9 @@ efi_init(void) * We need to enter into the EFI environment as efi_runtime may point * to an EFI address. */ - efi_enter(); + rtdm = (struct efi_rt *)PHYS_TO_DMAP((uintptr_t)efi_runtime); if (!efi_is_in_map(map, efihdr->memory_size / efihdr->descriptor_size, - efihdr->descriptor_size, (vm_offset_t)efi_runtime->rt_gettime)) { - efi_leave(); + efihdr->descriptor_size, (vm_offset_t)rtdm->rt_gettime)) { if (bootverbose) printf( "EFI runtime services table has an invalid pointer\n"); @@ -218,7 +218,6 @@ efi_init(void) efi_destroy_1t1_map(); return (ENXIO); } - efi_leave(); return (0); }