12297
OLPC has enabled the second processor core in the XO-4 laptops.
Problem
The released operating systems 13.2.1 and 13.2.2 run only one core. The XO-4 underperforms compared to some other devices.
Solution
XO-4 only:
Upgrade to 13.2.6.
Workaround
Care is needed. Without the firmware upgrade, our dual-core kernel will not boot. With the firmware upgrade, the original kernel will not boot. The reason for the restriction is that changes to firmware and kernel must occur at the same time.
On unsecure laptops running 13.2.0, 13.2.1 and 13.2.2, upgrade the kernel and the firmware at the same time. The exact steps are:
- download the kernel-3.5.7_xo4-20150610.0359.olpc.97336f6.armv7hl.rpm kernel package,
- download the q7c05.rom new firmware,
- copy both to a USB drive,
- add battery and power cable, and wait for the laptop to finish charging,
- upgrade the kernel,
sudo rpm -U kernel-3.5.7_xo4-20150610.0359.olpc.97336f6.armv7hl.rpm
- shutdown,
sudo poweroff
- upgrade the firmware,
ok flash u:\q7c05.rom
- allow the laptop to boot, and verify dual-core operation:
bash-4.2# cat /proc/cpuinfo Processor : ARMv7 Processor rev 2 (v7l) processor : 0 BogoMIPS : 1196.85 processor : 1 BogoMIPS : 1196.85 Features : swp half thumb fastmult vfp edsp iwmmxt thumbee neon vfpv3 tls CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2 Hardware : Marvell MMP3 (Device Tree Support) OLPC XO-4 Revision : 0000 Serial : 0000000000000000 -bash-4.2# █
To add dual core to a build of Fedora 18, add the kernel and firmware packages to your build.
Reverting
- download the 3.5.7_xo4-20141118.2329.olpc.cd558cf kernel package,
- download the q7b45.rom old firmware,
- copy both to a USB drive,
- downgrade the kernel,
- shutdown,
sudo poweroff
- downgrade the firmware,
ok flash u:\q7b45.rom
- allow the laptop to boot.
Using a single core kernel on 14.1.0
Certain tasks may benefit from the higher memory allocation bandwidth of the single core kernel.
- download the 3.5.7_xo4-20141118.2329.olpc.cd558cf kernel package,
- download the q7b45.rom old firmware,
- copy both to a USB drive,
- note: remove the /bootpart/boot/bootfw4.zip file, to prevent automatic firmware upgrade;
sudo rm /bootpart/boot/bootfw4.zip
- downgrade the kernel, by forcing upgrade to lower version;
sudo rpm --upgrade --force \ kernel-3.5.7_xo4-20141118.2329.olpc.cd558cf.armv7hl.rpm
- shutdown,
sudo poweroff
- downgrade the firmware,
ok flash u:\q7b45.rom
- allow the laptop to boot, and verify single-core operation:
-bash-4.2# cat /proc/cpuinfo Processor : ARMv7 Processor rev 2 (v7l) BogoMIPS : 1191.11 Features : swp half thumb fastmult vfp edsp iwmmxt thumbee neon vfpv3 tls CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2 Hardware : Marvell MMP2 (Device Tree Support) Revision : 0000 Serial : 0000000000000000 -bash-4.2# █
Booting a single core kernel on dual core firmware
For manual use only. Disable the dual core feature before booting, like this:
ok patch noop mmp3-gic linux-fixup ok boot█
Do not deploy this workaround, as it causes a power draw regression.