From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34391) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bJ9P6-0004gd-Ny for qemu-devel@nongnu.org; Fri, 01 Jul 2016 21:07:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bJ9P2-0001uv-JE for qemu-devel@nongnu.org; Fri, 01 Jul 2016 21:07:27 -0400 Received: from mail-bl2nam02on0070.outbound.protection.outlook.com ([104.47.38.70]:37440 helo=NAM02-BL2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bJ9P2-0001uq-Cm for qemu-devel@nongnu.org; Fri, 01 Jul 2016 21:07:24 -0400 From: Alistair Francis Date: Fri, 1 Jul 2016 18:07:01 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v8 0/5] Add a generic loader List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, peter.maydell@linaro.org Cc: alistair.francis@xilinx.com, crosthwaitepeter@gmail.com, armbru@redhat.com, cov@codeaurora.org, pbonzini@redhat.com This work is based on the original work by Li Guang with extra features added by Peter C and myself. The idea of this loader is to allow the user to load multiple images or values into QEMU at startup. Memory values can be loaded like this: -device loader,addr=0xfd1a0104,data=0x8000000e,data-len=4 Images can be loaded like this: -device loader,file=./images/u-boot.elf,cpu=0 This can be useful and we use it a lot in Xilinx to load multiple images into a machine at creation (ATF, Kernel and DTB for example). It can also be used to set registers. This patch series makes the load_elf() function more generic by not requiring an architecture. It also adds a new function load_elf_as() which allows custom AddressSpaces when loading ELF images. At the moment I think the AddressSpace loading support is more of an RFC. If people agree with the way I'm doing it I will expand the support to image types. V8: - Allow custom AddressSpaces when loading images - Move ELF architecture handling code - Rebase - Corrections to loading code - Corrections to documentation V7: - Fix typo in comment - Rebase V6: - Add error checking V5: - Rebase V4: - Re-write documentation - Allow the loader to work with every architecture - Move the file to hw/core - Increase the maximum number of CPUs - Make the CPU operations conditional - Convert the cpu option to cpu-num - Require the user to specify endianess V2: - Add an entry to the maintainers file - Add some documentation - Perform bounds checking on the data_len - Register and unregister the reset in the realise/unrealise Changes since RFC: - Add support for BE Alistair Francis (5): loader: Allow ELF loader to auto-detect the ELF arch loader: All a custom SddressSpace when loading ROMs loader: Add AddressSpace loading support to ELFs generic-loader: Add a generic loader docs: Add a generic loader explanation document MAINTAINERS | 6 ++ docs/generic-loader.txt | 60 +++++++++++++ hw/core/Makefile.objs | 2 + hw/core/generic-loader.c | 177 +++++++++++++++++++++++++++++++++++++++ hw/core/loader.c | 34 ++++++-- include/hw/core/generic-loader.h | 45 ++++++++++ include/hw/elf_ops.h | 10 ++- include/hw/loader.h | 24 ++++-- 8 files changed, 343 insertions(+), 15 deletions(-) create mode 100644 docs/generic-loader.txt create mode 100644 hw/core/generic-loader.c create mode 100644 include/hw/core/generic-loader.h -- 2.7.4