On 5/15/23 14:16, Ross Philipson wrote:
On 5/12/23 07:40, Matthew Garrett wrote:
On Thu, May 04, 2023 at 02:50:20PM +0000, Ross Philipson wrote:
If the MLE kernel is being powered off, rebooted or halted,
then SEXIT must be called. Note that the SEXIT GETSEC leaf
can only be called after a machine_shutdown() has been done on
these paths. The machine_shutdown() is not called on a few paths
like when poweroff action does not have a poweroff callback (into
ACPI code) or when an emergency reset is done. In these cases,
just the TXT registers are finalized but SEXIT is skipped.
What are the consequences of SEXIT not being called, and why is it ok to
skip it in these circumstances?
Well the system is resetting so there are no real consequences. The
problem on those two paths is that the APs have not been halted with a
machine_shutdown() and that is a precondition to issuing GETSEC[SEXIT].
Only the BSP should be active and SEXIT must be done on it.
To expand on this just a bit further. On all paths we were able to
identify, the SECRETS bit is cleared, memconfig is unlocked, and the
private registers are all closed. This makes the system as safe as
possible to go through a power event and be able to come back up on the
other side. The clean way is to always go through an SEXIT before a
power event, but as Ross highlighted this can only be done after the APs
have been halted.
v/r,
dps