coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mp_init.c File Reference
#include <console/console.h>
#include <cpu/x86/mtrr.h>
#include <cpu/x86/mp.h>
#include <cpu/intel/microcode.h>
#include <cpu/intel/smm_reloc.h>
#include <cpu/intel/common/common.h>
#include <device/device.h>
#include <types.h>
Include dependency graph for mp_init.c:

Go to the source code of this file.

Macros

#define SMRR_SUPPORTED   (1 << 11)
 

Functions

static void pre_mp_init (void)
 
static int get_cpu_count (void)
 
static void get_microcode_info (const void **microcode, int *parallel)
 
static void pre_mp_smm_init (void)
 
static void per_cpu_smm_trigger (void)
 
static void post_mp_init (void)
 
void mp_init_cpus (struct bus *cpu_bus)
 

Variables

static const struct mp_ops mp_ops
 

Macro Definition Documentation

◆ SMRR_SUPPORTED

#define SMRR_SUPPORTED   (1 << 11)

Definition at line 46 of file mp_init.c.

Function Documentation

◆ get_cpu_count()

static int get_cpu_count ( void  )
static

Definition at line 23 of file mp_init.c.

References BIOS_DEBUG, cpuid, cpuid_result::ebx, and printk.

◆ get_microcode_info()

static void get_microcode_info ( const void **  microcode,
int *  parallel 
)
static

Definition at line 33 of file mp_init.c.

References intel_ht_supported(), and intel_microcode_find().

Here is the call graph for this function:

◆ mp_init_cpus()

void mp_init_cpus ( struct bus cpu_bus)

Definition at line 99 of file mp_init.c.

References mp_init_with_smm().

Here is the call graph for this function:

◆ per_cpu_smm_trigger()

static void per_cpu_smm_trigger ( void  )
static

◆ post_mp_init()

static void post_mp_init ( void  )
static

Definition at line 78 of file mp_init.c.

◆ pre_mp_init()

static void pre_mp_init ( void  )
static

Definition at line 13 of file mp_init.c.

References intel_microcode_find(), intel_microcode_load_unlocked(), x86_mtrr_check(), and x86_setup_mtrrs_with_detect().

Here is the call graph for this function:

◆ pre_mp_smm_init()

static void pre_mp_smm_init ( void  )
static

Definition at line 41 of file mp_init.c.

References smm_initialize().

Here is the call graph for this function:

Variable Documentation

◆ mp_ops

const struct mp_ops mp_ops
static
Initial value:
= {
.pre_mp_init = pre_mp_init,
.get_cpu_count = get_cpu_count,
.get_smm_info = smm_info,
.get_microcode_info = get_microcode_info,
.pre_mp_smm_init = pre_mp_smm_init,
.per_cpu_smm_trigger = per_cpu_smm_trigger,
.relocation_handler = smm_relocation_handler,
.post_mp_init = post_mp_init,
}
void smm_relocation_handler(int cpu, uintptr_t curr_smbase, uintptr_t staggered_smbase)
Definition: smmrelocate.c:90
void smm_info(uintptr_t *perm_smbase, size_t *perm_smsize, size_t *smm_save_state_size)
Definition: smmrelocate.c:213
static void get_microcode_info(const void **microcode, int *parallel)
Definition: mp_init.c:33
static void pre_mp_init(void)
Definition: mp_init.c:13
static void per_cpu_smm_trigger(void)
Definition: mp_init.c:48
static void pre_mp_smm_init(void)
Definition: mp_init.c:41
static int get_cpu_count(void)
Definition: mp_init.c:23
static void post_mp_init(void)
Definition: mp_init.c:78

Definition at line 78 of file mp_init.c.