cpu/x86/smm: Move apic_id_to_cpu map to smm_stub params
This is only consumed by the stub and not by the relocation handler or the permanent handler, so move it out of the runtime struct. Change-Id: I01ed0a412c23c8a82d88408be058a27e55d0dc4d Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/50762 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
parent
166d2ac901
commit
ed4be45d58
@ -762,10 +762,10 @@ static void asmlinkage smm_do_relocation(void *arg)
|
||||
static void adjust_smm_apic_id_map(struct smm_loader_params *smm_params)
|
||||
{
|
||||
int i;
|
||||
struct smm_runtime *runtime = smm_params->runtime;
|
||||
struct smm_stub_params *stub_params = smm_params->stub_params;
|
||||
|
||||
for (i = 0; i < CONFIG_MAX_CPUS; i++)
|
||||
runtime->apic_id_to_cpu[i] = cpu_get_apic_id(i);
|
||||
stub_params->apic_id_to_cpu[i] = cpu_get_apic_id(i);
|
||||
}
|
||||
|
||||
static int install_relocation_handler(int num_cpus, size_t save_state_size)
|
||||
|
@ -259,9 +259,10 @@ static int smm_module_setup_stub(void *smbase, size_t smm_size,
|
||||
|
||||
/* Initialize the APIC id to CPU number table to be 1:1 */
|
||||
for (i = 0; i < params->num_concurrent_stacks; i++)
|
||||
stub_params->runtime.apic_id_to_cpu[i] = i;
|
||||
stub_params->apic_id_to_cpu[i] = i;
|
||||
|
||||
/* Allow the initiator to manipulate SMM stub parameters. */
|
||||
params->stub_params = stub_params;
|
||||
params->runtime = &stub_params->runtime;
|
||||
|
||||
printk(BIOS_DEBUG, "SMM Module: stub loaded at %p. Will call %p\n",
|
||||
|
@ -464,9 +464,10 @@ static int smm_module_setup_stub(void *smbase, size_t smm_size,
|
||||
|
||||
/* Initialize the APIC id to CPU number table to be 1:1 */
|
||||
for (i = 0; i < params->num_concurrent_stacks; i++)
|
||||
stub_params->runtime.apic_id_to_cpu[i] = i;
|
||||
stub_params->apic_id_to_cpu[i] = i;
|
||||
|
||||
/* Allow the initiator to manipulate SMM stub parameters. */
|
||||
params->stub_params = stub_params;
|
||||
params->runtime = &stub_params->runtime;
|
||||
|
||||
printk(BIOS_DEBUG, "SMM Module: stub loaded at %p. Will call %p\n",
|
||||
|
@ -25,6 +25,12 @@ fxsave_area:
|
||||
.long 0
|
||||
fxsave_area_size:
|
||||
.long 0
|
||||
/* apic_to_cpu_num is a table mapping the default APIC id to CPU num. If the
|
||||
* APIC id is found at the given index, the contiguous CPU number is index
|
||||
* into the table. */
|
||||
apic_to_cpu_num:
|
||||
.fill CONFIG_MAX_CPUS,1,0xff
|
||||
|
||||
/* struct smm_runtime begins here. */
|
||||
smm_runtime:
|
||||
smbase:
|
||||
@ -40,11 +46,6 @@ gnvs_ptr:
|
||||
/* allows the STM to bring up SMM in 32-bit mode */
|
||||
start32_offset:
|
||||
.long smm_trampoline32 - _start
|
||||
/* apic_to_cpu_num is a table mapping the default APIC id to CPU num. If the
|
||||
* APIC id is found at the given index, the contiguous CPU number is index
|
||||
* into the table. */
|
||||
apic_to_cpu_num:
|
||||
.fill CONFIG_MAX_CPUS,1,0xff
|
||||
/* end struct smm_runtime */
|
||||
|
||||
.data
|
||||
|
@ -62,13 +62,6 @@ struct smm_runtime {
|
||||
u32 gnvs_ptr;
|
||||
/* STM's 32bit entry into SMI handler */
|
||||
u32 start32_offset;
|
||||
/* The apic_id_to_cpu provides a mapping from APIC id to CPU number.
|
||||
* The CPU number is indicated by the index into the array by matching
|
||||
* the default APIC id and value at the index. The stub loader
|
||||
* initializes this array with a 1:1 mapping. If the APIC ids are not
|
||||
* contiguous like the 1:1 mapping it is up to the caller of the stub
|
||||
* loader to adjust this mapping. */
|
||||
u8 apic_id_to_cpu[CONFIG_MAX_CPUS];
|
||||
} __packed;
|
||||
|
||||
struct smm_module_params {
|
||||
@ -88,6 +81,13 @@ struct smm_stub_params {
|
||||
u32 c_handler;
|
||||
u32 fxsave_area;
|
||||
u32 fxsave_area_size;
|
||||
/* The apic_id_to_cpu provides a mapping from APIC id to CPU number.
|
||||
* The CPU number is indicated by the index into the array by matching
|
||||
* the default APIC id and value at the index. The stub loader
|
||||
* initializes this array with a 1:1 mapping. If the APIC ids are not
|
||||
* contiguous like the 1:1 mapping it is up to the caller of the stub
|
||||
* loader to adjust this mapping. */
|
||||
u8 apic_id_to_cpu[CONFIG_MAX_CPUS];
|
||||
struct smm_runtime runtime;
|
||||
} __packed;
|
||||
|
||||
@ -150,6 +150,7 @@ struct smm_loader_params {
|
||||
|
||||
smm_handler_t handler;
|
||||
|
||||
struct smm_stub_params *stub_params;
|
||||
struct smm_runtime *runtime;
|
||||
|
||||
/* The following are only used by X86_SMM_LOADER_VERSION2 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user