You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arm64/Aarch64 Linux 5.9内核启动报错:无法找到引导CPU节点求助

Arm64 Linux 5.9设备树启动CPU匹配问题解决思路

针对启动时出现的Failed to find device node for boot cpu和missing boot CPU MPIDR, not enabling secondaries警告,核心问题是内核无法通过MPIDR寄存器值匹配到设备树中的Boot CPU节点,以下是具体解决步骤:

  • 修正CPUs节点的地址编码配置
    Arm64架构下,CPU的reg属性需要对应MPIDR_EL1寄存器的64位Affinity值,因此CPUs节点的#address-cells必须设为<2>(表示用两个32位单元存储64位地址),当前配置的<0x01>仅支持32位地址,会导致内核解析MPIDR不完整。修改后的CPUs节点开头应为:

    cpus {
        #size-cells = <0>;
        #address-cells = <2>;
        // 后续CPU节点...
    };
    
  • 匹配Boot CPU的MPIDR值到reg属性

    1. 在Bootloader中打印Boot CPU的MPIDR_EL1寄存器值(执行mrs x0, mpidr_el1后输出x0的值),取该值的低64位(通常掩码为0xFFFFFFFFFFFFFF,去掉MT和Reserved位)。
    2. 将该值拆分为两个32位单元,填入CPU节点的reg属性。例如,若MPIDR值为0x00000000,则reg = <0x0 0x0>;若为0x00000001,则reg = <0x0 0x01>。确保Boot CPU对应的cpu@x节点的reg值与实际MPIDR完全匹配。
  • 完善PSCI相关配置
    由于使用了enable-method = "psci",需确保:

    1. 设备树中添加PSCI节点,示例:
      psci {
          compatible = "arm,psci-1.0"; // 根据平台支持的PSCI版本调整
          method = "smc"; // 或"hvc",对应平台的PSCI调用方式
      };
      
    2. 内核配置开启CONFIG_ARM_PSCI、CONFIG_ARM_PSCI_FW,同时确保Bootloader已完成PSCI框架的初始化。
  • 验证内核与Bootloader的其他配置

    1. 内核需开启CONFIG_SMP以支持多核启动;
    2. 确认Bootloader传递给内核的设备树镜像完整无损坏,物理地址传递正确。

内容的提问来源于stack exchange,提问作者Jayaprakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:52:51