[Skiboot] [PATCH 08/16] core/init: rearrange final boot steps

Nicholas Piggin npiggin at gmail.com
Tue Jan 8 01:04:20 AEDT 2019


Take secondaries out of sleep mode as late as possible, which tends to
help with simulator boot speeds. Make give_self_os() the last step
before starting the kernel, which matches the way secondaries behave.

Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
---
 core/init.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/core/init.c b/core/init.c
index a2ddbae1e..0ad2bfb8a 100644
--- a/core/init.c
+++ b/core/init.c
@@ -565,24 +565,12 @@ void __noreturn load_and_boot_kernel(bool is_reboot)
 	/* Clear SRCs on the op-panel when Linux starts */
 	op_panel_clear_src();
 
-	cpu_give_self_os();
-
 	mem_dump_free();
 
-	/* Take processours out of nap */
-	cpu_set_sreset_enable(false);
-	cpu_set_ipi_enable(false);
-
 	/* Dump the selected console */
 	stdoutp = dt_prop_get_def(dt_chosen, "linux,stdout-path", NULL);
 	prlog(PR_DEBUG, "INIT: stdout-path: %s\n", stdoutp ? stdoutp : "");
 
-
-	printf("INIT: Starting kernel at 0x%llx, fdt at %p %u bytes\n",
-	       kernel_entry, fdt, fdt_totalsize(fdt));
-
-	debug_descriptor.state_flags |= OPAL_BOOT_COMPLETE;
-
 	fdt_set_boot_cpuid_phys(fdt, this_cpu()->pir);
 
 	/* Check there is something there before we branch to it */
@@ -591,6 +579,17 @@ void __noreturn load_and_boot_kernel(bool is_reboot)
 		assert(0);
 	}
 
+	/* Take processors out of nap */
+	cpu_set_sreset_enable(false);
+	cpu_set_ipi_enable(false);
+
+	printf("INIT: Starting kernel at 0x%llx, fdt at %p %u bytes\n",
+	       kernel_entry, fdt, fdt_totalsize(fdt));
+
+	debug_descriptor.state_flags |= OPAL_BOOT_COMPLETE;
+
+	cpu_give_self_os();
+
 	if (kernel_32bit)
 		start_kernel32(kernel_entry, fdt, mem_top);
 	start_kernel(kernel_entry, fdt, mem_top);
-- 
2.18.0



More information about the Skiboot mailing list