in stand/efi/boot1/ufs_module.c init_dev allocates a buffer and calls dskread which passes the buffer to the efi entry readblocks from u-booot. Likewise in stand/efi/libsa/ufsread.c there are calls to dskread. according to https://gitlab.denx.de/u-boot/u-boot/-/commit/f59f0825e8b9fdeb8abe43ffd10c5119ca1a032f as of f59f0825 lib/efi_loader/efi_disk.c checks for block alignment of the buffer passed to readblocks. on my armv7 system u-boot insists on 512 byte alignment. The blocks allocated in init_dev and fsread should be block aligned. There probably exists a similar problem in zfs_module.c
I switched to the loader_lua which works wonderfully. You can probably close this.
Closing. It appears this was already fixed in -CURRENT at the time of the report. https://cgit.freebsd.org/src/commit/?id=3d5e12ebce94791aa0d6df3e81e7a8ac48ee4b51