ACPI: Final APM_CNT_GNVS_UPDATE cleanup
All platforms moved to initialise GNVS at the time of SMM module loading. Change-Id: I31b5652a946b0d9bd1909ff8bde53b43e06e2cd9 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/48699 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
8c2cc68b1a
commit
b8cf0394fb
|
@ -5,7 +5,6 @@
|
||||||
#include <acpi/acpi.h>
|
#include <acpi/acpi.h>
|
||||||
#include <arch/cpu.h>
|
#include <arch/cpu.h>
|
||||||
#include <commonlib/helpers.h>
|
#include <commonlib/helpers.h>
|
||||||
#include <cpu/x86/smm.h>
|
|
||||||
#include <fallback.h>
|
#include <fallback.h>
|
||||||
#include <timestamp.h>
|
#include <timestamp.h>
|
||||||
|
|
||||||
|
@ -18,9 +17,6 @@ extern unsigned int __wakeup_size;
|
||||||
|
|
||||||
void __noreturn 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);
|
|
||||||
|
|
||||||
/* Call mainboard resume handler first, if defined. */
|
/* Call mainboard resume handler first, if defined. */
|
||||||
mainboard_suspend_resume();
|
mainboard_suspend_resume();
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#include <acpi/acpi_gnvs.h>
|
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cpu/x86/smm.h>
|
#include <cpu/x86/smm.h>
|
||||||
|
|
||||||
static void set_smm_gnvs_ptr(void);
|
|
||||||
|
|
||||||
int apm_control(u8 cmd)
|
int apm_control(u8 cmd)
|
||||||
{
|
{
|
||||||
if (!CONFIG(HAVE_SMI_HANDLER))
|
if (!CONFIG(HAVE_SMI_HANDLER))
|
||||||
|
@ -23,9 +20,6 @@ int apm_control(u8 cmd)
|
||||||
case APM_CNT_ACPI_ENABLE:
|
case APM_CNT_ACPI_ENABLE:
|
||||||
printk(BIOS_DEBUG, "Enabling ACPI via APMC.\n");
|
printk(BIOS_DEBUG, "Enabling ACPI via APMC.\n");
|
||||||
break;
|
break;
|
||||||
case APM_CNT_GNVS_UPDATE:
|
|
||||||
set_smm_gnvs_ptr();
|
|
||||||
return 0;
|
|
||||||
case APM_CNT_FINALIZE:
|
case APM_CNT_FINALIZE:
|
||||||
printk(BIOS_DEBUG, "Finalizing SMM.\n");
|
printk(BIOS_DEBUG, "Finalizing SMM.\n");
|
||||||
break;
|
break;
|
||||||
|
@ -45,32 +39,3 @@ int apm_control(u8 cmd)
|
||||||
printk(BIOS_DEBUG, "APMC done.\n");
|
printk(BIOS_DEBUG, "APMC done.\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_smm_gnvs_ptr(void)
|
|
||||||
{
|
|
||||||
uintptr_t gnvs_address;
|
|
||||||
|
|
||||||
if (CONFIG(ACPI_NO_SMI_GNVS)) {
|
|
||||||
printk(BIOS_WARNING, "%s() is not implemented\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gnvs_address = (uintptr_t)acpi_get_gnvs();
|
|
||||||
if (!gnvs_address)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Issue SMI to set the gnvs pointer in SMM.
|
|
||||||
*
|
|
||||||
* EAX = APM_CNT_GNVS_UPDATE
|
|
||||||
* EBX = gnvs pointer
|
|
||||||
* EDX = APM_CNT
|
|
||||||
*/
|
|
||||||
asm volatile (
|
|
||||||
"outb %%al, %%dx\n\t"
|
|
||||||
: /* ignore result */
|
|
||||||
: "a" (APM_CNT_GNVS_UPDATE),
|
|
||||||
"b" (gnvs_address),
|
|
||||||
"d" (APM_CNT)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
|
@ -22,11 +22,10 @@
|
||||||
#define APM_CNT_PST_CONTROL 0x80
|
#define APM_CNT_PST_CONTROL 0x80
|
||||||
#define APM_CNT_ACPI_DISABLE 0x1e
|
#define APM_CNT_ACPI_DISABLE 0x1e
|
||||||
#define APM_CNT_ACPI_ENABLE 0xe1
|
#define APM_CNT_ACPI_ENABLE 0xe1
|
||||||
#define APM_CNT_MBI_UPDATE 0xeb
|
|
||||||
#define APM_CNT_GNVS_UPDATE 0xea
|
|
||||||
#define APM_CNT_ROUTE_ALL_XHCI 0xca
|
#define APM_CNT_ROUTE_ALL_XHCI 0xca
|
||||||
#define APM_CNT_FINALIZE 0xcb
|
#define APM_CNT_FINALIZE 0xcb
|
||||||
#define APM_CNT_LEGACY 0xcc
|
#define APM_CNT_LEGACY 0xcc
|
||||||
|
#define APM_CNT_MBI_UPDATE 0xeb
|
||||||
#define APM_CNT_SMMINFO 0xec
|
#define APM_CNT_SMMINFO 0xec
|
||||||
#define APM_CNT_SMMSTORE 0xed
|
#define APM_CNT_SMMSTORE 0xed
|
||||||
#define APM_CNT_ELOG_GSMI 0xef
|
#define APM_CNT_ELOG_GSMI 0xef
|
||||||
|
|
Loading…
Reference in New Issue