void cpu_init(void)
{
...
switch_to_new_gdt(cpu);
...
wrmsrl(MSR_FS_BASE, 0);
wrmsrl(MSR_KERNEL_GS_BASE, 0);
...
}
void load_percpu_segment(int cpu)
{
__loadsegment_simple(gs, 0);
wrmsrl(MSR_GS_BASE, (unsigned long)per_cpu(irq_stack_union.gs_base, cpu));
load_stack_canary_segment();
}
联系客服