Linux Kernel 2.6.22 for the Cell/B.E.™

In this section we provide the Linux operating system kernel with Cell Broadband Engine Architecture support that is part of the IBM SDK 3.0 for the Cell/B.E.™. We provide a pre-built kernel binary package intended for IBM BladeCenter QS20 and IBM BladeCenter QS21 hardware but also the sources and instructions how to build it. Even new versions could be made available, only the kernel level hosted here would be the one supported in IBM SDK 3.0.

The IBM SDK provides a guide that helps you installing IBM BladeCenter QS21 where this zImage file is needed (see Installation Guide for the SDK for Multicore Acceleration v3.0 )

zImage to boot over the network

BladeCenter QS21 does not provide on-board disk space, if there is no SAS-attached storage, a NFS network boot must be performed. We provide a zImage that supports booting from NFS in order to boot and install new IBM BladeCenter QS21 hardware. The zImage has been built using the binary kernel provided below. You will need different zImages for different kernels but blade servers that run the same kernel and same NFS root can all boot using the same zImage.

File Description
zImage.initrd-2.6.22-5.20070920bsc zImage that contains a boot kernel and a suitable initial RAM disk..

zImage should be copied to the exported TFTP directory on the TFTP server and a Dynamic Host Configuration Protocol (DHCP) server that supports the Bootstrap Protocol (BOOTP) properly configured for each blade server. See the Installation Guide for the SDK for Multicore Acceleration v3.0 for a detailed explanation.

Kernel binary and source package

The pre-compiled kernel build was built with the default kernel configuration file that comes with the patches. We provide both the pre-compiled kernel build and the source rpm which includes the patches and the 2.6.22 Linux kernel tarball.

Packages are provided as-is. The kernel should boot on the IBM BladeCenter QS20 or BladeCenter QS21.


File Description
kernel-2.6.22-5.20070920bsc.ppc64.rpm Pre-compiled Kernel binaries that enables Linux kernel on a Cell BE-based System.
kernel-2.6.22-5.20070920bsc.src.rpm Patched kernel sources to enable Linux kernel on cell platforms.

If you are installing Fedora 7 on BladeCenter hardware, the kernel must be manually installed. To install the kernel first download the previous binary kernel rpm and as root user type:

 rpm -ivh --force kernel-2.6.22-5.20070821bsc.ppc64.rpm 

You must reboot to activate the new kernel.

Other RPMs

File Description
kernel-devel-2.6.22-5.20070920bsc.ppc64.rpm Kernel devel rpm.
kernel-headers-2.6.22-5.20070920bsc.ppc64.rpm Kernel headers rpm.

RPMs for debugging kernel data related to SPUs

SDK provide a means of debugging kernel data related to SPUs through specific crash commands, by using a dumped kernel image. This functionality is based on the use of kdump, and the documentation can be found in the Documentation/kdump/kdump.txt file from the Linux kernel sources.

The Programmer's Guide to the IBM SDK for Multicore Acceleration contains some information about how to analyze Cell/B.E.™ SPUs with kdump and crash.

You will need two environments:

  • A production system, which runs the kernel where problems can occur.
  • An analysis system, where the information (dump file) captured by the production system is analyzed and the possible problems are identified.

The production system must be a Cell/B.E.™ hardware. Otherwise, SPU-specific data that is used by crash is not available in the dump file. The analysis system can be any PowerPC hardware, either 32 or 64-bit.

We provide the following SDK packages that are necessary to have a complete environment to make use of SPU crash commands:

  • Analysis system
    • crash-spu-commands – SPU-specific commands for crash tool
    • crash – crash tool for dump analysis (dependency of crash-spu-commands)
    • kernel-debuginfo – kernel vmlinux image compiled with debug symbols
    • kernel-debuginfo-common – a dependency of kernel-debuginfo
  • Production system
    • kernel – kernel image that starts dump capture kernel on a crash event
    • kexec-tools – tool used for warm boot of the dump capture kernel
    • kernel-kdump – dump capture kernel image
    • busybox-kdump – optional package that allows to reserve less memory for booting dump capture kernel.

All these packages must be installed manually.

We also provide a kernel that uses by default 4k pages, you can find the rpms at http://www.bsc.es/projects/deepcomputing/linuxoncell/cellsimulator/sdk3.0/

Kernel debuginfo

File Description
kernel-debuginfo-2.6.22-5.20070920bsc.ppc64.rpm Kernel vmlinux image compiled with debug symbols
kernel-debuginfo-common-2.6.22-5.20070920bsc.ppc64.rpm A dependency of kernel-debuginfo.

Kernel kdump

File Description
kernel-kdump-2.6.22-5.20070920bsc.ppc64.rpm Dump capture kernel image.
kernel-kdump-debuginfo-2.6.22-5.20070920bsc.ppc64.rpm Dump capture kernel image debuginfo.
kernel-kdump-devel-2.6.22-5.20070920bsc.ppc64.rpm Dump capture kernel image devel.

Kexec tools

File Description
kexec-tools-1.101-72.fc7.ppc64.rpm Kexec tools.
kexec-tools-debuginfo-1.101-72.fc7.ppc64.rpm Kexec tools debuginfo.
kexec-tools-1.101-72.fc7.src.rpm Kexec tools source rpm

Busybox kdump

busybox-kdump provides a custom initrd that allows to reduce the amount of reserved memory for the dump capture kernel and it is recommended for the production system.

File Description
busybox-kdump-1.5.1-1.ppc.rpm Busybox kdump.
busybox-kdump-debuginfo-1.5.1-1.ppc.rpm Busybox debuginfo kdump.
busybox-kdump-1.5.1-1.nosrc.rpm Busybox spec file.

Kernel compiled with debug

File Description
kernel-debug-2.6.22-5.20070920bsc.ppc64.rpm Kernel with debug.
kernel-debug-devel-2.6.22-5.20070920bsc.ppc64.rpm Kernel devel with debug.
kernel-debug-debuginfo-2.6.22-5.20070920bsc.ppc64.rpm Kernel with debug debuginfo rpm.

Building your own kernel

If you want to built your own kernel for IBM Bladecenter hardware you can use the src rpm provided in this section or download the sources and kernel tree that supports the Cell Broadband Engine Architecture directly from kernel.org. The source tree that is part of the IBM SDK 3.0 can be found at http://kernel.org/pub/linux/kernel/people/arnd/patches/2.6.22-arnd3/ . Newer kernel releases can be found there but these are not supported by IBM SDK 3.0 level and could include unstable and in deveopment kernel releases.

To download and build your own kernel, you need to run the following commands found at http://kernel.org/pub/linux/kernel/people/arnd/patches/2.6.22-arnd3/fedora/README . This would download and built kernel rpms.

Building your zImage

To build zImage file you need a Fedora 7 powerpc machine with updated libdhcp, mkinitrd and nash packages, a fstab file and the kernel level from where you want to built that zImage installed. It is not needed to have the kernel booted so any powerpc machine with Fedore Core 7 installed could be used to built zImage, you need the kernel only installed.

To install the kernel first you must type root user:

 rpm -ivh --force kernel-2.6.22-5.20070821bsc.ppc64.rpm 

This will install the kernel in your machine. If the machine it is not a IBM BladeCenter QS20 or IBM BladeCenter QS21, we would recommend to delete the entry that have been added to your yaboot.conf to not boot this Cell/B.E.™-enabled kernel on a future machine reboot.

Download following fstab and copy it to /root/fstab. Then, to create zImage just type:

/sbin/mkinitrd --with=tg3 --with=nfs --net-dev=eth0 --fstab=/root/fstab \
	       /root/initrd-2.6.22-5.20070920bsc.img 2.6.22-5.20070920bsc
mkzimage /boot/vmlinuz-2.6.22-5.20070920bsc no no /root/initrd-2.6.22-5.20070920bsc.img \
	 /usr/share/ppc64-utils/zImage.stub /root/zImage.initrd-2.6.22-5.20070920bsc