On Wed, Oct 07, 2015 at 05:58:51PM -0500, Clements, James wrote:> James Clement > > Geert Stappers > > > On Wed, Oct 07, 2015 at 05:06:41PM -0500, Clements, James wrote: > > > > The screen displays the following: > > > > > > > > PXE Network Boot using IPv4 > > > > .... > > > > Station IP address is 192.168.205.50 > > > > Server IP address is 192.168.205.1 > > > > NBP filename is efi64/syslinux.efi > > > > NBP filesize is 200096 Bytes > > > > Downloading NBP file... > > > > Successfully downloaded NBP file. > > > > Getting cached packet > > > > My IP is 192.168.205.50 > > > > > > > > > > So nothing with "disable UseDefaultAddress" > > > No signs of any repeating / any loops on the console of the booting VM. > > > > > > IIRC can http://www.syslinux.org/wiki/index.php/Development/Debugging#Syslinux_Dynamic_Debugger > > > only be used after ldlinux being loaded ... > > > > > > > Nope, nothing like that. I'm not really sure how to proceed, but I notice on > > your IRC channel that you advertise a 'devel 6.04-preN' verion. Is it worth me > > trying that?The binaries that Gene asked the to test in the begin of this thread are the newest. That are fresher as 6.04-preN.> 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
Geert Stappers
2015-Oct-09 14:28 UTC
[syslinux] load_env32 WAS: Hyper-V Gen 2 waiting for ldlinux.e64
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
On Fri, Oct 09, 2015 at 04:28:58PM +0200, Geert Stappers via Syslinux wrote:> On Thu, Oct 08, 2015 at 01:24:26AM +0200, Geert Stappers via Syslinux wrote: > > --- 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?--- a/core/elflink/load_env32.c +++ b/core/elflink/load_env32.c @@ -119,6 +119,7 @@ void load_env32(com32sys_t * regs __unused) NULL }; + printf("Starting %s elf module subsystem...\n", ELF_MOD_SYS); dprintf("Starting %s elf module subsystem...\n", ELF_MOD_SYS); if (strlen(CurrentDirName) && !path_add(CurrentDirName)) { Didn't show up in testresult posted at http://www.syslinux.org/archives/2015-October/024433.html Further advice is appreciated Groeten Geert Stappers -- Leven en laten leven