diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2017-11-29 15:37:02 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-12-03 22:10:55 -0600 |
commit | 688c0d51e6e9773e7ad47eb4f6ce71ea032c671d (patch) | |
tree | 4119506ce784644cb83427b78199276b9d630600 /asm | |
parent | 0d84ea6bda03a00a1765dd7240a9e5231a537e96 (diff) | |
download | skiboot-688c0d51e6e9773e7ad47eb4f6ce71ea032c671d.zip skiboot-688c0d51e6e9773e7ad47eb4f6ce71ea032c671d.tar.gz skiboot-688c0d51e6e9773e7ad47eb4f6ce71ea032c671d.tar.bz2 |
fast-reboot: quiesce opal before initiating a fast reboot
Switch fast reboot to use quiescing rather than "wait for a while".
If firmware can not be quiesced, then fast reboot is skipped. This
significantly improves the robustness of fast reboot in the face of
bugs or unexpected latencies.
Complexity of synchronization in fast-reboot is reduced, because we
are guaranteed to be single-threaded when quiesce succeeds, so locks
can be removed.
In the case that firmware can be quiesced, then it will generally
reduce fast reboot times by nearly 200ms, because quiescing usually
takes very little time.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'asm')
-rw-r--r-- | asm/head.S | 10 |
1 files changed, 0 insertions, 10 deletions
@@ -960,12 +960,6 @@ opal_entry: addis %r2,%r2,(__toc_start - __head)@ha addi %r2,%r2,(__toc_start - __head)@l - /* Check for a reboot in progress */ - LOAD_ADDR_FROM_TOC(%r12, reboot_in_progress) - lbz %r12,0(%r12) - cmpwi %r12,0 - bne 2f - /* Check entry */ mr %r3,%r1 bl opal_entry_check @@ -1003,10 +997,6 @@ opal_entry: ld %r1,STACK_GPR1(%r1) blr -2: /* Reboot in progress, reject all calls */ - li %r3,OPAL_BUSY - b 1b - .global start_kernel start_kernel: sync |