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