summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)