Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some ROM regions are overlapping #372

Open
ddwolf opened this issue Sep 3, 2024 · 3 comments
Open

Some ROM regions are overlapping #372

ddwolf opened this issue Sep 3, 2024 · 3 comments

Comments

@ddwolf
Copy link

ddwolf commented Sep 3, 2024

here is the error log using master.c4940a9 branch, after revert the opensbi code to v1.2, the error disappeared

qemu-system-riscv64: Some ROM regions are overlapping
These ROM regions might have been loaded by direct user request or by default.
They could be BIOS/firmware images, a guest kernel, initrd or some other file loaded into guest memory.
Check whether you intended to load all this guest code, and whether it has been built to load to the correct addresses.
The following two regions overlap (in the memory address space):
fw_jump.elf ELF program header segment 1 (addresses 0x0000000000000000 - 0x0000000000023940)
mrom.reset (addresses 0x0000000000001000 - 0x0000000000001028)
@SiFiveHolland
Copy link
Contributor

Two possible fixes:

  1. Use -bios fw_dynamic.bin instead of -bios fw_dynamic.elf.
  2. Build OpenSBI with FW_TEXT_START=0x80000000 (or apply this QEMU patch and choose any valid DRAM address).

@alistair23
Copy link
Collaborator

Can you include the QEMU command line you are using?

@ddwolf
Copy link
Author

ddwolf commented Sep 4, 2024

Can you include the QEMU command line you are using?

qemu-system-riscv64 -m 2G -smp 16 -nographic -machine xxx-machine -bios none -drive if=...img -drive file=... -device pcie-root-port,port=0x10,chassis=1,id=root_port1

255doesnotexist added a commit to 255doesnotexist/lintestor that referenced this issue Dec 8, 2024
- use fw_jump.bin instead of .elf to avoid ROM regions's overlapping issues
arnout pushed a commit to buildroot/buildroot that referenced this issue Dec 29, 2024
Release notes at:
https://github.com/riscv-software-src/opensbi/releases/tag/v1.6

From release notes:
"Overall, this release adds more ISA extensions, drivers, and other
improvements."

This OpenSBI version 1.6 can be tested in qemu with the commands:

    cat <<EOF >.config
    BR2_riscv=y
    BR2_LINUX_KERNEL=y
    BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
    BR2_TARGET_ROOTFS_EXT2=y
    BR2_TARGET_OPENSBI=y
    BR2_TARGET_OPENSBI_PLAT="generic"
    BR2_TOOLCHAIN_EXTERNAL=y
    EOF
    make olddefconfig
    make

Then:

    qemu-system-riscv64 \
        -M virt \
        -bios output/images/fw_jump.bin \
        -kernel output/images/Image \
        -append "rootwait root=/dev/vda ro" \
        -drive file=output/images/rootfs.ext2,format=raw \
        -nographic

Note that in the previous qemu command line, the OpenSBI ".bin"
image is passed rather than the ".elf" image.

Loading the ".elf" image in qemu can now lead to the following
qemu error:

    qemu-system-riscv64: Some ROM regions are overlapping
    These ROM regions might have been loaded by direct user request or by default.
    They could be BIOS/firmware images, a guest kernel, initrd or some other file loaded into guest memory.
    Check whether you intended to load all this guest code, and whether it has been built to load to the correct addresses.

    The following two regions overlap (in the memory address space):
      fw_jump.elf ELF program header segment 1 (addresses 0x0000000000000000 - 0x00000000000271e0)
      mrom.reset (addresses 0x0000000000001000 - 0x0000000000001028)

See: riscv-software-src/opensbi#372

Signed-off-by: Kilian Zinnecker <[email protected]>
Tested-by: Julien Olivain <[email protected]>
[Julien: reworded the commit log about testing]
Signed-off-by: Julien Olivain <[email protected]>
arnout pushed a commit to buildroot/buildroot that referenced this issue Dec 30, 2024
This patchs bumps the OpenSBI of qemu_riscv{32,64}_virt to 1.6. The
qemu commands in the readmes are adjusted to use OpenSBI's fw_jump.bin
instead of fw_jump.elf, as the later causes ROM overlapping issues if
OpenSBI 1.6 is used. See:
riscv-software-src/opensbi#372

This commit also updates the opensbi.hash file.

Signed-off-by: Kilian Zinnecker <[email protected]>
[Julien: update opensbi.hash]
Signed-off-by: Julien Olivain <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants