Right now, we cannot load some binary file if it is bigger than the machine's ram size. This limitation only occurs when loading a binary file: we can load a corresponding elf file without this limitation.
This is an issue for machines that have small ram or do not use the ram_size feature at all. Also get rid of "hw/boards.h" include, since we needed it only to access `current_machine`. Fixes: e481a1f63c9 ("generic-loader: Add a generic loader") Signed-off-by: Damien Hedde <damien.he...@greensocs.com> --- Hi Alistair, I found this while experimenting with a ram_size=0 machine. I checked the original discussion: it seems to me there was no intention to specifically limit to the ram size but we had to put some limit. See this: https://lists.gnu.org/archive/html/qemu-devel/2016-02/msg04668.html https://lists.gnu.org/archive/html/qemu-devel/2016-02/msg04681.html Thanks for your feedback, Damien --- hw/core/generic-loader.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c index d14f932eea..102605c07b 100644 --- a/hw/core/generic-loader.c +++ b/hw/core/generic-loader.c @@ -34,7 +34,6 @@ #include "hw/core/cpu.h" #include "sysemu/dma.h" #include "sysemu/reset.h" -#include "hw/boards.h" #include "hw/loader.h" #include "hw/qdev-properties.h" #include "qapi/error.h" @@ -153,8 +152,8 @@ static void generic_loader_realize(DeviceState *dev, Error **errp) } if (size < 0 || s->force_raw) { - /* Default to the maximum size being the machine's ram size */ - size = load_image_targphys_as(s->file, s->addr, current_machine->ram_size, as); + /* Do not limit the file size */ + size = load_image_targphys_as(s->file, s->addr, -1, as); } else { s->addr = entry; } -- 2.33.0