I test loading the same images on X86/PowerPC platforms. Size of image files: 3432K uImage 80948K vmlinux 25180K ramdisk
Test 1) X86 $ qemu-system-ppc -M mpc8544ds -cpu MPC8544 -kernel vmlinux -initrd ramdisk -m 256M -nographic $ qemu-system-ppc -M mpc8544ds -cpu MPC8544 -kernel uImage -initrd ramdisk -m 256M -nographic ------------------------------------------------------------------ Pmap of QEMU on X86 ------------------------------------------------------------------ | vmlinux | uImage ------------------------------------------------------------------ | boot | 500044K | 498484K Upstream | reset 1 |- 500176K |- 498616K | reset 2 | 500176K | 498616K ------------------------------------------------------------------ | boot | 476000K | 469440K | reset 1 |- 495640K |- 491472K | reset 2 | 497024K | 491472K Loader patches | reset 3 | 498412K | 491472K | reset 4 | 499796K | 491472K | reset 5 | 501184K | 491472K | reset 6 | 502568K | 491472K ------------------------------------------------------------------ Saving | 4536K | 7144K ------------------------------------------------------------------ Test 2) Freescale MPC8572DS (e500v2 core) board # qemu-system-ppc -enable-kvm -m 256 -nographic -M mpc8544ds -kernel vmlinux -initrd ramdisk -append "root=/dev/ram rw loglevel=7 console=ttyS0,115200" -serial tcp::4445,server -net nic # qemu-system-ppc -enable-kvm -m 256 -nographic -M mpc8544ds -kernel uImage -initrd ramdisk -append "root=/dev/ram rw loglevel=7 console=ttyS0,115200" -serial tcp::4445,server -net nic ------------------------------------------------------------------ Pmap of QEMU on MPC8472DS board ------------------------------------------------------------------ | vmlinux | uImage ------------------------------------------------------------------ | pre boot | 16240K | 16240K | boot | 322092K | 320500K Upstream | reset 1 |- 322092K |- 320500K | reset 2 | 322092K | 320500K ------------------------------------------------------------------ | pre boot | 16244K | 16244K | boot | 291476K | 288252K | reset 1 |- 292868K |- 288252K Loader patches | reset 2 | 294260K | 288252K | reset 3 | 295652K | 288252K | reset 4 | 297044K | 288252K | reset 5 | 298436K | 288252K | reset 6 | 299828K | 288252K ------------------------------------------------------------------ Saving | 29224K | 32248K ------------------------------------------------------------------ Best Regards, Olivia > -----Original Message----- > From: Yin Olivia-R63875 > Sent: Wednesday, November 14, 2012 9:29 PM > To: qemu-devel@nongnu.org; qemu-...@nongnu.org > Cc: Yin Olivia-R63875 > Subject: [RFC PATCH v4 0/3] reload kernel/initrd/elf images when reset > > 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 from hard disk > on reset, which could make loader framework more dynamic and reduce the > memory consumption of QEMU process. > > Olivia Yin (3): > use image_file_reset to reload initrd image > use uimage_reset to reload uimage > use elf_reset to reload elf image > > elf.h | 10 ++++++ > hw/elf_ops.h | 101 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > hw/loader.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++----- > ----- > hw/loader.h | 7 ++++ > 4 files changed, 203 insertions(+), 18 deletions(-) > --- > > v4: > uImage/vmlinux/ramdisk had been verified on PowerPC platforms. > Issue: > It seemed that the patch 3/3 could not free the memory for phdr, and the > memory map of QEMU will increase 1392K every time. > If free phdr, system_reset will cause segmentation fault.