On 21.04.2009 23:45, [email protected] wrote: > Author: stepan > Date: 2009-04-21 23:45:11 +0200 (Tue, 21 Apr 2009) > New Revision: 4155 > > Added: > trunk/coreboot-v2/documentation/codeflow.svg > trunk/coreboot-v2/documentation/hypertransport.svg > Removed: > trunk/coreboot-v2/documentation/codeflow.eps > trunk/coreboot-v2/documentation/hypertransport.eps > Modified: > trunk/coreboot-v2/documentation/LinuxBIOS-AMD64.tex > trunk/coreboot-v2/documentation/Makefile > Log: > Update to this very old document > > Signed-off-by: Stefan Reinauer <[email protected]> > Acked-by: Stefan Reinauer <[email protected]> >
Thanks for updating this! I reviewed the commit and have a few minor comments. Would you mind addressing them? Regards, Carl-Daniel > Modified: trunk/coreboot-v2/documentation/LinuxBIOS-AMD64.tex > =================================================================== > --- trunk/coreboot-v2/documentation/LinuxBIOS-AMD64.tex 2009-04-21 > 20:34:36 UTC (rev 4154) > +++ trunk/coreboot-v2/documentation/LinuxBIOS-AMD64.tex 2009-04-21 > 21:45:11 UTC (rev 4155) > @@ -1,6 +1,6 @@ > % > % This document is released under the GPL > -% Initially written by Stefan Reinauer, <[email protected]> > +% Initially written by Stefan Reinauer, <[email protected]> > % > > \documentclass[titlepage,12pt]{article} > @@ -18,10 +18,10 @@ > colorlinks=false, > % pdfpagemode=None, % PDF-Viewer starts without TOC > % pdfstartview=FitH, > - pdftitle={LinuxBIOS on AMD64}, > + pdftitle={coreboot on AMD64}, > pdfauthor={Stefan Reinauer}, > - pdfsubject={LinuxBIOS configuration and build process}, > - pdfkeywords={LinuxBIOS, Opteron, AMD64, Athlon64, Build} > + pdfsubject={coreboot configuration and build process}, > + pdfkeywords={coreboot, Opteron, AMD64, configuration, Build} > } > > > @@ -30,9 +30,9 @@ > > \setlength{\parindent}{0pt} > > -\title{LinuxBIOS on AMD64} > -\author{Stefan Reinauer $<[email protected]$>$} > -\date{June 2nd, 2004} > +\title{coreboot on AMD64} > +\author{Stefan Reinauer $<[email protected]$>$} > +\date{April 19th, 2009} > > \begin{document} > > @@ -50,12 +50,12 @@ > > \section{Abstract} > > -This document targets porting LinuxBIOS to new mainboards and creating > -custom firmware images using LinuxBIOS. It describes how to build > -LinuxBIOS images for the AMD64 platform, including hypertransport > +This document targets porting coreboot to new mainboards and creating > +custom firmware images using coreboot. It describes how to build > +coreboot images for the AMD64 platform, including hypertransport > configuration and pertinent utilities. If you are missing information or > find errors in the following descriptions, contact > -\href{mailto:[email protected]}{\textit{stefan Reinauer > $<[email protected]$>$}} > +\href{mailto:[email protected]}{\textit{stefan Reinauer > $<[email protected]$>$}} > > > % > @@ -64,6 +64,7 @@ > > \section{Changes} > \begin{itemize} > + \item 2009/04/19 replace LinuxBIOS with coreboot > \item 2004/06/02 url and language fixes from Ken Fuchs > $<[email protected]$>$ > \item 2004/02/10 acpi and option rom updates > \item 2003/11/18 initial release > @@ -72,22 +73,22 @@ > > > % > -% 3 What is LinuxBIOS > +% 3 What is coreboot > % > > -\section{What is LinuxBIOS?} > +\section{What is coreboot?} > > -LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and > -other machines with a Linux kernel that can boot Linux from a cold > -start. The startup code of an average LinuxBIOS port is about 500 lines > -of assembly and 5000 lines of C. It executes 16 instructions to get into > -32bit mode and then performs DRAM and other hardware initializations > +coreboot aims to replace the normal BIOS found on x86, AMD64, PPC, > +Alpha, and other machines with a Linux kernel that can boot Linux from a cold > +start. The startup code of an average coreboot port is about 500 lines of > +assembly and 5000 lines of C. It executes 16 instructions to get into 32bit > +protected mode and then performs DRAM and other hardware initializations > required before Linux can take over. > > The projects primary motivation initially was maintenance of large > clusters. Not surprisingly interest and contributions have come from > people with varying backgrounds. Nowadays a large and growing number of > -Systems can be booted with LinuxBIOS, including embedded systems, > +Systems can be booted with coreboot, including embedded systems, > Desktop PCs and Servers. > > % > @@ -95,7 +96,7 @@ > % > > \section{Build Requirements} > -To build LinuxBIOS for AMD64 from the sources you need a recent Linux > +To build coreboot for AMD64 from the sources you need a recent Linux > system for x86 or AMD64. SUSE Linux 8.2 or 9.0 are known to work fine. > The following toolchain is recommended: > > @@ -116,108 +117,100 @@ > > \section{Getting the Sources} > > -The latest LinuxBIOS sources are available via CVS. The CVS repository > -is maintained at SourceForge.net (the project name is \emph{FreeBIOS}). > -First you should create a directory for your LinuxBIOS trees: > +The latest coreboot sources are available via subversion. The subversion > +repository is maintained at SourceForge.net (the project name is > +\emph{FreeBIOS}). First you should create a directory for your > +coreboot trees: > > { \small > \begin{verbatim} > -$ mkdir linuxbios > -$ cd linuxbios > +$ mkdir coreboot > +$ cd coreboot > \end{verbatim} > } > > -You can get the entire source tree via CVS: > +You can get the entire source tree via SVN: > > { \small > \begin{verbatim} > -$ cvs -d:pserver:[email protected]:/cvsroot/freebios login > +$ svn co svn://coreboot.org/repos/trunk/coreboot-v2 > \end{verbatim} > } > > -Hit return when you are asked for a password. Then checkout (or update) > -the freebios source tree as follows: > - > -{ \small > -\begin{verbatim} > -$ cvs -z3 -d:pserver:[email protected]:/cvsroot/freebios co > freebios2 > -\end{verbatim} > -} > - > Once the source tree is checked out, it can be updated with: > > { \small > \begin{verbatim} > -% cvs update -Pd > +% svn update > \end{verbatim} > } > > -Due to recent problems with SourceForge's CVS infrastructure we set up a > -snapshot site that keeps hourly source trees of the last four days. It > -is available at \url{http://snapshots.linuxbios.org/}. > -Due to major structural enhancements to \hbox{LinuxBIOS}, AMD64 support > -is only available in the \texttt{freebios2} tree. This tree reflects (as > -of November 2003) LinuxBIOS version 1.1.5 and will lead to LinuxBIOS 2.0 > +For the case your corporate firewall blocks port 3690 (subversion) we set up > a > +snapshot site that keeps the last few hundred source code revisions. It > +is available at \url{http://qa.coreboot.org/}. > +Due to major structural enhancements to \hbox{coreboot}, AMD64 support > +is only available in the \texttt{coreboot-v2} tree. This tree reflects (as > +of November 2003) coreboot version 1.1.5 and will lead to coreboot 2.0 > when finished. Most x86 hardware is currently only supported by the > -LinuxBIOS 1.0 tree. > +coreboot 1.0 tree. > > % > -% 6 LinuxBIOS configuration overview > +% 6 coreboot configuration overview > % > > -\section{LinuxBIOS configuration overview} > -To support a large variety of existing hardware LinuxBIOS allows for a > +\section{coreboot configuration overview} > +To support a large variety of existing hardware coreboot allows for a > lot of configuration options that can be tweaked in several ways: > > \begin{itemize} > \item > Firmware image specific configuration options can be set in the image > configuration file which is usually found in > -\texttt{freebios2/targets/$<$vendor$>$/$<$mainboard$>$/}. Such > +\texttt{coreboot-v2/targets/$<$vendor$>$/$<$mainboard$>$/}. Such > options are the default amount of output verbosity during bootup, image > size, use of fallback mechanisms, firmware image size and payloads > (Linux Kernel, Bootloader...) The default configuration file name is > -\texttt{Config.lb}, but LinuxBIOS allows multiple configurations to > +\texttt{Config.lb}, but coreboot allows multiple configurations to > reside in that directory. > > \item Mainboard specific configuration options can be set in the > mainboard configuration file placed in > -\texttt{freebios2/src/mainboard/$<$vendor$>$/$<$mainboard$>$}. The > +\texttt{coreboot-v2/src/mainboard/$<$vendor$>$/$<$mainboard$>$}. The > mainboard configuration file is always called \texttt{Config.lb}. It > contains information on the onboard components of the mainboard like > CPU type, northbridge, southbridge, hypertransport configuration and > SuperIO configuration. This configuration file also allows to include > -addon code to hook into the LinuxBIOS initialization mechanism at > +addon code to hook into the coreboot initialization mechanism at > basically any point. > > \end{itemize} > > This document describes different approaches of changing and configuring the > -LinuxBIOS source tree when building for AMD64. > +coreboot source tree when building for AMD64. > > % > -% 7 Building LinuxBIOS > +% 7 Building coreboot > % > > -\section{Building LinuxBIOS} > -One of the design goals for building LinuxBIOS was to keep object files > +\section{Building coreboot} > +One of the design goals for building coreboot was to keep object files > out of the source tree in a separate place. This is mandatory for > -building parallel LinuxBIOS images for several distinct mainboards > -and/or platforms. Therefore building LinuxBIOS consists of two steps: > +building parallel coreboot images for several distinct mainboards > +and/or platforms. Therefore building coreboot consists of two steps: > \begin{itemize} > \item > creating a build tree which holds all files automatically created by the > configuration utility and the object files > \item > -compiling the LinuxBIOS code and creating a flashable firmware image. > +compiling the coreboot code and creating a flashable firmware image. > \end{itemize} > > The first of these two steps is accomplished by the \texttt{buildtarget} > -script found in \texttt{freebios2/targets/}. To build LinuxBIOS for > +script found in \texttt{coreboot-v2/targets/}. To build coreboot for > instance for the AMD Solo Athlon64 mainboard enter: > > \begin{verbatim} > -% cd freebios2/targets > +% cd coreboot-v2/targets > % ./buildtarget amd/solo > \end{verbatim} > > @@ -225,23 +218,23 @@ > components needed for this build. The directory name is defined in the > firmware image specific configuration file. In the case of AMD's Solo > mainboard the default directory resides in > -\texttt{freebios2/targets/amd/solo/solo}. To build the LinuxBIOS image, do > +\texttt{coreboot-v2/targets/amd/solo/solo}. To build the coreboot image, do > > \begin{verbatim} > % cd amd/solo/solo > % make > \end{verbatim} > > -The LinuxBIOS image filename is specified in the firmware image specific > +The coreboot image filename is specified in the firmware image specific > configuration file. The default filename for AMD's Solo mainboard is > \texttt{solo.rom}. > > % > -% 8 Programming LinuxBIOS to flash memory > +% 8 Programming coreboot to flash memory > % > > -\section{Programming LinuxBIOS to flash memory} > -The image resulting from a LinuxBIOS build can be directly programmed to > +\section{Programming coreboot to flash memory} > +The image resulting from a coreboot build can be directly programmed to > a flash device, either using a hardware flash programmer or by using the > Linux flash driver devbios or mtd. This document assumes that you use a > hardware flash programmer. If you are interested in doing in-system > @@ -255,15 +248,15 @@ > \newpage > > % > -% 9 LinuxBIOS configuration > +% 9 coreboot configuration > % > > -\section{LinuxBIOS configuration} > -The following chapters will cope with configuring LinuxBIOS. All > +\section{coreboot configuration} > +The following chapters will cope with configuring coreboot. All > configuration files share some basic rules > \begin{itemize} > \item > -The default configuration file name in LinuxBIOS is \texttt{Config.lb}. > +The default configuration file name in coreboot is \texttt{Config.lb}. > \item > All variables used in a configuration file have to be declared in this > file with \texttt{uses VARNAME} before usage. > @@ -271,8 +264,8 @@ > Comments can be added on a new line by using the comment identifier > \texttt{\#} at the beginning of the line. > \item > -LinuxBIOS distinguishes between statements and options. Statements cause > -the LinuxBIOS configuration mechanism to act, whereas options set > +coreboot distinguishes between statements and options. Statements cause > +the coreboot configuration mechanism to act, whereas options set > variables that are used by the build scripts or source code. > \item > Default configuration values can be set in the mainboard configuration > @@ -280,7 +273,7 @@ > \item > Option overrides to the default configuration can only be specified in > the build target configuration file > -\texttt{freebios2/targets/$<$vendor$>$/$<$mainboard$>$/Config.lb} > +\texttt{coreboot-v2/targets/$<$vendor$>$/$<$mainboard$>$/Config.lb} > (keyword option) > \end{itemize} > > @@ -297,8 +290,8 @@ > \end{verbatim} > > \textbf{NOTE:} Only configuration variables known to the configuration > -system can be used in configuration files. LinuxBIOS checks > -\texttt{freebios2/src/config/Options.lb} to see whether a configuration > +system can be used in configuration files. coreboot checks > +\texttt{coreboot-v2/src/config/Options.lb} to see whether a configuration > variable is known. > > \item \begin{verbatim}default\end{verbatim} > @@ -338,7 +331,7 @@ > The \texttt{option} statement basically behaves identically to the > \texttt{default} statement. But unlike default it can only be used in > build target configuration files > -(\texttt{freebios2/targets/$<$vendor$>$/$<$mainboard$>$}). The option > +(\texttt{coreboot-v2/targets/$<$vendor$>$/$<$mainboard$>$}). The option > statement allows either to set new options or to override default values > set with the default statement in a mainboard configuration file. > Syntax and application are the same as with default. > @@ -346,12 +339,12 @@ > \end{itemize} > > \subsection{Firmware image specific configuration} > -LinuxBIOS allows to create different firmware images for the same > +coreboot allows to create different firmware images for the same > hardware. Such images can differ in the amount of output they produce, > the payload, the number of subimages they consist of etc. > > The firmware image specific configuration file can be found in \\ > -\texttt{freebios2/targets/$<$vendor$>$/<mainboard$>$}. > +\texttt{coreboot-v2/targets/$<$vendor$>$/<mainboard$>$}. > > \subsubsection{Firmware image specific keywords} > In addition to the above described keywords the following statements are > @@ -361,13 +354,13 @@ > \item \begin{verbatim}romimage\end{verbatim} > > The \texttt{romimage} definition describes a single rom build within the > -final LinuxBIOS image. Normally there are two romimage definitions per > -LinuxBIOS build: \texttt{normal} and \texttt{fallback}. > +final coreboot image. Normally there are two romimage definitions per > +coreboot build: \texttt{normal} and \texttt{fallback}. > > Each \texttt{romimage} section needs to specify a mainboard directory and a > payload. The mainboard directory contains the mainboard specific > configuration file and source code. It is specified relatively to > -\texttt{freebios2/src/mainboard}. The payload definition is an absolute > +\texttt{coreboot-v2/src/mainboard}. The payload definition is an absolute > path to a static elf binary (i.e Linux kernel or etherboot) > > \begin{verbatim} > @@ -384,8 +377,8 @@ > \item \begin{verbatim}buildrom\end{verbatim} > > The \texttt{buildrom} statement is used to determine which of the > -LinuxBIOS image builds (created using \texttt{romimage}) are packed > -together to the final LinuxBIOS image. It also specifies the order of > +coreboot image builds (created using \texttt{romimage}) are packed > +together to the final coreboot image. It also specifies the order of > the images and the final image size: > > \begin{verbatim} > @@ -407,7 +400,7 @@ > \item \begin{verbatim}CC\end{verbatim} > > Target C Compiler. Default is \texttt{\$(CROSS\_COMPILE)gcc}. Set to > -\texttt{gcc -m32} for compiling AMD64 LinuxBIOS images on an AMD64 > +\texttt{gcc -m32} for compiling AMD64 coreboot images on an AMD64 > machine. > > \item \begin{verbatim}CONFIG_CHIP_CONFIGURE \end{verbatim} > @@ -444,7 +437,7 @@ > > Export CMOS option table. Default is \texttt{0}. Set to \texttt{1} if > your mainboard has CMOS memory and you want to use it to store > -LinuxBIOS parameters (Loglevel, serial line speed, ...) > +coreboot parameters (Loglevel, serial line speed, ...) > > \item \begin{verbatim}CONFIG_ROM_PAYLOAD\end{verbatim} > > @@ -473,8 +466,8 @@ > > \item \begin{verbatim}COREBOOT_EXTRA_VERSION\end{verbatim} > > -LinuxBIOS extra version. This option has an empty string as default. Set > -to any string to add an extra version string to your LinuxBIOS build. > +coreboot extra version. This option has an empty string as default. Set > +to any string to add an extra version string to your coreboot build. > > \end{itemize} > > @@ -521,7 +514,7 @@ > \item \begin{verbatim}driver\end{verbatim} > > The \texttt{driver} keyword adds an object file to the driver section of a > -LinuxBIOS image. This means it can be used by the PCI device > +coreboot�image. This means it can be used by the PCI device > The character after coreboot looks strange. Intentional? > initialization code. Example: > > \begin{verbatim} > @@ -530,7 +523,7 @@ > > \item \begin{verbatim}object\end{verbatim} > > -The \texttt{object} keyword adds an object file to the LinuxBIOS image. > +The \texttt{object} keyword adds an object file to the coreboot image. > Per default the object file will be compiled from a \texttt{.c} file > with the same name. Symbols defined in such an object file can be used > in other object files and drivers. Example: > @@ -543,7 +536,7 @@ > > This keyword can be used to extend the existing file creation rules > during the build process. This is useful if external utilities have to > -be used for the build. LinuxBIOS on AMD64 uses romcc for it's early > +be used for the build. coreboot on AMD64 uses romcc for it's early > startup code placed in auto.c. > > To tell the configuration mechanism how to build \texttt{romcc} files, > @@ -569,7 +562,7 @@ > \item \begin{verbatim}mainboardinit\end{verbatim} > > With the mainboardinit keyword it's possible to include assembler code > -directly into the LinuxBIOS image. This is used for early infrastructure > +directly into the coreboot image. This is used for early infrastructure > initialization, i.e. to switch to protected mode. Example: > > \begin{verbatim} > @@ -578,12 +571,12 @@ > > \item \begin{verbatim}ldscript\end{verbatim} > > -The GNU linker ld is used to link object files together to a LinuxBIOS > +The GNU linker ld is used to link object files together to a coreboot > ROM image. > > Since it is a lot more comfortable and flexible to use the GNU linker > with linker scripts (ldscripts) than to create complex command line > -calls, LinuxBIOS features including linker scripts to control image > +calls, coreboot features including linker scripts to control image > creation. Example: > > \begin{verbatim} > @@ -593,12 +586,12 @@ > > \item \begin{verbatim}dir\end{verbatim} > > -LinuxBIOS reuses as much code between the different ports as possible. > +coreboot reuses as much code between the different ports as possible. > To achieve this, commonly used code can be stored in a separate > directory. For a new mainboard, it is enough to know that the code in > that directory can be used as is. > > -LinuxBIOS will also read a \texttt{Config.lb} file stored in that > +coreboot will also read a \texttt{Config.lb} file stored in that > directory. This happens with: > > \begin{verbatim} > @@ -630,7 +623,7 @@ > The \texttt{northbridge} keyword describes a system northbridge. Some > systems, like AMD64, can have more than one northbridge, i.e. one per > CPU node. Each northbridge is described by the path to the northbridge > -code in LinuxBIOS (relative to \texttt{freebios2/src/northbridge}), i.e. > +code in coreboot (relative to \texttt{coreboot-v2/src/northbridge}), i.e. > \texttt{amd/amdk8} and a unique name (i.e \texttt{mc0}) \\ > Example: > > @@ -642,7 +635,7 @@ > > \item \begin{verbatim}southbridge\end{verbatim} > > -To simplify the handling of bus bridges in a LinuxBIOS system, all > +To simplify the handling of bus bridges in a coreboot system, all > bridges available in a system that are not northbridges (i.e AGP, IO, > PCIX) are seen as southbridges. > > @@ -672,7 +665,7 @@ > that are provided by the bridge. Generally all bridge sections have a > couple of \texttt{pci} keywords. > > -The first occurrence of the \texttt{pci} keyword tells LinuxBIOS where > +The first occurrence of the \texttt{pci} keyword tells coreboot where > the bridge devices start, relative to the PCI configuration space used > by the bridge. The following occurences of the \texttt{pci} keyword > describe the provided devices. > @@ -716,7 +709,7 @@ > \item \begin{verbatim}superio\end{verbatim} > > SuperIO devices are basically handled like brigdes. They are taking > -their driver code from \texttt{freebios2/src/superio/}. They don't > +their driver code from \texttt{coreboot-v2/src/superio/}. They don't > provide a PCI compatible configuration interface, but instead are ISA > PnP devices. Normally they are connected to a southbridge. If this is > the case, the \texttt{superio} section will be a subsection of the > @@ -796,23 +789,23 @@ > > \item \begin{verbatim}STACK_SIZE\end{verbatim} > > -LinuxBIOS stack size. The size of the function call stack defaults to > +coreboot stack size. The size of the function call stack defaults to > \texttt{0x2000} (8k). > > \item \begin{verbatim}HEAP_SIZE\end{verbatim} > > -LinuxBIOS heap size. The heap is used when LinuxBIOS allocates memory > +coreboot heap size. The heap is used when coreboot allocates memory > with malloc(). The default heap size is \texttt{0x2000}, but AMD64 boards > generally set it to \texttt{0x4000} (16k) > > \item \begin{verbatim}XIP_ROM_BASE\end{verbatim} > > -Start address of area to cache during LinuxBIOS execution directly from > +Start address of area to cache during coreboot execution directly from > ROM. > > \item \begin{verbatim}XIP_ROM_SIZE\end{verbatim} > > -Size of area to cache during LinuxBIOS execution directly from ROM > +Size of area to cache during coreboot execution directly from ROM > > \item \begin{verbatim}CONFIG_COMPRESS\end{verbatim} > > @@ -831,19 +824,19 @@ > > \section{Tweaking the source code} > Besides configuring the existing code it is sometimes necessary or > -desirable to tweak certain parts of LinuxBIOS by direct changes to the > +desirable to tweak certain parts of coreboot by direct changes to the > code. This chapter covers some possible enhancements and changes that > -are needed when porting LinuxBIOS to a new mainboard or just come > +are needed when porting coreboot to a new mainboard or just come > handy now and then. > > \subsection{Hypertransport configuration} > -Before LinuxBIOS is able to activate all CPUs and detect bridges > +Before coreboot is able to activate all CPUs and detect bridges > attached to these CPUs (and thus, see all devices attached to the > system) it has to initialize the coherent hypertransport devices. > > The current algorithms to do coherent hypertransport initialization are > not fully, automatically evaluating the hypertransport chain graph. > -Therefore the code needs to be adapted when porting LinuxBIOS to a new > +Therefore the code needs to be adapted when porting coreboot to a new > AMD64 mainboard. An example arrangement of hypertransport devices > looks like this: > > @@ -867,7 +860,7 @@ > \item Setting outgoing connections > The algorithm needs to know which outgoing port of a CPU node is > connected to the directly succeeding node. This is done in > -\texttt{freebios2/src/mainboard/$<$vendor$>$/$<$mainboard$>$/auto.c} > +\texttt{coreboot-v2/src/mainboard/$<$vendor$>$/$<$mainboard$>$/auto.c} > with a number of preprocessor defines (one define for two-node systems, > three defines for four-node systems). > > @@ -895,7 +888,7 @@ > ports. The routing information is written to the AMD K8 routing table. > In an Nnode system this routing table consists of 3*N*N entries , one > for each message type and for each possible CPU --> CPU communication. For > -simplicity LinuxBIOS keeps the 3 routing entries for each CPU --> CPU > +simplicity coreboot keeps the 3 routing entries for each CPU --> CPU > communication in one machine word. The routing table of each node looks > like this: > > @@ -996,7 +989,7 @@ > > \subsection{DRAM configuration} > Setting up the RAM controller(s) is probably the most complex part of > -LinuxBIOS. Basically LinuxBIOS serially initializes all RAM controllers > +coreboot. Basically coreboot serially initializes all RAM controllers > in the system, using SPDROM (serial presence detect) data to set > timings, size and other properties. The SPD data is usually read > utilizing the I2C SMBUS interface of the southbridge. > @@ -1015,7 +1008,7 @@ > > Available mainboard implementations and CPUs create the need to add > special setup code to RAM initialization in a number of places. > -LinuxBIOS provides hooks to easily add code in these places without > +coreboot provides hooks to easily add code in these places without > having to change the generic code. Whether these hooks have to be used > depends on the mainboard design. In many cases the functions executed > by the hooks just carry out trivial default settings or they are even > @@ -1024,7 +1017,7 @@ > Some mainboard/CPU combinations need to trigger an additional memory > controller reset before the memory can be initialized properly. This is, > for example, used to get memory working on preC stepping AMD64 > -processors. LinuxBIOS provides two hooks for triggering onboard memory > +processors. coreboot provides two hooks for triggering onboard memory > reset logic: > > \begin{itemize} > @@ -1046,10 +1039,10 @@ > > The way SMBUS hub information is coded into the \texttt{mem\_controller} > structure is mainboard implementation specific and not > -described here. See \texttt{freebios2/src/mainboard/amd/quartet/auto.c} > +described here. See \texttt{coreboot-v2/src/mainboard/amd/quartet/auto.c} > for an example. > > -LinuxBIOS folks have agreed on SPD data being the central information > +coreboot folks have agreed on SPD data being the central information > source for RAM specific information. But not all mainboards/RAM > modules feature a physical SPD ROM. To still allow an easy to use SPD > driven setup, there is a hook that abstracts reading the SPD ROM > @@ -1086,9 +1079,9 @@ > default IRQ_SLOT_COUNT=7 > \end{verbatim} > > -This will make LinuxBIOS look for the file \\ > -\texttt{freebios2/src/mainboard/<vendor>/<mainboard>/irq\_tables.c} which > -contains the source code definition of the IRQ table. LinuxBIOS corrects > +This will make coreboot look for the file \\ > +\texttt{coreboot-v2/src/mainboard/<vendor>/<mainboard>/irq\_tables.c} which > +contains the source code definition of the IRQ table. coreboot corrects > small inconsistencies in the IRQ table during startup (checksum and > number of entries), but it is not yet writing IRQ tables in a completely > dynamic way. > @@ -1104,11 +1097,11 @@ > > \subsection {MP Tables} > > -LinuxBIOS contains code to create MP tables conforming the > -Multiprocessor Specification V1.4. To include an MP Table in a LinuxBIOS > +coreboot contains code to create MP tables conforming the > +Multiprocessor Specification V1.4. To include an MP Table in a coreboot > image, the following configuration variables have to be set (in the > mainboard specific configuration file > -\texttt{freebios2/src/mainboard/<vendor><mainboard>/Config.lb}): > +\texttt{coreboot-v2/src/mainboard/<vendor><mainboard>/Config.lb}): > > \begin{verbatim} > default CONFIG_SMP=1 > @@ -1116,8 +1109,8 @@ > default HAVE_MP_TABLE=1 > \end{verbatim} > > -LinuxBIOS will then look for a function for setting up the MP table in > -the file \texttt{freebios2/src/mainboard<vendor>/<mainboard>/mptable.c}: > +coreboot will then look for a function for setting up the MP table in > +the file \texttt{coreboot-v2/src/mainboard<vendor>/<mainboard>/mptable.c}: > > \begin{verbatim} > void *smp_write_config_table(void *v, unsigned long * processor_map) > @@ -1130,7 +1123,7 @@ > > \subsection {ACPI Tables} > > -There is initial ACPI support in LinuxBIOS now. Currently the only gain with > +There is initial ACPI support in coreboot now. Currently the only gain with > this is the ability to use HPET timers in Linux. To achieve this, there is a > framework that can generate the following tables: > \begin{itemize} > @@ -1140,7 +1133,7 @@ > \item HPET > \end{itemize} > > -To enable ACPI in your LinuxBIOS build, add the following lines to your > +To enable ACPI in your coreboot build, add the following lines to your > configuration files: > \begin{verbatim} > uses HAVE_ACPI_TABLES > @@ -1155,16 +1148,16 @@ > features. > > \subsection{POST} > -LinuxBIOS has three different methods of handling POST codes. They can > +coreboot has three different methods of handling POST codes. They can > be triggered using configuration file options. > \begin{itemize} > \item > \emph{Ignore POST completely}. No early code debugging is possible with > this setting. Set the configuration variable \texttt{NO\_POST} to > -\texttt{1} to switch off all POST handling in LinuxBIOS. > +\texttt{1} to switch off all POST handling in coreboot. > \item > \emph{Normal IO port 80 POST}. This is the default behavior of > -LinuxBIOS. No configuration variables have to be set. To be able to see > +coreboot. No configuration variables have to be set. To be able to see > port 80 POST output, you need a POST expansion card for ISA or PCI. Port > 80 POST allows simple debugging without any other output method > available (serial interface or VGA display) > @@ -1178,7 +1171,7 @@ > > > \subsection{HDT Debugging} > -If you are debugging your LinuxBIOS code with a Hardware Debug Tool > +If you are debugging your coreboot code with a Hardware Debug Tool > (HDT), you can find the source code line for a given physical EIP > address as follows: Look the address up in the file linuxbios.map. Then > search the label Lxx in the file auto.inc created by romcc. The original > @@ -1186,7 +1179,7 @@ > > > \subsection{Device Drivers} > -With only a few data structures LinuxBIOS features a simple but flexible > +With only a few data structures coreboot features a simple but flexible > device driver interface. This interface is not intended for autonomously > driving the devices but to initialize all system components so that they > can be used by the booted operating system. > @@ -1220,9 +1213,9 @@ > > By separating the two structures above, M:N relations between compatible > devices and drivers can be described. The driver source code containing > -above data structures and code have to be added to a LinuxBIOS image > +above data structures and code have to be added to a coreboot image > using the driver keyword in the mainboard specific configuration file \\ > -\texttt{freebios2/src/mainboard/<vendor>/<mainboard>/Config.lb}: > +\texttt{coreboot-v2/src/mainboard/<vendor>/<mainboard>/Config.lb}: > > \begin{verbatim} > driver lsi_scsi.o > @@ -1230,20 +1223,20 @@ > > \subsection{Bus Bridges} > > -Currently all bridges supported in the LinuxBIOS2 tree are transparent > +Currently all bridges supported in the coreboot-v2 tree are transparent > bridges. This means, once the bridge is initialized, it's remote devices > -are visible on one of the PCI buses without special probing. LinuxBIOS > +are visible on one of the PCI buses without special probing. coreboot > supports also bridges that are nontransparent. The driver support code > can provide a \texttt{scan\_bus} function to scan devices behind the bridge. > > \subsection{CPU Reset} > When changing speed and width of hypertransport chain connections > -LinuxBIOS has to either assert an LDTSTOP or a reset to make the changes > -become active. Additionally Linux can do a firmware reset, if LinuxBIOS > +coreboot has to either assert an LDTSTOP or a reset to make the changes > +become active. Additionally Linux can do a firmware reset, if coreboot > provides the needed infrastructure. To use this capability, define the > option \texttt{HAVE\_HARD\_RESET} and add an object file specifying the > reset code in your mainboard specific configuration file > -\texttt{freebios2/src/mainboard/$<$vendor$>$/$<$mainboard$>$/Config.lb}: > +\texttt{coreboot-v2/src/mainboard/$<$vendor$>$/$<$mainboard$>$/Config.lb}: > > \begin{verbatim} > default HAVE_HARD_RESET=1 > @@ -1258,41 +1251,41 @@ > void hard_reset(void); > \end{verbatim} > > -See \texttt{freebios2/src/mainboard/arima/hdama/reset.c} for an example > +See \texttt{coreboot-v2/src/mainboard/arima/hdama/reset.c} for an example > implementation. > > \newpage > > % > -% 11. LinuxBIOS Internals > +% 11. coreboot Internals > % > > -\section{LinuxBIOS Internals} > +\section{coreboot Internals} > This chapter covers some of the internal structures and algorithms of > -LinuxBIOS that have not been mentioned so far. > +coreboot that have not been mentioned so far. > > \subsection{Code Flow} > > \begin{figure}[htb] > \centering > \includegraphics[scale=0.7]{codeflow.pdf} > -\caption{LinuxBIOS rough Code Flow} > +\caption{coreboot rough Code Flow} > \label{fix:codeflow} > \end{figure} > > \newpage > > \subsection{Fallback mechanism} > -LinuxBIOS provides a mechanism to pack two different LinuxBIOS builds > -within one LinuxBIOS ROM image. Using the system CMOS memory LinuxBIOS > +coreboot provides a mechanism to pack two different coreboot builds > +within one coreboot ROM image. Using the system CMOS memory coreboot > determines whether the last boot with a default image succeeded and > boots a failsafe image on failure. This allows insystem testing without > the risk to render the system unusable. See > -\texttt{freebios2/src/mainboard/arima/hdama/failover.c} for example > +\texttt{coreboot-v2/src/mainboard/arima/hdama/failover.c} for example > code. The fallback mechanism can be used with the \texttt{cmos\_util}. > > \subsection{(Un) Supported Standards} > -LinuxBIOS supports the following standards > +coreboot supports the following standards > \begin{itemize} > \item Multiprocessing Specification (MPSPEC) 1.4 > \item IRQ Tables (PIRQ) > @@ -1305,18 +1298,18 @@ > \item APM > \end{itemize} > > -\subsection{LinuxBIOS table} > -LinuxBIOS stores information about the system in a data structure called > -the LinuxBIOS table. This table can be read under Linux using the tool > -lxbios from the Lawrence Livermore National Laboratory. > +\subsection{coreboot table} > +coreboot stores information about the system in a data structure called > +the coreboot table. This table can be read under Linux using the tool > +nvramtool from the Lawrence Livermore National Laboratory. > > Get more information about lxbios and the utility itself at > \url{http://www.llnl.gov/linux/lxbios/lxbios.html} > > \subsection{ROMCC limitations} > -ROMCC, part of the LinuxBIOS project, is a C compiler that translates to > +ROMCC, part of the coreboot project, is a C compiler that translates to > completely rommable code. This means the resulting code does not need > -any memory to work. This is one of the major improvements in LinuxBIOS > +any memory to work. This is one of the major improvements in coreboot > V2, since it allows almost all code to be written in C. DRAM > initialization can be factored and reused more easily among mainboards > and platforms. > @@ -1331,12 +1324,12 @@ > your code. > > \subsection{CMOS handling} > -LinuxBIOS can use the mainboard's CMOS memory to store information > +coreboot can use the mainboard's CMOS memory to store information > defined in a data structure called the CMOS table . This information > contains serial line speed, fallback boot control, output verbosity, > default boot device, ECC control, and more. It can be easily enhanced by > enhancing the CMOS table. This table, if present, is found at > -\texttt{freebios2/src/mainboard/$<$vendor$>$/$<$mainboard$>$/cmos.layout}. > +\texttt{coreboot-v2/src/mainboard/$<$vendor$>$/$<$mainboard$>$/cmos.layout}. > It describes the available options, their possible values and their > position within the CMOS memory. The layout file looks as follows: > \begin{verbatim} > @@ -1358,16 +1351,16 @@ > \end{verbatim} > > To change CMOS values from a running Linux system, use the > -\texttt{cmos\_util}, provided by Linux Networks as part of the LinuxBIOS > +\texttt{cmos\_util}, provided by Linux Networks as part of the coreboot > utilities suite. Get it at > \textit{ftp://ftp.lnxi.com/pub/linuxbios/utilities/} > > \subsection {Booting Payloads} > -LinuxBIOS can load a payload binary from a Flash device or IDE. This > +coreboot can load a payload binary from a Flash device or IDE. This > payload can be a boot loader, like FILO or Etherboot, a kernel image, or > any other static ELF binary. > > -To create a Linux kernel image, that is bootable in LinuxBIOS, you have > +To create a Linux kernel image, that is bootable in coreboot, you have > to use mkelfImage. The command line I used, looks like follows: > > \begin{verbatim} > @@ -1436,9 +1429,9 @@ > operating system can not take advantage of the hardware, so there needs > to be a way to address this issue. There are several alternatives: > > -\subsection{Native LinuxBIOS Support} > +\subsection{Native coreboot Support} > > -For some devices (ie Trident Cyberblade 3d) there is native LinuxBIOS > +For some devices (ie Trident Cyberblade 3d) there is native coreboot > support This means there is a small driver bound to the PCI id of the > device that is called after PCI device ressources are allotted. > > @@ -1458,7 +1451,7 @@ > > \subsection{Using Native Linux Support} > > -A simple way of getting a whole lot of drivers available for LinuxBIOS > +A simple way of getting a whole lot of drivers available for coreboot > is to reuse Linux drivers by putting a Linux kernel to flash. This > works, because no drivers are needed to get the Linux kernel (as opposed > to store the kernel on a harddisk connected to isa/scsi/raid storage) > @@ -1510,7 +1503,7 @@ > an Open Firmware implementation. > > There is a free Open Firmware implementation available, called OpenBIOS, > -that runs on top of LinuxBIOS. See www.openbios.org > +that runs on top of coreboot. See www.openbios.org > > PROs: > \begin{itemize} > @@ -1529,7 +1522,7 @@ > % > > \section{Image types} > -There used to be one image type for LinuxBIOS, as described above. Since > this paper was written (2004) there have been many changes. First, the name > +There used to be one image type for coreboot, as described above. Since this > paper was written (2004) there have been many changes. First, the name > was changed to coreboot, for many reasons. Second, Ying-Hai Liu, then of > AMD, now of Sun, added Cache As Ram support (CAR) for many AMD CPUs, which > both simplified and complicated things. Simplification came with the removal > of romcc; complication came with the addition of new ways to build. > I thought his name is Yinghai Lu, not Ying-Hai Liu. > > There are two big additions to the build process and, furthermore, more than > two new CONFIG variables to control them. > @@ -1702,7 +1695,7 @@ > \begin{itemize} > \item payload > > -LinuxBIOS only cares about low level machine initialization, but also has > +coreboot only cares about low level machine initialization, but also has > very simple mechanisms to boot a file either from FLASHROM or IDE. That > file, possibly a Linux Kernel, a boot loader or Etherboot, are called > payload, since it is the first software executed that does not cope with > @@ -1721,14 +1714,11 @@ > % > > \section{Bibliography} > -\subsection{Additional Papers on LinuxBIOS} > +\subsection{Additional Papers on coreboot} > > \begin{itemize} > - \item { \small > - > \textit{\url{http://www.linuxnetworx.com/products/linuxbios_white_paper.pdf}} > Do we have a copy of that doc anywhere? > - } > \item > - \textit{\url{http://www.linuxbios.org/papers/}} > + \textit{\url{http://www.coreboot.org/Documentation}} > \item > \textit{\url{http://www.lysator.liu.se/upplysning/fa/linuxbios.pdf}} > \item > @@ -1739,7 +1729,7 @@ > > \begin{itemize} > \item Etherboot: \textit{\url{http://www.etherboot.org/}} > - \item Filo: \textit{\url{http://te.to/~ts1/filo/}} > + \item Filo: \textit{\url{http://www.coreboot.org/FILO}} > \item OpenBIOS: \textit{\url{http://www.openbios.org/}} > \end{itemize} > > > -- http://www.hailfinger.org/ -- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

