ACPI: Allocate S3 resume backup in CBMEM earlier
These allocations are not really part of write_tables() and the move opens possibilities to use CBMEM instead of SPI Flash to restore some parts of system state after S3 resume. Change-Id: I0c36bcee3f1da525af077fc1d18677ee85097e4d Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/7097 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@google.com>
This commit is contained in:
parent
1729cd8574
commit
7b14f08f45
|
@ -878,6 +878,23 @@ void acpi_fail_wakeup(void)
|
|||
acpi_slp_type = 0;
|
||||
}
|
||||
|
||||
void acpi_prepare_resume_backup(void)
|
||||
{
|
||||
if (!acpi_s3_resume_allowed())
|
||||
return;
|
||||
|
||||
/* Let's prepare the ACPI S3 Resume area now already, so we can rely on
|
||||
* it being there during reboot time. We don't need the pointer, nor
|
||||
* the result right now. If it fails, ACPI resume will be disabled.
|
||||
*/
|
||||
|
||||
if (HIGH_MEMORY_SAVE)
|
||||
cbmem_add(CBMEM_ID_RESUME, HIGH_MEMORY_SAVE);
|
||||
|
||||
if (HIGH_MEMORY_SCRATCH)
|
||||
cbmem_add(CBMEM_ID_RESUME_SCRATCH, HIGH_MEMORY_SCRATCH);
|
||||
}
|
||||
|
||||
static acpi_rsdp_t *valid_rsdp(acpi_rsdp_t *rsdp)
|
||||
{
|
||||
if (strncmp((char *)rsdp, RSDP_SIG, sizeof(RSDP_SIG) - 1) != 0)
|
||||
|
|
|
@ -196,16 +196,6 @@ void write_tables(void)
|
|||
|
||||
post_code(0x9e);
|
||||
|
||||
/* Let's prepare the ACPI S3 Resume area now already, so we can rely on
|
||||
* it begin there during reboot time. We don't need the pointer, nor
|
||||
* the result right now. If it fails, ACPI resume will be disabled.
|
||||
*/
|
||||
if (HIGH_MEMORY_SAVE && acpi_s3_resume_allowed())
|
||||
cbmem_add(CBMEM_ID_RESUME, HIGH_MEMORY_SAVE);
|
||||
|
||||
if (HIGH_MEMORY_SCRATCH && acpi_s3_resume_allowed())
|
||||
cbmem_add(CBMEM_ID_RESUME_SCRATCH, HIGH_MEMORY_SCRATCH);
|
||||
|
||||
#define MAX_COREBOOT_TABLE_SIZE (32 * 1024)
|
||||
post_code(0x9d);
|
||||
|
||||
|
|
|
@ -569,6 +569,7 @@ int acpi_is_wakeup_early(void);
|
|||
|
||||
void acpi_fail_wakeup(void);
|
||||
void acpi_resume(void *wake_vec);
|
||||
void acpi_prepare_resume_backup(void);
|
||||
void __attribute__((weak)) mainboard_suspend_resume(void);
|
||||
void *acpi_find_wakeup_vector(void);
|
||||
void *acpi_get_wakeup_rsdp(void);
|
||||
|
|
|
@ -197,6 +197,8 @@ static boot_state_t bs_os_resume_check(void *arg)
|
|||
boot_states[BS_OS_RESUME].arg = wake_vector;
|
||||
return BS_OS_RESUME;
|
||||
}
|
||||
|
||||
acpi_prepare_resume_backup();
|
||||
#endif
|
||||
timestamp_add_now(TS_CBMEM_POST);
|
||||
|
||||
|
|
Loading…
Reference in New Issue