grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
* Relocation overflow on RISC-V with multi-range memory layout
@ 2023-09-25  8:51 Wu, Fei
  2023-09-27  6:16 ` Wu, Fei
  2023-09-27 15:23 ` Vladimir 'phcoder' Serbinenko
  0 siblings, 2 replies; 10+ messages in thread
From: Wu, Fei @ 2023-09-25  8:51 UTC (permalink / raw
  To: grub-devel, agraf, Alistair Francis

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+yeKhcYpfw@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

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-11-02  6:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-25  8:51 Relocation overflow on RISC-V with multi-range memory layout Wu, Fei
2023-09-27  6:16 ` Wu, Fei
2023-09-27 10:08   ` Daniel Kiper
2023-09-27 15:23 ` Vladimir 'phcoder' Serbinenko
2023-10-09  3:14   ` Wu, Fei
2023-10-11 10:20     ` Wu, Fei
2023-10-11 13:50       ` Vladimir 'phcoder' Serbinenko
2023-10-12  0:29         ` Wu, Fei
2023-10-14 21:16           ` Vladimir 'phcoder' Serbinenko
2023-11-02  6:48             ` Wu, Fei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).