diff options
Diffstat (limited to 'src/soc/amd/common/block/cpu/smm/finalize.c')
-rw-r--r-- | src/soc/amd/common/block/cpu/smm/finalize.c | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/src/soc/amd/common/block/cpu/smm/finalize.c b/src/soc/amd/common/block/cpu/smm/finalize.c index 73b21216f5ca..d0fe4bc9d6d2 100644 --- a/src/soc/amd/common/block/cpu/smm/finalize.c +++ b/src/soc/amd/common/block/cpu/smm/finalize.c @@ -1,31 +1,25 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include <acpi/acpi.h> -#include <cpu/x86/mp.h> -#include <cpu/x86/msr.h> -#include <cpu/amd/msr.h> +#include <amdblocks/acpi.h> +#include <amdblocks/smm.h> #include <bootstate.h> #include <console/console.h> -#include <amdblocks/acpi.h> +#include <cpu/amd/msr.h> +#include <cpu/x86/mp.h> +#include <cpu/x86/msr.h> #include <types.h> static void per_core_finalize(void *unused) { - msr_t hwcr, mask; - /* Finalize SMM settings */ - hwcr = rdmsr(HWCR_MSR); - if (hwcr.lo & SMM_LOCK) /* Skip if already locked, avoid GPF */ + if (is_smm_locked()) /* Skip if already locked, avoid GPF */ return; - if (CONFIG(HAVE_SMI_HANDLER)) { - mask = rdmsr(SMM_MASK_MSR); - mask.lo |= SMM_TSEG_VALID; - wrmsr(SMM_MASK_MSR, mask); - } + if (CONFIG(HAVE_SMI_HANDLER)) + tseg_valid(); - hwcr.lo |= SMM_LOCK; - wrmsr(HWCR_MSR, hwcr); + lock_smm(); } static void finalize_cores(void) |