Module Name: src Committed By: nonaka Date: Sat Feb 11 10:15:55 UTC 2017
Modified Files: src/sys/arch/i386/stand/efiboot: efiboot.c efiboot.h panic.c Log Message: efiboot: don't call WaitForSingleEvent after ExitBootServices is called. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/i386/stand/efiboot/efiboot.c \ src/sys/arch/i386/stand/efiboot/efiboot.h cvs rdiff -u -r1.3 -r1.4 src/sys/arch/i386/stand/efiboot/panic.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/i386/stand/efiboot/efiboot.c diff -u src/sys/arch/i386/stand/efiboot/efiboot.c:1.2 src/sys/arch/i386/stand/efiboot/efiboot.c:1.3 --- src/sys/arch/i386/stand/efiboot/efiboot.c:1.2 Sat Feb 11 10:13:46 2017 +++ src/sys/arch/i386/stand/efiboot/efiboot.c Sat Feb 11 10:15:55 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: efiboot.c,v 1.2 2017/02/11 10:13:46 nonaka Exp $ */ +/* $NetBSD: efiboot.c,v 1.3 2017/02/11 10:15:55 nonaka Exp $ */ /*- * Copyright (c) 2016 Kimihiro Nonaka <non...@netbsd.org> @@ -35,6 +35,7 @@ EFI_HANDLE IH; EFI_DEVICE_PATH *efi_bootdp; EFI_LOADED_IMAGE *efi_li; uintptr_t efi_main_sp; +bool efi_cleanuped; static EFI_PHYSICAL_ADDRESS heap_start = EFI_ALLOCATE_MAX_ADDRESS; static UINTN heap_size = 1 * 1024 * 1024; /* 1MB */ @@ -121,6 +122,7 @@ efi_cleanup(void) if (EFI_ERROR(status)) Panic(L"ExitBootServices failed"); } + efi_cleanuped = true; allocsz = sizeof(struct btinfo_efimemmap) - 1 + NoEntries * DescriptorSize; Index: src/sys/arch/i386/stand/efiboot/efiboot.h diff -u src/sys/arch/i386/stand/efiboot/efiboot.h:1.2 src/sys/arch/i386/stand/efiboot/efiboot.h:1.3 --- src/sys/arch/i386/stand/efiboot/efiboot.h:1.2 Sat Feb 11 10:13:46 2017 +++ src/sys/arch/i386/stand/efiboot/efiboot.h Sat Feb 11 10:15:55 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: efiboot.h,v 1.2 2017/02/11 10:13:46 nonaka Exp $ */ +/* $NetBSD: efiboot.h,v 1.3 2017/02/11 10:15:55 nonaka Exp $ */ /*- * Copyright (c) 2016 Kimihiro Nonaka <non...@netbsd.org> @@ -48,6 +48,7 @@ extern EFI_HANDLE IH; extern EFI_DEVICE_PATH *efi_bootdp; extern EFI_LOADED_IMAGE *efi_li; extern uintptr_t efi_main_sp; +extern bool efi_cleanuped; void efi_cleanup(void); /* eficons.c */ Index: src/sys/arch/i386/stand/efiboot/panic.c diff -u src/sys/arch/i386/stand/efiboot/panic.c:1.3 src/sys/arch/i386/stand/efiboot/panic.c:1.4 --- src/sys/arch/i386/stand/efiboot/panic.c:1.3 Sun Feb 5 10:13:43 2017 +++ src/sys/arch/i386/stand/efiboot/panic.c Sat Feb 11 10:15:55 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: panic.c,v 1.3 2017/02/05 10:13:43 joerg Exp $ */ +/* $NetBSD: panic.c,v 1.4 2017/02/11 10:15:55 nonaka Exp $ */ /*- * Copyright (c) 2016 Kimihiro Nonaka <non...@netbsd.org> @@ -54,7 +54,8 @@ __dead void reboot(void) { - WaitForSingleEvent(ST->ConIn->WaitForKey, 0); + if (!efi_cleanuped) + WaitForSingleEvent(ST->ConIn->WaitForKey, 0); uefi_call_wrapper(RT->ResetSystem, 4, EfiResetCold, EFI_SUCCESS, 0, NULL);