[syslinux] load_env32 WAS: Hyper-V Gen 2 waiting for ldlinux.e64

Geert Stappers stappers at stappers.nl
Fri Oct 9 07:28:58 PDT 2015


On Thu, Oct 08, 2015 at 01:24:26AM +0200, Geert Stappers via Syslinux wrote:
> On Wed, Oct 07, 2015 at 05:58:51PM -0500, Clements, James wrote:
> 
> > Correct me if I am wrong but if I understand correctly, syslinux.efi is
> > what drives the request for ldlinux.e64. Is there a way we can enable
> > some debug somehow to see why the request for ldlinux.e64 includes
> > the tsize option? Or even disable the tsize option (as it appears it
> > may be causing the UEFI to hang)?
> > 
> --- a/efi/main.c
> +++ b/efi/main.c
> @@ -1371,7 +1371,9 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *table)
>          */
>         efi_setcwd(DevicePathToStr(info->FilePath));
>  
> +       Print(L"fs_init start\n");
>         fs_init(ops, (void *)&priv);
> +       Print(L"fs_init done.\n");
>  
>         /*
>          * There may be pending user input that wasn't processed by
> @@ -1383,8 +1385,10 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *table)
>                 status = uefi_call_wrapper(in->ReadKeyStroke, 2, in, &key);
>         } while (status == EFI_SUCCESS);
>  
> +       Print(L"load_env32 start\n");
>         if (!setjmp(load_error_buf))
>                 load_env32(NULL);
> +       Print(L"load_env32 done.\n");
>  
>         /* load_env32() failed.. cancel timer and bailout */
>         status = cancel_timer(timer_ev);
> 
> 
> Untested

(James did)

It dies in load_env32.

$ git grep load_env
core/diskstart.inc:             pm_call load_env32
core/elflink/load_env32.c:void load_env32(com32sys_t * regs __unused)
core/extern.inc:        ; elflink/load_env32.c
core/extern.inc:        extern load_env32, pm_env32_run
core/include/core.h:extern void load_env32(com32sys_t *regs);
core/isolinux.asm:              pm_call load_env32
core/isolinux.asm:              jmp kaboom              ; load_env32() should never return. If
core/pxelinux.asm:              pm_call load_env32
core/pxelinux.asm:              jmp kaboom              ; load_env32() shouldn't return. If it does, then kaboom!
efi/main.c:     Print(L"load_env32 start\n");
efi/main.c:             load_env32(NULL);
efi/main.c:     Print(L"load_env32 done.\n");
efi/main.c:     /* load_env32() failed.. cancel timer and bailout */


In which source file should the next debug print statement go?


Groeten
Geert Stappers
-- 
Leven en laten leven


More information about the Syslinux mailing list