intel/smm: Provide common smm_relocation_params
Pull in all copies of smm_relocation_params structs defined for intel platforms. Pull in all the inlined MSR accessors to the header file. Change-Id: I39c6cffee95433aea1a3c783b869eedfff094413 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34840 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
@@ -45,49 +45,7 @@
|
||||
#define SMRR_SUPPORTED (1 << 11)
|
||||
#define PRMRR_SUPPORTED (1 << 12)
|
||||
|
||||
struct smm_relocation_params {
|
||||
uintptr_t ied_base;
|
||||
size_t ied_size;
|
||||
msr_t smrr_base;
|
||||
msr_t smrr_mask;
|
||||
msr_t prmrr_base;
|
||||
msr_t prmrr_mask;
|
||||
msr_t uncore_prmrr_base;
|
||||
msr_t uncore_prmrr_mask;
|
||||
/* The smm_save_state_in_msrs field indicates if SMM save state
|
||||
* locations live in MSRs. This indicates to the CPUs how to adjust
|
||||
* the SMMBASE and IEDBASE */
|
||||
int smm_save_state_in_msrs;
|
||||
};
|
||||
|
||||
/* This gets filled in and used during relocation. */
|
||||
static struct smm_relocation_params smm_reloc_params;
|
||||
|
||||
static inline void write_smrr(struct smm_relocation_params *relo_params)
|
||||
{
|
||||
printk(BIOS_DEBUG, "Writing SMRR. base = 0x%08x, mask=0x%08x\n",
|
||||
relo_params->smrr_base.lo, relo_params->smrr_mask.lo);
|
||||
wrmsr(IA32_SMRR_PHYS_BASE, relo_params->smrr_base);
|
||||
wrmsr(IA32_SMRR_PHYS_MASK, relo_params->smrr_mask);
|
||||
}
|
||||
|
||||
static inline void write_prmrr(struct smm_relocation_params *relo_params)
|
||||
{
|
||||
printk(BIOS_DEBUG, "Writing PRMRR. base = 0x%08x, mask=0x%08x\n",
|
||||
relo_params->prmrr_base.lo, relo_params->prmrr_mask.lo);
|
||||
wrmsr(MSR_PRMRR_PHYS_BASE, relo_params->prmrr_base);
|
||||
wrmsr(MSR_PRMRR_PHYS_MASK, relo_params->prmrr_mask);
|
||||
}
|
||||
|
||||
static inline void write_uncore_prmrr(struct smm_relocation_params *relo_params)
|
||||
{
|
||||
printk(BIOS_DEBUG,
|
||||
"Writing UNCORE_PRMRR. base = 0x%08x, mask=0x%08x\n",
|
||||
relo_params->uncore_prmrr_base.lo,
|
||||
relo_params->uncore_prmrr_mask.lo);
|
||||
wrmsr(MSR_UNCORE_PRMRR_PHYS_BASE, relo_params->uncore_prmrr_base);
|
||||
wrmsr(MSR_UNCORE_PRMRR_PHYS_MASK, relo_params->uncore_prmrr_mask);
|
||||
}
|
||||
|
||||
static void update_save_state(int cpu, uintptr_t curr_smbase,
|
||||
uintptr_t staggered_smbase,
|
||||
|
Reference in New Issue
Block a user