\documentclass[a4paper,twocolumn]{article}

\usepackage{abstract}
\usepackage{xspace}
\usepackage{amssymb}
\usepackage{latexsym}
\usepackage{tabularx}
\usepackage[T1]{fontenc}
\usepackage{calc}
\usepackage{listings}
\usepackage{color}
\usepackage{url}

\title{Device trees everywhere}

\author{David Gibson \texttt{<{dwg}{@}{au1.ibm.com}>}\\
  Benjamin Herrenschmidt \texttt{<{benh}{@}{kernel.crashing.org}>}\\
  \emph{OzLabs, IBM Linux Technology Center}}

\newcommand{\R}{\textsuperscript{\textregistered}\xspace}
\newcommand{\tm}{\textsuperscript{\texttrademark}\xspace}
\newcommand{\tge}{$\geqslant$}
%\newcommand{\ditto}{\textquotedbl\xspace}

\newcommand{\fixme}[1]{$\bigstar$\emph{\textbf{\large #1}}$\bigstar$\xspace}

\newcommand{\ppc}{\mbox{PowerPC}\xspace}
\newcommand{\of}{Open Firmware\xspace}
\newcommand{\benh}{Ben Herrenschmidt\xspace}
\newcommand{\kexec}{\texttt{kexec()}\xspace}
\newcommand{\dtbeginnode}{\texttt{OF\_DT\_BEGIN\_NODE\xspace}}
\newcommand{\dtendnode}{\texttt{OF\_DT\_END\_NODE\xspace}}
\newcommand{\dtprop}{\texttt{OF\_DT\_PROP\xspace}}
\newcommand{\dtend}{\texttt{OF\_DT\_END\xspace}}
\newcommand{\dtc}{\texttt{dtc}\xspace}
\newcommand{\phandle}{\texttt{linux,phandle}\xspace}
\begin{document}

\maketitle

\begin{abstract}
  We present a method for booting a \ppc{}\R Linux\R kernel on an
  embedded machine.  To do this, we supply the kernel with a compact
  flattened-tree representation of the system's hardware based on the
  device tree supplied by Open Firmware on IBM\R servers and Apple\R
  Power Macintosh\R machines.

  The ``blob'' representing the device tree can be created using \dtc
  --- the Device Tree Compiler --- that turns a simple text
  representation of the tree into the compact representation used by
  the kernel.  The compiler can produce either a binary ``blob'' or an
  assembler file ready to be built into a firmware or bootwrapper
  image.

  This flattened-tree approach is now the only supported method of
  booting a \texttt{ppc64} kernel without Open Firmware, and we plan
  to make it the only supported method for all \texttt{powerpc}
  kernels in the future.
\end{abstract}

\section{Introduction}

\subsection{OF and the device tree}

Historically, ``everyday'' \ppc machines have booted with the help of
\of (OF), a firmware environment defined by IEEE1275 \cite{IEEE1275}.
Among other boot-time services, OF maintains a device tree that
describes all of the system's hardware devices and how they're
connected.  During boot, before taking control of memory management,
the Linux kernel uses OF calls to scan the device tree and transfer it
to an internal representation that is used at run time to look up
various device information.

The device tree consists of nodes representing devices or
buses\footnote{Well, mostly.  There are a few special exceptions.}.
Each node contains \emph{properties}, name--value pairs that give
information about the device.  The values are arbitrary byte strings,
and for some properties, they contain tables or other structured
information.

\subsection{The bad old days}

Embedded systems, by contrast, usually have a minimal firmware that
might supply a few vital system parameters (size of RAM and the like),
but nothing as detailed or complete as the OF device tree.  This has
meant that the various 32-bit \ppc embedded ports have required a
variety of hacks spread across the kernel to deal with the lack of
device tree.  These vary from specialised boot wrappers to parse
parameters (which are at least reasonably localised) to
CONFIG-dependent hacks in drivers to override normal probe logic with
hardcoded addresses for a particular board.  As well as being ugly of
itself, such CONFIG-dependent hacks make it hard to build a single
kernel image that supports multiple embedded machines.

Until relatively recently, the only 64-bit \ppc machines without OF
were legacy (pre-POWER5\R) iSeries\R machines.  iSeries machines often
only have virtual IO devices, which makes it quite simple to work
around the lack of a device tree.  Even so, the lack means the iSeries
boot sequence must be quite different from the pSeries or Macintosh,
which is not ideal.

The device tree also presents a problem for implementing \kexec.  When
the kernel boots, it takes over full control of the system from OF,
even re-using OF's memory.  So, when \kexec comes to boot another
kernel, OF is no longer around for the second kernel to query.

\section{The Flattened Tree}

In May 2005 \benh implemented a new approach to handling the device
tree that addresses all these problems.  When booting on OF systems,
the first thing the kernel runs is a small piece of code in
\texttt{prom\_init.c}, which executes in the context of OF.  This code
walks the device tree using OF calls, and transcribes it into a
compact, flattened format.  The resulting device tree ``blob'' is then
passed to the kernel proper, which eventually unflattens the tree into
its runtime form.  This blob is the only data communicated between the
\texttt{prom\_init.c} bootstrap and the rest of the kernel.

When OF isn't available, either because the machine doesn't have it at
all or because \kexec has been used, the kernel instead starts
directly from the entry point taking a flattened device tree.  The
device tree blob must be passed in from outside, rather than generated
by part of the kernel from OF.  For \kexec, the userland
\texttt{kexec} tools build the blob from the runtime device tree
before invoking the new kernel.  For embedded systems the blob can
come either from the embedded bootloader, or from a specialised
version of the \texttt{zImage} wrapper for the system in question.

\subsection{Properties of the flattened tree}

The flattened tree format should be easy to handle, both for the
kernel that parses it and the bootloader that generates it.  In
particular, the following properties are desirable:

\begin{itemize}
\item \emph{relocatable}: the bootloader or kernel should be able to
  move the blob around as a whole, without needing to parse or adjust
  its internals.  In practice that means we must not use pointers
  within the blob.
\item \emph{insert and delete}: sometimes the bootloader might want to
  make tweaks to the flattened tree, such as deleting or inserting a
  node (or whole subtree).  It should be possible to do this without
  having to effectively regenerate the whole flattened tree.  In
  practice this means limiting the use of internal offsets in the blob
  that need recalculation if a section is inserted or removed with
  \texttt{memmove()}.
\item \emph{compact}: embedded systems are frequently short of
  resources, particularly RAM and flash memory space.  Thus, the tree
  representation should be kept as small as conveniently possible.
\end{itemize}

\subsection{Format of the device tree blob}
\label{sec:format}

\begin{figure}[htb!]
  \centering
  \footnotesize
  \begin{tabular}{r|c|l}
    \multicolumn{1}{r}{\textbf{Offset}}& \multicolumn{1}{c}{\textbf{Contents}} \\\cline{2-2}
    \texttt{0x00} & \texttt{0xd00dfeed} & magic number \\\cline{2-2}
    \texttt{0x04} & \emph{totalsize} \\\cline{2-2}
    \texttt{0x08} & \emph{off\_struct} & \\\cline{2-2}
    \texttt{0x0C} & \emph{off\_strs} & \\\cline{2-2}
    \texttt{0x10} & \emph{off\_rsvmap} & \\\cline{2-2}
    \texttt{0x14} & \emph{version} \\\cline{2-2}
    \texttt{0x18} & \emph{last\_comp\_ver} & \\\cline{2-2}
    \texttt{0x1C} & \emph{boot\_cpu\_id} & \tge v2 only\\\cline{2-2}
    \texttt{0x20} & \emph{size\_strs} & \tge v3 only\\\cline{2-2}
    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
    \emph{off\_rsvmap} & \emph{address0} & memory reserve \\
    + \texttt{0x04} & ...& table \\\cline{2-2}
    + \texttt{0x08} & \emph{len0} & \\
    + \texttt{0x0C} & ...& \\\cline{2-2}
    \vdots & \multicolumn{1}{c|}{\vdots} & \\\cline{2-2}
    & \texttt{0x00000000}- & end marker\\
    & \texttt{00000000} & \\\cline{2-2}
    & \texttt{0x00000000}- & \\
    & \texttt{00000000} & \\\cline{2-2}
    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
    \emph{off\_strs} & \texttt{'n' 'a' 'm' 'e'} & strings block \\
    + \texttt{0x04} & \texttt{~0~ 'm' 'o' 'd'} & \\
    + \texttt{0x08} & \texttt{'e' 'l' ~0~ \makebox[\widthof{~~~}]{\textrm{...}}} & \\
    \vdots & \multicolumn{1}{c|}{\vdots} & \\\cline{2-2}
    \multicolumn{1}{r}{+ \emph{size\_strs}} \\
    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
    \emph{off\_struct} & \dtbeginnode & structure block \\\cline{2-2}
    + \texttt{0x04} & \texttt{'/' ~0~ ~0~ ~0~}  & root node\\\cline{2-2}
    + \texttt{0x08} & \dtprop & \\\cline{2-2}
    + \texttt{0x0C} & \texttt{0x00000005} & ``\texttt{model}''\\\cline{2-2}
    + \texttt{0x10} & \texttt{0x00000008} & \\\cline{2-2}
    + \texttt{0x14} & \texttt{'M' 'y' 'B' 'o'} & \\
    + \texttt{0x18} & \texttt{'a' 'r' 'd' ~0~} & \\\cline{2-2}
    \vdots & \multicolumn{1}{c|}{\vdots} & \\\cline{2-2}
    & \texttt{\dtendnode} \\\cline{2-2}
    & \texttt{\dtend} \\\cline{2-2}
    \multicolumn{1}{r}{\vdots} & \multicolumn{1}{c}{\vdots} & \\\cline{2-2}
    \multicolumn{1}{r}{\emph{totalsize}} \\
  \end{tabular}
  \caption{Device tree blob layout}
  \label{fig:blob-layout}
\end{figure}

The format for the blob we devised, was first described on the
\texttt{linuxppc64-dev} mailing list in \cite{noof1}.  The format has
since evolved through various revisions, and the current version is
included as part of the \dtc (see \S\ref{sec:dtc}) git tree,
\cite{dtcgit}.

Figure \ref{fig:blob-layout} shows the layout of the blob of data
containing the device tree.  It has three sections of variable size:
the \emph{memory reserve table}, the \emph{structure block} and the
\emph{strings block}.  A small header gives the blob's size and
version and the locations of the three sections, plus a handful of
vital parameters used during early boot.

The memory reserve map section gives a list of regions of memory that
the kernel must not use\footnote{Usually such ranges contain some data
structure initialised by the firmware that must be preserved by the
kernel.}.  The list is represented as a simple array of (address,
size) pairs of 64 bit values, terminated by a zero size entry.  The
strings block is similarly simple, consisting of a number of
null-terminated strings appended together, which are referenced from
the structure block as described below.

The structure block contains the device tree proper.  Each node is
introduced with a 32-bit \dtbeginnode tag, followed by the node's name
as a null-terminated string, padded to a 32-bit boundary.  Then
follows all of the properties of the node, each introduced with a
\dtprop tag, then all of the node's subnodes, each introduced with
their own \dtbeginnode tag.  The node ends with an \dtendnode tag, and
after the \dtendnode for the root node is an \dtend tag, indicating
the end of the whole tree\footnote{This is redundant, but included for
ease of parsing.}.  The structure block starts with the \dtbeginnode
introducing the description of the root node (named \texttt{/}).

Each property, after the \dtprop, has a 32-bit value giving an offset
from the beginning of the strings block at which the property name is
stored.  Because it's common for many nodes to have properties with
the same name, this approach can substantially reduce the total size
of the blob.  The name offset is followed by the length of the
property value (as a 32-bit value) and then the data itself padded to
a 32-bit boundary.

\subsection{Contents of the tree}
\label{sec:treecontents}

Having seen how to represent the device tree structure as a flattened
blob, what actually goes into the tree?  The short answer is ``the
same as an OF tree''.  On OF systems, the flattened tree is
transcribed directly from the OF device tree, so for simplicity we
also use OF conventions for the tree on other systems.

In many cases a flat tree can be simpler than a typical OF provided
device tree.  The flattened tree need only provide those nodes and
properties that the kernel actually requires; the flattened tree
generally need not include devices that the kernel can probe itself.
For example, an OF device tree would normally include nodes for each
PCI device on the system.  A flattened tree need only include nodes
for the PCI host bridges; the kernel will scan the buses thus
described to find the subsidiary devices.  The device tree can include
nodes for devices where the kernel needs extra information, though:
for example, for ISA devices on a subsidiary PCI/ISA bridge, or for
devices with unusual interrupt routing.

Where they exist, we follow the IEEE1275 bindings that specify how to
describe various buses in the device tree (for example,
\cite{IEEE1275-pci} describe how to represent PCI devices).  The
standard has not been updated for a long time, however, and lacks
bindings for many modern buses and devices.  In particular, embedded
specific devices such as the various System-on-Chip buses are not
covered.  We intend to create new bindings for such buses, in keeping
with the general conventions of IEEE1275 (a simple such binding for a
System-on-Chip bus was included in \cite{noof5} a revision of
\cite{noof1}).

One complication arises for representing ``phandles'' in the flattened
tree.  In OF, each node in the tree has an associated phandle, a
32-bit integer that uniquely identifies the node\footnote{In practice
usually implemented as a pointer or offset within OF memory.}.  This
handle is used by the various OF calls to query and traverse the tree.
Sometimes phandles are also used within the tree to refer to other
nodes in the tree.  For example, devices that produce interrupts
generally have an \texttt{interrupt-parent} property giving the
phandle of the interrupt controller that handles interrupts from this
device.  Parsing these and other interrupt related properties allows
the kernel to build a complete representation of the system's
interrupt tree, which can be quite different from the tree of bus
connections.

In the flattened tree, a node's phandle is represented by a special
\phandle property.  When the kernel generates a flattened tree from
OF, it adds a \phandle property to each node, containing the phandle
retrieved from OF.  When the tree is generated without OF, however,
only nodes that are actually referred to by phandle need to have this
property.

Another complication arises because nodes in an OF tree have two
names.  First they have the ``unit name'', which is how the node is
referred to in an OF path.  The unit name generally consists of a
device type followed by an \texttt{@} followed by a \emph{unit
address}.  For example \texttt{/memory@0} is the full path of a memory
node at address 0, \texttt{/ht@0,f2000000/pci@1} is the path of a PCI
bus node, which is under a HyperTransport\tm bus node.  The form of
the unit address is bus dependent, but is generally derived from the
node's \texttt{reg} property.  In addition, nodes have a property,
\texttt{name}, whose value is usually equal to the first path of the
unit name. For example, the nodes in the previous example would have
\texttt{name} properties equal to \texttt{memory} and \texttt{pci},
respectively.  To save space in the blob, the current version of the
flattened tree format only requires the unit names to be present.
When the kernel unflattens the tree, it automatically generates a
\texttt{name} property from the node's path name.

\section{The Device Tree Compiler}
\label{sec:dtc}

\begin{figure}[htb!]
  \centering
  \begin{lstlisting}[frame=single,basicstyle=\footnotesize\ttfamily,
    tabsize=3,numbers=left,xleftmargin=2em]
/memreserve/ 0x20000000-0x21FFFFFF;

/ {
	model = "MyBoard";
	compatible = "MyBoardFamily";
	#address-cells = <2>;
	#size-cells = <2>;

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;
		PowerPC,970@0 {
			device_type = "cpu";
			reg = <0>;
			clock-frequency = <5f5e1000>;
			timebase-frequency = <1FCA055>;
			linux,boot-cpu;
			i-cache-size = <10000>;
			d-cache-size = <8000>;
		};
	};

	memory@0 {
		device_type = "memory";
		memreg: reg = <00000000 00000000
		               00000000 20000000>;
	};

	mpic@0x3fffdd08400 {
		/* Interrupt controller */
		/* ... */
	};

	pci@40000000000000 {
		/* PCI host bridge */
		/* ... */
	};

	chosen {
		bootargs = "root=/dev/sda2";
		linux,platform = <00000600>;
		interrupt-controller =
			< &/mpic@0x3fffdd08400 >;
	};
};
\end{lstlisting}
  \caption{Example \dtc source}
  \label{fig:dts}
\end{figure}

As we've seen, the flattened device tree format provides a convenient
way of communicating device tree information to the kernel.  It's
simple for the kernel to parse, and simple for bootloaders to
manipulate.  On OF systems, it's easy to generate the flattened tree
by walking the OF maintained tree.  However, for embedded systems, the
flattened tree must be generated from scratch.

Embedded bootloaders are generally built for a particular board.  So,
it's usually possible to build the device tree blob at compile time
and include it in the bootloader image.  For minor revisions of the
board, the bootloader can contain code to make the necessary tweaks to
the tree before passing it to the booted kernel.

The device trees for embedded boards are usually quite simple, and
it's possible to hand construct the necessary blob by hand, but doing
so is tedious.  The ``device tree compiler'', \dtc{}\footnote{\dtc can
be obtained from \cite{dtcgit}.}, is designed to make creating device
tree blobs easier by converting a text representation of the tree
into the necessary blob.

\subsection{Input and output formats}

As well as the normal mode of compiling a device tree blob from text
source, \dtc can convert a device tree between a number of
representations.  It can take its input in one of three different
formats:
\begin{itemize}
\item source, the normal case.  The device tree is described in a text
  form, described in \S\ref{sec:dts}.
\item blob (\texttt{dtb}), the flattened tree format described in
  \S\ref{sec:format}.  This mode is useful for checking a pre-existing
  device tree blob.
\item filesystem (\texttt{fs}), input is a directory tree in the
  layout of \texttt{/proc/device-tree} (roughly, a directory for each
  node in the device tree, a file for each property).  This is useful
  for building a blob for the device tree in use by the currently
  running kernel.
\end{itemize}

In addition, \dtc can output the tree in one of three different
formats:
\begin{itemize}
\item blob (\texttt{dtb}), as in \S\ref{sec:format}.  The most
  straightforward use of \dtc is to compile from ``source'' to
  ``blob'' format.
\item source (\texttt{dts}), as in \S\ref{sec:dts}.  If used with blob
  input, this allows \dtc to act as a ``decompiler''.
\item assembler source (\texttt{asm}).  \dtc can produce an assembler
  file, which will assemble into a \texttt{.o} file containing the
  device tree blob, with symbols giving the beginning of the blob and
  its various subsections.  This can then be linked directly into a
  bootloader or firmware image.
\end{itemize}

For maximum applicability, \dtc can both read and write any of the
existing revisions of the blob format.  When reading, \dtc takes the
version from the blob header, and when writing it takes a command line
option specifying the desired version.  It automatically makes any
necessary adjustments to the tree that are necessary for the specified
version.  For example, formats before 0x10 require each node to have
an explicit \texttt{name} property.  When \dtc creates such a blob, it
will automatically generate \texttt{name} properties from the unit
names.

\subsection{Source format}
\label{sec:dts}

The ``source'' format for \dtc is a text description of the device
tree in a vaguely C-like form.  Figure \ref{fig:dts} shows an
example.  The file starts with \texttt{/memreserve/} directives, which
gives address ranges to add to the output blob's memory reserve table,
then the device tree proper is described.

Nodes of the tree are introduced with the node name, followed by a
\texttt{\{} ... \texttt{\};} block containing the node's properties
and subnodes.  Properties are given as just {\emph{name} \texttt{=}
  \emph{value}\texttt{;}}.  The property values can be given in any
of three forms:
\begin{itemize}
\item \emph{string} (for example, \texttt{"MyBoard"}).  The property
  value is the given string, including terminating NULL.  C-style
  escapes (\verb+\t+, \verb+\n+, \verb+\0+ and so forth) are allowed.
\item \emph{cells} (for example, \texttt{<0 8000 f0000000>}).  The
  property value is made up of a list of 32-bit ``cells'', each given
  as a hex value.
\item \emph{bytestring} (for example, \texttt{[1234abcdef]}).  The
  property value is given as a hex bytestring.
\end{itemize}

Cell properties can also contain \emph{references}.  Instead of a hex
number, the source can give an ampersand (\texttt{\&}) followed by the
full path to some node in the tree.  For example, in Figure
\ref{fig:dts}, the \texttt{/chosen} node has an
\texttt{interrupt-controller} property referring to the interrupt
controller described by the node \texttt{/mpic@0x3fffdd08400}.  In the
output tree, the value of the referenced node's phandle is included in
the property.  If that node doesn't have an explicit phandle property,
\dtc will automatically create a unique phandle for it.  This approach
makes it easy to create interrupt trees without having to explicitly
assign and remember phandles for the various interrupt controller
nodes.

The \dtc source can also include ``labels'', which are placed on a
particular node or property.  For example, Figure \ref{fig:dts} has a
label ``\texttt{memreg}'' on the \texttt{reg} property of the node
\texttt{/memory@0}.  When using assembler output, corresponding labels
in the output are generated, which will assemble into symbols
addressing the part of the blob with the node or property in question.
This is useful for the common case where an embedded board has an
essentially fixed device tree with a few variable properties, such as
the size of memory.  The bootloader for such a board can have a device
tree linked in, including a symbol referring to the right place in the
blob to update the parameter with the correct value determined at
runtime.

\subsection{Tree checking}

Between reading in the device tree and writing it out in the new
format, \dtc performs a number of checks on the tree:
\begin{itemize}
\item \emph{syntactic structure}:  \dtc checks that node and property
  names contain only allowed characters and meet length restrictions.
  It checks that a node does not have multiple properties or subnodes
  with the same name.
\item \emph{semantic structure}: In some cases, \dtc checks that
  properties whose contents are defined by convention have appropriate
  values.  For example, it checks that \texttt{reg} properties have a
  length that makes sense given the address forms specified by the
  \texttt{\#address-cells} and \texttt{\#size-cells} properties.  It
  checks that properties such as \texttt{interrupt-parent} contain a
  valid phandle.
\item \emph{Linux requirements}:  \dtc checks that the device tree
  contains those nodes and properties that are required by the Linux
  kernel to boot correctly.
\end{itemize}

These checks are useful to catch simple problems with the device tree,
rather than having to debug the results on an embedded kernel.  With
the blob input mode, it can also be used for diagnosing problems with
an existing blob.

\section{Future Work}

\subsection{Board ports}

The flattened device tree has always been the only supported way to
boot a \texttt{ppc64} kernel on an embedded system.  With the merge of
\texttt{ppc32} and \texttt{ppc64} code it has also become the only
supported way to boot any merged \texttt{powerpc} kernel, 32-bit or
64-bit.  In fact, the old \texttt{ppc} architecture exists mainly just
to support the old ppc32 embedded ports that have not been migrated
to the flattened device tree approach.  We plan to remove the
\texttt{ppc} architecture eventually, which will mean porting all the
various embedded boards to use the flattened device tree.

\subsection{\dtc features}

While it is already quite usable, there are a number of extra features
that \dtc could include to make creating device trees more convenient:
\begin{itemize}
\item \emph{better tree checking}: Although \dtc already performs a
  number of checks on the device tree, they are rather haphazard.  In
  many cases \dtc will give up after detecting a minor error early and
  won't pick up more interesting errors later on.  There is a
  \texttt{-f} parameter that forces \dtc to generate an output tree
  even if there are errors.  At present, this needs to be used more
  often than one might hope, because \dtc is bad at deciding which
  errors should really be fatal, and which rate mere warnings.
\item \emph{binary include}: Occasionally, it is useful for the device
  tree to incorporate as a property a block of binary data for some
  board-specific purpose.  For example, many of Apple's device trees
  incorporate bytecode drivers for certain platform devices.  \dtc's
  source format ought to allow this by letting a property's value be
  read directly from a binary file.
\item \emph{macros}: it might be useful for \dtc to implement some
  sort of macros so that a tree containing a number of similar devices
  (for example, multiple identical ethernet controllers or PCI buses)
  can be written more quickly.  At present, this can be accomplished
  in part by running the source file through CPP before compiling with
  \dtc.  It's not clear whether ``native'' support for macros would be
  more useful.
\end{itemize}

\bibliographystyle{amsplain}
\bibliography{dtc-paper}

\section*{About the authors}

David Gibson has been a member of the IBM Linux Technology Center,
working from Canberra, Australia, since 2001.  Recently he has worked
on Linux hugepage support and performance counter support for ppc64,
as well as the device tree compiler.  In the past, he has worked on
bringup for various ppc and ppc64 embedded systems, the orinoco
wireless driver, ramfs, and a userspace checkpointing system
(\texttt{esky}).

Benjamin Herrenschmidt was a MacOS developer for about 10 years, but
ultimately saw the light and installed Linux on his Apple PowerPC
machine.  After writing a bootloader, BootX, for it in 1998, he
started contributing to the PowerPC Linux port in various areas,
mostly around the support for Apple machines. He became official
PowerMac maintainer in 2001. In 2003, he joined the IBM Linux
Technology Center in Canberra, Australia, where he ported the 64 bit
PowerPC kernel to Apple G5 machines and the Maple embedded board,
among others things.  He's a member of the ppc64 development ``team''
and one of his current goals is to make the integration of embedded
platforms smoother and more maintainable than in the 32-bit PowerPC
kernel.

\section*{Legal Statement}

This work represents the view of the author and does not necessarily
represent the view of IBM.

IBM, \ppc, \ppc Architecture, POWER5, pSeries and iSeries are
trademarks or registered trademarks of International Business Machines
Corporation in the United States and/or other countries.

Apple and Power Macintosh are a registered trademarks of Apple
Computer Inc. in the United States, other countries, or both.

Linux is a registered trademark of Linus Torvalds.

Other company, product, and service names may be trademarks or service
marks of others.

\end{document}
