That is not the correct solution. Correct solution is to use trampoline
facility like e.g. ppc does. Can you post the full reproduction
instructions?

Le lun. 25 sept. 2023, 10:53, Wu, Fei <fei2...@intel.com> a écrit :

> 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
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to