Adding Atish... On Wed, Sep 27, 2023 at 02:16:40PM +0800, Wu, Fei wrote: > On 9/25/2023 4:51 PM, Wu, Fei wrote: > > 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 > > > Anyone can help take a look? I will send it out for review if this is > the right fix. > > The test I have done against commit db1faedcc: > > qemu-system-riscv64 -nographic \ > -M virt,pflash0=pflash0,pflash1=pflash1,acpi=off \ > -m 3G -smp 2 \ > -blockdev > node-name=pflash0,driver=file,read-only=on,filename=RISCV_VIRT_CODE.fd \ > -blockdev node-name=pflash1,driver=file,filename=RISCV_VIRT_VARS.fd \ > -device vfio-pci,host=01:00.0 -device vfio-pci,host=01:00.1 \ > -device virtio-blk-device,drive=hd0 \ > -drive file=fat:rw:/home/wufei/src/fat,id=hd0 > > then run grubriscv64.efi on uefi shell: > > FS0:\> grubriscv64.efi > ... > ProtectUefiImageCommon - 0xBED9E540 > - 0x00000000BDCCB000 - 0x00000000004DF000 > SetUefiImageMemoryAttributes - 0x00000000BDCCB000 - 0x0000000000001000 > (0x0000000000004000) > CpuSetMemoryAttributes: Set memory attributes not supported yet > SetUefiImageMemoryAttributes - 0x00000000BDCCC000 - 0x000000000000C000 > (0x0000000000020000) > CpuSetMemoryAttributes: Set memory attributes not supported yet > SetUefiImageMemoryAttributes - 0x00000000BDCD8000 - 0x00000000004D2000 > (0x0000000000004000) > CpuSetMemoryAttributes: Set memory attributes not supported yet > InstallProtocolInterface: 752F3136-4E16-4FDC-A22A-E5F46812F4CA 83FFF720 > CpuSetMemoryAttributes: Set memory attributes not supported yet > relocation overflow > Aborted. Press any key to exit > > Thanks, > Fei. > > Any comments? > > > > Thanks, > > Fei.
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel