All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH RFC] spapr: by-pass SLOF when -kernel is provided
@ 2016-07-05 14:42 Laurent Vivier
  2016-07-05 17:58 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Laurent Vivier @ 2016-07-05 14:42 UTC (permalink / raw)
  To: David Gibson
  Cc: qemu-ppc, qemu-devel, Richard W.M. Jones, Thomas Huth,
	Andrew Jones, Laurent Vivier

As device-tree is now fully built by QEMU, we don't need SLOF
anymore if the kernel is provided on the command line.

In this case, don't load SLOF and boot directly into the
kernel.

This saves at least 5 seconds on the boot sequence.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 hw/ppc/spapr.c | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 7f33a1b..bbdb21d 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1219,8 +1219,11 @@ static void ppc_spapr_reset(void)
     first_ppc_cpu->env.gpr[3] = spapr->fdt_addr;
     first_ppc_cpu->env.gpr[5] = 0;
     first_cpu->halted = 0;
-    first_ppc_cpu->env.nip = SPAPR_ENTRY_POINT;
-
+    if (machine->kernel_filename) {
+        first_ppc_cpu->env.nip = KERNEL_LOAD_ADDR;
+    } else {
+        first_ppc_cpu->env.nip = SPAPR_ENTRY_POINT;
+    }
 }
 
 static void spapr_create_nvram(sPAPRMachineState *spapr)
@@ -2023,23 +2026,23 @@ static void ppc_spapr_init(MachineState *machine)
             initrd_base = 0;
             initrd_size = 0;
         }
+    } else {
+        if (bios_name == NULL) {
+            bios_name = FW_FILE_NAME;
+        }
+        filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
+        if (!filename) {
+            error_report("Could not find LPAR firmware '%s'", bios_name);
+            exit(1);
+        }
+        fw_size = load_image_targphys(filename, 0, FW_MAX_SIZE);
+        if (fw_size <= 0) {
+            error_report("Could not load LPAR firmware '%s'", filename);
+            exit(1);
+        }
+        g_free(filename);
     }
 
-    if (bios_name == NULL) {
-        bios_name = FW_FILE_NAME;
-    }
-    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-    if (!filename) {
-        error_report("Could not find LPAR firmware '%s'", bios_name);
-        exit(1);
-    }
-    fw_size = load_image_targphys(filename, 0, FW_MAX_SIZE);
-    if (fw_size <= 0) {
-        error_report("Could not load LPAR firmware '%s'", filename);
-        exit(1);
-    }
-    g_free(filename);
-
     /* FIXME: Should register things through the MachineState's qdev
      * interface, this is a legacy from the sPAPREnvironment structure
      * which predated MachineState but had a similar function */
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-07-06  8:38 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-05 14:42 [Qemu-devel] [PATCH RFC] spapr: by-pass SLOF when -kernel is provided Laurent Vivier
2016-07-05 17:58 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2016-07-05 18:44 ` Greg Kurz
2016-07-05 18:51   ` Laurent Vivier
2016-07-06  7:03     ` Greg Kurz
2016-07-06  8:37       ` Laurent Vivier
2016-07-06  1:35 ` [Qemu-devel] " David Gibson
2016-07-06  3:33   ` Alexey Kardashevskiy
2016-07-06  7:04     ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2016-07-06  8:02     ` Nikunj A Dadhania
2016-07-06  8:04       ` Alexey Kardashevskiy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.