void suspend_resume(void) { void *wake_vec; /* If we happen to be resuming find wakeup vector and jump to OS. */ wake_vec = acpi_find_wakeup_vector(); if (wake_vec) { #if CONFIG_HAVE_SMI_HANDLER u32 *gnvs_address = cbmem_find(CBMEM_ID_ACPI_GNVS); /* Restore GNVS pointer in SMM if found */ if (gnvs_address && *gnvs_address) { printk(BIOS_DEBUG, "Restore GNVS pointer to 0x%08x\n", *gnvs_address); smm_setup_structures((void *)*gnvs_address, NULL, NULL); } #endif /* Call mainboard resume handler first, if defined. */ if (mainboard_suspend_resume) mainboard_suspend_resume(); #if CONFIG_COVERAGE coverage_exit(); #endif post_code(POST_OS_RESUME); acpi_jump_to_wakeup(wake_vec); } }
void acpi_resume(void *wake_vec) { if (CONFIG(HAVE_SMI_HANDLER)) { void *gnvs_address = cbmem_find(CBMEM_ID_ACPI_GNVS); /* Restore GNVS pointer in SMM if found */ if (gnvs_address) { printk(BIOS_DEBUG, "Restore GNVS pointer to %p\n", gnvs_address); smm_setup_structures(gnvs_address, NULL, NULL); } } /* Call mainboard resume handler first, if defined. */ mainboard_suspend_resume(); post_code(POST_OS_RESUME); acpi_jump_to_wakeup(wake_vec); }
void acpi_resume(void *wake_vec) { #if CONFIG_HAVE_SMI_HANDLER u32 *gnvs_address = cbmem_find(CBMEM_ID_ACPI_GNVS_PTR); /* Restore GNVS pointer in SMM if found */ if (gnvs_address && *gnvs_address) { printk(BIOS_DEBUG, "Restore GNVS pointer to 0x%08x\n", *gnvs_address); smm_setup_structures((void *)*gnvs_address, NULL, NULL); } #endif /* Call mainboard resume handler first, if defined. */ mainboard_suspend_resume(); post_code(POST_OS_RESUME); acpi_jump_to_wakeup(wake_vec); }