summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2020-06-18 08:28:12 +0300
committerAngel Pons <th3fanbus@gmail.com>2020-07-28 10:37:28 +0000
commita4c0e1a51fc724680cb54a1f17813a67ab3b4250 (patch)
tree2f55b1fc4476c28880097c2c6f6ce11204259b11
parent470f319b9b33283fb85b466566410a1f4365e51c (diff)
downloadcoreboot-a4c0e1a51fc724680cb54a1f17813a67ab3b4250.tar.xz
ACPI S3: Clean up resume path
Remove the obscure path in source code, where ACPI S3 resume was prohibited and acpi_resume() would return and continue to BS_WRITE_TABLES. The condition when ACPI S3 would be prohibited needs to be checked early in romstage already. For the time being, there has been little interest to have CMOS option to disable ACPI S3 resume feature. Change-Id: If5105912759427f94f84d46d1a3141aa75cbd6ef Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/42498 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-rw-r--r--src/arch/x86/acpi_s3.c9
-rw-r--r--src/include/acpi/acpi.h2
-rw-r--r--src/lib/hardwaremain.c4
3 files changed, 6 insertions, 9 deletions
diff --git a/src/arch/x86/acpi_s3.c b/src/arch/x86/acpi_s3.c
index 4872c07228..2802bd32ab 100644
--- a/src/arch/x86/acpi_s3.c
+++ b/src/arch/x86/acpi_s3.c
@@ -57,11 +57,6 @@ extern unsigned int __wakeup_size;
static void acpi_jump_to_wakeup(void *vector)
{
- if (!acpi_s3_resume_allowed()) {
- printk(BIOS_WARNING, "ACPI: S3 resume not allowed.\n");
- return;
- }
-
/* Copy wakeup trampoline in place. */
memcpy((void *)WAKEUP_BASE, &__wakeup, __wakeup_size);
@@ -76,7 +71,7 @@ void __weak mainboard_suspend_resume(void)
{
}
-void acpi_resume(void *wake_vec)
+void __noreturn acpi_resume(void *wake_vec)
{
/* Restore GNVS pointer in SMM if found. */
apm_control(APM_CNT_GNVS_UPDATE);
@@ -86,4 +81,6 @@ void acpi_resume(void *wake_vec)
post_code(POST_OS_RESUME);
acpi_jump_to_wakeup(wake_vec);
+
+ die("Failed the jump to wakeup vector\n");
}
diff --git a/src/include/acpi/acpi.h b/src/include/acpi/acpi.h
index 6e7db17324..58e1dbe48a 100644
--- a/src/include/acpi/acpi.h
+++ b/src/include/acpi/acpi.h
@@ -987,7 +987,7 @@ unsigned long acpi_create_hest_error_source(acpi_hest_t *hest,
acpi_hest_esd_t *esd, u16 type, void *data, u16 len);
/* For ACPI S3 support. */
-void acpi_resume(void *wake_vec);
+void __noreturn acpi_resume(void *wake_vec);
void mainboard_suspend_resume(void);
void *acpi_find_wakeup_vector(void);
diff --git a/src/lib/hardwaremain.c b/src/lib/hardwaremain.c
index 4276027a9f..3fe50c9bb6 100644
--- a/src/lib/hardwaremain.c
+++ b/src/lib/hardwaremain.c
@@ -169,9 +169,9 @@ static boot_state_t bs_os_resume(void *wake_vector)
if (CONFIG(HAVE_ACPI_RESUME)) {
arch_bootstate_coreboot_exit();
acpi_resume(wake_vector);
+ /* We will not come back. */
}
-
- return BS_WRITE_TABLES;
+ die("Failed OS resume\n");
}
static boot_state_t bs_write_tables(void *arg)