This patch adds a few southbridge calls needed for parallel MP init. Moves the smm_relocate() function to smm/gen1/smi.h, since that is where this function is defined now. Tested on Thinkpad X220, shaves off ~30ms on a 2 core, 4 threads CPU. Change-Id: Ia1d547ed4a3cb6746a0222c3e54e94e5848b0dd7 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/25618 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include <device/device.h>
|
|
|
|
void bsp_init_and_start_aps(struct bus *cpu_bus);
|
|
|
|
/* These helpers are for performing SMM relocation. */
|
|
void southbridge_smm_init(void);
|
|
void southbridge_trigger_smi(void);
|
|
void southbridge_clear_smi_status(void);
|
|
u32 northbridge_get_tseg_base(void);
|
|
u32 northbridge_get_tseg_size(void);
|
|
int cpu_get_apic_id_map(int *apic_id_map);
|
|
void northbridge_write_smram(u8 smram);
|
|
|
|
bool cpu_has_alternative_smrr(void);
|
|
|
|
/* parallel MP helper functions */
|
|
void smm_info(uintptr_t *perm_smbase, size_t *perm_smsize,
|
|
size_t *smm_save_state_size);
|
|
void smm_initialize(void);
|
|
void southbridge_smm_clear_state(void);
|
|
void smm_relocation_handler(int cpu, uintptr_t curr_smbase,
|
|
uintptr_t staggered_smbase);
|
|
void smm_relocate(void);
|