Search by Tags

CPU (Linux)

 

Article updated at 21 Jul 2021
Compare with Revision



This article shows how to enable/disable CPU cores on Toradex modules. It only applies to modules that have more than one core.

NXP i.MX-Based SoMs

Boot-up CPU Configuration

The Linux kernel parameter maxcpus can be used to configure the maximum SMP processors Linux should make use of. Use the U-Boot serial console to add the maxcpus boot argument:

Colibri iMX6 # setenv defargs $defargs maxcpus=1
Colibri iMX6 # saveenv

CPU Hotplugging

The CPU hotplugging allows to enable/disable CPU cores without a system reboot, see below:

root@colibri-imx7:~# echo 0 > /sys/devices/system/cpu/cpu1/online
[ 25.213855] CPU1: shutdown

NVIDIA Tegra-Based SoMs

Boot-up CPU Configuration

The Linux kernel parameter maxcpus can be used to configure the maximum SMP processors Linux should make use of. Use the U-Boot serial console to add the maxcpus boot argument:

Colibri T30 # setenv defargs $defargs maxcpus=1
Colibri T30 # saveenv

CPU Hotplugging

The CPU hotplugging allows to enable/disable CPU cores without a system reboot.

Manual

Manually turn off CPU cores:

root@colibri-t30:~# echo 0 > /sys/devices/system/cpu/cpu3/online
[ 1190.700711] CPU3: shutdown

Note: This is only useful if automatic CPU hotplugging (mentioned below) is turned off.

Automatic

The Linux Kernel supports automatic core aka CPU hotplugging based on the current load in order to minimize power usage.

Note: On T30 the low-power core migration is disabled as it has some issues.

Turn off low-power core migration:

root@colibri-t30:~# echo Y > /sys/module/cpu_tegra3/parameters/no_lp

Turn on automatic CPU hotplugging:

root@colibri-t30:~# echo 1 > /sys/module/cpu_tegra3/parameters/auto_hotplug
[ 2043.597297] Tegra auto-hotplug enabled

For more information on the Tegra specific CPU hotplugging driver refer to the documentation file within the L4T Linux kernel trees: Documentation/arm/nvidia/tegra_parameters.txt resp. Documentation/arm/nvidia/tegra_parameters.txt