On Fri, Dec 30, 2016 at 05:33:44PM +0900, YASUOKA Masahiko wrote: > Hi, > > On Thu, 29 Dec 2016 14:53:20 -0600 > Ryan <[email protected]> wrote: > > I've successfully booted the machine with the following changes: > > > > > > --- sys/arch/amd64/stand/efiboot/efiboot.c 2016-06-10 12:36:06.000000000 > > -0600 > > +++ sys/arch/amd64/stand/efiboot/efiboot.c 2016-12-28 15:57:36.728002168 > > -0600 > > @@ -137,12 +137,16 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TA > > void > > efi_cleanup(void) > > { > > + int retry; > > EFI_STATUS status; > > > > - efi_memprobe_internal(); /* sync the current map */ > > - status = EFI_CALL(BS->ExitBootServices, IH, mmap_key); > > - if (status != EFI_SUCCESS) > > - panic("ExitBootServices"); > > + /* retry once in case of failure */ > > + for (retry = 1; retry == 0; retry--) { > > + efi_memprobe_internal(); /* sync the current map */ > > + status = EFI_CALL(BS->ExitBootServices, IH, mmap_key); > > + if (status != EFI_SUCCESS && retry == 0) > > + panic("ExitBootServices failed (%d)\n", status); > > + } > > } > > See the condition of "for" carefully. It seems that it never become > true. Can you check whether it will still boot successfull after this > problem is fixed? > > (snip) > > Oh before I forget, while I was reading through the code I noticed what > > appears to be a typo in sys/arch/amd64/stand/efiboot/eficall.h: > > > > #define EFI_CALL(...) \ > > _efi_call_fn(__VA_ARGS__, _call_9, _call_8, _call_7, _call_6, _call_5, \ > > _call_4, _call_3, _call_2, _call_1, _call_1)(__VA_ARGS__) > > #endif > > > > It looks like the second instance of _call_1 should be _call_0 (which is > > defined earlier), unless I am totally misreading this. > > I commited this already. Thanks.
Shouldn't this change also be made to armv7 and arm64?
