smp启动-boot_cpu_hotplug_init

上一篇:setup_nr_cpu_ids & smp_prepare_boot_cpu

https://www.cnblogs.com/zhangzhiwei122/p/16091458.html

 

start_kernel -> boot_cpu_hotplug_init

 848asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
 849{

 873        setup_nr_cpu_ids();
 874        setup_per_cpu_areas();
 875        smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
 876        boot_cpu_hotplug_init();
 877

 

boot_cpu_hotplug_init

kernel/cpu.c

 

  75static DEFINE_PER_CPU(struct cpuhp_cpu_state, cpuhp_state) = {
  76        .fail = CPUHP_INVALID,
  77};
  78
  79#ifdef CONFIG_SMP
  80cpumask_t cpus_booted_once_mask;
  81#endif



2506/*
2507 * Must be called _AFTER_ setting up the per_cpu areas
2508 */
2509void __init boot_cpu_hotplug_init(void)
2510{
2511#ifdef CONFIG_SMP
2512        cpumask_set_cpu(smp_processor_id(), &cpus_booted_once_mask);
2513#endif
2514        this_cpu_write(cpuhp_state.state, CPUHP_ONLINE);
2515}
2516

75 定义 per cpu 对象, cpuhp_state

80  - 定义  cpus_booted_once_mask 启动过一次的 cpu 都在上面 置位为 1

 

2512 - 设置 cpus_booted_once_mask

2514 - 设置 per cpu 对象 cpuhp_state.state 为  CPUHP_ONLINE  -  在线。因为现在执行代码的是 boot cpu,所以设置了boot cpu 的cpuhp_state.state 为online

       cpu hotplug 的state 在 include/linux/cpuhotplug.h中定义

 

下一篇: init_IRQ 触发注册 注册CPUHP_AP_IRQ_GIC_STARTING的回调函数gic_starting_cpu

https://www.cnblogs.com/zhangzhiwei122/p/16092659.html

 

posted @ 2022-04-02 15:18  张志伟122  阅读(213)  评论(0编辑  收藏  举报