Hi All, I'm enabling PCIe passthrough on qemu riscv, the physical memory range between 3GB and 4GB is reserved. Therefore if guest has 4GB ram, two ranges are created as [2G, 3G) and [4G, 7G). More details can be found here: https://lore.kernel.org/all/cakmqykmtazt5sacumd4vxyfgaqibpzqjahttsusb+yekhcy...@mail.gmail.com/T/
When run grub.efi from uefi shell, a relocation problem happened in grub_arch_dl_relocate_symbols() of grub-core/kern/riscv/dl.c: case R_RISCV_CALL: case R_RISCV_CALL_PLT: { grub_uint32_t *abs_place = place; grub_ssize_t off = sym_addr - (grub_addr_t) place; grub_uint32_t hi20, lo12; if (off != (grub_int32_t) off) return grub_error (GRUB_ERR_BAD_MODULE, "relocation overflow"); It requires `off' in the range of int32, but it's not enforced since the >4GB memory can be used. I'm not familiar with grub, but this patch does work for me: --- a/include/grub/riscv64/efi/memory.h +++ b/include/grub/riscv64/efi/memory.h @@ -1,6 +1,6 @@ #ifndef GRUB_MEMORY_CPU_HEADER #include <grub/efi/memory.h> -#define GRUB_EFI_MAX_USABLE_ADDRESS 0xffffffffffffULL +#define GRUB_EFI_MAX_USABLE_ADDRESS 0xffffffffULL Any comments? Thanks, Fei. _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel