amd: Don't call halt() when in SMM
This copies what Intel does. BUG=b:80295434 TEST=grunt: Made sure that the S5 SMI interrupt gets fired. Change-Id: I7874824cad01054c6bdeff12d248e671f27be030 Signed-off-by: Raul E Rangel <rrangel@chromium.org> Reviewed-on: https://review.coreboot.org/26545 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
2db06bba0f
commit
06bc4d712c
|
@ -20,5 +20,12 @@
|
||||||
void poweroff(void)
|
void poweroff(void)
|
||||||
{
|
{
|
||||||
outl((SLP_TYP_S5 << SLP_TYP_SHIFT) | SLP_EN, pm_acpi_pm_cnt_blk());
|
outl((SLP_TYP_S5 << SLP_TYP_SHIFT) | SLP_EN, pm_acpi_pm_cnt_blk());
|
||||||
halt();
|
|
||||||
|
/*
|
||||||
|
* Setting SLP_TYP_S5 in PM1 triggers SLP_SMI, which is handled by SMM
|
||||||
|
* to transition to S5 state. If halt is called in SMM, then it prevents
|
||||||
|
* the SMI handler from being triggered and system never enters S5.
|
||||||
|
*/
|
||||||
|
if (!ENV_SMM)
|
||||||
|
halt();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue