You are on page 1of 22

Intel

® I/O Processors
Linux Installation Application Note
February 2008

Order Number: 319305-001US


INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR
Legal Lines and Disclaimers

OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS
OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING
TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for
use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications.
Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics
of any features or instructions marked “reserved” or “undefined.” Intel reserves these for future definition and shall have no responsibility whatsoever for
conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with
this information.
The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published
specifications. Current characterized errata are available on request.
Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.
Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-
4725, or by visiting Intel’s Web Site.
Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different
processor families. See http://www.intel.com/products/processor_number for details.
BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino logo, Core Inside, FlashFile, i960, InstantIP, Intel, Intel logo, Intel386, Intel486, Intel740,
IntelDX2, IntelDX4, IntelSX2, Intel Core, Intel Inside, Intel Inside logo, Intel. Leap ahead., Intel. Leap ahead. logo, Intel NetBurst, Intel NetMerge, Intel
NetStructure, Intel SingleDriver, Intel SpeedStep, Intel StrataFlash, Intel Viiv, Intel vPro, Intel XScale, Itanium, Itanium Inside, MCS, MMX, Oplus,
OverDrive, PDCharm, Pentium, Pentium Inside, skoool, Sound Mark, The Journey Inside, VTune, Xeon, and Xeon Inside are trademarks of Intel
Corporation in the U.S. and other countries.
*Other names and brands may be claimed as the property of others.
Copyright © 2008, Intel Corporation. All rights reserved.

Intel® I/O Processors


Linux Installation Application Note February 2008
2 Order Number: 319305-001US
Linux Installation

Contents
1.0 Introduction ..............................................................................................................5
2.0 Prerequisites .............................................................................................................5
3.0 Host Setup .................................................................................................................6
3.1 Host Role ...........................................................................................................6
3.2 Baseline Package Installation (Fedora) ...................................................................6
3.3 Minicom Setup ....................................................................................................7
3.4 Networking.........................................................................................................7
3.5 DHCP Server Setup .............................................................................................8
3.6 TFTP Server Setup...............................................................................................8
4.0 Target RedBoot Setup ................................................................................................9
5.0 ARM* Cross Toolchain ............................................................................................. 11
6.0 Running the IOP Kernel ........................................................................................... 12
6.1 Download and Build ........................................................................................... 12
6.2 Launching the Kernel ......................................................................................... 15
7.0 Debian ARM* Installation ........................................................................................ 16
8.0 Kernel Changelog .................................................................................................... 18
8.1 2.6.18-iop1 (10.20.2006)................................................................................... 18
8.2 2.6.18-iop2 (10.30.2006)................................................................................... 18
8.3 2.6.18-iop3.1 (11.1.2006).................................................................................. 18
8.4 2.6.19-iop1 (12.8.2006)..................................................................................... 18
8.5 2.6.20-iop1 (2.9.2007) ...................................................................................... 18
8.6 2.6.20-iop2 (2.23.2007)..................................................................................... 19
8.7 2.6.20-iop3 (3.19.2007)..................................................................................... 19
8.8 2.6.18.8-iop4 (backport) (5.7.2007) .................................................................... 19
8.9 2.6.20.11-iop4 (backport) (5.7.2007) .................................................................. 19
8.10 2.6.21-iop1 (5.7.2007) ...................................................................................... 20
8.11 2.6.20.15-iop5 (backport) (7.18.2007) ................................................................ 20
8.12 2.6.22.1-iop1 (7.18.2007).................................................................................. 20
8.13 2.6.23.10-iop1 (12.14.2007) .............................................................................. 20
9.0 Usage Notes ............................................................................................................ 21
9.1 IOP13xx: PCI MMAP Capabilities.......................................................................... 21
9.2 PBI Compact Flash Driver ................................................................................... 21
9.3 IOP13xx: Device Selection Parameters ................................................................. 21
9.4 Building the -iop Kernel for Another Architecture ................................................... 21
Figures
1 GNU Cross Compiler Selection ................................................................................... 11
2 Linux Kernel Configuration Menu ................................................................................ 13
3 Support Local Bus Controller Selection ........................................................................ 14
4 RedBoot Bootstrap and Debug Environment................................................................. 15
5 Configure the Network.............................................................................................. 16
6 Partition Menu ......................................................................................................... 17
Tables
1 Linux I/O Processor Decoder........................................................................................5
2 Host System Components ...........................................................................................6
3 RedBoot Parameters Per Board ....................................................................................9
4 RedBoot Values Per Board ......................................................................................... 15

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 3
Linux Installation

Revision History

Date Revision Description


February 2008 001 Initial release.

Intel® I/O Processors


Linux Installation Application Note February 2008
4 Order Number: 319305-001US
Linux Installation

1.0 Introduction
This guide discusses how to install Linux on a Intel® I/O Processor-based board. It
covers three generations of I/O processors and corresponding customer reference
boards:
• Intel® 80321 I/O processor (IOP32x)
• Intel® 80331, 80332 and 80333 I/O processors (IOP33x)
• Intel® 81341, 81342 and 81348 I/O processors (IOP34x)
Table 1 outlines the processors and board names according to “Linux” names.
Table 1. Linux I/O Processor Decoder
I/O Processor Linux Name Linux Board Types
80219 IOP32x ep80219, IQ80219, IQ31244, glantank, n2100
IOP321 IOP32x IQ31244, IQ80321
IOP331 IOP33x IQ80331
IOP332 IOP33x IQ80332
IOP333 IOP33x IQ80332
IOP341 IOP13xx IQ81340mc, IQ81340sc
IOP342 IOP13xx IQ81340mc, IQ81340sc
IOP348 IOP13xx IQ81340mc, IQ81340sc
This guide references Open Source Software resources available on the Internet at the
time of writing, be aware that some resources do move or are discontinued.

2.0 Prerequisites
Before starting the following components must be available:
• A host Linux system with an up to date distribution. The guide was written with a
Fedora Core 6 installation on an IA host. Some commands and configurations
referenced differ on other distributions.
• Network connectivity from the host system to the internet. Proxies are supported.
• Network connectivity from the host to the I/O processor board.
• Serial (UART) connectivity from the host to the I/O processor board.
• A disk controller card and a hard drive for installing Debian. This guide was written
with the IQ3124h SATA controller and a SATA hard drive.

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 5
Linux Installation

3.0 Host Setup


3.1 Host Role
The host system provides a means for the board to retrieve the kernel and install
Debian. The basic components involved are:
Table 2. Host System Components
Component Description
Native Development Tools For building the kernel and the OpenEmbedded environment
Minicom This is a terminal emulation package for viewing the serial port console output of
the Linux target system.
Remote login client Accessing the boards over ssh provides a better way to run the Debian installer.
RedBoot uses TFTP to load the kernel from the host system. This is not necessary
TFTP Server when using XModem for kernel downloads, but it is highly recommended to install
and use the TFTP server. A kernel image takes many times longer to load over
serial than over ethernet.
DHCP Server This provides BOOTP information for the target. This is not necessary when
assigning static IP addresses.

3.2 Baseline Package Installation (Fedora)


Copy and paste the following command into a terminal on the host system to ensure all
the necessary packages are available for a base system:
su -c "yum -y install python m4 make wget curl ftp cvs monotone subversion tar
bzip2 gzip unzip python-psyco ccache perl texinfo texi2html diffstat openjade
docbook-style-dsssl docbook-style-xsl docbook-dtds docbook-utils sed bison bc
glibc-devel gcc binutils pcre pcre-devel git quilt groff linuxdoc-tools patch
nfs-utils tftp-server xinetd dhcp lrzsz openssh-clients minicom shorewall"

Note: This is a extended version of the recommended package list specified by the
OpenEmbedded Getting Started Guide:
(http://www.openembedded.org/wiki/OEandYourDistro)

Intel® I/O Processors


Linux Installation Application Note February 2008
6 Order Number: 319305-001US
Linux Installation

3.3 Minicom Setup


1. Log in as root.
2. Start minicom setup (“minicom -s”).
3. Select [Serial port setup]:
a. Change Serial Device to the appropriate com port (/dev/ttyS0 is COM1,
/dev/ttyS1 is COM2 etc.).
b. Change Bps/Par/Bits to 115200 8N1, this is the default setting for all the
Customer Reference Board Evaluation Platforms.
c. Change all flow control settings to No/Off.
4. Select [Modem and dialing parameter setup]:
a. Change Init string to “^M”.
b. Change Reset string to “^M”.
5. Select [Save setup as dfl] to save setup as default.
6. Select [Exit] to exit setup and enter minicom.
7. Log out as root.
3.4 Networking
Please reference the following guide on how to configure the host to allow the I/O
Processor to access the internet:
http://www.shorewall.net/two-interface.htm
The guide assumes that the I/O Processor is placed on the 192.168.0.0 subnet.

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 7
Linux Installation

3.5 DHCP Server Setup


Create or edit the file /etc/dhcpd.conf. The actual dhcpd.conf file differs from this;
however, this is a reasonable starting point. Note the line titled “hardware ethernet”
requires the MAC address of the board. This is found printed on the board, or use the
'diag' command in RedBoot to find the current MAC address.
deny unknown-clients;
ddns-update-style ad-hoc;
allow bootp;
subnet 192.168.0.0 netmask 255.255.255.0 {
}
group {
option broadcast-address 192.168.0.255;
option domain-name "xscale-iop.net";
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
host myiop.xscale.net {
# put MAC address here and replace x's
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.0.100;
option host-name "myiop";
option root-path "/exports/fs.xscale";
}
}

Start the server by running:


# /sbin/service dhcpd start

When using BOOTP or DHCP to assign dynamic IP addresses, use the 'fconfig'
command in RedBoot to configure the board to query for an IP address. See the
RedBoot User's Manual for more detailed information:
http://ecos.sourceware.org/docs-latest/redboot/configuring-the-redboot-environm
ent.html
3.6 TFTP Server Setup
This example is based on a Fedora system. Other systems provides similar mechanisms
for this. Consult the distributions documentation for further information.
Enable the TFTP server:
# /sbin/chkconfig tftp on

Edit the “/etc/xinetd.d/tftp” file and ensure that the following settings are present.
These tend to be default and not necessary to modify anything:
disable = no
user = root
server_args= -s /tftpboot

Create the TFTP Root directory when it does not exist.


# mkdir /tftpboot

Restart the xinetd daemon:


# /sbin/service xinetd restart

Intel® I/O Processors


Linux Installation Application Note February 2008
8 Order Number: 319305-001US
Linux Installation

4.0 Target RedBoot Setup


Connect the Ethernet port of the I/O Processor board to the host secondary Ethernet
controller (192.168.0.0 subnet) via a crossover cable or connect both to a Ethernet
hub. Connect the serial port of the board to the serial port of the host. Running
“minicom” allows viewing of the RedBoot console output from the board.
Ensure that the latest RedBoot is installed on the board. At the time of writing the
'version' command for the latest RedBoot reports:
RedBoot> version

RedBoot(tm) bootstrap and debug environment [ROMRAM]


Intel IOP Redboot release
version 2.3-IOP-RedBoot
built 10:29:44, Mar 19 2007

Platform: IQ8134x MC (XScale) Core1, DDR2-533


IF_PCIX: 1, PCIe(x8) RC, PCI-X CR: PCIX-100
C1-step, IB Speed: 400MHz, Core Speed: 1200MHz
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Copyright (C) 2003, 2004, 2005, 2006 eCosCentric Limited

RAM: 0x00000000-0x80000000, [0x00050f58-0x7ffd1000] available


FLASH: 0xf0000000 - 0xf2000000, 256 blocks of 0x00020000 bytes each.

The latest RedBoot and Sources are available from the SourceForge site for Intel
XScale® technology:
https://sourceforge.net/projects/xscaleiop/
When the board does not have a valid RedBoot image installed, consult the board
documentation for instructions on flashing the board. Documentation for each of the
boards is available in the 'Technical Documents' section of each processor website.
IOP321: http://www.intel.com/design/iio/docs/iop321.htm
IOP331: http://www.intel.com/design/iio/docs/iop331.htm
IOP332: http://www.intel.com/design/iio/docs/iop332.htm
IOP333: http://www.intel.com/design/iio/docs/iop333.htm
IOP341/2: http://www.intel.com/design/iio/docs/iop341_42.htm
IOP348: http://www.intel.com/design/iio/docs/iop348.htm
Assuming the board has a bootable RedBoot image installed, an update is done via
commands from RedBoot. Parameters in the instructions below varies from board to
board. Table 3 gives the values for each of the boards.
Table 3. RedBoot Parameters Per Board
{board} {img_len} {flash-addr-ro {ram-addr-ro {flash-addr-ra {ram-addr-ra
m-img} m-img} m-img} m-img}
IQ8134x 0x40000 0xf0000000 0x100000 0xf0040000 0x20000
IQ8033x 0x40000 0xc0000000 0x100000 0xc0040000 0x20000
IQ80321 0x40000 0xf0000000 0x100000 0xf0040000 0x20000
ep80219 0x40000 0xf0000000 0x100000 0xf0040000 0x20000
IQ31244 0x40000 0xf0000000 0x100000 0xf0040000 0x20000

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 9
Linux Installation

Execute these commands to update RedBoot.


Warning: A mistyped command results in an unbootable board. Please ensure having JTAG
access to reflash the board when necessary. Be mindful of the line wraps below.
RedBoot> load -m tftp redboot-ram.srec

RedBoot> fis unlock -f {flash-addr-ram-img} -l {img_len}

RedBoot> fis create RedBoot[backup] -f {flash-addr-ram-img}


-b {ram-addr-ram-img} -r {ram-addr-ram-img} -l {img_len}

RedBoot> fis lock -f {flash-addr-ram-img} -l {img_len}

RedBoot> fis load RedBoot[backup]

RedBoot> go

RedBoot> load -m tftp -b {ram-addr-rom-img} redboot-rom.srec

RedBoot> fis unlock -f {flash-addr-rom-img} -l {img_len}

RedBoot> fis create RedBoot -f {flash-addr-rom-img}


-b {ram-addr-rom-img} -l {img_len} -s {img_len}

RedBoot> fis lock -f {flash-addr-rom-img} -l {img_len}

RedBoot> reset

Intel® I/O Processors


Linux Installation Application Note February 2008
10 Order Number: 319305-001US
Linux Installation

5.0 ARM* Cross Toolchain


Note: December 2007: At the time of writing the arm-2007q3-51 compiler from
CodeSourcery does not build a bootable kernel. The arm-2007q1-21 is known to work:
http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-
2007q1-21-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
A cross compiler is necessary to build the kernel on the IA host system. The compiler
provided by CodeSourcery is recommended. To obtain it go to the following website:
http://www.codesourcery.com/gnu_toolchains/arm/download.html
Select “ARM GNU/Linux” for the target platform and “IA32 GNU/Linux” for the Host
Platform.
Figure 1. GNU Cross Compiler Selection

Download the file and extract it to a location on the host system. The latest available at
the time of writing was the arm-2007q1-21 compiler. Be sure to note when a later
version is available and update environment accordingly. This guide assumes the
toolchain is unpacked to the /opt directory, in other words:
# cd /opt
# tar xjvf arm-2007q1-21-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 11
Linux Installation

6.0 Running the IOP Kernel


6.1 Download and Build
The next step is to build the kernel for the board. Two components are required:
• a base kernel from kernel.org.
• the IOP Kernel patches available from SourceForge.
At the time of writing the most recent kernel version available is 2.6.21.1-iop1. Where
the -iop version number reflects the number of releases made against the major
version of the kernel.
For example 2.6.18.6-iop4 is the fourth release of a 2.6.18 based IOP kernel, whereas
2.6.20-iop3 is the third release of the 2.6.20 kernel. When at all possible use the latest
kernel version available.
Bug fix releases are made to the latest available kernel and is only backported to earlier
kernels on a 'time available' basis.
The Linux kernel supports all the different IOP board types with three different
configuration commands:
# make ARCH=arm CROSS_COMPILE="arm-none-linux-gnueabi-" iop32x_defconfig
# make ARCH=arm CROSS_COMPILE="arm-none-linux-gnueabi-" iop33x_defconfig
# make ARCH=arm CROSS_COMPILE="arm-none-linux-gnueabi-" iop13xx_defconfig

Refer to Table 1 in the Introduction to determine what configuration command to use.


The following commands downloads, configures, and builds the latest kernel for the
IOP13xx platform. See section Building the -iop kernel for another architecture to
prepare an x86 kernel with the generic -iop enhancements.
# export PATH=$PATH:/opt/arm-2007q1/bin
# wget http://downloads.sourceforge.net/xscaleiop/patches-2.6.22.1-iop1.tar.gz
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
# tar xjvf linux-{kernel_version}.tar.bz2
# cd linux-{kernel_version}
# tar xzvf ../patches-2.6.22.1-iop1.tar.gz
# cp patches/series.xscale patches/series
# quilt push -a
# make ARCH=arm CROSS_COMPILE="arm-none-linux-gnueabi-" iop13xx_defconfig

Intel® I/O Processors


Linux Installation Application Note February 2008
12 Order Number: 319305-001US
Linux Installation

At this point, run 'menuconfig' to select additional drivers for the environment. To
install Debian to a SATA disk, build the controller driver into the kernel. For example the
31244 driver:
# make ARCH=arm menuconfig

Figure 2. Linux Kernel Configuration Menu

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 13
Linux Installation

On the Intel® 81348 I/O Processor is a built in SAS controller:


Figure 3. Support Local Bus Controller Selection

Now build the kernel:


# make zImage ARCH=arm CROSS_COMPILE="ccache arm-none-linux-gnueabi-"

…and copy it to the /tftpboot directory so the board downloads it:


# cp arch/arm/boot/zImage /tftpboot/zImage.iop13xx

Intel® I/O Processors


Linux Installation Application Note February 2008
14 Order Number: 319305-001US
Linux Installation

6.2 Launching the Kernel


With the kernel available in the /tftpboot directory it is launchable by executing the
following commands in RedBoot, see Table 4 for the values per board.
RedBoot> load -r -b {kernel-load-addr} zImage.iop13xx
RedBoot> exec {kernel-run-addr}

Table 4. RedBoot Values Per Board


{board} {kernel-load-add {kernel-run-addr {ramdisk-load-ad {ramdisk-run-ad
r} } dr} dr}
IQ8134x 0x01008000 0x01008000 0x00800000 0x00800000
IQ8033x 0x01008000 0x01008000 0x00800000 0x00800000
IQ80321 0x01008000 0xa1008000 0x00800000 0xa0800000
ep80219 0x01008000 0xa1008000 0x00800000 0xa0800000
IQ31244 0x01008000 0xa1008000 0x00800000 0xa0800000

Figure 4. RedBoot Bootstrap and Debug Environment

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 15
Linux Installation

7.0 Debian ARM* Installation


Debian is a popular Linux distribution and one of the few that supports ARM
architecture platforms. This guide describes how to launch the installer, further details
and instructions are obtained from the Debian ARM installation guide:
http://www.debian.org/releases/stable/arm/
Download the installation image:
# wget
http://ftp.us.debian.org/debian/dists/etch/main/installer-arm/current/images/iop32
x/netboot/initrd.gz

Copy it to the tftpboot directory:


# cp initrd.gz /tftpboot

In RedBoot download the initrd and launch the kernel as follows:


RedBoot> load -r -b {ramdisk-load-addr} initrd.gz
RedBoot> load -r -b {kernel-load-addr} zImage.iop13xx
RedBoot> exec {kernel-load-addr} -r {ramdisk-load-addr}-s 0x1000000 -c
"root=/dev/ram0 initrd={ramdisk-load-addr},16M console=ttyS0,115200"
{kernel-run-addr}

When everything works correctly, the following screen is shown:


Figure 5. Configure the Network

Intel® I/O Processors


Linux Installation Application Note February 2008
16 Order Number: 319305-001US
Linux Installation

Follow the instructions to set up the network and the ssh server. Then connect to the
board over ssh to complete the installation.
Be sure to select a disk and not an mtdblock device for the system disk:
Figure 6. Partition Menu

Once the installation is complete the system reboots. To launch the Debian
environment (assuming the system was installed to /dev/sda1):
RedBoot> load -r -b {kernel-load-addr} zImage.iop13xx
RedBoot> exec -c "root=/dev/sda1 console=ttyS0,115200" {kernel-run-addr}

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 17
Linux Installation

8.0 Kernel Changelog


The IOP kernel tracks the latest upstream kernel. Bug fixes and feature updates are
occasionally backported to older kernels. The following list is ordered by date of
release. Please consider the latest kernel over a backport since the latest features and
bug fixes have unintended side effects with an older kernel.
8.1 2.6.18-iop1 (10.20.2006)
• [feature] First combined IOP3xx and IOP13xx patch set, integrating an IOP3xx
refactoring effort.
• [feature] Per board type defconfigs reduced to IOP32x_defconfig,
IOP33x_defconfig, and IOP13xx_defconfig.
• [feature] First release of the raid5 acceleration patches.
8.2 2.6.18-iop2 (10.30.2006)
• [feature] TPMI platform devices added.
8.3 2.6.18-iop3.1 (11.1.2006)
• [bug fix] i2c channel allocation collision with the SAS controller.
• [feature] MSI support.
8.4 2.6.19-iop1 (12.8.2006)
• [feature] First introduction of the async_tx API.
• [feature] PBI compact Flash driver re-added to the patch set.
• [bug fix] IOP3xx GPIO register definitions.
• [bug fix] MSI implementation updates to keep pace with mainline.
8.5 2.6.20-iop1 (2.9.2007)
• [bug fix] NET_DMA (I/OAT) using IOP DMA engines.
• [bug fix] async_tx corrupted XORs when specifying > MAX_XOR_BLOCK sources in
the synchronous case.
• [feature] “cp6 lazy enable” feature to unify the time implementations across
IOP13xx and IOP3xx.
• [feature] kernel DMA memcpy from original -iop patch forward ported to be
compatible with async_tx.

Intel® I/O Processors


Linux Installation Application Note February 2008
18 Order Number: 319305-001US
Linux Installation

8.6 2.6.20-iop2 (2.23.2007)


• [feature] HotPlug support for the 31244 SATA driver (sata_vsc).
• [bug fix] auto detect the internal bus speed for IOP34x processors that are not
running at 400Mhz.
• [feature] page zeroing operations off-loaded to AAU/ADMA engines.
• [feature] IOP13xx and IOP3xx watchdog drivers.
• [feature] uncached memory converted to 'shared device' rather than strongly
ordered.
8.7 2.6.20-iop3 (3.19.2007)
• [feature] SCDL SAS Driver.
• [feature] DMA copy to user implementation using async_tx, allows performance
parity with older IOP kernels.
• [bug fix] IOP13xx watchdog driver fix.
• [bug fix] IQ80219 support.
• [feature] ioremap to take MT_* parameters.
8.8 2.6.18.8-iop4 (backport) (5.7.2007)
• [feature] raid acceleration patches from 2.6.21-iop1.
• [feature] IMU patches from 2.6.21-iop1.
• [bug fix] bug fixes from 2.6.21-iop1.
• [bug fix] redboot partition table handling.
• [note] NET_DMA is not available in this release due to a limitation in the 2.6.18
implementation of get_user_pages for ARM.
8.9 2.6.20.11-iop4 (backport) (5.7.2007)
• [feature] raid acceleration patches from 2.6.21-iop1.
• [feature] IMU patches from 2.6.21-iop1.
• [bug fix] bug fixes from 2.6.21-iop1.

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 19
Linux Installation

8.10 2.6.21-iop1 (5.7.2007)


• [feature] async_tx fast path channel allocation optimizations.
• [feature] multi-client channel management implementation for the core dmaengine
code.
• [feature] unified IOP watchdog driver.
• [bug fix] address a race condition in the raid5 off-loaded read path. Identified by
Neil Brown during code review.
• [bug fix] IOP13xx: fix i/o address translation.
• [bug fix] fix handling of SVC mode undefined instructions.
• [bug fix] the strongly ordered memory to shared device memory conversion was
not implemented for 4K mappings. This feature is dropped for now until the ARM
changes in 2.6.22 are comprehended.
• [bug fix] MSI implementation updated with open source code review suggestions.
8.11 2.6.20.15-iop5 (backport) (7.18.2007)
• [feature] stripe-queue: from 2.6.22.1-iop1.
• [feature] raid456 writeback caching: from 2.6.22.1-iop1.
• [feature] IMU-SCSI performance tweaks: from 2.6.22.1-iop1.
• [feature] Intel® I/OAT performance tweaks: from 2.6.22.1-iop1.
• [feature] SCDL SAS Driver fixes to 'can_queue': from 2.6.22.1-iop1.
8.12 2.6.22.1-iop1 (7.18.2007)
• [feature] stripe-queue: evolutionary change to the raid456 queuing model, 66%
sequential write performance improvement as reported by tiobench.
• [feature] raid456 writeback caching (experimental): enables writes to a raid456
array to be buffered and coalesced in the stripe-cache. Provides a 50%
performance increase while operating in the cache.
• [feature] IMU-SCSI performance tweaks.
• [feature] Intel ® I/OAT performance tweaks: updates for the ioatdma driver and
the NET_DMA implementation.
• [feature] SCDL SAS Driver fixes to 'can_queue'. Increases the maximum number of
in-flight transactions.
8.13 2.6.23.10-iop1 (12.14.2007)
• [feature] SCDL SAS Driver updated to 2.1.18 with abort handling fixes.
• [feature] SCDL SAS Driver CPU utilization improvement.
• [bug fix] SCDL SAS Driver “failed to get BLP” error fixed, removed the
dma_free_coherent workqueue.
• [bug fix] RAID acceleration fix clearing of biofill operation flags.
• [bug fix] RAID acceleration fix unending write sequence.
• [bug fix] IOP32x/IOP33x DMA-copy-to-user data corruption. Note: DMA-memcpy
performance is lower than previous releases.
• [bug fix] Errant gcc-4.2.3 null pointer check fix for prefetch() macro.

Intel® I/O Processors


Linux Installation Application Note February 2008
20 Order Number: 319305-001US
Linux Installation

9.0 Usage Notes


9.1 IOP13xx: PCI MMAP Capabilities
Available on 2.6.19-iop1 and later kernels
1. Find the resource file for the device in sysfs. For example here is the location of the
resource file for an IQ81340SC plugged into a IQ81340MC:
/sys/bus/pci/devices/0000:01:00.0/resource4.
2. Call open() and mmap() on the file, be sure to specify at least 16MB for the size
otherwise the code does not make the supersection mapping. Reference the code in
devmem2.c for an example. Replace “/dev/mem” with the desired resource file,
and specify 16MB as the MAP_SIZE:
http://free-electrons.com/pub/mirror/devmem2.c
9.2 PBI Compact Flash Driver
# fdisk /dev/cfa
# mkfs.ext2 /dev/cfa1
# mount /dev/cfa1 /mnt/tmp -o sync,dirsync

Note: The use of “sync” and “dirsync” are used to work around an observed file system
corruption issue with the driver.
9.3 IOP13xx: Device Selection Parameters
For debugging, and in cases where an instance of Linux is running on both cores the
following kernel command line parameters are used to tell Linux which devices to
ignore and which to use.
iop13xx_init_i2c=0,1,2
iop13xx_init_uart=0,1
iop13xx_init_atu=x,e

By default Linux uses UART 1, i2c channels 1 and 2, and initializes the PCI-X bus via
ATUX. Kernels built for IQ81340mc also initializes the PCI-E bus via the ATUE.
Example 1. Tell Linux to claim only I2C channels 0, 2, and only initialize ATUX.
RedBoot> exec -c "root=nfs console=ttyS0,115200 ip=bootp
iop13xx_init_i2c=2,0 iop13xx_init_atu=x" 0x01008000

9.4 Building the -iop Kernel for Another Architecture


The -iop kernel patch-set includes patches that implement drivers and enhancements
generally applicable to other Linux capable platforms. Those patches include:
• SCDL based iioc34x SAS driver.
• MD RAID Acceleration via the ASYNC_TX API (accepted into the 2.6.23 release
cycle).
• Intel® I/OAT Performance tweaks (accepted into the 2.6.23 release cycle).
• MD RAID queuing model updates for improved sequential write performance.

Intel® I/O Processors


February 2008 Linux Installation Application Note
Order Number: 319305-001US 21
Linux Installation

However, there are some performance enhancements that are specific to an IOP
platform and do not build or operate correctly on another platform. For this reason a
'series.x86' file is included in the release (starting with 2.6.22-iop1 and 2.6.20.15-iop5)
to exclude the patches that must not be applied when build for an Intel ® Architecture
platform.
To build an -iop kernel for an IA platform perform the following commands:
1. Remove any applied patches.
# quilt pop -a

2. Save the old 'series' file.


# cp patches/series patches/series.save

3. Install the 'x86' series file.


# cp -f patches/series.x86 patches/series

4. Review the series file to see what patches is applied.


5. Apply the patches.
# quilt push -a

6. Clean the tree of the build from the previous architecture.


# make mrproper

7. Configure and build the kernel.

Intel® I/O Processors


Linux Installation Application Note February 2008
22 Order Number: 319305-001US

You might also like