Opened 3 years ago

Closed 2 years ago

#17346 closed bug (fixed)

EFI boot regression, SiFive Unmatched

Reported by: kallisti5 Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: System/Boot Loader/EFI Version: R1/beta3
Keywords: Cc:
Blocked By: Blocking:
Platform: riscv64

Description (last modified by kallisti5)

  • hrev55554 - 0f6f5adb - EFI boot fails early
  • hrev55545 - 9b6c4b32 - EFI boot fails early
  • 986199c9 + riscv64 zstd build package - EFI boot fails early
  • hrev55535 - 96b062f1 - EFI Boot works
  • hrev55523 - d171b8b5 - EFI Boot works
  • hrev55481 - 7aa55747 - EFI Boot works

It appears the zstd change to the bootloader was the cause.

Two things happened inbetween hrev55535, hrev55545:

  • A new zstd build-package was uploaded for riscv64
  • A zstd requirement was added to the bootloader

Change History (6)

comment:1 by kallisti5, 3 years ago

Component: - GeneralSystem/Boot Loader/EFI
Platform: Allriscv64

comment:2 by kallisti5, 3 years ago

Description: modified (diff)

comment:3 by kallisti5, 3 years ago

Description: modified (diff)

comment:4 by kallisti5, 3 years ago

Description: modified (diff)

comment:5 by kallisti5, 3 years ago

Cause is one of these:

  • 9b6c4b320fe82a94ec4bf7b860090a90b3c1eb71 - add zstd to build-packages
    • Maybe something about this zstd is breaking the bootloader?
 ./cross-tools-riscv64/bin/riscv64-unknown-haiku-objdump -T ./build_packages/zstd-1.5.0-2-riscv64/lib/libzstd.so.1.5.0 | grep UND
0000000000000000      DF *UND*	0000000000000000              memcmp
0000000000000000      DF *UND*	0000000000000000              qsort
0000000000000000      DO *UND*	0000000000000000              stderr
0000000000000000      DF *UND*	0000000000000000  LIBROOT_1_ALPHA4 clock
0000000000000000      DF *UND*	0000000000000000              pthread_cond_init
0000000000000000      DF *UND*	0000000000000000              pthread_cond_broadcast
0000000000000000  w   D  *UND*	0000000000000000              __deregister_frame_info
0000000000000000      DF *UND*	0000000000000000              memset
0000000000000000      DF *UND*	0000000000000000              malloc
0000000000000000      DF *UND*	0000000000000000              memmove
0000000000000000      DF *UND*	0000000000000000              pthread_join
0000000000000000      DF *UND*	0000000000000000              fflush
0000000000000000      DF *UND*	0000000000000000              pthread_create
0000000000000000      DF *UND*	0000000000000000              pthread_cond_wait
0000000000000000      DF *UND*	0000000000000000              pthread_mutex_destroy
0000000000000000      DF *UND*	0000000000000000              pthread_cond_destroy
0000000000000000      DF *UND*	0000000000000000              fwrite
0000000000000000  w   DF *UND*	0000000000000000              __cxa_finalize
0000000000000000  w   D  *UND*	0000000000000000              __register_frame_info
0000000000000000      DF *UND*	0000000000000000              fprintf
0000000000000000      DF *UND*	0000000000000000              pthread_mutex_init
0000000000000000      DF *UND*	0000000000000000              calloc
0000000000000000      DF *UND*	0000000000000000              fputc
0000000000000000      DF *UND*	0000000000000000              pthread_mutex_unlock
0000000000000000      DF *UND*	0000000000000000              pthread_cond_signal
0000000000000000      DF *UND*	0000000000000000              pthread_mutex_lock
0000000000000000      DF *UND*	0000000000000000              free
0000000000000000      DF *UND*	0000000000000000              memcpy
  • 986199c92ec526afc2f81e25f70e063c060279c3 - boot: Add calloc() implementation to bootloader heap.
  • d3ed786f07d018e0674f3086a8a95b10ae191c9d - boot/loader: Add Zstd support
  • 7bd549882a616a5464c9a8ce18c3ad4568103091 - boot: Move boot_zlib build out of tarfs directory.

comment:6 by kallisti5, 2 years ago

Resolution: fixed
Status: newclosed

this one was solved via hrev55619

zstd included weak symbols resulting in undef zstd calls in the efi bootloader.

Note: See TracTickets for help on using tickets.