1 多核启动问题
1.1 kernel
linux-5.15.112
linux 内核输出的opensbi日志和多核启动日志:
......
[ 0.000000] SBI specification v0.3 detected
[ 0.000000] SBI implementation ID=0x1 Version=0x10000
[ 0.000000] SBI TIME extension detected
[ 0.000000] SBI IPI extension detected
[ 0.000000] SBI RFENCE extension detected
[ 0.000000] SBI v0.2 HSM extension detected
[ 0.000000] riscv: ISA extensions acdfim
[ 0.000000] riscv: ELF capabilities acdfim
.....
[ 1.760232] EFI services will not be available.
[ 1.886410] smp: Bringing up secondary CPUs ...
[ 3.439087] CPU1: failed to come online
[ 3.492346] smp: Brought up 1 node, 1 CPU
.....
根据日志查找内核代码ÿ

本文探讨了RISC-V架构下Linux内核如何处理多核启动的问题。从kernel层面,分析了内核输出的日志,指出当CONFIG_RISCV_SBI宏打开时,启动第二个核心的函数为`sbi_cpu_start`。接着,深入到OPENSBI部分,解析了热启动CPU等待被激活的过程,以及激活CPU的机制,包括通过SBI_EXT_HSM_HART_START触发IPI中断,由sbi_trap_handler处理中断并唤醒等待的CPU。
订阅专栏 解锁全文
647

被折叠的 条评论
为什么被折叠?



