The current model of loader copy "rom blobs" and kept in memory until a reset occurs and waste host memory.
This serial of patches uses private reset handlers to load uimage/initrd/vmlinux from hard disk on reset, which could make loader framework more dynamic and reduce the memory consumption of QEMU process. Olivia Yin (4): use image_file_reset to reload initrd use uimage_reset to reload uimage use elf_reset to reload elf image free rom->data when rom_reset elf.h | 10 +++++ hw/elf_ops.h | 44 ++++++++++++++++++++--- hw/loader.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++--------- hw/loader.h | 12 ++++++ 4 files changed, 158 insertions(+), 22 deletions(-) v6: patch 3/4: load symbol only when startup v5: patch 2/4: remove global variables is_linux and kernel_loaded. patch 3/4: register reset handlers in loader.c for elf images. extract the duplicated source code into function elf_phy_loader(). patch 4/4: fix the issue of memory increasing (about 1.4MB) once reload elf image. v4: fix elf reload and register reset handler in hw/elf_ops.h v3: reload elf v2: Rename target_phys_addr_t to hwaddr v1: support uimage/initrd reload