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>
diff --git a/src/arch/x86/acpi_s3.c b/src/arch/x86/acpi_s3.c
index 4872c07..2802bd3 100644
--- a/src/arch/x86/acpi_s3.c
+++ b/src/arch/x86/acpi_s3.c
@@ -57,11 +57,6 @@
 
 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 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 @@
 
 	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 6e7db17..58e1dbe 100644
--- a/src/include/acpi/acpi.h
+++ b/src/include/acpi/acpi.h
@@ -987,7 +987,7 @@
 	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 4276027..3fe50c9 100644
--- a/src/lib/hardwaremain.c
+++ b/src/lib/hardwaremain.c
@@ -169,9 +169,9 @@
 	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)