Skip to content

SMP (Symmetric Multi-Processing) support for Hard Processor System

Last updated: April 24, 2025

Upstream Status: Upstreamed

Devices supported: Agilex 5

Introduction

SMP (Symmetric Multi-Processing) refers to running operating system on multiple CPU cores. Zephyr kernel supports SMP which can turn on and off the non-boot cores (aka secondary cores).

Zephyr sends “CPU_ON” and “CPU_OFF” functions via PSCI SMC to ATF BL31 to turn on and off individual core. Zephyr supports CPU hot plug which provides public API and command line to turn on and off the individual core including both boot and non-boot cores during runtime.

The below diagram shows HPS SMP flow (CPU_ON and CPU_OFF) supported by Zephyr:

For More information please refer to the Intel Agilex 5 Hard Processor System Technical Reference Manual.

Driver Sources

The source code for this driver can be found at:

https://github.com/zephyrproject-rtos/zephyr/blob/main/arch/arm64/core/smp.c

Driver Capabilities

  • Bring up secondary cores; power-on, initialize the secondary cores and make them ready to run as part of multi-core boot system.

Kernel Configurations

CONFIG_SMP

smp_config

CONFIG_MP_MAX_NUM_CPUS=4

max_num_cpus_config

Device Tree

Example Device tree location to configure the smp:

https://github.com/zephyrproject-rtos/zephyr/blob/main/dts/arm64/intel/intel_socfpga_agilex5.dtsi

smp_device_tree

Known Issues

None known


Last update: April 22, 2025
Created: August 7, 2024
Ask in the Forum