@@ -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