Skip to content

Commit

Permalink
core/init: rearrange final boot steps
Browse files Browse the repository at this point in the history
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@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
  • Loading branch information
npiggin authored and stewartsmith committed Feb 13, 2019
1 parent e1d44e8 commit 02aea4c
Showing 1 changed file with 11 additions and 12 deletions.
23 changes: 11 additions & 12 deletions core/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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);
Expand Down

0 comments on commit 02aea4c

Please sign in to comment.