From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42441) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1agqUI-0004Dz-PM for qemu-devel@nongnu.org; Fri, 18 Mar 2016 05:14:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1agqUF-00041J-98 for qemu-devel@nongnu.org; Fri, 18 Mar 2016 05:14:30 -0400 Received: from mail-wm0-x231.google.com ([2a00:1450:400c:c09::231]:33638) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1agqUF-00041C-2R for qemu-devel@nongnu.org; Fri, 18 Mar 2016 05:14:27 -0400 Received: by mail-wm0-x231.google.com with SMTP id l68so59425868wml.0 for ; Fri, 18 Mar 2016 02:14:27 -0700 (PDT) From: Baptiste Reynal Date: Fri, 18 Mar 2016 10:13:57 +0100 Message-Id: <1458292438-13909-6-git-send-email-b.reynal@virtualopensystems.com> In-Reply-To: <1458292438-13909-1-git-send-email-b.reynal@virtualopensystems.com> References: <1458292438-13909-1-git-send-email-b.reynal@virtualopensystems.com> Subject: [Qemu-devel] [RFC v2 5/6] hw/arm: boot List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: b.reynal@virtualopensystems.com, Jani.Kokkonen@huawei.com, tech@virtualopensystems.com, Claudio.Fontana@huawei.com, Christian Pinto From: Christian Pinto This patch modifies the boot process of an ARM machine in otrder to check whether if it is a slave, by checking the slave machine flag. When the slave flag is on, no kernel, dtb or initrd are loaded into memory. The boot address of each core is set to the start address of the RAM, that depends on the machine model executed. Signed-off-by: Christian Pinto --- hw/arm/boot.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index bef451b..ee0c4a1 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -590,6 +590,19 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data) /* Load the kernel. */ if (!info->kernel_filename || info->firmware_loaded) { + if (!info->kernel_filename && machine_slave(current_machine)) { + /* If a machine is booted as a slave instance there is no need to + * provide the DTB blob or kernel image, that will instead + * be copied into memory later by a master instance. + * The boot address is set to be at the beginning of the RAM. + */ + info->entry = info->loader_start; + CPU_FOREACH(cs) { + ARM_CPU(cs)->env.boot_info = info; + } + return; + } + if (have_dtb(info)) { /* If we have a device tree blob, but no kernel to supply it to (or * the kernel is supposed to be loaded by the bootloader), copy the -- 2.7.3