[Skiboot] [PATCH v4 01/18] libstb/secureboot: use platform.terminate instead of hard abort
Eric Richter
erichte at linux.ibm.com
Thu May 21 05:07:06 AEST 2020
On 5/11/20 10:49 PM, Oliver O'Halloran wrote:
> On Mon, 2020-05-11 at 16:31 -0500, Eric Richter wrote:
>> Halting the boot via an abort() call will cause the BMC to keep
>> restarting the machine indefinitely.
>
> The BMC is supposed to detect the host bootlooping and stop powering it
> on after 5 or so.
>
>> Ending via platform.terminate()
>> should be cleaner and prevent needless bootloops.
>
> abort() is a #defined as assert(0) which results in a call to
> assert_fail():
>
> void __noreturn assert_fail(const char *msg, const char *file,
> unsigned int line, const char *function)
> {
> static bool in_abort = false;
>
> (void)function;
> if (in_abort)
> for (;;) ;
> in_abort = true;
>
> /* snip comment */
> prlog(PR_EMERG, "assert failed at %s:%u: %s\n", file, line, msg);
> backtrace();
>
> /* Save crashing CPU details */
> opal_mpipl_save_crashing_pir();
>
> if (platform.terminate)
> platform.terminate(msg);
>
> for (;;) ;
> }
>
> So I'm not really seeing how this is an improvement. The terminate
> callback is usually ipmi_terminate() which will also trigger an MPIPL
> on the systems which support it. That might be the cause of your boot
> loop?
>
Admittedly, I took the off-list suggestion directly, and didn't look deep into the terminate() behavior. Is there a better method to guaranteed halt the machine that could be used instead? There is no reason to attempt a reboot/MPIPL if a secureboot trap is hit.
> Vasant, do you have anything to add?
>
>
More information about the Skiboot
mailing list