On 3/22/23 10:05, Daniel P. Berrangé wrote:
On Wed, Mar 22, 2023 at 06:10:18AM -0300, Daniel Henrique Barboza
wrote:
> Today, trying to boot a RISC-V Fedora Rawhide image in a RISC-V QEMU domain
> results in the following error:
>
> ====
> error: Failed to start domain 'riscv-fedora'
> error: internal error: process exited while connecting to monitor:
> 2023-03-20T17:31:02.650862Z 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.
> ====
>
> This happens because the default RISC-V QEMU firmware, OpenSBI, is
> always loaded unless "-bios none" is passed in the command line, and the
> Fedora Rawhide guest kernel has its own ROM. Other machines such as
> PPC64 'pseries' shows the same behavior: the default firmware is always
> loaded unless specified otherwise with the '-bios' option.
What happens when these kernels are used on bare metal ? Presumably
bare metal always has firmware, and the kernels successfuly overwrite
it ? If so, what makes QEMU special such that it breaks ?
I'm not sure if the OS overwrites the firmware when running bare metal. Usually
they provide different OS images for QEMU/libvirt and bare metal systems, probably
to account for these differences. Baking the firmware in the kernel like Fedora
Rawhide is doing was important a few years ago when RISC-V QEMU wasn't loading
the firmware by default, but now it's getting in the way.
All this said, having a look at the recently updated Fedora for RISC-V wiki, the
instructions for booting with libvirt and QEMU are different. libvirt [1] is using
the '-bios none' attribute with 'virt-install' + a Fedora Rawhide image,
but
QEMU instructions [2] doesn't use '-bios none' and it's using Fedora 37.
At first I don't see any particular reason of why this Fedora 37 image would work
on QEMU and not on libvirt. So what t I'll do now is do some testings with libvirt
and Fedora 37. If it works then this series becomes way less important.
Thanks,
Daniel
[1]
https://fedoraproject.org/wiki/Architectures/RISC-V/Installing#Boot_with_...
[2]
https://fedoraproject.org/wiki/Architectures/RISC-V/Installing#Boot_under...
With regards,
Daniel