<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.coreboot.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.coreboot.org/api.php?action=feedcontributions&amp;user=Rminnich&amp;feedformat=atom</id>
		<title>coreboot - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.coreboot.org/api.php?action=feedcontributions&amp;user=Rminnich&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Special:Contributions/Rminnich"/>
		<updated>2013-05-19T12:06:58Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.5</generator>

	<entry>
		<id>http://www.coreboot.org/File:Clipper_caltrain.jpeg</id>
		<title>File:Clipper caltrain.jpeg</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/File:Clipper_caltrain.jpeg"/>
				<updated>2011-12-06T05:39:21Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Fun_Stuff</id>
		<title>Fun Stuff</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Fun_Stuff"/>
				<updated>2011-12-06T05:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Failure at scale ==&lt;br /&gt;
&lt;br /&gt;
A BIOS gets confused in a very visible way: &lt;br /&gt;
&lt;br /&gt;
[[File:Billboard_bios_fail.jpeg|640px]]&lt;br /&gt;
&lt;br /&gt;
Photo courtesy Greg Kurtzer of LBL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What floor am I on?  ==&lt;br /&gt;
&lt;br /&gt;
An elevator in Spain: &lt;br /&gt;
&lt;br /&gt;
[[File:Elevator_spain.jpeg|640px]]&lt;br /&gt;
&lt;br /&gt;
Photo courtesy Gorka Guardiola&lt;br /&gt;
&lt;br /&gt;
== Confused payphone ==&lt;br /&gt;
&lt;br /&gt;
A payphone in trouble. Taken during the LinuxBIOS summit in Hamburg, Germany in October 2006. Bonus: two coreboot hackers visible in the reflection.&lt;br /&gt;
&lt;br /&gt;
[[File:Dscn3815.jpg|640px]]&lt;br /&gt;
&lt;br /&gt;
Photo by Ward Vandewege&lt;br /&gt;
&lt;br /&gt;
== Clipper Machine ==&lt;br /&gt;
&lt;br /&gt;
At the Palo Alto Caltrain station&lt;br /&gt;
&lt;br /&gt;
[[File:Clipper_caltrain.jpeg|640px]]&lt;br /&gt;
&lt;br /&gt;
From Ed Swierik&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Fun_Stuff</id>
		<title>Fun Stuff</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Fun_Stuff"/>
				<updated>2011-12-06T05:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Failure at scale ==&lt;br /&gt;
&lt;br /&gt;
A BIOS gets confused in a very visible way: &lt;br /&gt;
&lt;br /&gt;
[[File:Billboard_bios_fail.jpeg|640px]]&lt;br /&gt;
&lt;br /&gt;
Photo courtesy Greg Kurtzer of LBL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What floor am I on?  ==&lt;br /&gt;
&lt;br /&gt;
An elevator in Spain: &lt;br /&gt;
&lt;br /&gt;
[[File:Elevator_spain.jpeg|640px]]&lt;br /&gt;
&lt;br /&gt;
Photo courtesy Gorka Guardiola&lt;br /&gt;
&lt;br /&gt;
== Confused payphone ==&lt;br /&gt;
&lt;br /&gt;
A payphone in trouble. Taken during the LinuxBIOS summit in Hamburg, Germany in October 2006. Bonus: two coreboot hackers visible in the reflection.&lt;br /&gt;
&lt;br /&gt;
[[File:Dscn3815.jpg|640px]]&lt;br /&gt;
&lt;br /&gt;
Photo by Ward Vandewege&lt;br /&gt;
&lt;br /&gt;
== Clipper Machine ==&lt;br /&gt;
&lt;br /&gt;
At the Palo Alto Caltrain station&lt;br /&gt;
&lt;br /&gt;
From Ed Swierik&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Fun_Stuff</id>
		<title>Fun Stuff</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Fun_Stuff"/>
				<updated>2011-12-04T22:51:56Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Failure at scale ==&lt;br /&gt;
&lt;br /&gt;
A BIOS gets confused in a very visible way: [[File:Billboard_bios_fail.jpeg]]&lt;br /&gt;
Photo courtesy Greg Kurtzer of LBL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What floor am I on?  ==&lt;br /&gt;
&lt;br /&gt;
An elevator in Spain: [[File:Elevator_spain.jpeg]]&lt;br /&gt;
&lt;br /&gt;
Photo courtesy Gorka Guardiola&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/File:Elevator_spain.jpeg</id>
		<title>File:Elevator spain.jpeg</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/File:Elevator_spain.jpeg"/>
				<updated>2011-12-04T22:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: An elevator in Spain.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An elevator in Spain.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Fun_Stuff</id>
		<title>Fun Stuff</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Fun_Stuff"/>
				<updated>2011-12-04T22:47:44Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: Created page with &amp;quot; == Failure at scale ==  A BIOS gets confused in a very visible way: File:Billboard_bios_fail.jpeg Photo courtesy Greg Kurtzer of LBL.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Failure at scale ==&lt;br /&gt;
&lt;br /&gt;
A BIOS gets confused in a very visible way: [[File:Billboard_bios_fail.jpeg]]&lt;br /&gt;
Photo courtesy Greg Kurtzer of LBL.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/File:Billboard_bios_fail.jpeg</id>
		<title>File:Billboard bios fail.jpeg</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/File:Billboard_bios_fail.jpeg"/>
				<updated>2011-12-04T22:46:02Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: A BIOS that fails on a very large scale&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A BIOS that fails on a very large scale&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/GSoC</id>
		<title>GSoC</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/GSoC"/>
				<updated>2010-03-31T16:23:42Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Google Summer of Code 2010 =&lt;br /&gt;
&lt;br /&gt;
http://3.bp.blogspot.com/_fxRR_bT3LgA/S5U3rk2J-eI/AAAAAAAACE8/mBRYQwSqvqQ/s400/2010_NoURL_300x267px.jpg&lt;br /&gt;
&lt;br /&gt;
Welcome to the [http://code.google.com/soc/ Google Summer of Code(tm)] page of the [[Welcome to coreboot|coreboot project]]. Apply for a coreboot GSoC project at http://socghop.appspot.com/.&lt;br /&gt;
&lt;br /&gt;
This year, coreboot also tries to host some flashrom projects.&lt;br /&gt;
&lt;br /&gt;
== Deadlines ==&lt;br /&gt;
&lt;br /&gt;
Make sure you check the [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#timeline Deadlines]&lt;br /&gt;
&lt;br /&gt;
= Why work for coreboot =&lt;br /&gt;
&lt;br /&gt;
Why would you like to work for coreboot?&lt;br /&gt;
&lt;br /&gt;
* coreboot offers you the opportunity to work with modern technology &amp;quot;right on the iron&amp;quot;.&lt;br /&gt;
* Your application will be available to users worldwide and promoted along with all other coreboot projects.&lt;br /&gt;
* We are a very passionate team - so you will interact directly with the project initiators and project leaders. &lt;br /&gt;
* We have a large, helpful community. Over 100 experts in hardware and firmware lurk on our mailing list, many of them waiting to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Summer of Code Application =&lt;br /&gt;
&lt;br /&gt;
Please complete the standard [http://code.google.com/soc/ Google SoC 2010 application]. Additionally, please provide information on the following:&lt;br /&gt;
&lt;br /&gt;
# Who are you? What are you studying?&lt;br /&gt;
# Why are you the right person for this task?&lt;br /&gt;
# Do you have any other commitments that we should know about?&lt;br /&gt;
# List your C, Assembler and hardware experience.&lt;br /&gt;
# List your history with open source projects.&lt;br /&gt;
# What is your preferred method of contact? (Phone, email, Skype, etc) &lt;br /&gt;
&lt;br /&gt;
Feel free to keep your application short. A 15 page essay is no better than a 2 page summary. If you wish to write 15 pages, you are of course welcome to do so, and we will gladly put your paper up on the web page. But it is not required for the application.&lt;br /&gt;
&lt;br /&gt;
== How to apply ==&lt;br /&gt;
&lt;br /&gt;
The Drupal project has a great page on [http://drupal.org/node/59037 How to write an SOC application].&lt;br /&gt;
&lt;br /&gt;
Please also read Google's [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents Advice for Students].&lt;br /&gt;
&lt;br /&gt;
== Some Caveats ==&lt;br /&gt;
&lt;br /&gt;
* Google Summer-of-Code projects are a full (day-) time job. This means we expect roughly 30-40 hours per week on your project, during the three months of coding. Obviously we have flexibility, but if your schedule (exams, courses) does not give you this amount of spare time, then maybe you should not apply.&lt;br /&gt;
* Getting paid by Google requires that you meet certain milestones. First, you must be in good standing with the community before the official start of the program. We suggest you post some design emails to the mailing list, and get feedback on them, both before applying, and during the &amp;quot;community bonding period&amp;quot; between acceptance and official start. Also, you must have made progress and committed significant code before the mid-term point.&lt;br /&gt;
* We are thinking of requiring accepted students to have a blog, where you will write about your project on a regular basis. This is so that the community at large can be involved and help you. SoC is not a private contract between your mentor and you.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;regular basis&amp;quot; in the last item does _not_ mean &amp;quot;3 days before evaluation deadlines&amp;quot;. You should be &amp;quot;around&amp;quot; all the time (reporting your feedback, sending in partial successes).&lt;br /&gt;
We don't expect our students to be experts in our problem domain, but we don't want you to fail because some basic misunderstanding was in your way of completing the task.&lt;br /&gt;
&lt;br /&gt;
== Time Frame ==&lt;br /&gt;
&lt;br /&gt;
'''DEADLINE FOR STUDENT APPLICATIONS:''' Students who are interested in working on a coreboot-related GSoC project must apply between '''March 29, 2010''' and '''April 9, 2010'''! If you want to apply, please get in contact with us right away, not just when you send your application!&lt;br /&gt;
&lt;br /&gt;
== Student requirements ==&lt;br /&gt;
&lt;br /&gt;
We will only accept your proposal if you have demonstrated that you can work with our codebase. For that, you have to send a patch to the list which is acceptable. Just ask for simple tasks on the mailing list or on IRC.&lt;br /&gt;
&lt;br /&gt;
= Contact =&lt;br /&gt;
&lt;br /&gt;
If you are interested in becoming a GSoC student, please contact [mailto:stepan@coresystems.de Stefan Reinauer].&lt;br /&gt;
&lt;br /&gt;
There is also an IRC channel on irc.freenode.net: #coreboot&lt;br /&gt;
&lt;br /&gt;
= Possible ideas =&lt;br /&gt;
&lt;br /&gt;
== Infrastructure for automatic code checking ==&lt;br /&gt;
&lt;br /&gt;
We already have a build bot that builds various configurations of coreboot. It would be nice to extend it with various code validation routines, for example:&lt;br /&gt;
* Validate that there's no regression in doxygen documentation (eg. are all arguments to functions still explained in @param tags, eg. after new arguments were added?)&lt;br /&gt;
* Make code lint clean (and maybe extend lint to not fall into our traps), and run lint over the tree. Report regressions&lt;br /&gt;
* Use LLVM's static code checking facilities, report regressions.&lt;br /&gt;
* Work on code coverage support for coreboot code (dump data into ram, or via serial. Provide tools to fetch it). Analyse that data.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* LLVM tools: [http://clang.llvm.org/StaticAnalysis.html Clang static analyser], [http://llvm.org/ProjectsWithLLVM/#Calysto SSA assertion checker]&lt;br /&gt;
* Lint tools: [http://lclint.cs.virginia.edu/ Splint]&lt;br /&gt;
* Coverage: [http://ltp.sourceforge.net/test/coverage/lcov.php LCOV], [http://ggcov.sourceforge.net GGCOV]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
&lt;br /&gt;
== TianoCore on coreboot ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Tianocoreboot.png|160px|right]]&lt;br /&gt;
&lt;br /&gt;
[http://www.tianocore.org/ Tiano Core] is Intel's EFI implementation. Unlike coreboot, it is not a firmware, but rather a bootloader. In 2008 there was an initial port of TianoCore to run on coreboot, but there are many things left to do.&lt;br /&gt;
&lt;br /&gt;
* Improve Tiano Core / EDK2 running as a coreboot payload&lt;br /&gt;
* Implement a coreboot framebuffer driver for Tiano Core&lt;br /&gt;
* Implement a coreboot flash filesystem (CBFS) driver for Tiano Core&lt;br /&gt;
* Integrate and automate check out and build process of Tiano Core&lt;br /&gt;
* Create CorebootPkg using OVMF instead of DUET.&lt;br /&gt;
* Provide a script that creates working binaries for the EDK shell, EDK apps, FAT driver(?), ...&lt;br /&gt;
* The final work must compile on a cross gcc, and coreboot's crossgcc script has to be adapted so it can build this compiler (if the default script is not capable of doing so yet)&lt;br /&gt;
&lt;br /&gt;
This project requires no hardware skills, but especially in case of TianoCore will require knowledge of Microsoft compilers as well as the GNU tool chain.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://www.tianocore.org/ Tiano Core]&lt;br /&gt;
* https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
&lt;br /&gt;
==coreboot port to Marvell ARM SOC's with PCIe==&lt;br /&gt;
[http://www.marvell.com/products/processors/embedded/kirkwood/ Marvell Processors] These ARM SOC's with PCIe will become popular in netbooks later this year. These systems can take advantage of coreboot's strength in properly configuring PCI devices, fast boot time and payload support.&lt;br /&gt;
&lt;br /&gt;
Note that coreboot has in the past supported three different CPUs (x86, Alpha, PPC), so the structure is there for adding in a new processor family. &lt;br /&gt;
We will need to find the right platform to do the work, but I (Ron) can provide a board and JTAG debugger if needed. &lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Bari Ari&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
&lt;br /&gt;
== coreboot port to AMD 800 series chipsets ==&lt;br /&gt;
(probably too big of a task)&lt;br /&gt;
:I'm not sure that this is too of a big task. I think 800 is closely related to 780 and would be slightly harder than a 780 board port. ---[[User:MJones|MJones]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
&lt;br /&gt;
== coreboot mass-porting to AMD 780 series mainboards ==&lt;br /&gt;
&lt;br /&gt;
Grab a couple of AMD 780 based mainboards and port coreboot to it.&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
&lt;br /&gt;
== coreboot panic room ==&lt;br /&gt;
&lt;br /&gt;
Create a safe boot solution for coreboot to easily and cheaply recover the system in case of a panic(). &lt;br /&gt;
&lt;br /&gt;
I would like to base this solution around SerialICE. The basic idea is that the system always boots to SerialICE. There is a test in CMOS for 'last boot worked' and, if this is set, SerialICE finds a coreboot in cbfs and runs it. If 'last boot worked' is not set, or the user hits some magic keyboard sequence, SerialICE takes control. &lt;br /&gt;
&lt;br /&gt;
SerialICE needs to be extended (not much) to make this work. Having this capability would make it possible for me to get some very hard ports working that are just not possible today. At the same time, there are lots of hardware boards to test this idea on, so it should be easy to get it working. &lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
&lt;br /&gt;
== coreboot cheap testing rig ==&lt;br /&gt;
The goal of this project is to create a cheap testing rig which works with the existing board test infrastructure. We have a hardware test system since 2006:&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/Slides-LinuxBIOS-QA.pdf Quality Assurance Talk (Slides)]&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/TestIntegrationManual.pdf Test Integration Manual]&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/DevelopersManual.pdf Test Developers Manual]&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/TestSpecification.pdf Test Specification]&lt;br /&gt;
&lt;br /&gt;
The initial version of our testing rig used a remote power switch and was rather expensive. With cheaper technologies such as X10, it's possible to drop the testing costs per board significantly.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* http://qa.coresystems.de&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
&lt;br /&gt;
== coreboot GeodeLX port from v3 to v4 ==&lt;br /&gt;
&lt;br /&gt;
significant parts of that are already done, so it's hard to fill a full GSoC with that. One thing could be &amp;quot;verify that everything is brought over&amp;quot;, but that's nothing that can be reasonably proven (and it might also be too close to &amp;quot;documentation tasks&amp;quot;, which are not allowed)&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== drivers for libpayload ==&lt;br /&gt;
&lt;br /&gt;
IDE, AHCI, Bluetooth, Firewire, Smartcards, maybe filesystems. Work towards making FILO only a shell, which uses libpayload for the &amp;quot;real&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
Notice that libpayload code must be licensed BSD-style (so ports from FILO, SeaBIOS or Linux won't work).&lt;br /&gt;
Pick a given set and tell us why it's enough work for the allocated time, but not too much for you. Also, which sources (if any) you want to draw from. We will not accept code that has been taken from other (GPL) projects. If you are taking this project you have to be willing and capable of writing your own hardware drivers.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Stefan Reinauer&lt;br /&gt;
&lt;br /&gt;
== Board config infrastructure ==&lt;br /&gt;
&lt;br /&gt;
Design data structures that host information about the board layout so coreboot can better initialize components and generate all kinds of tables (mptable, pirq, acpi, ...) from that dynamically (at build or runtime, as appropriate). Adapt boards to use that instead of the current hardcodes.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== Refactor AMD code ==&lt;br /&gt;
&lt;br /&gt;
AMD K8 and AMD Fam10 are different enough to have their own code. This is unfortunate, as you have to decide which CPU type you use in a given mainboard. Refactor AMD code so a single image can support both chip types on a given board. Also move tables from get_bus_conf and the like to the device tree or kconfig options (or runtime detection), as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
&lt;br /&gt;
== Payload infrastructure ==&lt;br /&gt;
&lt;br /&gt;
Incorporate payload building into the coreboot build. kconfig options could be added for supported payloads, those payload could be updated to build with kconfig as well. Payloads that build with libpayload need would need default configs. Payloads should also be built with the crossgcc tools. This is related to the libpayload and board config infrastructure above. ---[[User:MJones|MJones]]&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== flashrom ==&lt;br /&gt;
&lt;br /&gt;
Note: The list below is an idea collection. Individual list items are simple enough to serve only as partial GSoC task, but they are grouped to reasonable tasks.  If you're interested, please talk to us on the flashrom mailing list and/or on IRC irc://irc.freenode.net/#flashrom&lt;br /&gt;
&lt;br /&gt;
''[http://www.flashrom.org/GSoC/2010 http://www.flashrom.org/GSoC/2010] has more flashrom ideas and suggestions.''&lt;br /&gt;
&lt;br /&gt;
=== Multiple GUIs for flashrom ===&lt;br /&gt;
&lt;br /&gt;
* flashrom text mode GUI (for command line and flashrom-as-payload)&lt;br /&gt;
* flashrom graphics mode GUI (should be cross-platform, Sean Nelson has preliminary code you can base this on)&lt;br /&gt;
&lt;br /&gt;
=== Recovery of dead boards and onboard flash updates ===&lt;br /&gt;
&lt;br /&gt;
* flashrom as payload&lt;br /&gt;
* flashrom remote flashing for coreboot panic room mode&lt;br /&gt;
* flashrom remote flashing with modified SerialICE&lt;br /&gt;
&lt;br /&gt;
=== SPI bitbanging hardware support ===&lt;br /&gt;
&lt;br /&gt;
* flashrom support for Nvidia SPI chipset hardware&lt;br /&gt;
* flashrom support for RayeR SPIPGM hardware&lt;br /&gt;
* flashrom support for [[Paraflasher]] hardware&lt;br /&gt;
* flashrom support for Willem hardware&lt;br /&gt;
* flashrom support for some-yet-uninvented cheap universal LPC/FWH/SPI flasher hardware&lt;br /&gt;
* flashrom support for bitbanging LPC/FWH (code exists, Uwe Hermann &lt;br /&gt;
* flashrom support for bitbanging Parallel&lt;br /&gt;
&lt;br /&gt;
=== Generic flashrom infrastructure improvements ===&lt;br /&gt;
&lt;br /&gt;
* flashrom support for automatic recovery in case something goes wrong&lt;br /&gt;
* flashrom support for partial reflashing&lt;br /&gt;
* flashrom support for bytewise flashing (similar to the point above)&lt;br /&gt;
&lt;br /&gt;
=== Laptop support ===&lt;br /&gt;
&lt;br /&gt;
This one is really HARD. If you're lucky and if you have datasheets, you can do it in maybe 1 month. If you're unlucky, it can take the whole GSoC or more. If there is interest, we'll try to find an embeddec controller which won't cause you to give up in frustration. Still, it might be beneficial if you're willing to solder.&lt;br /&gt;
* flashrom support for embedded controllers (ECs) in laptops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://www.flashrom.org/ flashrom]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== Your own Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
We have come up with some ideas for cool Summer of Code projects here. These are projects that we think can be managed in the short period of GSoC, and they cover areas where coreboot is trying to reach new users and new use cases.&lt;br /&gt;
&lt;br /&gt;
But of course your application does not need to be based on any of the ideas listed below. The opposite: Maybe you have a great idea that we just didn't think of yet. Please let us know!&lt;br /&gt;
&lt;br /&gt;
Feel free to contact us at the email address above, and don't hesitate to suggest whatever you have in mind.&lt;br /&gt;
&lt;br /&gt;
= Previous Summer of Code projects =&lt;br /&gt;
&lt;br /&gt;
We successfully participated in Google's Summer of Code in 2007, 2008 and 2009. See our [[Previous GSoC Projects|list of previous GSoC projects]].&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/GSoC</id>
		<title>GSoC</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/GSoC"/>
				<updated>2010-03-31T16:21:53Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Google Summer of Code 2010 =&lt;br /&gt;
&lt;br /&gt;
http://3.bp.blogspot.com/_fxRR_bT3LgA/S5U3rk2J-eI/AAAAAAAACE8/mBRYQwSqvqQ/s400/2010_NoURL_300x267px.jpg&lt;br /&gt;
&lt;br /&gt;
Welcome to the [http://code.google.com/soc/ Google Summer of Code(tm)] page of the [[Welcome to coreboot|coreboot project]]. Apply for a coreboot GSoC project at http://socghop.appspot.com/.&lt;br /&gt;
&lt;br /&gt;
This year, coreboot also tries to host some flashrom projects.&lt;br /&gt;
&lt;br /&gt;
== Deadlines ==&lt;br /&gt;
&lt;br /&gt;
Make sure you check the [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#timeline Deadlines]&lt;br /&gt;
&lt;br /&gt;
= Why work for coreboot =&lt;br /&gt;
&lt;br /&gt;
Why would you like to work for coreboot?&lt;br /&gt;
&lt;br /&gt;
* coreboot offers you the opportunity to work with modern technology &amp;quot;right on the iron&amp;quot;.&lt;br /&gt;
* Your application will be available to users worldwide and promoted along with all other coreboot projects.&lt;br /&gt;
* We are a very passionate team - so you will interact directly with the project initiators and project leaders. &lt;br /&gt;
* We have a large, helpful community. Over 100 experts in hardware and firmware lurk on our mailing list, many of them waiting to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Summer of Code Application =&lt;br /&gt;
&lt;br /&gt;
Please complete the standard [http://code.google.com/soc/ Google SoC 2010 application]. Additionally, please provide information on the following:&lt;br /&gt;
&lt;br /&gt;
# Who are you? What are you studying?&lt;br /&gt;
# Why are you the right person for this task?&lt;br /&gt;
# Do you have any other commitments that we should know about?&lt;br /&gt;
# List your C, Assembler and hardware experience.&lt;br /&gt;
# List your history with open source projects.&lt;br /&gt;
# What is your preferred method of contact? (Phone, email, Skype, etc) &lt;br /&gt;
&lt;br /&gt;
Feel free to keep your application short. A 15 page essay is no better than a 2 page summary. If you wish to write 15 pages, you are of course welcome to do so, and we will gladly put your paper up on the web page. But it is not required for the application.&lt;br /&gt;
&lt;br /&gt;
== How to apply ==&lt;br /&gt;
&lt;br /&gt;
The Drupal project has a great page on [http://drupal.org/node/59037 How to write an SOC application].&lt;br /&gt;
&lt;br /&gt;
Please also read Google's [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents Advice for Students].&lt;br /&gt;
&lt;br /&gt;
== Some Caveats ==&lt;br /&gt;
&lt;br /&gt;
* Google Summer-of-Code projects are a full (day-) time job. This means we expect roughly 30-40 hours per week on your project, during the three months of coding. Obviously we have flexibility, but if your schedule (exams, courses) does not give you this amount of spare time, then maybe you should not apply.&lt;br /&gt;
* Getting paid by Google requires that you meet certain milestones. First, you must be in good standing with the community before the official start of the program. We suggest you post some design emails to the mailing list, and get feedback on them, both before applying, and during the &amp;quot;community bonding period&amp;quot; between acceptance and official start. Also, you must have made progress and committed significant code before the mid-term point.&lt;br /&gt;
* We are thinking of requiring accepted students to have a blog, where you will write about your project on a regular basis. This is so that the community at large can be involved and help you. SoC is not a private contract between your mentor and you.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;regular basis&amp;quot; in the last item does _not_ mean &amp;quot;3 days before evaluation deadlines&amp;quot;. You should be &amp;quot;around&amp;quot; all the time (reporting your feedback, sending in partial successes).&lt;br /&gt;
We don't expect our students to be experts in our problem domain, but we don't want you to fail because some basic misunderstanding was in your way of completing the task.&lt;br /&gt;
&lt;br /&gt;
== Time Frame ==&lt;br /&gt;
&lt;br /&gt;
'''DEADLINE FOR STUDENT APPLICATIONS:''' Students who are interested in working on a coreboot-related GSoC project must apply between '''March 29, 2010''' and '''April 9, 2010'''! If you want to apply, please get in contact with us right away, not just when you send your application!&lt;br /&gt;
&lt;br /&gt;
== Student requirements ==&lt;br /&gt;
&lt;br /&gt;
We will only accept your proposal if you have demonstrated that you can work with our codebase. For that, you have to send a patch to the list which is acceptable. Just ask for simple tasks on the mailing list or on IRC.&lt;br /&gt;
&lt;br /&gt;
= Contact =&lt;br /&gt;
&lt;br /&gt;
If you are interested in becoming a GSoC student, please contact [mailto:stepan@coresystems.de Stefan Reinauer].&lt;br /&gt;
&lt;br /&gt;
There is also an IRC channel on irc.freenode.net: #coreboot&lt;br /&gt;
&lt;br /&gt;
= Possible ideas =&lt;br /&gt;
&lt;br /&gt;
== Infrastructure for automatic code checking ==&lt;br /&gt;
&lt;br /&gt;
We already have a build bot that builds various configurations of coreboot. It would be nice to extend it with various code validation routines, for example:&lt;br /&gt;
* Validate that there's no regression in doxygen documentation (eg. are all arguments to functions still explained in @param tags, eg. after new arguments were added?)&lt;br /&gt;
* Make code lint clean (and maybe extend lint to not fall into our traps), and run lint over the tree. Report regressions&lt;br /&gt;
* Use LLVM's static code checking facilities, report regressions.&lt;br /&gt;
* Work on code coverage support for coreboot code (dump data into ram, or via serial. Provide tools to fetch it). Analyse that data.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* LLVM tools: [http://clang.llvm.org/StaticAnalysis.html Clang static analyser], [http://llvm.org/ProjectsWithLLVM/#Calysto SSA assertion checker]&lt;br /&gt;
* Lint tools: [http://lclint.cs.virginia.edu/ Splint]&lt;br /&gt;
* Coverage: [http://ltp.sourceforge.net/test/coverage/lcov.php LCOV], [http://ggcov.sourceforge.net GGCOV]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
&lt;br /&gt;
== TianoCore on coreboot ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Tianocoreboot.png|160px|right]]&lt;br /&gt;
&lt;br /&gt;
[http://www.tianocore.org/ Tiano Core] is Intel's EFI implementation. Unlike coreboot, it is not a firmware, but rather a bootloader. In 2008 there was an initial port of TianoCore to run on coreboot, but there are many things left to do.&lt;br /&gt;
&lt;br /&gt;
* Improve Tiano Core / EDK2 running as a coreboot payload&lt;br /&gt;
* Implement a coreboot framebuffer driver for Tiano Core&lt;br /&gt;
* Implement a coreboot flash filesystem (CBFS) driver for Tiano Core&lt;br /&gt;
* Integrate and automate check out and build process of Tiano Core&lt;br /&gt;
* Create CorebootPkg using OVMF instead of DUET.&lt;br /&gt;
* Provide a script that creates working binaries for the EDK shell, EDK apps, FAT driver(?), ...&lt;br /&gt;
* The final work must compile on a cross gcc, and coreboot's crossgcc script has to be adapted so it can build this compiler (if the default script is not capable of doing so yet)&lt;br /&gt;
&lt;br /&gt;
This project requires no hardware skills, but especially in case of TianoCore will require knowledge of Microsoft compilers as well as the GNU tool chain.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://www.tianocore.org/ Tiano Core]&lt;br /&gt;
* https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
&lt;br /&gt;
==coreboot port to Marvell ARM SOC's with PCIe==&lt;br /&gt;
[http://www.marvell.com/products/processors/embedded/kirkwood/ Marvell Processors] These ARM SOC's with PCIe will become popular in netbooks later this year. These systems can take advantage of coreboot's strength in properly configuring PCI devices, fast boot time and payload support.&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Bari Ari&lt;br /&gt;
&lt;br /&gt;
== coreboot port to AMD 800 series chipsets ==&lt;br /&gt;
(probably too big of a task)&lt;br /&gt;
:I'm not sure that this is too of a big task. I think 800 is closely related to 780 and would be slightly harder than a 780 board port. ---[[User:MJones|MJones]]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
&lt;br /&gt;
== coreboot mass-porting to AMD 780 series mainboards ==&lt;br /&gt;
&lt;br /&gt;
Grab a couple of AMD 780 based mainboards and port coreboot to it.&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
* [[User:MJones|Marc Jones]]&lt;br /&gt;
&lt;br /&gt;
== coreboot panic room ==&lt;br /&gt;
&lt;br /&gt;
Create a safe boot solution for coreboot to easily and cheaply recover the system in case of a panic(). &lt;br /&gt;
&lt;br /&gt;
I would like to base this solution around SerialICE. The basic idea is that the system always boots to SerialICE. There is a test in CMOS for 'last boot worked' and, if this is set, SerialICE finds a coreboot in cbfs and runs it. If 'last boot worked' is not set, or the user hits some magic keyboard sequence, SerialICE takes control. &lt;br /&gt;
&lt;br /&gt;
SerialICE needs to be extended (not much) to make this work. Having this capability would make it possible for me to get some very hard ports working that are just not possible today. At the same time, there are lots of hardware boards to test this idea on, so it should be easy to get it working. &lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Rminnich|Ron Minnich]]&lt;br /&gt;
&lt;br /&gt;
== coreboot cheap testing rig ==&lt;br /&gt;
The goal of this project is to create a cheap testing rig which works with the existing board test infrastructure. We have a hardware test system since 2006:&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/Slides-LinuxBIOS-QA.pdf Quality Assurance Talk (Slides)]&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/TestIntegrationManual.pdf Test Integration Manual]&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/DevelopersManual.pdf Test Developers Manual]&lt;br /&gt;
* [http://www.coresystems.de/PDFs/LinuxBIOS-testing/TestSpecification.pdf Test Specification]&lt;br /&gt;
&lt;br /&gt;
The initial version of our testing rig used a remote power switch and was rather expensive. With cheaper technologies such as X10, it's possible to drop the testing costs per board significantly.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* http://qa.coresystems.de&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
&lt;br /&gt;
== coreboot GeodeLX port from v3 to v4 ==&lt;br /&gt;
&lt;br /&gt;
significant parts of that are already done, so it's hard to fill a full GSoC with that. One thing could be &amp;quot;verify that everything is brought over&amp;quot;, but that's nothing that can be reasonably proven (and it might also be too close to &amp;quot;documentation tasks&amp;quot;, which are not allowed)&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== drivers for libpayload ==&lt;br /&gt;
&lt;br /&gt;
IDE, AHCI, Bluetooth, Firewire, Smartcards, maybe filesystems. Work towards making FILO only a shell, which uses libpayload for the &amp;quot;real&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
Notice that libpayload code must be licensed BSD-style (so ports from FILO, SeaBIOS or Linux won't work).&lt;br /&gt;
Pick a given set and tell us why it's enough work for the allocated time, but not too much for you. Also, which sources (if any) you want to draw from. We will not accept code that has been taken from other (GPL) projects. If you are taking this project you have to be willing and capable of writing your own hardware drivers.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Stefan Reinauer&lt;br /&gt;
&lt;br /&gt;
== Board config infrastructure ==&lt;br /&gt;
&lt;br /&gt;
Design data structures that host information about the board layout so coreboot can better initialize components and generate all kinds of tables (mptable, pirq, acpi, ...) from that dynamically (at build or runtime, as appropriate). Adapt boards to use that instead of the current hardcodes.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== Refactor AMD code ==&lt;br /&gt;
&lt;br /&gt;
AMD K8 and AMD Fam10 are different enough to have their own code. This is unfortunate, as you have to decide which CPU type you use in a given mainboard. Refactor AMD code so a single image can support both chip types on a given board. Also move tables from get_bus_conf and the like to the device tree or kconfig options (or runtime detection), as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* [[User:Stepan|Stefan Reinauer]]&lt;br /&gt;
&lt;br /&gt;
== Payload infrastructure ==&lt;br /&gt;
&lt;br /&gt;
Incorporate payload building into the coreboot build. kconfig options could be added for supported payloads, those payload could be updated to build with kconfig as well. Payloads that build with libpayload need would need default configs. Payloads should also be built with the crossgcc tools. This is related to the libpayload and board config infrastructure above. ---[[User:MJones|MJones]]&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== flashrom ==&lt;br /&gt;
&lt;br /&gt;
Note: The list below is an idea collection. Individual list items are simple enough to serve only as partial GSoC task, but they are grouped to reasonable tasks.  If you're interested, please talk to us on the flashrom mailing list and/or on IRC irc://irc.freenode.net/#flashrom&lt;br /&gt;
&lt;br /&gt;
''[http://www.flashrom.org/GSoC/2010 http://www.flashrom.org/GSoC/2010] has more flashrom ideas and suggestions.''&lt;br /&gt;
&lt;br /&gt;
=== Multiple GUIs for flashrom ===&lt;br /&gt;
&lt;br /&gt;
* flashrom text mode GUI (for command line and flashrom-as-payload)&lt;br /&gt;
* flashrom graphics mode GUI (should be cross-platform, Sean Nelson has preliminary code you can base this on)&lt;br /&gt;
&lt;br /&gt;
=== Recovery of dead boards and onboard flash updates ===&lt;br /&gt;
&lt;br /&gt;
* flashrom as payload&lt;br /&gt;
* flashrom remote flashing for coreboot panic room mode&lt;br /&gt;
* flashrom remote flashing with modified SerialICE&lt;br /&gt;
&lt;br /&gt;
=== SPI bitbanging hardware support ===&lt;br /&gt;
&lt;br /&gt;
* flashrom support for Nvidia SPI chipset hardware&lt;br /&gt;
* flashrom support for RayeR SPIPGM hardware&lt;br /&gt;
* flashrom support for [[Paraflasher]] hardware&lt;br /&gt;
* flashrom support for Willem hardware&lt;br /&gt;
* flashrom support for some-yet-uninvented cheap universal LPC/FWH/SPI flasher hardware&lt;br /&gt;
* flashrom support for bitbanging LPC/FWH (code exists, Uwe Hermann &lt;br /&gt;
* flashrom support for bitbanging Parallel&lt;br /&gt;
&lt;br /&gt;
=== Generic flashrom infrastructure improvements ===&lt;br /&gt;
&lt;br /&gt;
* flashrom support for automatic recovery in case something goes wrong&lt;br /&gt;
* flashrom support for partial reflashing&lt;br /&gt;
* flashrom support for bytewise flashing (similar to the point above)&lt;br /&gt;
&lt;br /&gt;
=== Laptop support ===&lt;br /&gt;
&lt;br /&gt;
This one is really HARD. If you're lucky and if you have datasheets, you can do it in maybe 1 month. If you're unlucky, it can take the whole GSoC or more. If there is interest, we'll try to find an embeddec controller which won't cause you to give up in frustration. Still, it might be beneficial if you're willing to solder.&lt;br /&gt;
* flashrom support for embedded controllers (ECs) in laptops&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://www.flashrom.org/ flashrom]&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* ?&lt;br /&gt;
&lt;br /&gt;
== Your own Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
We have come up with some ideas for cool Summer of Code projects here. These are projects that we think can be managed in the short period of GSoC, and they cover areas where coreboot is trying to reach new users and new use cases.&lt;br /&gt;
&lt;br /&gt;
But of course your application does not need to be based on any of the ideas listed below. The opposite: Maybe you have a great idea that we just didn't think of yet. Please let us know!&lt;br /&gt;
&lt;br /&gt;
Feel free to contact us at the email address above, and don't hesitate to suggest whatever you have in mind.&lt;br /&gt;
&lt;br /&gt;
= Previous Summer of Code projects =&lt;br /&gt;
&lt;br /&gt;
We successfully participated in Google's Summer of Code in 2007, 2008 and 2009. See our [[Previous GSoC Projects|list of previous GSoC projects]].&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/FAQ</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/FAQ"/>
				<updated>2008-09-04T23:55:16Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: Update the location of the compiler.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is coreboot? ===&lt;br /&gt;
&lt;br /&gt;
coreboot (formerly known as LinuxBIOS) is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers.&lt;br /&gt;
&lt;br /&gt;
It performs just a little bit of hardware initialization and then executes a so-called [[Payloads|payload]].&lt;br /&gt;
&lt;br /&gt;
Some of the many possible payloads are: a [[Linux]] kernel, [[FILO]], [[GRUB2]], [http://www.openbios.org/ OpenBIOS], [http://www.openbios.org/Open_Firmware Open Firmware], [http://www.openbios.org/SmartFirmware SmartFirmware], [http://www.gnu.org/software/gnufi/ GNUFI] (UEFI), [[Etherboot]], [[ADLO]] (for booting [http://en.wikipedia.org/wiki/Windows_2000 Windows 2000] and [http://openbsd.org/ OpenBSD]), [[Plan 9]], or [[memtest86]].&lt;br /&gt;
&lt;br /&gt;
The initial motivation for the project was maintenance of large clusters, but unsurprisingly, interest and contributions have come from people with varying backgrounds. The latest version of coreboot can be used in a wide variety of scenarios including clusters, embedded systems, desktop PCs, servers, and more.&lt;br /&gt;
&lt;br /&gt;
For more information, see [[History]].&lt;br /&gt;
&lt;br /&gt;
=== Why do we need coreboot? ===&lt;br /&gt;
&lt;br /&gt;
==== Why do we need coreboot for cluster maintainance? ====&lt;br /&gt;
&lt;br /&gt;
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. &lt;br /&gt;
&lt;br /&gt;
coreboot with Linux as a [[Payloads|payload]] (other payloads are possible!) gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. &lt;br /&gt;
&lt;br /&gt;
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be – perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain.&lt;br /&gt;
&lt;br /&gt;
==== Why do we need coreboot for other purposes? ====&lt;br /&gt;
&lt;br /&gt;
Some aspects of DRM are not travelling well with the idea of a free computer system. As many computer magazines already pointed out, there may be future restrictions imposed by BIOSes, that a customer is little aware of before purchase and might not harmonize with the idea of freedom and/or security in some cases.&lt;br /&gt;
&lt;br /&gt;
=== Who is working on coreboot? ===&lt;br /&gt;
&lt;br /&gt;
The coreboot project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory (LANL) by [[User:Rminnich|Ron Minnich]]. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. &lt;br /&gt;
&lt;br /&gt;
Since then, a [[Contributors|long list of people have contributed]] both in discussions and actual code. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake.&lt;br /&gt;
&lt;br /&gt;
=== Who is funding coreboot? ===&lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science.&lt;br /&gt;
&lt;br /&gt;
See also the [[Sponsors|list of LinuxBIOS sponsors]].&lt;br /&gt;
&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
=== Will coreboot work on my machine? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Supported Motherboards]] page for which mainboards are supported, and also the list of [[Supported Chipsets and Devices]]. See the [[Products]] page for a list of vendors selling products running coreboot.&lt;br /&gt;
&lt;br /&gt;
If the above sources don't help, please send the following to the [[Mailinglist|mailing list]]:&lt;br /&gt;
&lt;br /&gt;
* Step 1: A very brief description of your system: CPU, northbridge, southbridge, mainboard and optionally other important details.&lt;br /&gt;
* Step 2: Linux lspci output for your system, generated by booting Linux via the original BIOS and runnning lspci.&lt;br /&gt;
* Step 3: Super I/O chip on the mainboard (report the model numbers on the actual chip, for example &amp;quot;Winbond W83627HF&amp;quot;).&lt;br /&gt;
* Step 4: Type of BIOS device (see the question &amp;quot;How do I identify the BIOS chip on my mainboard?&amp;quot; below).&lt;br /&gt;
* Step 5: URL to the mainboard specifications page (optional).&lt;br /&gt;
* Step 6: Any other relevant information you can provide.&lt;br /&gt;
&lt;br /&gt;
If you can't do step 1 above, please describe (as best you can) the specific CPU chip and the chipset used on the mainboard.&lt;br /&gt;
&lt;br /&gt;
Usually in less than a day, someone will respond on the coreboot mailing list saying your mainboard is supported in the main coreboot source tree, it is currently in development, it is not yet supported or the manufacturer will not release information needed to provide  coreboot support. In the latter case, please let the manufacturer know that you want coreboot support and his failure to release chipset information is making that very difficult.&lt;br /&gt;
&lt;br /&gt;
=== What commercial products use coreboot? ===&lt;br /&gt;
&lt;br /&gt;
See the [[products]] page.&lt;br /&gt;
&lt;br /&gt;
=== Which different operating systems will coreboot boot? ===&lt;br /&gt;
&lt;br /&gt;
coreboot should support almost any modern operating system '''which does not make [http://en.wikipedia.org/wiki/BIOS_interrupt_call BIOS calls]''':&lt;br /&gt;
&lt;br /&gt;
* Linux (of course)&lt;br /&gt;
* Plan 9&lt;br /&gt;
* Windows 2000 (via [[ADLO]])&lt;br /&gt;
&lt;br /&gt;
coreboot does '''not''' support:&lt;br /&gt;
&lt;br /&gt;
* We have tested some of the BSD OSes and have seen, that FreeBSD for example makes BIOS calls, which is not supported by coreboot. Possibly with help of the tool ''ADLO'', it may be possible to boot FreeBSD like it is now, but the right thing to do, is to remove FreeBSD's dependence on BIOS calls.&lt;br /&gt;
* any DOS &lt;br /&gt;
* Windows versions older than Windows 2000 (they make BIOS calls) &amp;amp;mdash; (Does [[ADLO]] work with those versions?)&lt;br /&gt;
* [http://www.menuetos.net/ MenuetOS] (makes BIOS calls)&lt;br /&gt;
&lt;br /&gt;
It appears feasible, however, to introduce some &amp;quot;legacy support&amp;quot; to coreboot in the future to support OSes like the abovementioned.&lt;br /&gt;
&lt;br /&gt;
=== What chipsets and Super I/O devices are supported? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Supported Chipsets and Devices]] page.&lt;br /&gt;
&lt;br /&gt;
=== Where is the mailing list archived? ===&lt;br /&gt;
&lt;br /&gt;
See [[Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
=== Is there a coreboot IRC channel? ===&lt;br /&gt;
&lt;br /&gt;
Yes, see [[IRC]].&lt;br /&gt;
&lt;br /&gt;
=== Where do I get the code? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Download LinuxBIOS|download page]].&lt;br /&gt;
&lt;br /&gt;
=== How do I build coreboot? ===&lt;br /&gt;
&lt;br /&gt;
See the [[documentation]].&lt;br /&gt;
&lt;br /&gt;
=== How can I help with coreboot? ===&lt;br /&gt;
&lt;br /&gt;
There are many ways how you can help us:&lt;br /&gt;
* Promote coreboot, tell all your friends about it, blog about it etc.&lt;br /&gt;
* Test coreboot, [http://tracker.linuxbios.org/trac/LinuxBIOS/newticket report] any bugs you find, or let us know about any suggestions for improvements you have.&lt;br /&gt;
* Help us to make the list of [[Supported Motherboards]] and the list of [[Supported Chipsets and Devices]] bigger by contributing code. Please also read the [[Development Guidelines]] in that case.&lt;br /&gt;
* If you have a mainboard with USB2 (EHCI-controller) you can look if it supports the ''[[EHCI_Debug_Port|Debug Port]]'' and mail the information to us, if it is not already there.&lt;br /&gt;
* If you are familiar with microcontroller development, you might be able to build a debugging tool for the [[EHCI_Debug_Port|Debug Port]]. If you are successful, we like to hear about it.&lt;br /&gt;
* Test, if QNX or Solaris are able to boot on a mainboard with coreboot.&lt;br /&gt;
* Have a look at the [http://tracker.linuxbios.org/trac/LinuxBIOS/report/1 list of open issues/bugs] and try to reproduce them or (preferrably) fix them.&lt;br /&gt;
* Contact [[User:Rminnich|Ron Minnich]] or [[User:Stepan|Stefan Reinauer]] for bigger projects related to coreboot.&lt;br /&gt;
* Contact us on the [[Mailinglist|mailing list]] if you have any further questions or suggestions.&lt;br /&gt;
&lt;br /&gt;
=== What do the abbreviations in this wiki stand for? ===&lt;br /&gt;
&lt;br /&gt;
See [[Glossary]].&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I buy BIOS chips (empty or pre-flashed)? ===&lt;br /&gt;
&lt;br /&gt;
When developing or simply trying out coreboot you always need a means to revert to your old BIOS in case something goes wrong. One way to do this is to get an extra BIOS chip (PLCC or DIP) and copy your original BIOS image onto that chip (using [[Flashrom]], for example). If you have a socketed BIOS (not soldered onto the mainboard), you can hot-swap the chips while your computer is running. &lt;br /&gt;
&lt;br /&gt;
You have several options to get spare BIOS chips:&lt;br /&gt;
* Most local or online electronics dealers carry some, for example:&lt;br /&gt;
** Germany:&lt;br /&gt;
*** http://www.bios-chip.de&lt;br /&gt;
*** http://www.bios-fix.de&lt;br /&gt;
*** http://www.bios-shop.com&lt;br /&gt;
*** http://www.bios-chips.com&lt;br /&gt;
*** http://www.conrad.de&lt;br /&gt;
*** http://www.endrich.com/de/site.php/47385 (it's unknown whether they ship small quantities)&lt;br /&gt;
*** http://www.chip-service.de&lt;br /&gt;
** UK:&lt;br /&gt;
*** http://bios-repair.co.uk/&lt;br /&gt;
** US:&lt;br /&gt;
*** http://avnet.com&lt;br /&gt;
*** http://mouser.com&lt;br /&gt;
*** http://semiconductorstore.com/&lt;br /&gt;
* You can search eBay for BIOS chips (either empty ones or pre-flashed ones).&lt;br /&gt;
* You can rip out chips from old/broken mainboards and re-use them (you can check flea markets, eBay, etc. for cheap and/or broken mainboards).&lt;br /&gt;
&lt;br /&gt;
=== What kind of hardware tools do I need? ===&lt;br /&gt;
&lt;br /&gt;
A motherboard (or mainboard as coreboot calls it) that has a supported chipset on it. Ok... well not exactly. As long as you have the documentation for the chipset/mainboard and it's free of any NDA issues you can use an unsupported chipset/mainboard, but you have a twisty road ahead of you.&lt;br /&gt;
	&lt;br /&gt;
And of course you need a Linux development machine. The coreboot build environment is not supported on Windows. It may be possible to do it under cygwin but nobody has tried.&lt;br /&gt;
		&lt;br /&gt;
It's also handy to have one/some/all of the following:&lt;br /&gt;
	&lt;br /&gt;
==== PLAICE  Programmer, Logic Analyzer and In-Circuit Emulator ====&lt;br /&gt;
&lt;br /&gt;
[http://flash-plaice.wikispaces.com PLAICE (In Development)] see also  [http://hardware.slashdot.org/article.pl?sid=07/05/01/0017244 /.slashdot ]&lt;br /&gt;
The PLAICE is a powerful in circuit development tool that combines the features of programming and emulating FLASH devices as well as high speed multi-channel logic analysis into one device.&lt;br /&gt;
&lt;br /&gt;
The FLASH BIOS emulator feature will help speed development of coreboot porting since the developer will no longer have to wait for either swapping FLASH devices or for lengthy FLASH programming cycles.&lt;br /&gt;
&lt;br /&gt;
The design will also perform as a multi-channel logic analyzer with a JAVA client.&lt;br /&gt;
&lt;br /&gt;
The PLAICE will make use of an adapter cable that will interface to the mainboard via the FLASH BIOS socket or onto the pins of a soldered in place FLASH device. It may also be used to program a FLASH device or emulate a FLASH device in circuit. Since the PLAICE attaches directly to the in-circuit FLASH device, the FLASH may be programmed without the need to reverse engineer any FLASH WRITE/ENABLE &amp;quot;security through obscurity&amp;quot; protection schemes incorporated into a mainboard.&lt;br /&gt;
&lt;br /&gt;
==== Artecgroup programmable LPC dongle ====&lt;br /&gt;
&lt;br /&gt;
[http://www.artecgroup.com/products/hardware-products/programmable-lpc-dongle.html] and [http://www.opencores.org/projects.cgi/web/usb_dongle_fpga/overview]&lt;br /&gt;
&lt;br /&gt;
==== PC Engines lpc1A ====&lt;br /&gt;
&lt;br /&gt;
[http://pcengines.ch/lpc1a.htm This board] is most useful if you are working on machines from the ALIX family, but could also be useful if you can expose an LPC header on another board.&lt;br /&gt;
&lt;br /&gt;
==== External EPROM/Flash programmer that can program the flash on your motherboard ====&lt;br /&gt;
&lt;br /&gt;
external programmers are not always necessary. Use your mainboard as a programmer instead. Boot up with a known-good image, then unplug the plcc32 while powered on.&lt;br /&gt;
Reflash that secondary piece and try a reboot. Many boards allow for more than one type of flash to be programmed, but clearly are less versatile than real programmers.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mcumall.com/ Willem Universal EPROM Programmer] DOS,Windows software, work has started on Linux drivers, quite many types of eprom asf. ~ €35&lt;br /&gt;
* [http://www.loet.de/flasher_en.html IDE adapter for PLCC32 &amp;amp; DIP32 sockets] Has Linux 2.4 &amp;amp; 2.6 drivers $/€ ~48 (kit €33) free manual with schematics &amp;amp; component list downloadable (component cost approx. €5)&lt;br /&gt;
* [http://www.conitec.net/english/software.htm GALEP-4] Has [http://www.conitec.net/hardware/down/galep-linux-alpha1.html beta linux drivers] ~$300. See [[Galep IV]] for a description on how to get the more modern windows software working in Linux with wine&lt;br /&gt;
&lt;br /&gt;
==== Bios Savior ====&lt;br /&gt;
&lt;br /&gt;
[[Image:Bios savior.jpg|thumb|right|An installed BIOS saviour.]]&lt;br /&gt;
&lt;br /&gt;
A tool that plugs into and replaces the original mainboard Flash device. The BIOS Savior has its own Flash device and a socket for the original mainboard Flash device. The Bios Savior features a switch to allow the developer to choose between which Flash device is accessed by the mainboard during read and write cycles.&lt;br /&gt;
&lt;br /&gt;
* http://www.ioss.com.tw/web/English/RD1BIOSSavior.html&lt;br /&gt;
* http://www.cwlinux.com/eng/products/products_lbmb.php&lt;br /&gt;
&lt;br /&gt;
==== Top Hat Flash ====&lt;br /&gt;
&lt;br /&gt;
A similar function is achieved by the &amp;quot;'''top hat flash'''&amp;quot; which comes at no extra cost with many Elitegroup, and some Gigabyte and Albatron mainboards like ECS KN3 SLI2 Extreme  with MCP55 southbridge (which is getting severely out of stock around central europe as of 8/2007 unfortunately). After bootup, it can manually be lifted off the original BIOS chip, so the original BIOS can be reflashed after a failure. /rst is wired to /oe on the spare chip otherwise 1:1. top hat flash is equipped with a Winbond W39V040AP  FWH. It may rely on particular circuitry on the mainboard to operate.&lt;br /&gt;
&lt;br /&gt;
[[Image:Top_hat_flash.JPG|thumb|right|Top Hat Flash, PCB side to flip over soldered-on PLCC.]]&lt;br /&gt;
&lt;br /&gt;
==== Chip removal tools ====&lt;br /&gt;
&lt;br /&gt;
If you're hot-swapping your BIOS chips (i.e., removing the chip while your computer is running, then inserting another one) you'll usually need some tools.&lt;br /&gt;
&lt;br /&gt;
There are different tools for DIP and PLCC chips (see photos). You can find them in most electronics stores, usually. Both types cost roughly 5-10 Euros.&lt;br /&gt;
&lt;br /&gt;
Another very nifty idea is [http://www.linuxbios.org/pipermail/linuxbios/2007-April/019809.html clipping off the needle point of normal office push pins], and then attaching them to (PLCC) ROM chips with super glue. That makes it pretty easy to insert and remove the ROM chips without extra tools.&lt;br /&gt;
&lt;br /&gt;
Since after bootup, flash mem is not accessed anymore, you can even hot plug (plug in and out '''while PC powered on''') push pin flashes. This way you save an external eprom programmer and mimic the procedure of top hat flash. Make sure you do not short circuit anything, though.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Plcc tool.jpg|PLCC BIOS removal tool.&lt;br /&gt;
Image:Dip tool.jpg|DIP BIOS removal tool.&lt;br /&gt;
Image:Pushpin roms 1.jpg|Push pins with cut off needles, attached to ROM chips with super glue.&lt;br /&gt;
Image:Pushpin roms 2.jpg|More push pins on ROM chips.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POST card ====&lt;br /&gt;
&lt;br /&gt;
A POST card will save your life: it's the only output device (beside beeper) you have during the boot process. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in coreboot, so if you can tell us the POST code you see, we will have some idea of what happened. &lt;br /&gt;
&lt;br /&gt;
If your coreboot machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). There are POST cards with ISA bus, PCI bus, USB und parallel port connectors (the latter for laptops).&lt;br /&gt;
&lt;br /&gt;
Often they carry status LEDs for ISA/PCI signals such as: IRDY, BIOS-access, FRAME, OSC, PCI-CLK, RESET, 12V, -12V, 5V, -5V, 3.3V. Some cards were known to not function because the mainboard switches off the CLK on their slot after non-standard registration on PCI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Post card1.jpg|BIOS POST card for PCI.&lt;br /&gt;
Image:Post card2.jpg|BIOS POST card for PCI and ISA.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PCI POST cards can be found in various places.&lt;br /&gt;
&lt;br /&gt;
See also [http://www.linuxbios.org/FAQ#How_can_I_write_to_port_0x80_from_userspace.3F How can I write to port 0x80 from userspace].&lt;br /&gt;
&lt;br /&gt;
* http://siliconkit.dnsalias.com/cart/index.tpcip.html&lt;br /&gt;
* http://www.elstonsystems.com/prod/pc_analyzer.html&lt;br /&gt;
* http://shopv2.elstonsystems.com/product_info.php/products_id/57&lt;br /&gt;
* http://www.uxd.com/trio.html&lt;br /&gt;
* http://www.soyousa.com/products/proddesc.php?id=261&lt;br /&gt;
&lt;br /&gt;
==== Null-modem cable ====&lt;br /&gt;
&lt;br /&gt;
A so-called null-modem cable is used for transmitting the output from a serial coreboot (or GRUB- or Linux-) console to another computer where a terminal program (such as [[minicom]]) can be used to display/save the messages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:Null modem cable.jpg|A null-modem cable.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Compact Flash IDE adaptor ====&lt;br /&gt;
&lt;br /&gt;
solid state disk save time during the repeated boot process compared with regular hard disks.&lt;br /&gt;
&lt;br /&gt;
* http://siliconkit.dnsalias.com/cart/index.tcfdp.html&lt;br /&gt;
* http://www.cwlinux.com/eng/products/products_ide2cf.php&lt;br /&gt;
* http://www.mini-box.com/s.nl/sc.8/category.14/.f&lt;br /&gt;
* http://www.acscontrol.com/Index_ACS.asp?Page=/Pages/Products/CompactFlash/IDE_To_CF_Adapter.htm&lt;br /&gt;
* http://www.pcengines.ch/cflash.htm&lt;br /&gt;
* http://www.psism.com/adcf.htm&lt;br /&gt;
* http://www.hsc-us.com/industrial/adapter/ATP.html (2xCF, one with hotswap!)&lt;br /&gt;
* http://www.mesanet.com/ (Choose DISK EMULATORS then CFADPTHD in the menu. 2xCF)&lt;br /&gt;
&lt;br /&gt;
==== Oscilloscope ====&lt;br /&gt;
&lt;br /&gt;
For hardware debugging purposes when it goes down the most atomic details. Consider '''logic analyzers''' as alternative.&lt;br /&gt;
&lt;br /&gt;
==== In Circuit Emulator hardware debugger ====&lt;br /&gt;
&lt;br /&gt;
allows very time-saving burn/debug cycles with added tracing capabilities but somewhat costly. Ownership makes you a true geek, however ;-)&lt;br /&gt;
&lt;br /&gt;
==== coreboot SDK ====&lt;br /&gt;
&lt;br /&gt;
* http://www.cwlinux.com/eng/products/products_sdk.php&lt;br /&gt;
&lt;br /&gt;
==== In Circuit chip programmer ====&lt;br /&gt;
&lt;br /&gt;
Should allow you to program your BIOS even if it is soldered to the motherboard.&lt;br /&gt;
&lt;br /&gt;
* http://www.xeltek.com/pages.php?pageid=8&lt;br /&gt;
&lt;br /&gt;
==== EPROM emulators ====&lt;br /&gt;
&lt;br /&gt;
These hardware devices pretend to be an EPROM chip.&lt;br /&gt;
&lt;br /&gt;
* http://www.tech-tools.com/romtools.htm&lt;br /&gt;
* http://xtronics.com/memory/pktROM.htm&lt;br /&gt;
* http://www.tribalmicro.com/multirom/&lt;br /&gt;
* http://www.linuxselfhelp.com/HOWTO/Diskless-HOWTO-10.html (a larger list -- outdated)&lt;br /&gt;
&lt;br /&gt;
==== USB debug devices ====&lt;br /&gt;
&lt;br /&gt;
An alternative to a serial console may be a USB debug device. They are not so common yet. Their advantage is higher speed than a serial console. One might hook an FPGA to it for profiling purposes or some automated checks. Accessing a USB debug device from within BIOS is not different than other USB devices, and is part of the USB standard.&lt;br /&gt;
&lt;br /&gt;
See also [[EHCI Debug Port]].&lt;br /&gt;
&lt;br /&gt;
=== How do I use a null-modem cable to get coreboot debugging output over a serial port? ===&lt;br /&gt;
&lt;br /&gt;
* First, you'll want to set up a terminal program, e.g. '''minicom''' correctly.&lt;br /&gt;
 $ minicom -s&lt;br /&gt;
  -&amp;gt; Serial port setup&lt;br /&gt;
  -&amp;gt; Press A and enter your COM device (ttyS0 or ttyS1 or ttyUSB0, depending on your COM port)&lt;br /&gt;
  -&amp;gt; Press E and choose &amp;quot;115200 8N1&amp;quot; (default)&lt;br /&gt;
  -&amp;gt; Disable Hardware and Software Flow Control (via F and G)&lt;br /&gt;
  -&amp;gt; Press enter to leave the menu&lt;br /&gt;
  -&amp;gt; Save setup as..&lt;br /&gt;
  -&amp;gt;   Enter &amp;quot;lb&amp;quot;&lt;br /&gt;
  -&amp;gt; Exit from minicom&lt;br /&gt;
* From now on, you can start minicom with the obove settings simply by typing:&lt;br /&gt;
 $ minicom -o lb&lt;br /&gt;
&lt;br /&gt;
=== What documentation do I need? ===&lt;br /&gt;
&lt;br /&gt;
As much documentation as you can possibly get your hands on.  At minimum, you will need the docs for the chipset.&lt;br /&gt;
	&lt;br /&gt;
There have been reports of people getting coreboot working by booting with the OEM BIOS. Then, they would read the static contents of the PCI config registers after boot. coreboot is then built to match the static contents read from the PCI config registers. &lt;br /&gt;
&lt;br /&gt;
The problem with this approach is that chipsets generally require dynamic vs static configuration values during their initialization. The configuration register contents will change from one stage of initialization to the next. Since the contents of the registers read is only the final state of the configuration registers, the chipset won't be properly initialized if these are the only configuration values used.&lt;br /&gt;
&lt;br /&gt;
Getting a mainboard up without chipset docs can be a very long and involved process.&lt;br /&gt;
&lt;br /&gt;
=== What if my chipset docs are covered by an NDA? ===&lt;br /&gt;
&lt;br /&gt;
If the documentation for your chipset covered by a NDA with no source release agreement, you won't be able to release your code back to the coreboot project in general, or you will violate the GPL.&lt;br /&gt;
Many vendors accept releasing the source code, produced after reading such specs, while they don't allow the specs themselves to be revealed. Also, you can offer them the opportunity to review your code, before releasing it to the public.&lt;br /&gt;
&lt;br /&gt;
=== Why is the code so complicated and what can I do to make it easier? ===&lt;br /&gt;
&lt;br /&gt;
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. &lt;br /&gt;
&lt;br /&gt;
=== How do I contribute my changes? ===&lt;br /&gt;
&lt;br /&gt;
Please carefully read the [http://linuxbios.org/Development_Guidelines Development Guidelines] for more information.&lt;br /&gt;
&lt;br /&gt;
=== How do I identify the BIOS chip on my mainboard? ===&lt;br /&gt;
&lt;br /&gt;
Modern mainboards store the BIOS in a reprogrammable flash ROM chip. There are hundreds of different flash ROMs, with variables such as memory size, speed, communication bus (LPC vs. ISA/PCI) and packaging to name just a few. The three most common packages are called DIP, PLCC and TSOP. The BIOS copyright holders often place a fancy sticker on the BIOS chip showing a name or logotype, BIOS version, serial number and copyright notice.&lt;br /&gt;
&lt;br /&gt;
==== DIP: Dual In-line Package ====&lt;br /&gt;
&lt;br /&gt;
[[Image:ROM BIOS.jpg|thumb|right|A DIP BIOS chip.]]&lt;br /&gt;
&lt;br /&gt;
A rectangular black plastic block with lots of pins along the two longer sides of the package. DIP ROMs can be socketed which means they are detachable from the mainboard using physical force. Since they haven't been moved in and out of the socket very much (yet, hehe) they can appear to be quite difficult to release from the socket. One way to remove a DIP from a socket is by prying a thin screwdriver in between the plastic package and the socket, along the shorter sides where there are no pins, and then gently bending the screwdriver to push the DIP upwards, away from the mainboard. Alternate between the two sides to avoid bending the pins, and don't touch any of the pins with the screwdriver, see FAQ about ESD, electro-static discharge. If the DIP is soldered directly to the mainboard, it has to be desoldered in order to be reprogrammed outside the mainboard. If you do this, it's a good idea to solder a socket to the mainboard instead, to ease any future experiments.&lt;br /&gt;
&lt;br /&gt;
==== PLCC: Plastic Leaded Chip Carrier ====&lt;br /&gt;
&lt;br /&gt;
[[Image:2 W39V040BPZ.png|thumb|right|A socketed PLCC BIOS chip.]]&lt;br /&gt;
&lt;br /&gt;
Black plastic block again, but this one is much more square. PLCC is becoming the standard for mainboards because of it's smaller physical size. PLCC can also be socketed or soldered directly to the mainboard. Socketed PLCC chips can be removed using a special PLCC removal tool, or using a piece of nylon line tied in a loop around the chip and pulled swiftly straight up, or bending/prying using small screwdrivers if one is careful. PLCC sockets are often fragile so the screwdriver approach is not recommended. While the nylon line method sounds onorthodox it works well. Desoldering PLCC can be painful without specialized desoldering equipment particularly because PLCC chips have leads on all four sides of the package.&lt;br /&gt;
&lt;br /&gt;
==== TSOP: Thin Small-Outline Package ====&lt;br /&gt;
&lt;br /&gt;
[http://www.isipkg.com/images/adp_tsop_dip.jpg TSOP chip on a TSOP-&amp;gt;DIP adapter]&lt;br /&gt;
&lt;br /&gt;
TSOPs are often used in embedded systems where size is important and there is no need for replacement in the field. It is possible to (de)solder TSOPs by hand, but it comes close to wizardry.&lt;br /&gt;
&lt;br /&gt;
=== How do I (re-)flash the BIOS? ===&lt;br /&gt;
&lt;br /&gt;
==== Out of mainboard BIOS (re)flash ====&lt;br /&gt;
&lt;br /&gt;
If the BIOS chip is socketed, it can be removed and flashed in a rom/flash burner and quickly re-installed.  Some of these burners cost $1000 and more plus they complete a flash in 1-2 minutes, but if you are willing to wait 5 minutes for a flash and manually set DIP switches, The Enhanced Willem Universal Programmer will do the job for only $40-60 USD.  There are several models of the Willem Programmer, each supporting many chips, but not all, so be sure to get one that supports your BIOS chip.  If your chip is PLCC, you will also need a PLCC chip extractor/puller or just thread nylon string under the PLCC chip from corner to corner and yank up it straight up.&lt;br /&gt;
&lt;br /&gt;
==== Inside mainboard BIOS (re)flash ====&lt;br /&gt;
&lt;br /&gt;
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions: &lt;br /&gt;
&lt;br /&gt;
===== General =====&lt;br /&gt;
coreboot v2 contains a flash utility called flashrom in the util/flashrom directory. (Old versions had &amp;quot;util/flash_and_burn/flash_rom&amp;quot; instead).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 bash$ sudo ./flashrom -V&lt;br /&gt;
 Calibrating delay loop... Setting up microsecond timing loop&lt;br /&gt;
 216M loops per second&lt;br /&gt;
 ok&lt;br /&gt;
 Found canidate at: 00000530-00000bc4&lt;br /&gt;
 Found LinuxBIOS table at: 00000530&lt;br /&gt;
 lb_table found at address 0xb7e1c530&lt;br /&gt;
 LinuxBIOS header(24) checksum: 404a table(1684) checksum: 2766 entries: 14&lt;br /&gt;
 vendor id: via part id: epia-m&lt;br /&gt;
 Enabling flash write on VT8235...OK&lt;br /&gt;
 Trying Am29F040B, 512 KB&lt;br /&gt;
 probe_29f040b: id1 0x20, id2 0xe2&lt;br /&gt;
 Trying ST29F040B, 512 KB&lt;br /&gt;
 probe_29f040b: id1 0x20, id2 0xe2&lt;br /&gt;
 ST29F040B found at physical address: 0xfff80000&lt;br /&gt;
 Flash part is ST29F040B&lt;br /&gt;
 OK, only ENABLING flash write, but NOT FLASHING.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If neither utility supports your chip, then you could either use the DOS [http://www.uniflash.org/ uniflash] utility, or use its source code, which is also available for download from the uniflash site (in Turbo Pascal 7) as a reference for adding support for your flash chip to &amp;quot;flash_rom&amp;quot;.  Uniflash supports a lot of different flash chips, and chip interfaces. It has untested support for PCI expansion card flash BIOS, such as on RTL8139 Ethernet card (32pin DIL), which allows flashing on the NIC if manufacturer provides the circuitry.&lt;br /&gt;
Another tool which runs in linux is [http://sourceforge.net/projects/ctflasher/ flasher].&lt;br /&gt;
&lt;br /&gt;
===== SiS 630/950 M/Bs =====&lt;br /&gt;
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. &lt;br /&gt;
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. &lt;br /&gt;
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. &lt;br /&gt;
&lt;br /&gt;
===== Intel L440GX =====&lt;br /&gt;
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. &lt;br /&gt;
How do I actually burn a flash ROM? &lt;br /&gt;
&lt;br /&gt;
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== BIOS Savior RD1 =====&lt;br /&gt;
&lt;br /&gt;
[http://www.ioss.com.tw/web/English/RD1BIOSSavior.html BIOS Savior RD1]&lt;br /&gt;
&lt;br /&gt;
There are some posts about the BIOS Savior RD1 that suggest its integrated flash device is of low quality; it may take 10 or more flash programming attempts to get a good update to the RD1 flash device. As a result, the following steps have proven to be successful while using the RD1:&lt;br /&gt;
&lt;br /&gt;
* Step 1 - While the system is powered down, remove the original BIOS device from the mainboard and insert it into the RD1's socket.&lt;br /&gt;
&lt;br /&gt;
* Step 2 - Insert the RD1 into the mainboard's flash BIOS socket.&lt;br /&gt;
&lt;br /&gt;
* Step 3 - Boot the system with the RD1 set to boot from the original flash device from the mainboard.&lt;br /&gt;
&lt;br /&gt;
* Step 4 - Program the original BIOS image (or other known good BIOS image) into the RD1's integrated flash device. Do this as many times as needed until the device is properly programmed and the system boots corectly from the RD1's integrated flash device. Be sure to check the settings on the RD1 so that the proper flash device is now being programmed. If the RD1 is not set correctly the working BIOS image will be erased and the system will not boot!&lt;br /&gt;
&lt;br /&gt;
* Step 5 - Program the test BIOS image (usually coreboot images are among this group) into the original flash device from the mainboard. The original BIOS device usually programs OK on the first attempt. Be sure to check the settings again on the RD1 so that the proper flash device is being programmed!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RD1 has been used in the above fashion with great success on the Tyan S2885 mainboard. Unfortunately the RD1 does not work on the nVidia CK8-04 CRB mainboard. The CK8-04 CRB may require a flash device that the RD1 does not support. &lt;br /&gt;
&lt;br /&gt;
The RD1 has worked well as a &amp;quot;do nothing&amp;quot; adapter that allows swapping the BIOS flash device between a flash burner and a mainboard without any wear to the mainboard's BIOS socket.&lt;br /&gt;
&lt;br /&gt;
=== Can I do any serious damage mucking around with this stuff? ===&lt;br /&gt;
&lt;br /&gt;
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). &lt;br /&gt;
&lt;br /&gt;
* Incorrect insertion of the flash (1 casualty) &lt;br /&gt;
* Incorrect jumper settings (1 casualty) &lt;br /&gt;
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) &lt;br /&gt;
* Miscellaneous miswirings and mishandlings (3+ casualties)&lt;br /&gt;
&lt;br /&gt;
remember: make sure your important data is on a disconnected drive while you experiment.&lt;br /&gt;
&lt;br /&gt;
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===&lt;br /&gt;
&lt;br /&gt;
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. &lt;br /&gt;
&lt;br /&gt;
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. &lt;br /&gt;
&lt;br /&gt;
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: &lt;br /&gt;
&lt;br /&gt;
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. &lt;br /&gt;
&lt;br /&gt;
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! &lt;br /&gt;
&lt;br /&gt;
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. &lt;br /&gt;
&lt;br /&gt;
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage.&lt;br /&gt;
&lt;br /&gt;
=== What is a PIRQ table? ===&lt;br /&gt;
&lt;br /&gt;
There's a good description of the BIOS implementation of the PIRQ in the ''red PCI book'', and here's a [http://www.microsoft.com/whdc/archive/pciirq.mspx description of the $PIR data structure].&lt;br /&gt;
&lt;br /&gt;
coreboot saves the $PIR data structure between 0xf0000 &amp;amp; 0x100000. Search for $PIR and then save it before copying over the BIOS.&lt;br /&gt;
&lt;br /&gt;
See also the [http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv1/util/ADLO/pirq/README ADLO README] for more information.&lt;br /&gt;
&lt;br /&gt;
=== How do I set up etherboot with coreboot? ===&lt;br /&gt;
&lt;br /&gt;
Note from Ron: I have edited this somewhat to remove Geode-specific items. &lt;br /&gt;
&lt;br /&gt;
 Christer Weinigel writes: &lt;br /&gt;
 To: rminnich@lanl.gov&lt;br /&gt;
 Cc: linuxbios@lanl.gov&lt;br /&gt;
 Subject: Re: LinuxBIOS + Etherboot HOWTO?&lt;br /&gt;
 &lt;br /&gt;
 I had some trouble using LinuxBIOS + etherboot... &lt;br /&gt;
 &lt;br /&gt;
 My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. &lt;br /&gt;
 &lt;br /&gt;
 Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. &lt;br /&gt;
 &lt;br /&gt;
   /Christer &lt;br /&gt;
 &lt;br /&gt;
 Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. &lt;br /&gt;
 &lt;br /&gt;
 Modify etherboot-5.0/src/Config, comment out: &lt;br /&gt;
 &lt;br /&gt;
    # BIOS select don't change unless you know what you are doing&lt;br /&gt;
    #CFLAGS32+=     -DPCBIOS&lt;br /&gt;
 &lt;br /&gt;
 and uncomment the following: &lt;br /&gt;
 &lt;br /&gt;
    # Options to make a version of Etherboot that will work under linuxBIOS.&lt;br /&gt;
    CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL \&lt;br /&gt;
               -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE &lt;br /&gt;
 &lt;br /&gt;
 Compile Etherboot to make an elf file for your ethernet card: &lt;br /&gt;
 &lt;br /&gt;
     make bin32/natsemi.elf&lt;br /&gt;
 &lt;br /&gt;
 Compile and install mkelfImage from freebios/util/mkelfImage. &lt;br /&gt;
 &lt;br /&gt;
 Create a bootimage to put on your TFTP server: &lt;br /&gt;
 &lt;br /&gt;
    mkelfImage --command-line=&amp;quot;root=/dev/hda2 console=ttyS0,38400&amp;quot; \&lt;br /&gt;
               --kernel vmlinux -o /tftpboot/kernel&lt;br /&gt;
 &lt;br /&gt;
 Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. &lt;br /&gt;
 &lt;br /&gt;
 Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: &lt;br /&gt;
 &lt;br /&gt;
    option USE_ELF_BOOT=1&lt;br /&gt;
 &lt;br /&gt;
 I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. &lt;br /&gt;
 &lt;br /&gt;
    insmod bios.o&lt;br /&gt;
    dd if=natsemi.elf of=/dev/bios bs=64k&lt;br /&gt;
    dd if=linuxbios.rom of=/dev/bios bs=64k seek=1&lt;br /&gt;
 &lt;br /&gt;
 Finally boot LinuxBIOS.&lt;br /&gt;
&lt;br /&gt;
=== How do I set GEODE graphics and video? ===&lt;br /&gt;
&lt;br /&gt;
There is no Geode graphics support in coreboot. Install the Geode framebuffer driver for console graphics and the X driver for X support on your Geode Linux image. Current kernel and X distributions contain the required drivers. Until the driver loads there is only serial console output.&lt;br /&gt;
&lt;br /&gt;
Driver source:&lt;br /&gt;
&lt;br /&gt;
[http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.23.y.git;a=tree;f=drivers/video/geode;hb=3968cb49ab01588cbf6896951780a1e411a0ec38 2.6.23 kernel framebuffer driver]&lt;br /&gt;
&lt;br /&gt;
[http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-amd.git;a=summary X.org driver]&lt;br /&gt;
&lt;br /&gt;
=== How do I set up testbios? ===&lt;br /&gt;
&lt;br /&gt;
Please read the [http://linuxbios.org/FAQ/Obsolete#How_do_I_set_up_testbios.3F testbios FAQ].&lt;br /&gt;
&lt;br /&gt;
=== /usr/sbin/iasl: Command not found ===&lt;br /&gt;
&lt;br /&gt;
If you see this error, you have to install ''iasl'', Intel's ASL Optimizing Compiler:&lt;br /&gt;
&lt;br /&gt;
* '''SUSE''' ships it in the '''pmtools''' package ([ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/suse/x86_64/pmtools-20050823-3.x86_64.rpm pmtools-20050823-3.x86_64.rpm], [ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/suse/i586/pmtools-20050823-3.i586.rpm pmtools-20050823-3.i586.rpm]). If you want to run rpmbuild --rebuild: [ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.0-OSS/inst-source/suse/src/pmtools-20050823-3.src.rpm pmtools-20050823-3.src.rpm].&lt;br /&gt;
* '''Debian''' ships it in the '''iasl''' package (''apt-get install iasl'').&lt;br /&gt;
* You can also download the [http://acpica.org/downloads/unix_source_code.php latest version of the source code].&lt;br /&gt;
&lt;br /&gt;
=== How can I write to POSTcard port 0x80 from userspace? ===&lt;br /&gt;
&lt;br /&gt;
[http://www.linuxbios.org/pipermail/linuxbios/2006-November/017012.html This] might be useful in some situations, and to output a number to a POST card:&lt;br /&gt;
&lt;br /&gt;
 printf &amp;quot;\001&amp;quot; | dd bs=1 seek=128 of=/dev/port&lt;br /&gt;
&lt;br /&gt;
In DOS (not Windows XP) use:&lt;br /&gt;
 mov al, 42; out al, 80h&lt;br /&gt;
To output 42 type&lt;br /&gt;
 o 80 42&lt;br /&gt;
in DOS debug.exe.&lt;br /&gt;
&lt;br /&gt;
=== Is coreboot applying x86 microcode patches? ===&lt;br /&gt;
&lt;br /&gt;
And if yes, can they be modified?&lt;br /&gt;
&lt;br /&gt;
Answer: this field is little documented. Few people think, however, that system design can seriously be improved by modifications here ( µCode patches mostly disable erraneous functions and opcodes).&lt;br /&gt;
&lt;br /&gt;
=== How can I retrieve a good video BIOS? ===&lt;br /&gt;
&lt;br /&gt;
Note: If you are following these instructions to build coreboot for your motherboard, this is only necessary if you have a motherboard with an embedded VGA card. If your VGA is a PCI / PCI-Express add-on card, coreboot will find and run the ROM by itself.&lt;br /&gt;
&lt;br /&gt;
Anton Borisov has released a number of tools under the GPL (v2) to extract the VGA BIOS from the BIOS ROM images provided by the supplier of your motherboard.&lt;br /&gt;
&lt;br /&gt;
You can download them here:&lt;br /&gt;
&lt;br /&gt;
* Award BIOS:&lt;br /&gt;
** http://kaos.ru/biosgfx/download/awardeco-0.2.src.tar.gz&lt;br /&gt;
** http://ftp.debian.org/debian/pool/main/a/awardeco/awardeco_0.2.orig.tar.gz&lt;br /&gt;
* AMI BIOS:&lt;br /&gt;
** http://www.kaos.ru/biosgfx/download/AmiDeco_0.31e.src.tar.gz&lt;br /&gt;
** http://ftp.debian.org/debian/pool/main/a/amideco/amideco_0.31e.orig.tar.gz&lt;br /&gt;
* Phoenix BIOS:&lt;br /&gt;
** http://www.kaos.ru/biosgfx/download/PhoenixDeco_0.33.src.tar.gz&lt;br /&gt;
** http://ftp.debian.org/debian/pool/main/p/phnxdeco/phnxdeco_0.33.orig.tar.gz&lt;br /&gt;
* Insyde BIOS:&lt;br /&gt;
** http://www.kaos.ru/biosgfx/download/InsyDeco_0.3.src.tar.gz&lt;br /&gt;
** (no alternative download location available, sorry)&lt;br /&gt;
&lt;br /&gt;
See the [[Tyan S2881 Build Tutorial]] for more information on how to use these tools.&lt;br /&gt;
&lt;br /&gt;
== Can I put coreboot into a PCI expansion ROM? ==&lt;br /&gt;
&lt;br /&gt;
There's little use in doing that, as a lots of initialization has already been done by the proprietary BIOS (or coreboot) by the time the PCI expansion ROM is executed. It won't be possible to run coreboot from a PCI expansion ROM after a proprietary BIOS has already been running for instance.&lt;br /&gt;
&lt;br /&gt;
Note: The Intel ICH7 southbridge seems to allows booting from PCI ROMs ('''not''' arbitrary PCI expansion ROMs as used on graphics cards, SCSI controllers, etc.) -- maybe this should be investigated in order to check if or how it might be useful.&lt;br /&gt;
&lt;br /&gt;
== Obsolete FAQ items ==&lt;br /&gt;
&lt;br /&gt;
Please see [[FAQ/Obsolete]] for (probably) obsolete FAQ items.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2008-08-19T15:48:20Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td width=&amp;quot;80%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em; margin-bottom:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#efefff; align:right; border:1px solid #aabbcc;&amp;quot;&amp;gt;&lt;br /&gt;
'''coreboot''' (formerly known as LinuxBIOS) is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers. It performs just a little bit of hardware initialization and then executes a so-called [[Payloads|payload]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=0 cellpadding=3 border=0 margin=0 padding=0 align=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #8898bf|&lt;br /&gt;
BACKGROUND = yellow|&lt;br /&gt;
WIDTH = 100%|&lt;br /&gt;
ICON = &amp;lt;small&amp;gt;[[Benefits|More...]]&amp;lt;/small&amp;gt;|&lt;br /&gt;
HEADING = [[Benefits]]|&lt;br /&gt;
CONTENT =&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* 100% Free Software (GPL), no royalties, no license fees!&lt;br /&gt;
* Fast boot times (3 seconds to Linux console)&lt;br /&gt;
* Avoids the need for a slow/buggy/proprietary BIOS&lt;br /&gt;
&amp;lt;!-- * Runs in 32-Bit protected mode almost from the start --&amp;gt;&lt;br /&gt;
* Written in C, contains virtually no assembly code&lt;br /&gt;
* Supports many [[Supported Motherboards|mainboards]], [[Supported Chipsets and Devices|devices]], and [[payloads]]&lt;br /&gt;
&amp;lt;!-- * Further features: netboot, serial console, remote flashing, ... --&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #8898bf|&lt;br /&gt;
BACKGROUND = #d1adf6|&lt;br /&gt;
WIDTH = 100%|&lt;br /&gt;
ICON = &amp;lt;small&amp;gt;[[Use Cases|More...]]&amp;lt;/small&amp;gt;|&lt;br /&gt;
HEADING = [[Use Cases]]|&lt;br /&gt;
CONTENT =&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* Desktop PCs, servers, clusters, thin clients&lt;br /&gt;
* [[Clusters]], high-performance computing&lt;br /&gt;
&amp;lt;!-- * Set-Top-Boxes, thin clients --&amp;gt;&lt;br /&gt;
* Embedded solutions, STBs/HTPC, appliances, terminals&lt;br /&gt;
&amp;lt;!-- * [http://en.wikipedia.org/wiki/Small_form_factor Small form factor computers], [http://en.wikipedia.org/wiki/Home_theater_PC Home-theater PCs] --&amp;gt;&lt;br /&gt;
* No-moving-parts solutions (ROM chip as &amp;quot;disk&amp;quot;)&lt;br /&gt;
* Non-standard scenarios (e.g. FPGA in Opteron socket)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #8898bf|&lt;br /&gt;
BACKGROUND = lime|&lt;br /&gt;
WIDTH = 100%|&lt;br /&gt;
ICON = &amp;lt;small&amp;gt;[[Payloads|More...]]&amp;lt;/small&amp;gt;|&lt;br /&gt;
HEADING = [[Payloads]]|&lt;br /&gt;
CONTENT =&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[GRUB2]] / [[FILO]]&lt;br /&gt;
* [[Linux]] / [[Booting Windows using coreboot|Windows]] / [[Booting FreeBSD using coreboot|FreeBSD]] / [http://openbsd.org/ OpenBSD]&lt;br /&gt;
* [[OpenFirmware]] et. al.&lt;br /&gt;
* [[Etherboot]]&lt;br /&gt;
* [[Memtest86]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=5 cellpadding=5 border=0 valign=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_lb.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''About'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out more about coreboot.&amp;lt;hr /&amp;gt;[[News]] | [[Press]] | [[Current events|Events]] | [[History]] | [[Screenshots|Screenshots &amp;amp; Videos]] | [[Contributors]] | [[Sponsors]] | [[Products]] | [[Clusters]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_devel.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Developers'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Get involved! Help us make coreboot better.&amp;lt;hr /&amp;gt;[[Development Guidelines]] | [[Developer Manual]] | [http://qa.coreboot.org/docs/doxygen.php Doxygen] | [http://tracker.coreboot.org/trac/coreboot/browser/trunk Browse Source] | [[JTAG/BSDL Guide|JTAG]] | [[EHCI Debug Port]] | [[Distributed and Automated Testsystem|Testsystem]] | [[GSoC]] | [[Ideas]] | [[Laptop]] | [[Desktops]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_status.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Status'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out whether your hardware is already supported.&amp;lt;hr /&amp;gt;[[Supported Motherboards]] | [[Supported Chipsets and Devices|Supported Chipsets &amp;amp; Devices]] | [http://qa.coreboot.org Build Status] | [[Flashrom#Supported_devices|Flashrom support]] | [[Superiotool#Supported_devices|Superiotool support]] | [[Notes for v3 ports]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_tools.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Related Tools'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Tools and libraries related to coreboot.&amp;lt;hr /&amp;gt;[[Flashrom]] | [[Superiotool]] | [[Nvramtool]] | [[Buildrom]] | [[Libpayload]] | [[Mkelfimage]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_101.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Getting Started'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Download coreboot and get started.&amp;lt;hr /&amp;gt;[[Download coreboot|Downloads]] | [[Documentation]] | [[:Category:Tutorials|Build Tutorials]] | [[Payloads]] | [[QEMU]] | [[AMD SimNow]] | [[Confirmed working svn revisions|Confirmed Working SVN Revisions]] | [[Misc]] | [[Papers on memory training]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_support.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Support'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Learn how to contact us and find help and support.&amp;lt;hr /&amp;gt;[[FAQ]] | [[Mailinglist]] | [[IRC]] | [http://tracker.coreboot.org/trac/coreboot/ Issue Tracker] | [[Glossary]] | [[coreboot Options|corebootv2 Options]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;20%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Coreboot libpayload tint.png|center|thumb|coreboot [[tint]] payload]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[News]]&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Please always make this list 7 items long (7 most recent news items). --&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''2008/08/04:''' [[News#2008.2F08.2F04_ASI_MB-5BLGP_.2F_Neoware_Eon_4000s_now_supported|ASI MB-5BLGP support]]&lt;br /&gt;
* '''2008/07/01:''' [[News#2008.2F07.2F01_New_logo_announced|The new logo is announced]]&lt;br /&gt;
* '''2008/07/01:''' [[News#2008.2F07.2F01_coreboot_booth_at_OpenExpo_in_Z.C3.BCrich|OpenExpo and Hackontest]]&lt;br /&gt;
* '''2008/06/27:''' [[News#2008.2F06.2F27_A-Trend_ATC-6240_now_supported|A-Trend ATC-6240 support]]&lt;br /&gt;
* '''2008/05/28:''' [[News#2008.2F05.2F28_coreboot_booth_at_LinuxTag_in_Berlin|coreboot @ LinuxTag]]&lt;br /&gt;
* '''2008/05/19:''' [[News#2008.2F05.2F19_VIA_EPIA-CN_now_supported|VIA EPIA-CN support]]&lt;br /&gt;
* '''2008/05/16:''' [[News#2008.2F05.2F16_Thomson_IP1000_now_supported|Thomson IP1000 support]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;Contact&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[Mailinglist|Mailing list]]: [mailto:coreboot@coreboot.org coreboot@coreboot.org]&lt;br /&gt;
* [[IRC]]: '''#coreboot''' (on [http://www.freenode.net/ irc.freenode.net])&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Notes_for_v3_ports</id>
		<title>Notes for v3 ports</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Notes_for_v3_ports"/>
				<updated>2008-08-14T03:43:47Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Note for those porting to v3 ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of changes with v3, and they are basically good. I am doing the K8 port now, and I'd like to accumulate wisdom on this page. V3 really is very different and you don't realize it until you get into it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile once, link once, use everywhere. ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The first thing to remember is that v2 is very much shaped by the romcc legacy. So you will see comments like this in v2 commits: &amp;quot;get more code compiling in both places&amp;quot; or some such. &lt;br /&gt;
&lt;br /&gt;
What does this mean? It means, for example, that the function '''xyz(device_t)''' has to compile and work when device_t is a u32 (as in the ROM-based code that starts RAM) and as a '''struct device *''' (as in the RAM-based code). This schizophrenia pervades v2, even when it is not needed (as in v2 targets that can run with cache-as-ram). A lot of v2 code is still compiled twice. &lt;br /&gt;
&lt;br /&gt;
This is especially true of the .h files with inlined functions. In v2, a lot of SMBUS functions are inlined, meaning they get compiled into the ROM and RAM code. &lt;br /&gt;
&lt;br /&gt;
A dramatic change in v3 is that the ROM-based code can be called from the RAM-based code. This change in turn means that many support functions should be built into the ROM-based code, one example being the functions that support PCI config space. &lt;br /&gt;
&lt;br /&gt;
''Note: stage0 is very early assembly, and stage1 is ROM-based C code. For reasons of history the Makefiles call some code STAGE0, though we ought to call it STAGE1. Sorry.'' &lt;br /&gt;
&lt;br /&gt;
What does this imply? In v3, you should plan to move code to stage1, and then mark certain functions as SHARED, so they can be called from stage2. However, if the code will only be used in stage2, don't move it to stage1 because only stage2 code can be compressed.&lt;br /&gt;
&lt;br /&gt;
Here's an example: there is code that calls die(). In the bad old days die was compiled in to several places. Now it just has to be callable from anywhere. &lt;br /&gt;
&lt;br /&gt;
Die() is defined in include/console.h as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;void die(const char *mst);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We just change it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(die, void, const char *msg);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result: we only compile a lot of code once, with the same compiler, and it can be called from anywhere.&lt;br /&gt;
&lt;br /&gt;
I just now did the same with pci_conf1_* functions. They are built into stage0 and SHARED. The names of these functions are used in initram. The functions are used to init the pci_cf8_conf1 struct in stage2. Three users, one copy of the code. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ROMCC artifacts ==&lt;br /&gt;
&lt;br /&gt;
Carl-Daniel writes: &lt;br /&gt;
'''(and why does the nowiki tag not defeat formatting? Sorry -- Ron)&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Hi,&lt;br /&gt;
&lt;br /&gt;
attached is a list of occurences where we use the plain &amp;quot;unsigned&amp;quot; type&lt;br /&gt;
which was once the preferred type for ROMCC compiled code. For v3, an&lt;br /&gt;
adjustment to the real desired sizes of these types would be beneficial.&lt;br /&gt;
Be warned that this can't be automated.&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
Carl-Daniel&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
http://www.hailfinger.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
./southbridge/nvidia/mcp55/smbus.c:     unsigned device;&lt;br /&gt;
./southbridge/nvidia/mcp55/smbus.c:     unsigned device;&lt;br /&gt;
./southbridge/nvidia/mcp55/smbus.c:     unsigned device;&lt;br /&gt;
./southbridge/nvidia/mcp55/smbus.c:     unsigned device;&lt;br /&gt;
./southbridge/nvidia/mcp55/smbus.c:unsigned pm_base;&lt;br /&gt;
./southbridge/nvidia/mcp55/lpc.c:       unsigned link;&lt;br /&gt;
./southbridge/nvidia/mcp55/lpc.c:static void lpci_set_subsystem(struct device *dev, unsigned vendor, unsigned device)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1_usbdebug.c:static void set_debug_port(unsigned port)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1_usbdebug.c:static void mcp55_enable_usbdebug_direct(unsigned port)&lt;br /&gt;
./southbridge/nvidia/mcp55/usb2.c:      unsigned base;&lt;br /&gt;
./southbridge/nvidia/mcp55/usb2.c:      unsigned old_debug;&lt;br /&gt;
./southbridge/nvidia/mcp55/mcp55.c:static struct device *find_lpc_dev( struct device *dev,  unsigned devfn)&lt;br /&gt;
./southbridge/nvidia/mcp55/mcp55.c:     unsigned index = 0;&lt;br /&gt;
./southbridge/nvidia/mcp55/mcp55.c:     unsigned index2 = 0;&lt;br /&gt;
./southbridge/nvidia/mcp55/mcp55.c:     unsigned deviceid;&lt;br /&gt;
./southbridge/nvidia/mcp55/mcp55.c:     unsigned vendorid;&lt;br /&gt;
./southbridge/nvidia/mcp55/mcp55.c:     unsigned devfn;&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    int set_ht_link_buffer_counts_chain(u8 ht_c_num, unsigned vendorid,  unsigned val);&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned vendorid = 0x10de;&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned val = 0x01610109;&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:void setup_ss_table(unsigned index, unsigned where, unsigned control, const unsigned int *register_values, int max)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned val;&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:static void mcp55_early_set_port(unsigned mcp55_num, unsigned *busn, unsigned *devn, unsigned *io_base)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:static void mcp55_early_clear_port(unsigned mcp55_num, unsigned *busn, unsigned *devn, unsigned *io_base)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:static void mcp55_early_pcie_setup(unsigned busnx, unsigned devnx, unsigned anactrl_io_base, unsigned pci_e_x)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:static void mcp55_early_setup(unsigned mcp55_num, unsigned *busn, unsigned *devn, unsigned *io_base, unsigned *pci_e_x)&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned busn[HT_CHAIN_NUM_MAX];&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned devn[HT_CHAIN_NUM_MAX];&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned io_base[HT_CHAIN_NUM_MAX];&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned pci_e_x[HT_CHAIN_NUM_MAX] = {MCP55_PCI_E_X_0, MCP55_PCI_E_X_1, MCP55_PCI_E_X_2, MCP55_PCI_E_X_3 };&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned busnx;&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:    unsigned devnx;&lt;br /&gt;
./southbridge/nvidia/mcp55/stage1.c:void enable_fid_change_on_sb(unsigned sbbusn, unsigned sbdn)&lt;br /&gt;
./northbridge/amd/geodelx/vsmsetup.c:   unsigned eax, ebx, ecx, edx;&lt;br /&gt;
./northbridge/amd/geodelx/vsmsetup.c:   unsigned eax, ebx, ecx, edx;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static u32 f1_read_config32(unsigned reg)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static void f1_write_config32(unsigned reg, u32 value)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static unsigned int amdk8_scan_chain(struct device * dev, unsigned nodeid, unsigned link, unsigned sblink, unsigned int max, unsigned offset_unitid)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:             unsigned free_reg, config_reg;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:             unsigned ht_unitid_base[4]; // here assume only 4 HT device on chain&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:                unsigned max_bus;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:                unsigned min_bus;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:             unsigned max_devfn;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:                     unsigned temp = 0;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:        unsigned nodeid;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:        unsigned link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:        unsigned sblink = 0;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned offset_unitid = 0;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static int reg_useable(unsigned reg,&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     struct device * goal_dev, unsigned goal_nodeid, unsigned goal_link)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned nodeid, link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static struct resource *amdk8_find_iopair(struct device * dev, unsigned nodeid, unsigned link)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned free_reg, reg;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static struct resource *amdk8_find_mempair(struct device * dev, unsigned nodeid, unsigned link)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned free_reg, reg;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static void amdk8_link_read_bases(struct device * dev, unsigned nodeid, unsigned link)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned nodeid, link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static void amdk8_set_resource(struct device * dev, struct resource *resource, unsigned nodeid)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned reg, link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:static void amdk8_create_vga_resource(struct device * dev, unsigned nodeid)&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned reg;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned nodeid, link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned reg;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:                     unsigned nodeid, link;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned hole_startk;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:                                unsigned base_k, limit_k;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned reset_memhole = 1;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:             unsigned basek, limitk, sizek;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:                             unsigned pre_sizek;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned reg;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned nb_cfg_54;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:     unsigned siblings;&lt;br /&gt;
./northbridge/amd/k8/northbridge.c:             unsigned jj;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:static void ht_collapse_previous_enumeration(u8 bus, unsigned offset_unitid)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   u32 bdf1, u8 pos1, unsigned offs1,&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   u32 bdf2, u8 pos2, unsigned offs2)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:           unsigned offset_unitid, struct sys_info *sysinfo);&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:int scan_pci_bus( unsigned bus , struct sys_info *sysinfo)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned new_bus;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned max_bus;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned offset_unitid, struct sys_info *sysinfo)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned uoffs;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:        unsigned real_last_unitid;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:           unsigned offs;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:void ht_setup_chain(u32 bdf, unsigned upos, struct sys_info *sysinfo)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned offset_unitid = 0;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:           unsigned devn = 1;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:int set_ht_link_buffer_count(u8 node, u8 linkn, u8 linkt, unsigned val)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned regpos;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:int set_ht_link_buffer_counts_chain(u8 ht_c_num, unsigned vendorid,  unsigned val)&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:                unsigned devn;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:           unsigned regpos;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:           unsigned bus;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:           unsigned offset_unitid = 0;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:unsigned get_nodes(void);&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned next_io_base;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:                        unsigned regpos;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:                        unsigned regpos;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:                        unsigned regpos;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:                        unsigned regpos;&lt;br /&gt;
./northbridge/amd/k8/incoherent_ht.c:   unsigned link_pair_num = sysinfo-&amp;gt;link_pair_num;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned tmp = (pci_read_config32(NODE_MC(0), 0xe8) &amp;gt;&amp;gt; 12) &amp;amp; 3;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned setup_smp2(void)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned setup_smp4(void)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned setup_smp6(void)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned setup_smp8(void)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned setup_smp(void)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned verify_mp_capabilities(unsigned nodes)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned node, mask;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:void clear_dead_routes(unsigned nodes)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:unsigned verify_dualcore(unsigned nodes)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned node, totalcpus, tmp;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:void coherent_ht_finalize(unsigned nodes)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned node;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned total_cpus;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:int apply_cpu_errata_fixes(unsigned nodes)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned node;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:int optimize_link_read_pointers(unsigned nodes)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned node;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:                     unsigned reg;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:inline unsigned get_nodes(void)&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:        unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/coherent_ht.c:     unsigned nodes;&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c:unsigned node_link_to_bus(unsigned node, unsigned link)&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c:        unsigned reg;&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c:                unsigned dst_node;&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c:                unsigned dst_link;&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c:                unsigned bus_base;&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c: *     unsigned pci1234[] = {&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c: *     unsigned pci1234[] = {&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c: *     unsigned pci1234[] = {&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c: *     unsigned pci1234[] = {&lt;br /&gt;
./northbridge/amd/k8/get_sblk_pci1234.c: *     unsigned pci1234[] = {&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static struct dimm_size spd_get_dimm_size(unsigned device)&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static void set_dimm_size(const struct mem_controller *ctrl, struct dimm_size sz, unsigned index)&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static void set_dimm_map(const struct mem_controller *ctrl, struct dimm_size sz, unsigned index)&lt;br /&gt;
./northbridge/amd/k8/raminit.c: static const unsigned cs_map_aa[] = {&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned node_id;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned limit;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned base;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned index;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned limit_reg, base_reg;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static void set_top_mem(unsigned tom_k, unsigned hole_startk)&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned common_size;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned common_cs_mode;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned size;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned cs_mode;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned index, candidate;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned size;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned node_id;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned end_k;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned index;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static long disable_dimm(const struct mem_controller *ctrl, unsigned index, long dimm_mask)&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned dimm_mask;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned device;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:         unsigned device0, device1;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:                 unsigned addr;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static const struct mem_param *get_mem_param(unsigned min_cycle_time)&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned min_cycle_time, min_latency, bios_cycle_time;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: static const unsigned latencies[] = { DTL_CL_2, DTL_CL_2_5, DTL_CL_3 };&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks, old_clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks, old_clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks, old_clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks, old_clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks, old_clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks, old_clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned tref, old_tref;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned index;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned latency;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned clocks;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned rdpreamble;&lt;br /&gt;
./northbridge/amd/k8/raminit.c: unsigned async_lat;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:static u32 hoist_memory(int controllers, const struct mem_controller *ctrl,unsigned hole_startk, int i)&lt;br /&gt;
./northbridge/amd/k8/raminit.c:                        unsigned base_k;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:                        unsigned base_k, limit_k;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:                                unsigned end_k;&lt;br /&gt;
./northbridge/amd/k8/raminit.c:void set_sysinfo_in_ram(unsigned val)&lt;br /&gt;
./superio/winbond/w83627hf/superio.c:   unsigned  hwm_reg_values[] = {&lt;br /&gt;
./device/hypertransport.c:static unsigned ht_read_freq_cap(struct device *dev, unsigned pos)&lt;br /&gt;
./device/hypertransport.c:      unsigned freq_cap;&lt;br /&gt;
./device/pci_device.c:  unsigned ctl;&lt;br /&gt;
./device/pci_device.c:  unsigned short intBits = inb(0x4d0) | (((unsigned)inb(0x4d1)) &amp;lt;&amp;lt; 8);&lt;br /&gt;
./include/uart8250.h:unsigned char uart8250_rx_byte(unsigned base_port);&lt;br /&gt;
./include/uart8250.h:int uart8250_can_rx_byte(unsigned base_port);&lt;br /&gt;
./include/uart8250.h:void uart8250_tx_byte(unsigned base_port, unsigned char data);&lt;br /&gt;
./include/uart8250.h:void uart8250_init(unsigned base_port, unsigned divisor, unsigned lcs);&lt;br /&gt;
./include/device/agp.h: unsigned min_devfn, unsigned max_devfn, unsigned int max);&lt;br /&gt;
./include/device/hypertransport.h:      unsigned min_devfn, unsigned max_devfn, unsigned int max, unsigned *ht_unit_base, unsigned offset_unitid);&lt;br /&gt;
./include/device/device.h:      unsigned        bridge_ctrl;    /* Bridge control register */&lt;br /&gt;
./include/device/device.h:      unsigned        reset_needed : 1;&lt;br /&gt;
./include/device/device.h:      unsigned        disable_relaxed_ordering : 1;&lt;br /&gt;
./include/device/pcix.h:        unsigned min_devfn, unsigned max_devfn, unsigned int max);&lt;br /&gt;
./include/device/pcix.h:const char *pcix_speed(unsigned sstatus);&lt;br /&gt;
./include/device/path.h:        unsigned domain;&lt;br /&gt;
./include/device/path.h:        unsigned bus;&lt;br /&gt;
./include/device/path.h:        unsigned devfn;&lt;br /&gt;
./include/device/path.h:        unsigned port;&lt;br /&gt;
./include/device/path.h:        unsigned device;&lt;br /&gt;
./include/device/path.h:        unsigned device;&lt;br /&gt;
./include/device/path.h:        unsigned apic_id;&lt;br /&gt;
./include/device/path.h:        unsigned node_id;&lt;br /&gt;
./include/device/path.h:        unsigned core_id;&lt;br /&gt;
./include/device/path.h:        unsigned cluster;&lt;br /&gt;
./include/device/path.h:        unsigned id;&lt;br /&gt;
./include/device/path.h:        unsigned id;&lt;br /&gt;
./include/device/path.h:        unsigned iobase;&lt;br /&gt;
./include/device/pci_ops.h:u8 pci_read_config8(struct device * dev, unsigned where);&lt;br /&gt;
./include/device/pci_ops.h:u16 pci_read_config16(struct device * dev, unsigned where);&lt;br /&gt;
./include/device/pci_ops.h:u32 pci_read_config32(struct device * dev, unsigned where);&lt;br /&gt;
./include/device/pci_ops.h:void pci_write_config8(struct device * dev, unsigned where, u8 val);&lt;br /&gt;
./include/device/pci_ops.h:void pci_write_config16(struct device * dev, unsigned where, u16 val);&lt;br /&gt;
./include/device/pci_ops.h:void pci_write_config32(struct device * dev, unsigned where, u32 val);&lt;br /&gt;
./include/device/pci.h: void (*set_subsystem)(struct device * dev, unsigned vendor, unsigned device);&lt;br /&gt;
./include/device/pci.h:struct device * pci_probe_dev(struct device * dev, struct bus *bus, unsigned devfn);&lt;br /&gt;
./include/device/pci.h:         unsigned min_devfn, unsigned max_devfn, unsigned int max));&lt;br /&gt;
./include/device/pci.h:unsigned int pci_scan_bus(struct bus *bus, unsigned min_devfn, unsigned max_devfn, unsigned int max);&lt;br /&gt;
./include/device/pci.h:u8 pci_moving_config8(struct device *dev, unsigned reg);&lt;br /&gt;
./include/device/pci.h:u16 pci_moving_config16(struct device *dev, unsigned reg);&lt;br /&gt;
./include/device/pci.h:u32 pci_moving_config32(struct device *dev, unsigned reg);&lt;br /&gt;
./include/device/pci.h:unsigned pci_find_next_capability(struct device * dev, unsigned cap, unsigned last);&lt;br /&gt;
./include/device/pci.h:unsigned pci_find_capability(struct device * dev, unsigned cap);&lt;br /&gt;
./include/device/pci.h:void pci_dev_set_subsystem(struct device * dev, unsigned vendor, unsigned device);&lt;br /&gt;
./include/device/pnp.h:void    pnp_set_iobase(struct device * dev, unsigned index, unsigned iobase);&lt;br /&gt;
./include/device/pnp.h:void    pnp_set_irq(struct device * dev, unsigned index, unsigned irq);&lt;br /&gt;
./include/device/pnp.h:void    pnp_set_drq(struct device * dev, unsigned index, unsigned drq);&lt;br /&gt;
./include/device/pnp.h: unsigned mask, set;&lt;br /&gt;
./include/device/pnp.h: unsigned function;&lt;br /&gt;
./include/device/pnp.h: unsigned flags;&lt;br /&gt;
./include/device/pnp.h:struct resource *pnp_get_resource(struct device * dev, unsigned index);&lt;br /&gt;
./include/device/pnp.h: unsigned functions, struct pnp_info *info);&lt;br /&gt;
./include/device/resource.h:extern struct resource *probe_resource(struct device *dev, unsigned index);&lt;br /&gt;
./include/device/resource.h:extern struct resource *new_resource(struct device * dev, unsigned index);&lt;br /&gt;
./include/device/resource.h:extern struct resource *find_resource(struct device * dev, unsigned index);&lt;br /&gt;
./include/device/pcie.h:        unsigned min_devfn, unsigned max_devfn, unsigned int max);&lt;br /&gt;
./include/device/cardbus.h:     unsigned min_devfn, unsigned max_devfn, unsigned int max);&lt;br /&gt;
./include/arch/x86/amd/k8/raminit.h:    unsigned node_id;&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned nodes;&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned hc_possible_num;&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned pci1234[HC_POSSIBLE_NUM];&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned hcdn[HC_POSSIBLE_NUM];&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned hcid[HC_POSSIBLE_NUM]; //record ht chain type&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned sbdn;&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned sblk;&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned hcdn_reg[4]; // it will be used by get_sblk_pci1234&lt;br /&gt;
./include/arch/x86/amd/k8/sysconf.h:    unsigned lift_bsp_apicid;&lt;br /&gt;
./include/arch/x86/amd/k8/k8.h: unsigned node_id;&lt;br /&gt;
./include/arch/x86/amd/k8/k8.h:        unsigned nodeid;&lt;br /&gt;
./include/arch/x86/amd/k8/k8.h:        unsigned coreid;&lt;br /&gt;
./include/arch/x86/amd/k8/k8.h:unsigned get_apicid_base(unsigned ioapic_num);&lt;br /&gt;
./include/arch/x86/mtrr.h:void x86_setup_var_mtrrs(unsigned address_bits);&lt;br /&gt;
./include/arch/x86/mtrr.h:void x86_setup_mtrrs(unsigned address_bits);&lt;br /&gt;
./lib/nrv2b.c:    (((bb = bb &amp;amp; 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) &amp;gt;&amp;gt; 8) &amp;amp; 1)&lt;br /&gt;
./lib/nrv2b.c:  unsigned bc = 0;&lt;br /&gt;
./lib/uart8250.c:static inline int uart8250_can_tx_byte(unsigned base_port)&lt;br /&gt;
./lib/uart8250.c:static inline void uart8250_wait_to_tx_byte(unsigned base_port)&lt;br /&gt;
./lib/uart8250.c:static inline void uart8250_wait_until_sent(unsigned base_port)&lt;br /&gt;
./lib/uart8250.c:void uart8250_tx_byte(unsigned base_port, unsigned char data)&lt;br /&gt;
./lib/uart8250.c:int uart8250_can_rx_byte(unsigned base_port)&lt;br /&gt;
./lib/uart8250.c:unsigned char uart8250_rx_byte(unsigned base_port)&lt;br /&gt;
./lib/uart8250.c:void uart8250_init(unsigned base_port, unsigned divisor, unsigned lcs)&lt;br /&gt;
./doc/design/newboot.lyx: The simplest function is called smbus_read_byte(unsigned device, unsigned&lt;br /&gt;
./arch/x86/resourcemap.c:                          unsigned where;&lt;br /&gt;
./arch/x86/serial.c:    unsigned ttysx_div;&lt;br /&gt;
./arch/x86/serial.c:    unsigned ttysx_index;&lt;br /&gt;
./arch/x86/archtables.c:                unsigned mptable_size = new_low_table_end - low_table_end - SMP_FLOATING_TABLE_LEN;&lt;br /&gt;
./arch/x86/mc146818rtc.c:       unsigned sum, old_sum;&lt;br /&gt;
./arch/x86/mc146818rtc.c:       unsigned sum;&lt;br /&gt;
./arch/x86/mc146818rtc.c:unsigned read_option(unsigned start, unsigned size, unsigned def)&lt;br /&gt;
./arch/x86/mc146818rtc.c:       unsigned byte;&lt;br /&gt;
./arch/x86/pci_ops_auto.c:      unsigned bus;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Notes_for_v3_ports</id>
		<title>Notes for v3 ports</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Notes_for_v3_ports"/>
				<updated>2008-08-11T19:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Note for those porting to v3 ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of changes with v3, and they are basically good. I am doing the K8 port now, and I'd like to accumulate wisdom on this page. V3 really is very different and you don't realize it until you get into it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile once, link once, use everywhere. ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The first thing to remember is that v2 is very much shaped by the romcc legacy. So you will see comments like this in v2 commits: &amp;quot;get more code compiling in both places&amp;quot; or some such. &lt;br /&gt;
&lt;br /&gt;
What does this mean? It means, for example, that the function '''xyz(device_t)''' has to compile and work when device_t is a u32 (as in the ROM-based code that starts RAM) and as a '''struct device *''' (as in the RAM-based code). This schizophrenia pervades v2, even when it is not needed (as in v2 targets that can run with cache-as-ram). A lot of v2 code is still compiled twice. &lt;br /&gt;
&lt;br /&gt;
This is especially true of the .h files with inlined functions. In v2, a lot of SMBUS functions are inlined, meaning they get compiled into the ROM and RAM code. &lt;br /&gt;
&lt;br /&gt;
A dramatic change in v3 is that the ROM-based code can be called from the RAM-based code. This change in turn means that many support functions should be built into the ROM-based code, one example being the functions that support PCI config space. &lt;br /&gt;
&lt;br /&gt;
''Note: stage0 is very early assembly, and stage1 is ROM-based C code. For reasons of history the Makefiles call some code STAGE0, though we ought to call it STAGE1. Sorry.'' &lt;br /&gt;
&lt;br /&gt;
What does this imply? In v3, you should plan to move code to stage1, and then mark certain functions as SHARED, so they can be called from stage2. Here's an example: there is code that calls die(). In the bad old days die was compiled in to several places. Now it just has to be callable from anywhere. &lt;br /&gt;
&lt;br /&gt;
Die() is defined in include/console.h as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;void die(const char *mst);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We just change it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(die, void, const char *msg);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result: we only compile a lot of code once, with the same compiler, and it can be called from anywhere.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Notes_for_v3_ports</id>
		<title>Notes for v3 ports</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Notes_for_v3_ports"/>
				<updated>2008-08-11T18:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Note for those porting to v3 ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of changes with v3, and they are basically good. I am doing the K8 port now, and I'd like to accumulate wisdom on this page. V3 really is very different and you don't realize it until you get into it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile once, link once, use everywhere. ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The first thing to remember is that v2 is very much shaped by the romcc legacy. So you will see comments like this in v2 commits: &amp;quot;get more code compiling in both places&amp;quot; or some such. &lt;br /&gt;
&lt;br /&gt;
What does this mean? It means, for example, that the function '''xyz(device_t)''' has to compile and work when device_t is a u32 (as in the ROM-based code that starts RAM) and as a '''struct device *''' (as in the RAM-based code). This schizophrenia pervades v2, even when it is not needed (as in v2 targets that can run with cache-as-ram). A lot of v2 code is still compiled twice. &lt;br /&gt;
&lt;br /&gt;
This is especially true of the .h files with inlined functions. In v2, a lot of SMBUS functions are inlined, meaning they get compiled into the ROM and RAM code. &lt;br /&gt;
&lt;br /&gt;
A dramatic change in v3 is that the ROM-based code can be called from the RAM-based code. This change in turn means that many support functions should be built into the ROM-based code, one example being the functions that support PCI config space. &lt;br /&gt;
&lt;br /&gt;
''Note: stage0 is very early assembly, and stage1 is ROM-based C code. For reasons of history the Makefiles call some code STAGE0, though we ought to call it STAGE1. Sorry.'' &lt;br /&gt;
&lt;br /&gt;
What does this imply? In v3, you should plan to move code to stage1, and then mark certain functions as SHARED, so they can be called from stage2. Here's an example: (example to come -- the first one I did was wrong)&lt;br /&gt;
&lt;br /&gt;
Result: we only compile a lot of code once, with the same compiler, and it can be called from anywhere.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Notes_for_v3_ports</id>
		<title>Notes for v3 ports</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Notes_for_v3_ports"/>
				<updated>2008-08-11T15:53:29Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: New page: == Note for those porting to v3 ==  There are a lot of changes with v3, and they are basically good. I am doing the K8 port now, and I'd like to accumulate wisdom on this page. V3 really i...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Note for those porting to v3 ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of changes with v3, and they are basically good. I am doing the K8 port now, and I'd like to accumulate wisdom on this page. V3 really is very different and you don't realize it until you get into it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile once, link once, use everywhere. ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The first thing to remember is that v2 is very much shaped by the romcc legacy. So you will see comments like this in v2 commits: &amp;quot;get more code compiling in both places&amp;quot; or some such. &lt;br /&gt;
&lt;br /&gt;
What does this mean? It means, for example, that the function '''xyz(device_t)''' has to compile and work when device_t is a u32 (as in the ROM-based code that starts RAM) and as a '''struct device *''' (as in the RAM-based code). This schizophrenia pervades v2, even when it is not needed (as in v2 targets that can run with cache-as-ram). A lot of v2 code is still compiled twice. &lt;br /&gt;
&lt;br /&gt;
This is especially true of the .h files with inlined functions. In v2, a lot of SMBUS functions are inlined, meaning they get compiled into the ROM and RAM code. &lt;br /&gt;
&lt;br /&gt;
A dramatic change in v3 is that the ROM-based code can be called from the RAM-based code. This change in turn means that many support functions should be built into the ROM-based code, one example being the functions that support PCI config space. &lt;br /&gt;
&lt;br /&gt;
''Note: stage0 is very early assembly, and stage1 is ROM-based C code. For reasons of history the Makefiles call some code STAGE0, though we ought to call it STAGE1. Sorry.'' &lt;br /&gt;
&lt;br /&gt;
What does this imply? In v3, you should plan to move code to stage1, and then mark certain functions as SHARED, so they can be called from stage2. Here's an example: on boards using the MCP55, I moved all the inlined SMBUS functions from ''mcp55_smbus.h'' to ''stage1_smbus.c''. In the m57sli mainboard Makefile, the STAGE0 defines look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o \&lt;br /&gt;
                        $(obj)/mainboard/$(MAINBOARDDIR)/option_table.o \&lt;br /&gt;
                        $(obj)/southbridge/nvidia/mcp55/stage1_smbus.o&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So that the stage1_smbus code is built in. How do we make it shared? We add these lines to mcp55_smbus.h&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#include &amp;lt;shared.h&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(do_smbus_recv_byte, int, u16 smbus_io_base, u8 device);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(do_smbus_send_byte, int, u16 smbus_io_base, u8 device, u8 val);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(do_smbus_read_byte, int, u16 smbus_io_base, u8 device, u8 address);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(do_smbus_write_byte, int, u16 smbus_io_base, u8 device, u8 address, u8 val);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;SHARED(enable_smbus, void, void);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result: we only compile a lot of code once, with the same compiler, and it can be called from anywhere.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2008-08-11T15:34:59Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: add a link for v3 port notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td width=&amp;quot;80%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em; margin-bottom:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#efefff; align:right; border:1px solid #aabbcc;&amp;quot;&amp;gt;&lt;br /&gt;
'''coreboot''' (formerly known as LinuxBIOS) is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers. It performs just a little bit of hardware initialization and then executes a so-called [[Payloads|payload]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=0 cellpadding=3 border=0 margin=0 padding=0 align=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #8898bf|&lt;br /&gt;
BACKGROUND = yellow|&lt;br /&gt;
WIDTH = 100%|&lt;br /&gt;
ICON = &amp;lt;small&amp;gt;[[Benefits|More...]]&amp;lt;/small&amp;gt;|&lt;br /&gt;
HEADING = [[Benefits]]|&lt;br /&gt;
CONTENT =&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* 100% Free Software (GPL), no royalties, no license fees!&lt;br /&gt;
* Fast boot times (3 seconds to Linux console)&lt;br /&gt;
* Avoids the need for a slow/buggy/proprietary BIOS&lt;br /&gt;
&amp;lt;!-- * Runs in 32-Bit protected mode almost from the start --&amp;gt;&lt;br /&gt;
* Written in C, contains virtually no assembly code&lt;br /&gt;
* Supports many [[Supported Motherboards|mainboards]], [[Supported Chipsets and Devices|devices]], and [[payloads]]&lt;br /&gt;
&amp;lt;!-- * Further features: netboot, serial console, remote flashing, ... --&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #8898bf|&lt;br /&gt;
BACKGROUND = #d1adf6|&lt;br /&gt;
WIDTH = 100%|&lt;br /&gt;
ICON = &amp;lt;small&amp;gt;[[Use Cases|More...]]&amp;lt;/small&amp;gt;|&lt;br /&gt;
HEADING = [[Use Cases]]|&lt;br /&gt;
CONTENT =&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* Desktop PCs, servers, clusters, thin clients&lt;br /&gt;
* [[Clusters]], high-performance computing&lt;br /&gt;
&amp;lt;!-- * Set-Top-Boxes, thin clients --&amp;gt;&lt;br /&gt;
* Embedded solutions, STBs/HTPC, appliances, terminals&lt;br /&gt;
&amp;lt;!-- * [http://en.wikipedia.org/wiki/Small_form_factor Small form factor computers], [http://en.wikipedia.org/wiki/Home_theater_PC Home-theater PCs] --&amp;gt;&lt;br /&gt;
* No-moving-parts solutions (ROM chip as &amp;quot;disk&amp;quot;)&lt;br /&gt;
* Non-standard scenarios (e.g. FPGA in Opteron socket)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{{Box|&lt;br /&gt;
BORDER = #8898bf|&lt;br /&gt;
BACKGROUND = lime|&lt;br /&gt;
WIDTH = 100%|&lt;br /&gt;
ICON = &amp;lt;small&amp;gt;[[Payloads|More...]]&amp;lt;/small&amp;gt;|&lt;br /&gt;
HEADING = [[Payloads]]|&lt;br /&gt;
CONTENT =&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[GRUB2]] / [[FILO]]&lt;br /&gt;
* [[Linux]] / [[Booting Windows using coreboot|Windows]] / [[Booting FreeBSD using coreboot|FreeBSD]] / [http://openbsd.org/ OpenBSD]&lt;br /&gt;
* [[OpenFirmware]] et. al.&lt;br /&gt;
* [[Etherboot]]&lt;br /&gt;
* [[Memtest86]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=5 cellpadding=5 border=0 valign=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_lb.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''About'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out more about coreboot.&amp;lt;hr /&amp;gt;[[News]] | [[Press]] | [[Current events|Events]] | [[History]] | [[Screenshots|Screenshots &amp;amp; Videos]] | [[Contributors]] | [[Sponsors]] | [[Products]] | [[Clusters]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_devel.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Developers'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Get involved! Help us make coreboot better.&amp;lt;hr /&amp;gt;[[Development Guidelines]] | [[Developer Manual]] | [http://qa.coreboot.org/docs/doxygen.php Doxygen] | [http://tracker.coreboot.org/trac/coreboot/browser/trunk Browse Source] | [[JTAG/BSDL Guide|JTAG]] | [[EHCI Debug Port]] | [[Distributed and Automated Testsystem|Testsystem]] | [[GSoC]] | [[Ideas]] | [[Laptop]] | [[Desktops]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_status.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Status'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out whether your hardware is already supported.&amp;lt;hr /&amp;gt;[[Supported Motherboards]] | [[Supported Chipsets and Devices|Supported Chipsets &amp;amp; Devices]] | [http://qa.coreboot.org Build Status] | [[Flashrom#Supported_devices|Flashrom support]] | [[Superiotool#Supported_devices|Superiotool support]] | [[Notes for v3 ports]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_tools.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Related Tools'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Tools and libraries related to coreboot.&amp;lt;hr /&amp;gt;[[Flashrom]] | [[Superiotool]] | [[Nvramtool]] | [[Buildrom]] | [[Libpayload]] | [[Mkelfimage]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_101.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Getting Started'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Download coreboot and get started.&amp;lt;hr /&amp;gt;[[Download coreboot|Downloads]] | [[Documentation]] | [[:Category:Tutorials|Build Tutorials]] | [[Payloads]] | [[QEMU]] | [[AMD SimNow]] | [[Confirmed working svn revisions|Confirmed Working SVN Revisions]] | [[Misc]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_support.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Support'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Learn how to contact us and find help and support.&amp;lt;hr /&amp;gt;[[FAQ]] | [[Mailinglist]] | [[IRC]] | [http://tracker.coreboot.org/trac/coreboot/ Issue Tracker] | [[Glossary]] | [[coreboot Options|corebootv2 Options]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;20%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Coreboot libpayload tint.png|center|thumb|coreboot [[tint]] payload]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[News]]&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Please always make this list 7 items long (7 most recent news items). --&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''2008/08/04:''' [[News#2008.2F08.2F04_ASI_MB-5BLGP_.2F_Neoware_Eon_4000s_now_supported|ASI MB-5BLGP support]]&lt;br /&gt;
* '''2008/07/01:''' [[News#2008.2F07.2F01_New_logo_announced|The new logo is announced]]&lt;br /&gt;
* '''2008/07/01:''' [[News#2008.2F07.2F01_coreboot_booth_at_OpenExpo_in_Z.C3.BCrich|OpenExpo and Hackontest]]&lt;br /&gt;
* '''2008/06/27:''' [[News#2008.2F06.2F27_A-Trend_ATC-6240_now_supported|A-Trend ATC-6240 support]]&lt;br /&gt;
* '''2008/05/28:''' [[News#2008.2F05.2F28_coreboot_booth_at_LinuxTag_in_Berlin|coreboot @ LinuxTag]]&lt;br /&gt;
* '''2008/05/19:''' [[News#2008.2F05.2F19_VIA_EPIA-CN_now_supported|VIA EPIA-CN support]]&lt;br /&gt;
* '''2008/05/16:''' [[News#2008.2F05.2F16_Thomson_IP1000_now_supported|Thomson IP1000 support]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;Contact&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[Mailinglist|Mailing list]]: [mailto:coreboot@coreboot.org coreboot@coreboot.org]&lt;br /&gt;
* [[IRC]]: '''#coreboot''' (on [http://www.freenode.net/ irc.freenode.net])&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Coreboot_Symposium_2008</id>
		<title>Coreboot Symposium 2008</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Coreboot_Symposium_2008"/>
				<updated>2008-03-31T05:56:30Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Who is bringing what */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agenda ==&lt;br /&gt;
&lt;br /&gt;
general: breaks at 10-10:30, 12-1, 3-3:30&lt;br /&gt;
&lt;br /&gt;
=== Thursday ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699dd&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Time&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Speaker&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Topic&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1:00-2:00&lt;br /&gt;
| Ron Minnich&lt;br /&gt;
| Opening of the meeting and discussion of the last year&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2:00-3:00&lt;br /&gt;
| Stefan Reinauer&lt;br /&gt;
| Automated Testbed, GSoC 2007, 2008&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:00-3:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:30-4:00&lt;br /&gt;
| Stefan Reinauer&lt;br /&gt;
| coresystems' various BIOS customers, recent ports and other related work&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4:00-end&lt;br /&gt;
| &lt;br /&gt;
| hack session -- set up boards and prioritize the goals of the rest of the time&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Friday ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699dd&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Time&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Speaker&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Topic&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8:30-10:00&lt;br /&gt;
| Marc Jones (AMD)&lt;br /&gt;
| AMD talks about whatever they want :-)&lt;br /&gt;
- consumer issues&lt;br /&gt;
&lt;br /&gt;
- what's going on&lt;br /&gt;
&lt;br /&gt;
- new ports this year&lt;br /&gt;
&lt;br /&gt;
- K10?&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 10:00-10:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 10:30-12:00&lt;br /&gt;
| Marc Karasek (Sun)&lt;br /&gt;
| Marc talks about his work at Sun with SimNow&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 12:00-1:00&lt;br /&gt;
| &lt;br /&gt;
| Lunch&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1:00-3:00&lt;br /&gt;
| Ron Minnich&lt;br /&gt;
| Ron gives an overview of v3, from the smallest to the large bits.&lt;br /&gt;
Sample build/burn session&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:00-3:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:30-4:00&lt;br /&gt;
| &lt;br /&gt;
| open questions (please add some)&lt;br /&gt;
1. how do we tell when a board is good enough to move from v2 to v3?&lt;br /&gt;
&lt;br /&gt;
What's the test?&lt;br /&gt;
&lt;br /&gt;
2. What pending issues are there?&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4:00-5:00&lt;br /&gt;
| Ward Vandewege&lt;br /&gt;
| The view from the FSF -- what's going on, etc.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Saturday ===&lt;br /&gt;
&lt;br /&gt;
* hack all day. We hope to fix the problems we prioritized Thursday.&lt;br /&gt;
&lt;br /&gt;
== What needs to be brought ==&lt;br /&gt;
&lt;br /&gt;
* monitor&lt;br /&gt;
* power supplies&lt;br /&gt;
&lt;br /&gt;
== Who is bringing what ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ron:''' dbe61 and dbe62. Alix 1C. Alix LPC pod. Artec LPC pod. MINI PCI and PCI post cards. T23 with ubuntu. Outlet strips. FS2 if it arrives from LANL on time (it may not). USB hubs? ISDN card that causes Alix 1.c failure. &lt;br /&gt;
Ethernet switch. USB PCI card for testing Alix 1.C. Somebody bring some cat 5 cables -- I forgot mine! Camera.&lt;br /&gt;
I'm now in Denver!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ward:''' alix2c3, Artec LPC dongle. I can bring an alix.1c too but Ron's already bringing one.&lt;br /&gt;
&lt;br /&gt;
'''Stefan:''' Advantech PCM-5820, possibly other boards, Artec LPC Dongle, ByteBlaster II (if it arrives in time), other JTAG cables on Request,  Galep-5 Flash Writer, Flash Plaice(?)&lt;br /&gt;
&lt;br /&gt;
'''Jordan:''' Norwich, FS2, ROM emulator, monitor, PS/2 keyboard, serial cable, laptop and lots of code.&lt;br /&gt;
&lt;br /&gt;
'''MarcJ:''' Norwich, DB800, DBE61, ROM emulators, fs2, keyboard, cables, monitor, hd, atx power, etc. - any requests?&lt;br /&gt;
&lt;br /&gt;
== Current show stopper issues ==&lt;br /&gt;
&lt;br /&gt;
* ALIX1.C and DB800 lockup if MFGPT are enabled in kernel.&lt;br /&gt;
* ALIX1.C interrupt flood if ISDN card is enabled (may be related to MFGPT issue).&lt;br /&gt;
* DBE62 RAM timing is wrong.&lt;br /&gt;
* DBE62 PLL reset gives wrong value on auto setting.&lt;br /&gt;
* SiS card can't program 2M flash part.&lt;br /&gt;
&lt;br /&gt;
See also [http://www.coreboot.org/pipermail/coreboot/2008-March/032455.html Denver meeting discussion topics] for more ideas.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2008-03-28T04:42:26Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: just a headline, remove in 10 days, about coreboot summit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td width=&amp;quot;80%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#efefff; align:right; border:1px solid #aabbcc;&amp;quot;&amp;gt;&lt;br /&gt;
'''coreboot''' (formerly known as LinuxBIOS) is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers. It performs just a little bit of hardware initialization and then executes a so-called [[Payloads|payload]].&lt;br /&gt;
&lt;br /&gt;
The 2008 coreboot summit is in 1 week! Hope to see you there. See the link in Current events for more information. &lt;br /&gt;
&lt;br /&gt;
Thanks to AMD for being a Silver supporter of the 2008 coreboot summit!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| cellspacing=2 cellpadding=2 border=0 valign=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[Benefits]]&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* 100% Free Software (GPL), no royalties, no license fees!&lt;br /&gt;
* Fast boot times (3 seconds to Linux console)&lt;br /&gt;
* Avoids the need for a slow/buggy/proprietary BIOS&lt;br /&gt;
* Runs in 32-Bit protected mode almost from the start&lt;br /&gt;
* Written in C, contains virtually no assembly code&lt;br /&gt;
* Supports many [[Supported Motherboards|mainboards]], [[Supported Chipsets and Devices|devices]], and [[payloads]]&lt;br /&gt;
* Further features: netboot, serial console, remote flashing, ...&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[Use Cases]]&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* Standard desktop computers and servers&lt;br /&gt;
* [[Clusters]], high-performance computing&lt;br /&gt;
* Set-Top-Boxes, thin clients&lt;br /&gt;
* Embedded solutions, appliances, terminals&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Small_form_factor Small form factor computers], [http://en.wikipedia.org/wiki/Home_theater_PC Home-theater PCs] &lt;br /&gt;
* No-moving-parts solutions (ROM chip as &amp;quot;disk&amp;quot;)&lt;br /&gt;
* Non-standard scenarios (e.g. FPGA in Opteron socket)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[Payloads]]&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&amp;lt;tr style=&amp;quot;vertical-align:top&amp;quot;&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[Linux]]&lt;br /&gt;
* [[FILO]]&lt;br /&gt;
* [[GRUB2]]&lt;br /&gt;
* [[Booting Windows using coreboot|Windows]] ([[ADLO]])&lt;br /&gt;
* [[Booting FreeBSD using coreboot|FreeBSD]] ([[ADLO]])&lt;br /&gt;
* [http://openbsd.org/ OpenBSD] ([[ADLO]])&lt;br /&gt;
* [[memtest86]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [http://www.openbios.org/ OpenBIOS]&lt;br /&gt;
* [http://www.openbios.org/Open_Firmware Open Firmware]&lt;br /&gt;
* [http://www.openbios.org/SmartFirmware SmartFirmware]&lt;br /&gt;
* [http://www.gnu.org/software/gnufi/ GNUFI] (UEFI)&lt;br /&gt;
* [[Etherboot]]&lt;br /&gt;
* [[Plan 9]]&lt;br /&gt;
* [[coreinfo]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
{| cellspacing=5 cellpadding=5 border=0 valign=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_lb.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''About'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out more about coreboot.&amp;lt;hr /&amp;gt;[[News]] | [[Press]] | [[Current events|Events]] | [[History]] | [[Screenshots|Screenshots &amp;amp; Videos]] | [[Contributors]] | [[Sponsors]] | [[Products]] | [[Clusters]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_devel.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Developers'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Get involved! Help us make coreboot better.&amp;lt;hr /&amp;gt;[[Development Guidelines]] | [[Developer Manual]] | [http://qa.coreboot.org/docs/doxygen.php Doxygen] | [http://tracker.coreboot.org/trac/coreboot/browser/trunk/coreboot-v2 Browse Source] | [[JTAG/BSDL Guide|JTAG]] | [[EHCI Debug Port]] | [[Distributed and Automated Testsystem|Testsystem]] | [[GSoC]] | [[Ideas]] | [[Laptop]] | [[Desktops]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_status.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Status'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out whether your hardware is already supported.&amp;lt;hr /&amp;gt;[[Supported Motherboards]] | [[Supported Chipsets and Devices|Supported Chipsets &amp;amp; Devices]] | [http://qa.coreboot.org Build Status] | [[Flashrom#Supported_devices|Flashrom support]] | [[Superiotool#Supported_devices|Superiotool support]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_tools.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Related Tools'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Tools and libraries related to coreboot.&amp;lt;hr /&amp;gt;[[Flashrom]] | [[Superiotool]] | [[Nvramtool]] | [[Buildrom]] | [[Libpayload]] | [[Mkelfimage]] &amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_101.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Getting Started'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Download coreboot and get started.&amp;lt;hr /&amp;gt;[[Download coreboot|Downloads]] | [[Documentation]] | [[:Category:Tutorials|Build Tutorials]] | [[Payloads]] | [[QEMU]] | [[AMD SimNow]] | [[Confirmed working svn revisions|Confirmed Working SVN Revisions]] | [[Misc]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_support.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Support'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Learn how to contact us and find help and support.&amp;lt;hr /&amp;gt;[[FAQ]] | [[Mailinglist]] | [[IRC]] | [http://tracker.coreboot.org/trac/coreboot/ Issue Tracker] | [[Glossary]] | [[coreboot Options|corebootv2 Options]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;20%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Coreinfo pci.png|thumb|The [[coreinfo|coreinfo payload]].]]&lt;br /&gt;
&amp;lt;br clear=all /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[News]]&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''2008/04/03:''' [[News#2008.2F04.2F03_coreboot_Symposium_in_Denver|coreboot Symposium Denver]]&lt;br /&gt;
* '''2008/03/17:''' [[News#2008.2F03.2F17_MSI_MS-6119_now_supported|MSI MS-6119 support]]&lt;br /&gt;
* '''2008/03/17:''' [[News#2008.2F03.2F17_Intel_3100_chipset_and_Intel_devkit_.28Mt._Arvon.29_board_now_supported|Intel 3100 / Mt.Arvon support]]&lt;br /&gt;
* '''2008/03/09:''' [[News#2008.2F03.2F09_RCA_RM4100_now_supported|RCA RM4100 support]]&lt;br /&gt;
* '''2008/03/07:''' [[News#2008.2F03.2F07_ASUS_A8V-E_Deluxe_now_supported|ASUS A8V-E Deluxe support]]&lt;br /&gt;
* '''2008/02/20:''' [[News#2008.2F02.2F20_MSI_MS-7135_.28K8N_Neo3.29_now_supported|MSI MS-7135 (K8N Neo3) support]]&lt;br /&gt;
* '''2008/01/27:''' [[News#2008.2F01.2F27_Abit_BE6-II_V2.0_now_supported|Abit BE6-II V2.0 support]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;Contact&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[Mailinglist|Mailing list]]: [mailto:coreboot@coreboot.org coreboot@coreboot.org]&lt;br /&gt;
* [[IRC]]: '''#coreboot''' (on [http://www.freenode.net/ irc.freenode.net])&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Coreboot_Symposium_2008</id>
		<title>Coreboot Symposium 2008</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Coreboot_Symposium_2008"/>
				<updated>2008-03-27T20:28:29Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Current show stopper issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agenda ==&lt;br /&gt;
&lt;br /&gt;
general: breaks at 10-10:30, 12-1, 3-3:30&lt;br /&gt;
&lt;br /&gt;
=== Thursday ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699dd&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Time&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Speaker&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Topic&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1:00-2:00&lt;br /&gt;
| Ron Minnich&lt;br /&gt;
| Opening of the meeting and discussion of the last year&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2:00-3:00&lt;br /&gt;
| Stefan Reinauer&lt;br /&gt;
| Automated Testbed, GSoC 2007, 2008&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:00-3:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:30-4:00&lt;br /&gt;
| Stefan Reinauer&lt;br /&gt;
| coresystems' various BIOS customers, recent ports and other related work&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4:00-end&lt;br /&gt;
| &lt;br /&gt;
| hack session -- set up boards and prioritize the goals of the rest of the time&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Friday ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699dd&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Time&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Speaker&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Topic&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8:30-10:00&lt;br /&gt;
| Marc Jones (AMD)&lt;br /&gt;
| AMD talks about whatever they want :-)&lt;br /&gt;
- consumer issues&lt;br /&gt;
&lt;br /&gt;
- what's going on&lt;br /&gt;
&lt;br /&gt;
- new ports this year&lt;br /&gt;
&lt;br /&gt;
- K10?&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 10:00-10:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 10:30-12:00&lt;br /&gt;
| Marc Karasek (Sun)&lt;br /&gt;
| Marc talks about his work at Sun with SimNow&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 12:00-1:00&lt;br /&gt;
| &lt;br /&gt;
| Lunch&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1:00-3:00&lt;br /&gt;
| Ron Minnich&lt;br /&gt;
| Ron gives an overview of v3, from the smallest to the large bits.&lt;br /&gt;
Sample build/burn session&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:00-3:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:30-4:00&lt;br /&gt;
| &lt;br /&gt;
| open questions (please add some)&lt;br /&gt;
1. how do we tell when a board is good enough to move from v2 to v3?&lt;br /&gt;
&lt;br /&gt;
What's the test?&lt;br /&gt;
&lt;br /&gt;
2. What pending issues are there?&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4:00-5:00&lt;br /&gt;
| Ward Vandewege&lt;br /&gt;
| The view from the FSF -- what's going on, etc.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Saturday ===&lt;br /&gt;
&lt;br /&gt;
* hack all day. We hope to fix the problems we prioritized Thursday.&lt;br /&gt;
&lt;br /&gt;
== What needs to be brought ==&lt;br /&gt;
&lt;br /&gt;
* monitor&lt;br /&gt;
* power supplies&lt;br /&gt;
&lt;br /&gt;
== Who is bringing what ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ron:''' dbe61 and dbe62. Alix 1C. Alix LPC pod. Artec LPC pod. T23 with ubuntu. OLPC devel board for v3 test. (No OLPC, it's too distracting). Outlet strips. FS2 if it arrives from LANL on time (it may not). USB hubs? ISDN card that causes Alix 1.c failure. The new SiS card (if I can find a way to bring a monitor)&lt;br /&gt;
What else?&lt;br /&gt;
&lt;br /&gt;
'''Ward:''' alix2c3, Artec LPC dongle. I can bring an alix.1c too but Ron's already bringing one.&lt;br /&gt;
&lt;br /&gt;
'''Stefan:''' Advantech PCM-5820, possibly other boards, Artec LPC Dongle, ByteBlaster II (if it arrives in time), other JTAG cables on Request,  Galep-5 Flash Writer, Flash Plaice(?)&lt;br /&gt;
&lt;br /&gt;
'''Jordan:''' Norwich, FS2, ROM emulator, monitor, PS/2 keyboard, serial cable, laptop and lots of code.&lt;br /&gt;
&lt;br /&gt;
== Current show stopper issues ==&lt;br /&gt;
&lt;br /&gt;
Alix 1.c lockup if MFGPT are enabled in kernel&lt;br /&gt;
&lt;br /&gt;
Alix 1.c interrupt flood if ISDN card is enabled. (may be related to MFGPT issue)&lt;br /&gt;
&lt;br /&gt;
DBE62 RAM timing is wrong&lt;br /&gt;
&lt;br /&gt;
DBE62 PLL reset gives wrong value on auto setting.&lt;br /&gt;
&lt;br /&gt;
SiS card can't program 2M flash part&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Coreboot_Symposium_2008</id>
		<title>Coreboot Symposium 2008</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Coreboot_Symposium_2008"/>
				<updated>2008-03-27T20:28:02Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agenda ==&lt;br /&gt;
&lt;br /&gt;
general: breaks at 10-10:30, 12-1, 3-3:30&lt;br /&gt;
&lt;br /&gt;
=== Thursday ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699dd&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Time&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Speaker&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Topic&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1:00-2:00&lt;br /&gt;
| Ron Minnich&lt;br /&gt;
| Opening of the meeting and discussion of the last year&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2:00-3:00&lt;br /&gt;
| Stefan Reinauer&lt;br /&gt;
| Automated Testbed, GSoC 2007, 2008&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:00-3:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:30-4:00&lt;br /&gt;
| Stefan Reinauer&lt;br /&gt;
| coresystems' various BIOS customers, recent ports and other related work&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4:00-end&lt;br /&gt;
| &lt;br /&gt;
| hack session -- set up boards and prioritize the goals of the rest of the time&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Friday ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;font-size: smaller&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699dd&amp;quot;&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Time&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Speaker&lt;br /&gt;
! align=&amp;quot;left&amp;quot; | Topic&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8:30-10:00&lt;br /&gt;
| Marc Jones (AMD)&lt;br /&gt;
| AMD talks about whatever they want :-)&lt;br /&gt;
- consumer issues&lt;br /&gt;
&lt;br /&gt;
- what's going on&lt;br /&gt;
&lt;br /&gt;
- new ports this year&lt;br /&gt;
&lt;br /&gt;
- K10?&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 10:00-10:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 10:30-12:00&lt;br /&gt;
| Marc Karasek (Sun)&lt;br /&gt;
| Marc talks about his work at Sun with SimNow&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 12:00-1:00&lt;br /&gt;
| &lt;br /&gt;
| Lunch&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1:00-3:00&lt;br /&gt;
| Ron Minnich&lt;br /&gt;
| Ron gives an overview of v3, from the smallest to the large bits.&lt;br /&gt;
Sample build/burn session&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:00-3:30&lt;br /&gt;
| &lt;br /&gt;
| break&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#eeeeee&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 3:30-4:00&lt;br /&gt;
| &lt;br /&gt;
| open questions (please add some)&lt;br /&gt;
1. how do we tell when a board is good enough to move from v2 to v3?&lt;br /&gt;
&lt;br /&gt;
What's the test?&lt;br /&gt;
&lt;br /&gt;
2. What pending issues are there?&lt;br /&gt;
&lt;br /&gt;
|- bgcolor=&amp;quot;#dddddd&amp;quot; valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4:00-5:00&lt;br /&gt;
| Ward Vandewege&lt;br /&gt;
| The view from the FSF -- what's going on, etc.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Saturday ===&lt;br /&gt;
&lt;br /&gt;
* hack all day. We hope to fix the problems we prioritized Thursday.&lt;br /&gt;
&lt;br /&gt;
== What needs to be brought ==&lt;br /&gt;
&lt;br /&gt;
* monitor&lt;br /&gt;
* power supplies&lt;br /&gt;
&lt;br /&gt;
== Who is bringing what ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ron:''' dbe61 and dbe62. Alix 1C. Alix LPC pod. Artec LPC pod. T23 with ubuntu. OLPC devel board for v3 test. (No OLPC, it's too distracting). Outlet strips. FS2 if it arrives from LANL on time (it may not). USB hubs? ISDN card that causes Alix 1.c failure. The new SiS card (if I can find a way to bring a monitor)&lt;br /&gt;
What else?&lt;br /&gt;
&lt;br /&gt;
'''Ward:''' alix2c3, Artec LPC dongle. I can bring an alix.1c too but Ron's already bringing one.&lt;br /&gt;
&lt;br /&gt;
'''Stefan:''' Advantech PCM-5820, possibly other boards, Artec LPC Dongle, ByteBlaster II (if it arrives in time), other JTAG cables on Request,  Galep-5 Flash Writer, Flash Plaice(?)&lt;br /&gt;
&lt;br /&gt;
'''Jordan:''' Norwich, FS2, ROM emulator, monitor, PS/2 keyboard, serial cable, laptop and lots of code.&lt;br /&gt;
&lt;br /&gt;
== Current show stopper issues ==&lt;br /&gt;
&lt;br /&gt;
Alix 1.c lockup if MFGPT are enabled in kernel&lt;br /&gt;
&lt;br /&gt;
Alix 1.c interrupt flood if ISDN card is enable. &lt;br /&gt;
&lt;br /&gt;
DBE62 RAM timing is wrong&lt;br /&gt;
&lt;br /&gt;
DBE62 PLL reset gives wrong value on auto setting.&lt;br /&gt;
&lt;br /&gt;
SiS card can't program 2M flash part&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Coreboot_Symposium_2008</id>
		<title>Coreboot Symposium 2008</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Coreboot_Symposium_2008"/>
				<updated>2008-03-27T18:57:07Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agenda ==&lt;br /&gt;
&lt;br /&gt;
general: breaks at 10-10:30, 12-1, 3-3:30&lt;br /&gt;
&lt;br /&gt;
1-2 Ron opens the meeting and discusses the last year&lt;br /&gt;
&lt;br /&gt;
2-3 Stepan talks about the automated testbed, and GSOC 2007 and 2008&lt;br /&gt;
&lt;br /&gt;
3-330 break&lt;br /&gt;
&lt;br /&gt;
330-400 Stepan talks about&lt;br /&gt;
- his work with the german army etc.&lt;br /&gt;
- his recent ports&lt;br /&gt;
&lt;br /&gt;
400-rest of day hack session -- set up boards and prioritize the goals of the rest of the time&lt;br /&gt;
&lt;br /&gt;
friday&lt;br /&gt;
&lt;br /&gt;
0830-1000 AMD talks about whatever they want :-)&lt;br /&gt;
- consumer issues&lt;br /&gt;
- what's going on&lt;br /&gt;
- new ports this year&lt;br /&gt;
- K10?&lt;br /&gt;
&lt;br /&gt;
1000-1030 break&lt;br /&gt;
&lt;br /&gt;
1030-1200 Marc talks about his work at Sun with simnow&lt;br /&gt;
&lt;br /&gt;
1200-0100 lunch&lt;br /&gt;
&lt;br /&gt;
0100- 0300 Ton gives an overview of v3, from the smallest to the large bits.&lt;br /&gt;
Sample build/burn session&lt;br /&gt;
&lt;br /&gt;
0300-0330 break&lt;br /&gt;
&lt;br /&gt;
0330- 0400&lt;br /&gt;
open questions (please add some)&lt;br /&gt;
1. how do we tell when a board is good enough to move from v2 to v3?&lt;br /&gt;
What's the test?&lt;br /&gt;
2. What pending issues are there?&lt;br /&gt;
&lt;br /&gt;
0400-0500 The view from the FSF -- what's going on, etc.&lt;br /&gt;
&lt;br /&gt;
saturday -- hack all day. We hope to fix the problems we prioritized thursday.&lt;br /&gt;
&lt;br /&gt;
== What needs to be brought ==&lt;br /&gt;
&lt;br /&gt;
== Who is bringing what ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ron:''' dbe61 and dbe62. Alix 1C. Alix LPC pod. Artec LPC pod. T23 with ubuntu. OLPC devel board for v3 test. (No OLPC, it's too distracting). Outlet strips. FS2 if it arrives from LANL on time (it may not). USB hubs? &lt;br /&gt;
What else?&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Coreboot_Symposium_2008</id>
		<title>Coreboot Symposium 2008</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Coreboot_Symposium_2008"/>
				<updated>2008-03-27T18:56:38Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agenda ==&lt;br /&gt;
&lt;br /&gt;
general: breaks at 10-10:30, 12-1, 3-3:30&lt;br /&gt;
&lt;br /&gt;
1-2 Ron opens the meeting and discusses the last year&lt;br /&gt;
&lt;br /&gt;
2-3 Stepan talks about the automated testbed, and GSOC 2007 and 2008&lt;br /&gt;
&lt;br /&gt;
3-330 break&lt;br /&gt;
&lt;br /&gt;
330-400 Stepan talks about&lt;br /&gt;
- his work with the german army etc.&lt;br /&gt;
- his recent ports&lt;br /&gt;
&lt;br /&gt;
400-rest of day hack session -- set up boards and prioritize the goals of the rest of the time&lt;br /&gt;
&lt;br /&gt;
friday&lt;br /&gt;
&lt;br /&gt;
0830-1000 AMD talks about whatever they want :-)&lt;br /&gt;
- consumer issues&lt;br /&gt;
- what's going on&lt;br /&gt;
- new ports this year&lt;br /&gt;
- K10?&lt;br /&gt;
&lt;br /&gt;
1000-1030 break&lt;br /&gt;
&lt;br /&gt;
1030-1200 Marc talks about his work at Sun with simnow&lt;br /&gt;
&lt;br /&gt;
1200-0100 lunch&lt;br /&gt;
&lt;br /&gt;
0100- 0300 Ton gives an overview of v3, from the smallest to the large bits.&lt;br /&gt;
Sample build/burn session&lt;br /&gt;
&lt;br /&gt;
0300-0330 break&lt;br /&gt;
&lt;br /&gt;
0330- 0400&lt;br /&gt;
open questions (please add some)&lt;br /&gt;
1. how do we tell when a board is good enough to move from v2 to v3?&lt;br /&gt;
What's the test?&lt;br /&gt;
2. How do we avoid what happened with the SiS-based board?&lt;br /&gt;
3. Could OLPC have been &amp;quot;saved&amp;quot;? What went right/wrong?&lt;br /&gt;
4. What pending issues are there.&lt;br /&gt;
&lt;br /&gt;
0400-0500 The view from the FSF -- what's going on, etc.&lt;br /&gt;
&lt;br /&gt;
saturday -- hack all day. We hope to fix the problems we prioritized thursday.&lt;br /&gt;
&lt;br /&gt;
== What needs to be brought ==&lt;br /&gt;
&lt;br /&gt;
== Who is bringing what ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ron:''' dbe61 and dbe62. Alix 1C. Alix LPC pod. Artec LPC pod. T23 with ubuntu. OLPC devel board for v3 test. (No OLPC, it's too distracting). Outlet strips. FS2 if it arrives from LANL on time (it may not). USB hubs? &lt;br /&gt;
What else?&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Coreboot_Symposium_2008</id>
		<title>Coreboot Symposium 2008</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Coreboot_Symposium_2008"/>
				<updated>2008-03-27T18:54:56Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: New page for denver. Primitive.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
general: breaks at 10-10:30, 12-1, 3-3:30&lt;br /&gt;
&lt;br /&gt;
1-2 Ron opens the meeting and discusses the last year&lt;br /&gt;
2-3 Stepan talks about the automated testbed, and GSOC 2007 and 2008&lt;br /&gt;
&lt;br /&gt;
3-330 break&lt;br /&gt;
330-400 Stepan talks about&lt;br /&gt;
- his work with the german army etc.&lt;br /&gt;
- his recent ports&lt;br /&gt;
400-rest of day hack session -- set up boards and prioritize the goals of the rest of the time&lt;br /&gt;
&lt;br /&gt;
next day&lt;br /&gt;
0830-1000 AMD talks about whatever they hell they want :-)&lt;br /&gt;
- consumer issues&lt;br /&gt;
- what's going on&lt;br /&gt;
- new ports this year&lt;br /&gt;
- K10?&lt;br /&gt;
1000-1030 break&lt;br /&gt;
1030-1200 Marc talks about his work at Sun with simnow&lt;br /&gt;
1200-0100 lunch&lt;br /&gt;
0100- 0300 Ton gives an overview of v3, from the smallest to the large bits.&lt;br /&gt;
Sample build/burn session&lt;br /&gt;
0300-0330 break&lt;br /&gt;
0330- 0400&lt;br /&gt;
open questions (please add some)&lt;br /&gt;
1. how do we tell when a board is good enough to move from v2 to v3?&lt;br /&gt;
What's the test?&lt;br /&gt;
2. How do we avoid what happened with the SiS-based board?&lt;br /&gt;
3. Could OLPC have been &amp;quot;saved&amp;quot;? What went right/wrong?&lt;br /&gt;
4. What pending issues are there.&lt;br /&gt;
&lt;br /&gt;
0400-0500 The view from the FSF -- what's going on, etc.&lt;br /&gt;
&lt;br /&gt;
saturday -- hack all day. We hope to fix the problems we prioritized thursday.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What needs to be brought ==&lt;br /&gt;
&lt;br /&gt;
== Who is bringing what ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ron:''' dbe61 and dbe62. Alix 1C. Alix LPC pod. Artec LPC pod. T23 with ubuntu. OLPC devel board for v3 test. (No OLPC, it's too distracting). Outlet strips. FS2 if it arrives from LANL on time (it may not). USB hubs? &lt;br /&gt;
What else?&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Current_events</id>
		<title>Current events</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Current_events"/>
				<updated>2008-03-27T18:44:35Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: add a page for denver 2008 meeting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There will be a coreboot symposium in Denver, April 3 – 5, 2008 held during the High Performance Computer Science Week (HPCSW). Register for the summit at [http://www.hpcsw.org LinuxBIOS Summit]. When registering, don't forget to check the 'Linuxbios Summit' check box. [[Here]] is more information. &lt;br /&gt;
&lt;br /&gt;
Another coreboot symposium will probably take place in 2009 in Europe.&lt;br /&gt;
&lt;br /&gt;
Coreboot will also be exhibiting at [http://www.linuxtag.org/2008/en/home/welcome.html LinuxTag 2008] in Berlin, May 28-31.&lt;br /&gt;
&lt;br /&gt;
Please contact [[User:Stepan|Stefan Reinauer]] or [[User:Rminnich|Ronald Minnich]] for more information on the events.&lt;br /&gt;
&lt;br /&gt;
== Older Events ==&lt;br /&gt;
&lt;br /&gt;
* There was a [[News#2007.2F05.2F23_LinuxBIOS_booth_at_LinuxTag_in_Berlin.2C_29.2F5-2.2F6|LinuxBIOS booth at the LinuxTag in Berlin, May 29 - June 6, 2007]], as well as a hands-on workshop by Peter Stuge.&lt;br /&gt;
* Ron Minnich gave [http://www.fosdem.org/2007/schedule/events/linuxbios a talk about LinuxBIOS] on February 24, 2007 at [http://www.fosdem.org/2007/ FOSDEM 2007].&lt;br /&gt;
* The [[LinuxBIOS Symposium 2006]] took place on October 1-3, 2006 in Hamburg, Germany&lt;br /&gt;
* The [[LinuxBIOS Summit 2005]] took place on October 11-13 in Santa Fe, NM.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/GSoC</id>
		<title>GSoC</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/GSoC"/>
				<updated>2008-03-11T00:54:07Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Google Summer of Code 2008 =&lt;br /&gt;
&lt;br /&gt;
Welcome to the [http://code.google.com/soc/ Google Summer of Code(tm)] page of the [[Welcome to coreboot|coreboot project]].&lt;br /&gt;
&lt;br /&gt;
= Your own Projects =&lt;br /&gt;
&lt;br /&gt;
We've listed some ideas for projects here, but we're more than happy to entertain other ideas if you've got any.&lt;br /&gt;
Feel free to contact us under the address below, and don't hesitate to suggest whatever you have in mind.&lt;br /&gt;
&lt;br /&gt;
= Summer of Code 2008 Application =&lt;br /&gt;
&lt;br /&gt;
Please complete the standard [http://code.google.com/soc/ Google SoC 2008 application]. Additionally, please provide information on the following:&lt;br /&gt;
&lt;br /&gt;
# Who are you? What are you studying?&lt;br /&gt;
# Why are you the right person for this task?&lt;br /&gt;
# Do you have any other commitments that we should know about?&lt;br /&gt;
# List your C, Assembler or Java experience. (Depending on the project)&lt;br /&gt;
# List your history with open source projects.&lt;br /&gt;
# What is your preferred method of contact? (Phone, email, Skype, etc) &lt;br /&gt;
&lt;br /&gt;
Feel free to keep your application short. A 15 page essay is no better than a 2 page summary. If you wish to write 15 pages, you are of course welcome to do so, and we will gladly put your paper up on the web page. But it is not required for the application.&lt;br /&gt;
&lt;br /&gt;
The Drupal project has a great page on [http://drupal.org/node/59037 How to write an SOC application].&lt;br /&gt;
&lt;br /&gt;
'''DEADLINE FOR STUDENT APPLICATIONS:''' Students who are interested in working on a coreboot-related GSoC project must apply between '''March 24, 2008''' and '''March 30, 2008'''!&lt;br /&gt;
&lt;br /&gt;
= Contact =&lt;br /&gt;
&lt;br /&gt;
If you are interested in becoming a GSoC student, please contact [mailto:stepan@coresystems.de Stefan Reinauer].&lt;br /&gt;
&lt;br /&gt;
There is also an IRC channel on irc.freenode.net: #coreboot&lt;br /&gt;
&lt;br /&gt;
= Projects 2008 =&lt;br /&gt;
&lt;br /&gt;
== VGA BIOS for Geode LX ==&lt;br /&gt;
&lt;br /&gt;
This project's goal is to write a VGA BIOS (PCI option rom) for AMD Geode LX systems (such as the Linutop, Thincan or XO). There exists a [http://savannah.nongnu.org/projects/vgabios free VGA BIOS] but it knows nothing about real hardware. If you really want to kick the iron, this project could be enhanced to contain a complete infrastructure for including hardware initialization code for many different graphics cards.&lt;br /&gt;
&lt;br /&gt;
== SCSI booting in coreboot ==&lt;br /&gt;
&lt;br /&gt;
Currently coreboot can not boot from an arbitrary SCSI controller. There are two solutions for the problem:&lt;br /&gt;
* Use Linux and Kexec. This requires to keep the SCSI driver in the flash chip.&lt;br /&gt;
* Use x86emu/vm86/[[ADLO]] and the int13 method. This would allow to use the PCI option rom available on all modern SCSI controllers.&lt;br /&gt;
&lt;br /&gt;
So we obviously need a solution based on the later. This could as well be implemented as a Linux program, as an intermediate payload, or as a shared library.&lt;br /&gt;
&lt;br /&gt;
The code you are going to write needs to catch the int13 interrupt vector that the SCSI option rom installs and make it available to arbitrary (firmware/payload) code trying to load something from disk.&lt;br /&gt;
&lt;br /&gt;
This is a coreboot v3 project.&lt;br /&gt;
&lt;br /&gt;
== coreboot graphical port creator ==&lt;br /&gt;
&lt;br /&gt;
In coreboot v2, every port to a new mainboard requires that you touch a lot of source files with only minimal changes. In version 3 we try to fix this issue and pack all mainboard specific information into a configuration file that we call the Device Tree Source (DTS). &lt;br /&gt;
This Device Tree config file is a simple text file describing what static (non-detectable and/or soldered on) devices are used on the mainbard and how they are wired (SPD-ROM, Interrupt Routing, SuperIO, Northbridge, Southbridge, Hypertransport,..). It is mostly organized as a tree (with some special cases, Hypertransport allows cycles for instance)&lt;br /&gt;
&lt;br /&gt;
The idea is to create a tool, based on the [www.eclipse.org/ Eclipse IDE], Swing, or your favourite portable toolkit, which allows you to drag and drop those components together and describe how they are wired. &lt;br /&gt;
&lt;br /&gt;
This would be a great help for mainboard vendors that build mainboards of already supported components. No more reading of coreboot code would be required, but rather only the understanding of the hardware, and probably the mainboard schematics.&lt;br /&gt;
&lt;br /&gt;
This is a coreboot v3 project. It requires good Java and/or Eclipse skills (or whatever toolkit/language you choose)&lt;br /&gt;
&lt;br /&gt;
== TianoCore on coreboot ==&lt;br /&gt;
&lt;br /&gt;
[http://www.tianocore.org/ Tiano Core] is Intel's EFI implementation. Unlike coreboot, it is not a firmware, but rather a bootloader. Last year we started porting TianoCore to run on coreboot, but there are many things left to do. Improve Tiano Core running as a coreboot payloads, or change coreboot so it can load Tiano Core as a payloads.&lt;br /&gt;
&lt;br /&gt;
This project requires no hardware skills, but especially in case of TianoCore might require knowledge of Windows compilers (VC2005?)&lt;br /&gt;
&lt;br /&gt;
== libpayload ==&lt;br /&gt;
&lt;br /&gt;
There are many, many &amp;quot;payloads&amp;quot; for coreboot these days: Linux, FILO, GRUB2, Tiano Core, Open Firmware, etherboot, and some more to count. All these payloads have a few functions in common that they use to read information from coreboot or change coreboot settings in NVRAM. It would be incredibly useful to unify all this code and enhance it, so that not every coreboot payload has to keep reinventing the wheel.&lt;br /&gt;
&lt;br /&gt;
== All Virtual All The Time (AVATT) ==&lt;br /&gt;
&lt;br /&gt;
The goal here is to build a system that comes up running Linux and KVM from power on reset. From that&lt;br /&gt;
point the system could boot anything -- Windows, Linux, *BSD, Plan 9 -- anything that runs&lt;br /&gt;
on x86 32 and 64-bit architectures. Coreboot would be &lt;br /&gt;
integrated with a Linux kernel and initrd that had KVM built in. The initrd would include the minimal set of tools needed for starting new KVM virtual machine guests. Note that Linux booting from coreboot is a solved &lt;br /&gt;
problem, using the buildrom tool, so the main effort here is to develop a minimal KVM infrastructure that&lt;br /&gt;
can fit in a 2Mbyte FLASH part. Linux + X11 have been demonstrated in a 1Mbyte part, so we feel that this&lt;br /&gt;
task is not impossible, but will be a terrific learning experience for a student, and will provide&lt;br /&gt;
the community with a valuable resource when it is finished. The Xen and KVM communities have both asked&lt;br /&gt;
for this capability for some time now, so there is a group of people ready to use this system when it is&lt;br /&gt;
finished. &lt;br /&gt;
&lt;br /&gt;
= Projects 2007 =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Booting Windows and other Operating Systems in LinuxBIOS [http://linuxbios.org/Booting_Windows_using_LinuxBIOS]==&lt;br /&gt;
&lt;br /&gt;
The goal of this sub project is to figure out how to boot Windows Vista/XP/2003. There are three approaches that might proof successful:&lt;br /&gt;
&lt;br /&gt;
* using a dedicated LinuxBIOS loader (ie. adapting [http://www.reactos.org/ ReactOS] FREELDR)&lt;br /&gt;
* booting Windows on top of Linux using [http://www.xmission.com/~ebiederm/files/kexec/README kexec]/[http://kboot.sourceforge.net/ kboot]&lt;br /&gt;
* fixing [[ADLO]] so that it boots Vista/XP and removing the mainboard dependencies in it's code.&lt;br /&gt;
* Some information on usage of bios services in Windows can be found [http://www.missl.cs.umd.edu/winint/index1.html here] and [http://www.missl.cs.umd.edu/winint/index2.html here].&lt;br /&gt;
&lt;br /&gt;
== Port GRUB2 to work in LinuxBIOS ==&lt;br /&gt;
&lt;br /&gt;
[[GRUB2]] is going to be _the_ bootloader of choice in the forseeable future. As such, it could replace both Grub legacy and FILO, the LinuxBIOS hack for grub compatibility. FILO lacks many features that come with GRUB2 with no extra effort.&lt;br /&gt;
&lt;br /&gt;
This task splits into four sub-problems:&lt;br /&gt;
&lt;br /&gt;
* Add a target i386-linuxbios, next to i386-pc and i386-efi to the configuration process&lt;br /&gt;
* Add an IDE driver that does direct access instead of intXX calls&lt;br /&gt;
* Make the build process generate a single static ELF image, like it is done on Sparc&lt;br /&gt;
* Add support for reading the memory size from the LinuxBIOS table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CMOS Config / Device Tree Browser Payload ==&lt;br /&gt;
&lt;br /&gt;
Unlike other BIOSes, Linux has no such thing as a &amp;quot;CMOS setup&amp;quot;. This does not mean that you can not configure it. There is a nice and small Linux command line utility called [http://lxbios.sf.net lxbios] for that purpose. But people are often asking for a builtin config tool. Such a config tool could feature VGA graphics (maybe even VESA?), it should be easy to use, allow to browse information from LinuxBIOS' central structure: the device tree, and provide lxbios functionality with some sex appeal.&lt;br /&gt;
&lt;br /&gt;
This is a LinuxBIOSv3 project.&lt;br /&gt;
&lt;br /&gt;
== Open Firmware payload for LinuxBIOS ==&lt;br /&gt;
&lt;br /&gt;
Mitch Bradley from [http://www.firmworks.com/ Firmworks, Inc.] released the [http://www.openbios.org/OpenFirmware Open Firmware sources] under a BSD license. The released code does work in LinuxBIOS, but could use some proper integration and testing on some hardware or in [http://fabrice.bellard.free.fr/qemu/ Qemu]. &lt;br /&gt;
&lt;br /&gt;
Some ideas:&lt;br /&gt;
&lt;br /&gt;
* The released Open Firmware code is very much optimized towards the OLPC. A lot of things don't work yet on other systems, such as using a graphical framebuffer. Therefore things in LinuxBIOS need to be changed. For example, if LinuxBIOS initializes a graphics mode, it should add a LinuxBIOS table entry that specifies the address of the framebuffer and the depth and resolution.&lt;br /&gt;
* Add words to view the LinuxBIOS table in OFW&lt;br /&gt;
* Add words to change LinuxBIOS CMOS settings from OFW&lt;br /&gt;
* For LinuxBIOSv3, the start address of the payload can be variable. This is a fundamental change to v2, and will make life a lot easier and LinuxBIOS a lot more flexible. OFW requires to know its in-rom address at build time. This needs to be fixed to a dynamic behavior&lt;br /&gt;
* Also, there's no good documentation on what features can be used and how they can be used. Like the graphical OLPC menu, the built-in web server.&lt;br /&gt;
* Get a STOP-A like behavior working in Linux&lt;br /&gt;
* Get Smart Firmware working with new compilers&lt;br /&gt;
* Get Smart Firmware working as a payload&lt;br /&gt;
* Enhance the [[Distributed and Automated Testsystem]] to work with FILO and OpenFirmware payloads, and add The Hayes ANS Forth testsuite.&lt;br /&gt;
&lt;br /&gt;
Some parts might require cooperation with other GSoC projects:&lt;br /&gt;
&lt;br /&gt;
* Boot from Non-OFW SCSI controllers by running their int13 handler&lt;br /&gt;
* Boot Windows XP/2003/Vista in OFW&lt;br /&gt;
&lt;br /&gt;
This project might benefit from Forth skills.&lt;br /&gt;
&lt;br /&gt;
== GNUFI or TianoCore payloads ==&lt;br /&gt;
&lt;br /&gt;
There are two open source EFI implementations out there. [http://gnufi.blogspot.com/ GNUFI] (or [http://www.hermann-uwe.de/blog/gnufi-the-gnu-firmware-implementation here] or [http://www.gnu.org/software/gnufi/ here]) and [http://www.tianocore.org/ TianoCore]. Try getting those to work as LinuxBIOS payloads, or change LinuxBIOS so it can load them as payloads.&lt;br /&gt;
&lt;br /&gt;
This project requires no hardware skills, but especially in case of TianoCore might require knowledge of Windows compilers (VC2005?)&lt;br /&gt;
&lt;br /&gt;
== Boot OpenSolaris, FreeBSD, NetBSD, OpenBSD or other free OSes ==&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS has (despite its name) been a little Linux centric. A nice project would be to analyze what it takes to get OpenSolaris, the BSDs or other free operating systems to work in LinuxBIOS, without the need for legacy emulation (ie. no [[ADLO]])&lt;br /&gt;
&lt;br /&gt;
== Improve Linux as a BIOS [http://linuxbios.org/Build_LinuxBIOS_using_LBdistro]==&lt;br /&gt;
&lt;br /&gt;
There's a small project called [http://www.linuxbios.org/viewvc/?root=buildrom buildrom] which creates a payload from a Linux kernel and some user space utilities. It has been written to work with the OLPC. This project could be enhanced to work on all supported LinuxBIOS motherboards.&lt;br /&gt;
&lt;br /&gt;
== Porting Flashrom utility to Windows 2000/XP ==&lt;br /&gt;
&lt;br /&gt;
Flashrom is used to burn LinuxBIOS binary to flash chips in the target motherboards. It runs on Unix/Linux. In this project the flashrom utility is ported from Linux/Unix to Windows 2000/XP. The Windows port is called Winflashrom. The project is divided into two tasks. The first task is to port most of the user space flashrom source code to MinGW and the second task is to code a Windows device driver to provide direct hardware access for the user space code. The difficulty of this task is in providing a reliable Windows device driver for the user space code.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2007-10-03T22:22:04Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: Remove OLPC reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;td width=&amp;quot;80%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; background-color:#efefff; align:right; border:1px solid #aabbcc;&amp;quot;&amp;gt;&lt;br /&gt;
'''LinuxBIOS''' is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers.&lt;br /&gt;
&lt;br /&gt;
It performs just a little bit of hardware initialization and then executes a so-called [[Payloads|payload]], for example a [[Linux]] kernel, [[FILO]], [[GRUB2]], [http://www.openbios.org/ OpenBIOS], [http://www.openbios.org/Open_Firmware Open Firmware], [http://www.openbios.org/SmartFirmware SmartFirmware], [http://www.gnu.org/software/gnufi/ GNUFI] (UEFI), [[Etherboot]], [[ADLO]] (for [[Booting Windows using LinuxBIOS|booting Windows]] and [http://openbsd.org/ OpenBSD]), [[Plan 9]], or [[memtest86]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| cellspacing=5 cellpadding=5 border=0 valign=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[Benefits]]&amp;lt;/span&amp;gt;''' &amp;amp;mdash;&lt;br /&gt;
&amp;lt;small&amp;gt;There are many reasons for using LinuxBIOS.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
* 100% Free Software (GPL), no royalties, no license fees!&lt;br /&gt;
* Fast boot times (3 seconds from power-on to Linux console)&lt;br /&gt;
* Avoids the need for a slow, buggy, proprietary BIOS&lt;br /&gt;
* Runs in 32-Bit protected mode almost from the start&lt;br /&gt;
* Written in C, contains virtually no assembly code&lt;br /&gt;
* Supports a wide variety of [[Supported Chipsets and Devices|hardware]] and [[payloads]]&lt;br /&gt;
* Further features: netboot, serial console, remote flashing, ...&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[Use Cases]]&amp;lt;/span&amp;gt;''' &amp;amp;mdash;&lt;br /&gt;
&amp;lt;small&amp;gt;LinuxBIOS can be deployed in a wide range of scenarios.&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
* Standard desktop computers and servers&lt;br /&gt;
* [[Clusters]], high-performance computing&lt;br /&gt;
* Embedded solutions, appliances, terminals&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Small_form_factor Small form factor computers], [http://en.wikipedia.org/wiki/Home_theater_PC Home-theater PCs] (HTPC)&lt;br /&gt;
* No-moving-parts solutions (ROM chip as &amp;quot;hard drive&amp;quot;)&lt;br /&gt;
* Various non-standard scenarios (e.g. FPGA in Opteron socket)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
{| cellspacing=5 cellpadding=5 border=0 valign=&amp;quot;top&amp;quot; width=100%&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_lb.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''About'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out more about LinuxBIOS.&amp;lt;hr /&amp;gt;[[News]] | [[Press]] | [[History]] | [[Screenshots|Screenshots &amp;amp; Videos]] | [[Contributors]] | [[Sponsors]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_devel.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Developers'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Get involved! Help us make LinuxBIOS better.&amp;lt;hr /&amp;gt;[[Development Guidelines]] | [[Developer Manual]] | [http://qa.linuxbios.org/docs/doxygen.php Doxygen] | [http://tracker.linuxbios.org/trac/LinuxBIOS/browser/trunk/LinuxBIOSv2 Browse Source] | [[JTAG/BSDL Guide|JTAG]] | [[EHCI Debug Port]] | [[Distributed and Automated Testsystem|Testsystem]] | [[GSoC]] | [[Ideas]] | [[Superiotool]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_status.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Status'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out whether your hardware is already supported.&amp;lt;hr /&amp;gt;[[Supported Motherboards]] | [[Supported Chipsets and Devices|Supported Chipsets &amp;amp; Devices]] | [http://qa.linuxbios.org Build Status] | [[Flashrom#Supported_devices|Flashrom support]] | [[Superiotool#Supported_devices|Superiotool support]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_vendors.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Vendors &amp;amp; Products'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Find out in which products LinuxBIOS is used.&amp;lt;hr /&amp;gt;[[Products]] | [[Clusters]] | [[Laptop]] | [[Desktops]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| width=50% style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_101.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Getting Started'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Download LinuxBIOS and get started.&amp;lt;hr /&amp;gt;[[Download LinuxBIOS|Downloads]] | [[Documentation]] | [[Documentation#How-To.27s|Build Tutorials]] | [[Payloads]] | [[QEMU]] | [[Confirmed working svn revisions|Confirmed Working SVN Revisions]] | [[Buildrom]] | [[Flashrom]] | [[Misc]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
[[Image:chip_support.png]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot;|&lt;br /&gt;
'''Support'''&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;Learn how to contact us and find help and support.&amp;lt;hr /&amp;gt;[[FAQ]] | [[Mailinglist]] | [[IRC]] | [http://tracker.linuxbios.org/trac/LinuxBIOS/ Issue Tracker] | [[Glossary]] | [[LinuxBIOS Options|LinuxBIOSv2 Options]]&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td width=&amp;quot;20%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Msi_ms7260_k9n_neo.jpg|thumb|The latest supported board, the MSI [[MSI MS-7260 Build Tutorial|MS-7260 (K9N Neo)]].]]&lt;br /&gt;
&amp;lt;br clear=all /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;[[News]]&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* '''2007/09/22:''' [[News#2007.2F09.2F22_MSI_MS-7260_now_supported|MSI MS-7260 support]]&lt;br /&gt;
* '''2007/09/13:''' [[News#2007.2F09.2F13_MSI_MS-6178_now_supported|MSI MS-6178 support]]&lt;br /&gt;
* '''2007/09/08:''' [[News#2007.2F09.2F08_PC_Engines_ALIX1.C_now_supported|PC Engines ALIX1.C support]]&lt;br /&gt;
* '''2007/06/14:''' [[News#2007.2F06.2F14_Intel_810_chipset_and_ASUS_MEW-VM_now_supported|Intel 810 &amp;amp;amp; ASUS MEW-VM support]]&lt;br /&gt;
* '''2007/06/13:''' [[News#2007.2F06.2F13_AMD_DB800_.28Salsa.29_now_supported|AMD DB800 support]]&lt;br /&gt;
* '''2007/06/07:''' [[News#2007.2F06.2F07_IEI_JUKI-511P_and_ROCKY-512_now_supported|IEI JUKI-511P &amp;amp;amp; ROCKY-512 support]]&lt;br /&gt;
* '''2007/05/24:''' [[News#2007.2F05.2F24_ASUS_A8N-E_now_supported|ASUS A8N-E support]]&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-variant:small-caps;&amp;quot;&amp;gt;Contact&amp;lt;/span&amp;gt;'''&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
* [[Mailinglist|Mailing list]]: [mailto:linuxbios@linuxbios.org linuxbios@linuxbios.org]&lt;br /&gt;
* [[IRC]]: '''#linuxbios''' (on [http://www.freenode.net/ irc.freenode.net])&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Products</id>
		<title>Products</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Products"/>
				<updated>2007-09-25T23:15:17Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's a list of vendors and their products running LinuxBIOS. Please [[Mailinglist|contact us]] if you wish to add your product to the following list. &lt;br /&gt;
&lt;br /&gt;
== Artec Group ==&lt;br /&gt;
&lt;br /&gt;
[http://www.artecgroup.com Artec Group] runs LinuxBIOS on their Geode LX based [http://www.thincan.com DBE61 ThinCan] system.&lt;br /&gt;
&lt;br /&gt;
== Cluster Labs ==&lt;br /&gt;
[http://www.cluster-labs.com/ Cluster Labs] sells a 1.1 GHz PIII cluster node with 1 GB memory, fast ethernet, and boots LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
== coresystems GmbH ==&lt;br /&gt;
[http://www.coresystems.de/ coresystems GmbH] is offering LinuxBIOS based services and products. As a LinuxBIOS contributor, coresystems is hosting the LinuxBIOS development repository and web page.&lt;br /&gt;
&lt;br /&gt;
== Cray ==&lt;br /&gt;
The Cray [http://www.cray.com/products/xd1/ Xd1] is an Opteron-based system which runs LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
== CW Linux == &lt;br /&gt;
[http://www.cwlinux.com CW Linux] offers pre-installed LinuxBIOS motherboards, SDK and related hardware for people want to use or develop applications on LinuxBIOS. It also provides professional services for custom LinuxBIOS-based system development. &lt;br /&gt;
&lt;br /&gt;
== i-TECH Corp. ==&lt;br /&gt;
[http://www.i-tech.com/ i-TECH] is selling test and analysis tools with LinuxBIOS, including all its &amp;quot;Satellite&amp;quot; Fibre Channel analyzers (IFC-3016, IFC-4016, IFC-30, IFC40) and &amp;quot;PassPort&amp;quot;-based test and analysis tools. &lt;br /&gt;
&lt;br /&gt;
== Linutop ==&lt;br /&gt;
[http://linutop.com/ Linutop] is shipping LinuxBIOS on their diskless computers.&lt;br /&gt;
&lt;br /&gt;
== Linux Labs ==&lt;br /&gt;
[http://www.linuxlabs.com Linux Labs] is selling [http://www.linuxlabs.com/starterclusters.html LinuxBIOS Beowulf clusters] comprised of 1U x86-based nodes with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
== Linux NetworX == &lt;br /&gt;
[http://www.linuxnetworx.com Linux NetworX], a major contributor to the LinuxBIOS project, sells a variety of cluster solutions with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
== MikroTik ==&lt;br /&gt;
[http://www.routerboard.com MikroTik] is offering the [http://216.239.59.104/search?q=cache:pT2IZCrEZEsJ:www.routerboard.com/pdf/RouterBOARD200SeriesA4-3-0.pdf+routerboard+linuxbios&amp;amp;hl=de&amp;amp;ct=clnk&amp;amp;cd=1&amp;amp;gl=de Routerboard 200 series] which seems to be shipped with LinuxBIOS (devices from other Routerboard series might use LinuxBIOS, too).&lt;br /&gt;
&lt;br /&gt;
== O.N.E. Technologies ==&lt;br /&gt;
[http://www.onelabs.com/ O.N.E. Technologies] offers LinuxBIOS on all their x86 products.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2005-11-21T04:26:16Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Welcome to the LinuxBIOS homepage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the LinuxBIOS homepage =&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS Summit was Oct. 11-13, Santa Fe, New Mexico, USA. See [[Current events]] for more information or the [http://www.linuxbios.org/data/LB_Summit.pdf agenda]. &lt;br /&gt;
&lt;br /&gt;
LinuxBIOS is a Free Software project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.&lt;br /&gt;
&lt;br /&gt;
Note that, on newer systems, there need be no moving parts at all. At LANL, we are building a new 'no moving parts' 16-node cluster to demonstrate this capability. The cluster will fit in a toolbox, run from a battery,  boot in 10 seconds, and be controlled from your laptop (which, sadly, will still have a few moving parts).&lt;br /&gt;
&lt;br /&gt;
* [[Download LinuxBIOS]] (Download LinuxBIOS v2 and older versions)&lt;br /&gt;
* [https://openbios.org/roundup/linuxbios/ LinuxBIOS Issue Tracker] (See current LinuxBIOS issues and status)&lt;br /&gt;
* [[FAQ]] (Frequently Asked Questions)&lt;br /&gt;
* [[Supported Motherboards]]&lt;br /&gt;
* [[Supported Chipsets &amp;amp; Devices]]&lt;br /&gt;
* [[Documentation]]&lt;br /&gt;
* [[Payloads]]&lt;br /&gt;
* [http://www.linuxbios.org/data/Options.html Configuration Options]&lt;br /&gt;
* [[Port Guides]] &lt;br /&gt;
* [[News]]&lt;br /&gt;
* [[Mailinglist]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
* [[Products]]&lt;br /&gt;
* [[Press]]&lt;br /&gt;
* [[Clusters]]&lt;br /&gt;
* [[Misc]]&lt;br /&gt;
* [[Laptop]]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/File:Homework.pdf</id>
		<title>File:Homework.pdf</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/File:Homework.pdf"/>
				<updated>2005-10-17T01:14:25Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: These are the homework assignments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the homework assignments&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/File:Openefi.pdf</id>
		<title>File:Openefi.pdf</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/File:Openefi.pdf"/>
				<updated>2005-10-17T01:12:28Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: Ron's proposal to create a truly open EFI, assuming we care about EFI enough to do this.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ron's proposal to create a truly open EFI, assuming we care about EFI enough to do this.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/File:The_real_linuxbios.pdf</id>
		<title>File:The real linuxbios.pdf</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/File:The_real_linuxbios.pdf"/>
				<updated>2005-10-17T01:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: This is Ron's crazy idea for using Linux as the BIOS.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is Ron's crazy idea for using Linux as the BIOS.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2005-09-27T21:00:11Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the LinuxBIOS homepage =&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS Summit Oct. 11-13, Santa Fe, New Mexico, USA. See [[Current events]] for information. Richard Bruner, AMD Fellow, will be a featured speaker. We have a number of interesting speakers lined up, and will be describing new developments, such as the use of Linux Kconfig for LinuxBIOS configuration. Hope too see you there!&lt;br /&gt;
&lt;br /&gt;
Here's his talk:&lt;br /&gt;
&lt;br /&gt;
This should whet your appetite for the 3-day linuxbios summit Oct. 11, 2005 in santa fe!&lt;br /&gt;
&lt;br /&gt;
For more information, http://lacsi.rice.edu/symposium/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Title:     AMD's Roadmap for Free Firmware (as in Beer)&lt;br /&gt;
&lt;br /&gt;
Speaker:   Rich Brunner, AMD Fellow&lt;br /&gt;
&lt;br /&gt;
Abstract:  This will be a discussion of the upcoming AMD Processor&lt;br /&gt;
roadmap, AMD plans for supporting LinuxBIOS, and AMD's&lt;br /&gt;
directions for the future of firmware.&lt;br /&gt;
&lt;br /&gt;
Speaker BIO:&lt;br /&gt;
&lt;br /&gt;
Richard A. Brunner is the Software Architect for Advanced Micro&lt;br /&gt;
Devices' AMD64 Architecture. He is an AMD fellow and is responsible&lt;br /&gt;
for driving the technical direction of AMD's AMD64 software strategy&lt;br /&gt;
for operating systems, device drivers, compilers, libraries, OS/firmware&lt;br /&gt;
interaction, performance optimizations, and 3rd party tools. Richard&lt;br /&gt;
led AMD's initial involvement into the Unified Extensible Firmware&lt;br /&gt;
Interface (UEFI) forum.&lt;br /&gt;
&lt;br /&gt;
Richard holds a Masters of Science degree in Computer Engineering from&lt;br /&gt;
Rensselaer Polytechnic Institute and a Bachelor of Science degree in&lt;br /&gt;
Electrical Engineering from Case Western Reserve University.  He holds&lt;br /&gt;
patents in computer architecture and has presented&lt;br /&gt;
extensively including Hot Chips, Siggraph, WinHec,&lt;br /&gt;
Linux Kernel Summit, Linux World, Ottawa Linux Symposium.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS is a Free Software project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.&lt;br /&gt;
&lt;br /&gt;
Note that, on newer systems, there need be no moving parts at all. At LANL, we are building a new 'no moving parts' 16-node cluster to demonstrate this capability. The cluster will fit in a toolbox, run from a battery,  boot in 10 seconds, and be controlled from your laptop (which, sadly, will still have a few moving parts).&lt;br /&gt;
&lt;br /&gt;
* [[Download LinuxBIOS]] (Download LinuxBIOS v2 and older versions)&lt;br /&gt;
* [[FAQ]] (Frequently Asked Questions)&lt;br /&gt;
* [[Supported Motherboards]]&lt;br /&gt;
* [[Supported Chipsets &amp;amp; Devices]]&lt;br /&gt;
* [[Documentation]]&lt;br /&gt;
* [[Payloads]]&lt;br /&gt;
* [http://www.linuxbios.org/data/Options.html Configuration Options]&lt;br /&gt;
* [[Port Guides]] &lt;br /&gt;
* [[News]]&lt;br /&gt;
* [[Mailinglist]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
* [[Products]]&lt;br /&gt;
* [[Press]]&lt;br /&gt;
* [[Clusters]]&lt;br /&gt;
* [[Misc]]&lt;br /&gt;
* [[Laptop]]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2005-09-07T19:20:55Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to the LinuxBIOS homepage =&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS Summit Oct. 11-13, Santa Fe, New Mexico, USA. See http://lacsi.rice.edu/symposium/ for information. Richard Bruner, AMD Fellow, will be a featured speaker. We have a number of interesting speakers lined up, and will be describing new developments, such as the use of Linux Kconfig for LinuxBIOS configuration. Hope too see you there!&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS is a Free Software project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.&lt;br /&gt;
&lt;br /&gt;
Note that, on newer systems, there need be no moving parts at all. At LANL, we are building a new 'no moving parts' 16-node cluster to demonstrate this capability. The cluster will fit in a toolbox, run from a battery,  boot in 10 seconds, and be controlled from your laptop (which, sadly, will still have a few moving parts).&lt;br /&gt;
&lt;br /&gt;
* [[Download LinuxBIOS]] (Download LinuxBIOS v2 and older versions)&lt;br /&gt;
* [[FAQ]] (Frequently Asked Questions)&lt;br /&gt;
* [[Supported Motherboards]]&lt;br /&gt;
* [[Supported Chipsets &amp;amp; Devices]]&lt;br /&gt;
* [[Documentation]]&lt;br /&gt;
* [[Payloads]]&lt;br /&gt;
* [http://www.linuxbios.org/data/Options.html Configuration Options]&lt;br /&gt;
* [[Port Guides]] &lt;br /&gt;
* [[News]]&lt;br /&gt;
* [[Mailinglist]]&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
* [[Products]]&lt;br /&gt;
* [[Press]]&lt;br /&gt;
* [[Clusters]]&lt;br /&gt;
* [[Misc]]&lt;br /&gt;
* [[Laptop]]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/News</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/News"/>
				<updated>2005-04-25T02:18:32Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ''2005/04/22''     How Many People Are Using LinuxBIOS? Would you believe 1,000,000? ==&lt;br /&gt;
&lt;br /&gt;
This question comes up to us all the time. Last week, I got an amazing answer. First, let&lt;br /&gt;
me mention that I tell skeptical people at vendors all the time, when &lt;br /&gt;
asked this question: &amp;quot;A lot more than just the &lt;br /&gt;
cluster community. The real use is in the embedded world&amp;quot;. Well, again, last week, &lt;br /&gt;
I found out just how real that use is. &lt;br /&gt;
&lt;br /&gt;
The system in question is the STPC Consumer. Evidently, this chipset is used in &lt;br /&gt;
an internet terminal sold in India. It runs LinuxBIOS and Linux. &lt;br /&gt;
&lt;br /&gt;
There are at least one MILLION (1,000,000) of these things in use. I realize that is not much compared to the size of some markets, but had you told me six years ago that &lt;br /&gt;
one million systems would be using LinuxBIOS in 2005, I don't think I would have believed you.&lt;br /&gt;
&lt;br /&gt;
--Ron&lt;br /&gt;
&lt;br /&gt;
== ''2005/03/01''     LinuxBIOS Wiki up and running ==&lt;br /&gt;
&lt;br /&gt;
After a week of testing and playing around, LinuxBIOS has a brand new Wiki now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ''2005/02/28''     LinuxBIOS slashdotted again. ==&lt;br /&gt;
After Richard Stallman's call for support of free BIOS LinuxBIOS was slashdotted this weekend.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Products</id>
		<title>Products</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Products"/>
				<updated>2005-03-25T03:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's a list of vendors and their products running LinuxBIOS. Please contact us if you wish to add your product to the following list. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Cluster Labs ==&lt;br /&gt;
[http://www.cluster-labs.com/ Cluster Labs] sells a 1.1 GHZ PIII cluster node with 1 GB memory, fast ethernet, and boots LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
== Cray ==&lt;br /&gt;
The Cray [http://www.cray.com/products/xd1/ Xd1] is an Opteron-based system which runs LinuxBIOS . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CW Linux == &lt;br /&gt;
[http://www.cwlinux.com CW Linux] offers pre-installed LinuxBIOS motherboards, SDK and related hardware for people want to use or develope applications on LinuxBIOS. It also provides professional services for custom LinuxBIOS-based system development. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== i-TECH Corp. ==&lt;br /&gt;
[http://www.i-tech.com/ i-TECH] is selling test and analysis tools with LinuxBIOS, including all its &amp;quot;Satellite&amp;quot; Fibre Channel analyzers (IFC-3016, IFC-4016, IFC-30, IFC40) and &amp;quot;PassPort&amp;quot;-based test and analysis tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Labs ==&lt;br /&gt;
[http://www.linuxlabs.com Linux Labs] is selling [http://www.linuxlabs.com/starterclusters.html LinuxBIOS Beowulf clusters] comprised of 1U x86-based nodes with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux NetworX == &lt;br /&gt;
[http://www.linuxnetworx.com Linux NetworX], a major contributor to the LinuxBIOS project, sells a variety of cluster solutions with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== O.N.E. Technologies ==&lt;br /&gt;
[http://www.onelabs.com/ O.N.E. Technologies] offers LinuxBIOS on all their x86 products.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Orion Multisystems ==&lt;br /&gt;
[http://www.orionmulti.com// Orion Multisystems] builds &amp;quot;personal supercomputers&amp;quot; based on the TransMeta Efficeon process that run LinuxBIOS. .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tyan Computer ==&lt;br /&gt;
[http://www.tyan.com/ Tyan] offers LinuxBIOS on all their Opteron based products.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Products</id>
		<title>Products</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Products"/>
				<updated>2005-03-25T03:37:59Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's a list of vendors and their products running LinuxBIOS. Please contact us if you wish to add your product to the following list. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Cluster Labs ==&lt;br /&gt;
[http://www.cluster-labs.com/ Cluster Labs] sells a 1.1 GHZ PIII cluster node with 1 GB memory, fast ethernet, and boots LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
== Cray ==&lt;br /&gt;
The Cray [http://www.cray.com/products/xd1/ Xd1] is an Opteron-based system which runs LinuxBIOS . &lt;br /&gt;
&lt;br /&gt;
== CW Linux == &lt;br /&gt;
[http://www.cwlinux.com CW Linux] offers pre-installed LinuxBIOS motherboards, SDK and related hardware for people want to use or develope applications on LinuxBIOS. It also provides professional services for custom LinuxBIOS-based system development. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== i-TECH Corp. ==&lt;br /&gt;
[http://www.i-tech.com/ i-TECH] is selling test and analysis tools with LinuxBIOS, including all its &amp;quot;Satellite&amp;quot; Fibre Channel analyzers (IFC-3016, IFC-4016, IFC-30, IFC40) and &amp;quot;PassPort&amp;quot;-based test and analysis tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Labs ==&lt;br /&gt;
[http://www.linuxlabs.com Linux Labs] is selling [http://www.linuxlabs.com/starterclusters.html LinuxBIOS Beowulf clusters] comprised of 1U x86-based nodes with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux NetworX == &lt;br /&gt;
[http://www.linuxnetworx.com Linux NetworX], a major contributor to the LinuxBIOS project, sells a variety of cluster solutions with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== O.N.E. Technologies ==&lt;br /&gt;
[http://www.onelabs.com/ O.N.E. Technologies] offers LinuxBIOS on all their x86 products.&lt;br /&gt;
&lt;br /&gt;
== Orion Multisystems ==&lt;br /&gt;
[http://www.orionmulti.com// Orion Multisystems] builds &amp;quot;personal supercomputers&amp;quot; based on the TransMeta Efficeon process that run LinuxBIOS. .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tyan Computer ==&lt;br /&gt;
[http://www.tyan.com/ Tyan] offers LinuxBIOS on all their Opteron based products.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Products</id>
		<title>Products</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Products"/>
				<updated>2005-03-25T03:35:08Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here's a list of vendors and their products running LinuxBIOS. Please contact us if you wish to add your product to the following list. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Cluster Labs ==&lt;br /&gt;
[http://www.cluster-labs.com/ Cluster Labs] sells a 1.1 GHZ PIII cluster node with 1 GB memory, fast ethernet, and boots LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
== Cray ==&lt;br /&gt;
The Cray [http://www.cray.com/products/xd1/ Xd1] is an Opteron-based system which runs LinuxBIOS . &lt;br /&gt;
&lt;br /&gt;
== CW Linux == &lt;br /&gt;
[http://www.cwlinux.com CW Linux] offers pre-installed LinuxBIOS motherboards, SDK and related hardware for people want to use or develope applications on LinuxBIOS. It also provides professional services for custom LinuxBIOS-based system development. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== i-TECH Corp. ==&lt;br /&gt;
[http://www.i-tech.com/ i-TECH] is selling test and analysis tools with LinuxBIOS, including all its &amp;quot;Satellite&amp;quot; Fibre Channel analyzers (IFC-3016, IFC-4016, IFC-30, IFC40) and &amp;quot;PassPort&amp;quot;-based test and analysis tools. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Labs ==&lt;br /&gt;
[http://www.linuxlabs.com Linux Labs] is selling [http://www.linuxlabs.com/starterclusters.html LinuxBIOS Beowulf clusters] comprised of 1U x86-based nodes with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux NetworX == &lt;br /&gt;
[http://www.linuxnetworx.com Linux NetworX], a major contributor to the LinuxBIOS project, sells a variety of cluster solutions with LinuxBIOS installed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== O.N.E. Technologies ==&lt;br /&gt;
[http://www.onelabs.com/ O.N.E. Technologies] offers LinuxBIOS on all their x86 products.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tyan Computer ==&lt;br /&gt;
[http://www.tyan.com/ Tyan] offers LinuxBIOS on all their Opteron based products.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Download_coreboot</id>
		<title>Download coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Download_coreboot"/>
				<updated>2005-03-22T15:11:48Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* GNU Arch Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GNU Arch Repository =&lt;br /&gt;
&lt;br /&gt;
There is an experimental [http://www.gnuarch.org/ GNU arch] tree available which is likely to become the main repository soon. You may need to install arch. You can find a tar at ftp://ftp.gnu.org/pub/gnu/gnu-arch/. &lt;br /&gt;
&lt;br /&gt;
== Anonymous access ==&lt;br /&gt;
&lt;br /&gt;
You can check it out as follows (instead of tla you can also use baz):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  % # get gpg key for checking signed archives&lt;br /&gt;
  % wget \&lt;br /&gt;
      http://wiki.linuxbios.org/data/arch/linuxbios-developers-keyring.gpg&lt;br /&gt;
  % gpg --import &amp;lt; linuxbios-developers-keyring.gpg&lt;br /&gt;
  % # now do some one time registrations&lt;br /&gt;
  % tla my-id &amp;quot;John Doe &amp;lt;doe@example.com&amp;gt;&amp;quot; # Add your email address here&lt;br /&gt;
  % tla register-archive \&lt;br /&gt;
        ftp://openbios.org/pub/arch/linuxbios@linuxbios.org--devel&lt;br /&gt;
  % # now check out the archive&lt;br /&gt;
  % tla get linuxbios@linuxbios.org--devel/freebios--devel--2.0 freebios2&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Developer Access ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
If you want to get write access to the LinuxBIOS repository, you need the following:&lt;br /&gt;
&lt;br /&gt;
* GnuPG key (can be created with gpg --gen-key)&lt;br /&gt;
* SSH v2 key (can be created with ssh-keygen -t dsa)&lt;br /&gt;
&lt;br /&gt;
=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
* Get the arch key I created for the import from CVS.&lt;br /&gt;
&lt;br /&gt;
  $ wget 'http://wiki.linuxbios.org/data/arch/linuxbios-developers-keyring.gpg'&lt;br /&gt;
  $ gpg --import linuxbios-developers-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
*  Prepare GNU arch for LinuxBIOS&lt;br /&gt;
&lt;br /&gt;
  # Set your default id:&lt;br /&gt;
  $ tla my-id &amp;quot;John Doe &amp;lt;doe@example.com&amp;gt;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # similar to cvs login, tell gnuarch where to find the archive:&lt;br /&gt;
  $ tla register-archive sftp://lxbios@openbios.org/srv/arch/linuxbios@linuxbios.org--devel&lt;br /&gt;
  &lt;br /&gt;
  # prepare gnupg signature checking:&lt;br /&gt;
  $ mkdir -p ~/.arch-params/signing&lt;br /&gt;
  $ echo &amp;quot;gpg --clearsign&amp;quot; &amp;gt; ~/.arch-params/signing/\=default&lt;br /&gt;
  $ echo &amp;quot;gpg --verify-files -&amp;quot; &amp;gt; ~/.arch-params/signing/\=default.check&lt;br /&gt;
&lt;br /&gt;
=== Check out ===&lt;br /&gt;
&lt;br /&gt;
  $ tla get linuxbios@linuxbios.org--devel/freebios--devel--2.0 freebios2&lt;br /&gt;
&lt;br /&gt;
=== Working on the tree ===&lt;br /&gt;
&lt;br /&gt;
Now you can start editing the files. The following applies for symlinks and directories as well.&lt;br /&gt;
&lt;br /&gt;
*  New files are added with&lt;br /&gt;
  $ tla add filename&lt;br /&gt;
&lt;br /&gt;
* files can also be renamed using:&lt;br /&gt;
  $ tla mv fileA fileB&lt;br /&gt;
  &lt;br /&gt;
* files can also be renamed using:&lt;br /&gt;
  $ tla mv fileA fileB&lt;br /&gt;
&lt;br /&gt;
* files can be deleted:&lt;br /&gt;
  $ tla rm file&lt;br /&gt;
&lt;br /&gt;
When you're done editing/patching:&lt;br /&gt;
&lt;br /&gt;
* Look at your changes:&lt;br /&gt;
  $ tla changes&lt;br /&gt;
or&lt;br /&gt;
  $ tla changes --diffs&lt;br /&gt;
&lt;br /&gt;
* Check the tree:&lt;br /&gt;
&lt;br /&gt;
You can do consistency checks on your tree with:&lt;br /&gt;
  $ tla tree-lint&lt;br /&gt;
  $ tla inventory -Bu&lt;br /&gt;
&lt;br /&gt;
Check if your tree is current:&lt;br /&gt;
  $ tla missing&lt;br /&gt;
&lt;br /&gt;
This will output a list of missing changesets in your local tree, ie:&lt;br /&gt;
&lt;br /&gt;
  patch-15&lt;br /&gt;
  patch-16&lt;br /&gt;
  patch-17&lt;br /&gt;
  patch-18&lt;br /&gt;
&lt;br /&gt;
In which case you should do a&lt;br /&gt;
  $ tla update&lt;br /&gt;
before you commit.&lt;br /&gt;
&lt;br /&gt;
=== Commiting ===&lt;br /&gt;
&lt;br /&gt;
Write a changelog. PLEASE DO NOT CREATE EMPTY CHANGELOG MESSAGES:&lt;br /&gt;
  $ $EDITOR $( tla make-log )&lt;br /&gt;
&lt;br /&gt;
Commit your local tree&lt;br /&gt;
  $ tla commit&lt;br /&gt;
&lt;br /&gt;
This will ask you for your gpg passphrase (and possibly your ssh key&lt;br /&gt;
password if you set one). Then it will create a new revision in the&lt;br /&gt;
repository.&lt;br /&gt;
&lt;br /&gt;
== Source code browsing ==&lt;br /&gt;
&lt;br /&gt;
You can also [http://www.openbios.org/cgi-bin/viewarch.cgi/linuxbios@linuxbios.org--devel browse the LinuxBIOS arch repository online].&lt;br /&gt;
&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
&lt;br /&gt;
To be done&lt;br /&gt;
&lt;br /&gt;
== Source code browsing ==&lt;br /&gt;
&lt;br /&gt;
http://www.openbios.org/cgi-bin/viewarch.cgi&lt;br /&gt;
&lt;br /&gt;
== Mirroring the repository ==&lt;br /&gt;
&lt;br /&gt;
This is very simple. Do:&lt;br /&gt;
&lt;br /&gt;
  wget -m ftp://ftp.openbios.org/pub/arch&lt;br /&gt;
&lt;br /&gt;
Which gives you a snapshot in time of the archive.&lt;br /&gt;
To create a mirror usable by arch:&lt;br /&gt;
&lt;br /&gt;
  tla register-archive linuxbios@linxubios.org--devel-SOURCE ftp://openbios.org/pub/arch/linuxbios@linuxbios.org--devel                                                          &lt;br /&gt;
  tla register-archive linuxbios@linuxbios.org--devel ~/{archives}/linuxbios@linuxbios.org--devel&lt;br /&gt;
                                                                                                                                                                                                                                                                                                                                                             &lt;br /&gt;
  echo gpg --clearsign &amp;gt; ~/.arch-params/signing/=default&lt;br /&gt;
  echo gpg --verify-files - &amp;gt; ~/.arch-params/signing/=default.check&lt;br /&gt;
  echo linuxbios@linuxbios.org--devel--SOURCE &amp;gt; ~/.arch-params/signing/linuxbios@linuxbios.org--devel&lt;br /&gt;
&lt;br /&gt;
To update the mirror with the most recent contents:&lt;br /&gt;
  tla archive-mirror linuxbios@linuxbios.org --devel&lt;br /&gt;
&lt;br /&gt;
Just don't do this in an account where you plan to commit to the upstream&lt;br /&gt;
archive.&lt;br /&gt;
&lt;br /&gt;
== Creating a branch you can edit in local archive ==&lt;br /&gt;
&lt;br /&gt;
  tla tag -S linuxbios@linuxbios.org--devel/freebios--devel--2.0 you@yourarchive/freebios--devel--2.0&lt;br /&gt;
&lt;br /&gt;
== More on tla ==&lt;br /&gt;
&lt;br /&gt;
* http://www.openbios.org/experience/gnuarch.html&lt;br /&gt;
* http://wiki.gnuarch.org/&lt;br /&gt;
&lt;br /&gt;
= CVS Repository (obsolete) =&lt;br /&gt;
&lt;br /&gt;
The CVS repository is maintained at SourceForge.net (project name &amp;quot;FreeBIOS&amp;quot;). A daily snapshot of the entire source tree is created nightly. &lt;br /&gt;
&lt;br /&gt;
* [http://cvs.sourceforge.net/cvstarballs/freebios-cvsroot.tar.bz2 Download latest daily snapshot from CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Or, to use CVS directly: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;% cvs -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios login&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hit return when it asks you for a password (no password needed). Then checkout (or update) the freebios2 source tree: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;% cvs -z3 -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios co freebios2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Snapshots ==&lt;br /&gt;
&lt;br /&gt;
There is an archive of daily snapshots available at snapshots.linuxbios.org. There is a .bz2 tar file that gets updated when the CVS changes. Older snapshots are maintained as well. &lt;br /&gt;
&lt;br /&gt;
* [http://snapshots.linuxbios.org/ Download snapshots]&lt;br /&gt;
&lt;br /&gt;
== Source code browsing ==&lt;br /&gt;
&lt;br /&gt;
You can also browse the CVS source tree directly using the link below.&lt;br /&gt;
&lt;br /&gt;
* [http://cvs.sourceforge.net/viewcvs.py/freebios/ Browse CVS source code tree]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2005-03-22T04:18:40Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the LinuxBIOS Wiki.&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS is a Free Software project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.&lt;br /&gt;
&lt;br /&gt;
Note that, on newer systems, there need be no moving parts at all. At LANL, we are building a new 'no moving parts' 16-node cluster to demonstrate this capability. The cluster will fit in a toolbox, run from a battery,  boot in 10 seconds, and be controlled from your laptop (which, sadly, will still have a few moving parts).&lt;br /&gt;
&lt;br /&gt;
* [[Download freebios v2]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
* [[Supported Motherboards]] (was [[MB supported in freebios v2]])&lt;br /&gt;
&lt;br /&gt;
* [[Documentation]]&lt;br /&gt;
&lt;br /&gt;
* [[Payloads]]&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.linuxbios.org/data/Options.html Configuration Options]&lt;br /&gt;
&lt;br /&gt;
* [[Port Guides]] &lt;br /&gt;
&lt;br /&gt;
* [[News]]&lt;br /&gt;
&lt;br /&gt;
* [[Mailinglist]]&lt;br /&gt;
&lt;br /&gt;
* [[Contributors]]&lt;br /&gt;
&lt;br /&gt;
* [[Products]]&lt;br /&gt;
&lt;br /&gt;
* [[Press]]&lt;br /&gt;
&lt;br /&gt;
* [[Clusters]]&lt;br /&gt;
&lt;br /&gt;
* [[Misc]]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/FAQ</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/FAQ"/>
				<updated>2005-03-09T18:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Which different operating systems will LinuxBIOS boot? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
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. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. &lt;br /&gt;
&lt;br /&gt;
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. &lt;br /&gt;
&lt;br /&gt;
=== Why do we need LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. &lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. &lt;br /&gt;
&lt;br /&gt;
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. &lt;br /&gt;
&lt;br /&gt;
=== Who is working on LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. &lt;br /&gt;
&lt;br /&gt;
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. &lt;br /&gt;
&lt;br /&gt;
=== Who is funding LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. &lt;br /&gt;
&lt;br /&gt;
=== Will LinuxBIOS work on my machine? ===&lt;br /&gt;
&lt;br /&gt;
See the  [[Supported Motherboards]] page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS.&lt;br /&gt;
&lt;br /&gt;
=== What commercial products use LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
See the [[products]] page.&lt;br /&gt;
&lt;br /&gt;
=== Which different operating systems will LinuxBIOS boot? ===&lt;br /&gt;
&lt;br /&gt;
Linux (of course)&lt;br /&gt;
&lt;br /&gt;
Plan 9&lt;br /&gt;
&lt;br /&gt;
Windows 2000 (via [[ADLO]])&lt;br /&gt;
&lt;br /&gt;
We have look at some of the BSD OSes but (e.g.) FreeBSD makes BIOS calls, and we don't support&lt;br /&gt;
BIOS calls. Possibly ADLO could be used to support FreeBSD, but the right thing to do is remove&lt;br /&gt;
FreeBSD's dependence on BIOS calls.&lt;br /&gt;
&lt;br /&gt;
=== How can I help with LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS.&lt;br /&gt;
&lt;br /&gt;
== Developer ==&lt;br /&gt;
&lt;br /&gt;
=== What kind of hardware tools do I need? ===&lt;br /&gt;
&lt;br /&gt;
A motherboard (or mainboard as LinuxBIOS calls it) that has a supported chipset on it.  Ok.. Well not exactly.  As long as you have the documentation for the chipset/mainboard and its free of any NDA issues you can use an unsupported chipset/Mainboard but you have a twisty road ahead of you.&lt;br /&gt;
	&lt;br /&gt;
And of course you need a Linux developemnet machine.  The LinuxBIOS build enviroment is not supported on Windows.  It may be possilbe to do in under cygwin but nobody has tried.&lt;br /&gt;
		&lt;br /&gt;
It's also handy to have one/some/all of the following:&lt;br /&gt;
	&lt;br /&gt;
- EPROM/Flash programmer that can program the flash on your motherboard.&lt;br /&gt;
  http://www.mcumall.com/&lt;br /&gt;
- ROM emulator&lt;br /&gt;
- Bios Savior &lt;br /&gt;
  http://www.ioss.com.tw/web/English/RD1BIOSSavior.html&lt;br /&gt;
  http://www.cwlinux.com/eng/products/products_lbmb.php&lt;br /&gt;
- POST card&lt;br /&gt;
  &amp;lt;Need some more links to POST cards&amp;gt;&lt;br /&gt;
- Compact Flash IDE adaptor  &lt;br /&gt;
  http://www.cwlinux.com/eng/products/products_ide2cf.php&lt;br /&gt;
  http://www.mini-box.com/s.nl/sc.8/category.14/.f&lt;br /&gt;
  http://www.acscontrol.com/Index_ACS.asp?Page=/Pages/Products/CompactFlash/IDE_To_CF_Adapter.htm&lt;br /&gt;
- Oscilliscope&lt;br /&gt;
- In Circuit Emulator hardware debugger&lt;br /&gt;
- LinuxBIOS SDK&lt;br /&gt;
  http://www.cwlinux.com/eng/products/products_sdk.php&lt;br /&gt;
&lt;br /&gt;
=== What documentation do I need? ===&lt;br /&gt;
&lt;br /&gt;
As much as you can possibly get your hands on.  Minimum you need the docs for your chipset.  Without chipset docs you are basically lost.  &lt;br /&gt;
	&lt;br /&gt;
There have been some reports of people making things work by booting with the BIOS that comes with the board.  Dumping the PCI config registers and then making LinuxBIOS match those registers.  But since sometimes you have to set different bits in a given register at different times so that intermediate info will be lost.  Getting a mainboard up with out chipset docs can be a very long and involved process.&lt;br /&gt;
&lt;br /&gt;
=== What if my chipset docs are covered by an NDA? ===&lt;br /&gt;
&lt;br /&gt;
If the documentation for your chipset covered by and NDA with no source release agreement you won't be able to release your code back to to the LinuxBIOS project in general or you will violate the GPL.&lt;br /&gt;
Many vendors accept releasing the source code produced after reading such specs while they don't allow the specs themselves to be revealed. Also, you can offer them to review the code before releasing it.&lt;br /&gt;
&lt;br /&gt;
=== Where is the mailing list archived? ===&lt;br /&gt;
&lt;br /&gt;
The best archive out there is at the University of Maryland. &lt;br /&gt;
&lt;br /&gt;
http://www.mail-archive.com/linuxbios@clustermatic.org/&lt;br /&gt;
&lt;br /&gt;
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists).&lt;br /&gt;
&lt;br /&gt;
=== Where do I get the code? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Download_freebios_v2|download page]].&lt;br /&gt;
&lt;br /&gt;
=== How do I build? ===&lt;br /&gt;
&lt;br /&gt;
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)&lt;br /&gt;
&lt;br /&gt;
=== Why is the code so complicated and what can I do to make it easier? ===&lt;br /&gt;
&lt;br /&gt;
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. &lt;br /&gt;
&lt;br /&gt;
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. &lt;br /&gt;
&lt;br /&gt;
=== What chipsets are supported? ===&lt;br /&gt;
&lt;br /&gt;
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if my motherboard is supported by LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
There are 2 methods:&lt;br /&gt;
&lt;br /&gt;
1) Check [[Supported Motherboards]]&lt;br /&gt;
&lt;br /&gt;
If you don't see your chipset/Mainboard listed there then boot linux on your target and send the output of 'lspci -vvv' to the linuxBIOS list asking if this chipset is supported.&lt;br /&gt;
&lt;br /&gt;
2) &amp;quot;Use the source Luke&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check out the latest copy of LinuxBIOS from CVS [[Download freebios v2]] and look in the freebios2/src/mainboard directory. (The LinuxBios module is called 'freebios2' in CVS for legacy reasons) There are directories for each manufacturer of mainboards that LinuxBIOS supports.  Below the manufacturer directory is a directory for each mainboard or family of&lt;br /&gt;
mainboard.  If a directory for your mainboad dosen't exist then theres a good chance LinuxBIOS dosen't support your mainboard out-of-the-box.  Posting to the list would probally be the next option.  See 'the lspci -vvv' in the earlier part of the question.&lt;br /&gt;
	&lt;br /&gt;
If the directory does exist then it still dosen't mean 100% the mainboard will work but at least it probally worked at one time.  Posting to the list will probally get you the latest info for that mainboard.&lt;br /&gt;
&lt;br /&gt;
=== What is this POST card thing? ===&lt;br /&gt;
&lt;br /&gt;
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. &lt;br /&gt;
&lt;br /&gt;
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). &lt;br /&gt;
&lt;br /&gt;
=== How do I contribute my changes? ===&lt;br /&gt;
&lt;br /&gt;
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. &lt;br /&gt;
&lt;br /&gt;
=== How do I (re-)flash the BIOS? ===&lt;br /&gt;
&lt;br /&gt;
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions: &lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
LinuxBIOS v2 contains a flash utility called &amp;quot;flash_rom&amp;quot;. It can be found at freebios2/util/flash_and_burn.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 bash# ./flash_rom&lt;br /&gt;
 Calibrating timer since microsleep sucks ... takes a second&lt;br /&gt;
 Setting up microsecond timing loop&lt;br /&gt;
 515M loops per second&lt;br /&gt;
 OK, calibrated, now do the deed&lt;br /&gt;
 Enabling flash write on AMD8111...OK&lt;br /&gt;
 Trying Am29F040B, 512 KB&lt;br /&gt;
 probe_29f040b: id1 0x4e, id2 0x41&lt;br /&gt;
 Trying At29C040A, 512 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying Mx29f002, 256 KB&lt;br /&gt;
 probe_29f002: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST29EE020A, 256 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST28SF040A, 512 KB&lt;br /&gt;
 probe_28sf040: id1 0x4e, id2 0x41&lt;br /&gt;
 Trying SST39SF020A, 256 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST39VF020, 256 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST49LF040, 512 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 SST49LF040 found at physical address: 0xfff80000&lt;br /&gt;
 Part is SST49LF040&lt;br /&gt;
 OK, only ENABLING flash write, but NOT FLASHING&lt;br /&gt;
 bash# flash_rom --help&lt;br /&gt;
 usage: ./flash_rom [-rwv] [-c chipname] [-s exclude_start] [-e exclude_end] [file]&lt;br /&gt;
  -r: read flash and save into file&lt;br /&gt;
  -w: write file into flash (default when file is specified)&lt;br /&gt;
  -v: verify flash against file&lt;br /&gt;
  -c: probe only for specified flash chip&lt;br /&gt;
  -s: exclude start position&lt;br /&gt;
  -e: exclude end postion&lt;br /&gt;
   If no file is specified, then all that happens&lt;br /&gt;
   is that flash info is dumped&lt;br /&gt;
&lt;br /&gt;
Besides that, OpenBIOS contains a flash driver called [http://www.openbios.org/development/devbios.html /dev/bios] which may support some systems and flash chips unsupported by flash_rom.&lt;br /&gt;
 &lt;br /&gt;
==== SiS 630/950 M/Bs ====&lt;br /&gt;
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. &lt;br /&gt;
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. &lt;br /&gt;
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. &lt;br /&gt;
&lt;br /&gt;
==== Intel L440GX ====&lt;br /&gt;
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. &lt;br /&gt;
How do I actually burn a flash ROM? &lt;br /&gt;
&lt;br /&gt;
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash.&lt;br /&gt;
&lt;br /&gt;
=== How do I burn a DoC? ===&lt;br /&gt;
&lt;br /&gt;
Currently, only the DoC Millennium is supported. See the documentation. &lt;br /&gt;
&lt;br /&gt;
=== Can I do any serious damage mucking around with this stuff? ===&lt;br /&gt;
&lt;br /&gt;
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). &lt;br /&gt;
&lt;br /&gt;
* Incorrect insertion of the flash (1 casualty) &lt;br /&gt;
* Incorrect jumper settings (1 casualty) &lt;br /&gt;
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) &lt;br /&gt;
* Miscellaneous miswirings and mishandlings (3+ casualties)&lt;br /&gt;
&lt;br /&gt;
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===&lt;br /&gt;
&lt;br /&gt;
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. &lt;br /&gt;
&lt;br /&gt;
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. &lt;br /&gt;
&lt;br /&gt;
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: &lt;br /&gt;
&lt;br /&gt;
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. &lt;br /&gt;
&lt;br /&gt;
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! &lt;br /&gt;
&lt;br /&gt;
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. &lt;br /&gt;
&lt;br /&gt;
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. &lt;br /&gt;
&lt;br /&gt;
=== How do I put a filesystem on DoC? ===&lt;br /&gt;
OK, here is a little HOWTO on how to set up MTD with a file system. &lt;br /&gt;
&lt;br /&gt;
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. &lt;br /&gt;
&lt;br /&gt;
So I: &lt;br /&gt;
 modprobe doc2001 &lt;br /&gt;
 modprobe docprobe &lt;br /&gt;
 dmesg &lt;br /&gt;
&lt;br /&gt;
which shows: &lt;br /&gt;
&lt;br /&gt;
 DiskOnChip Millennium found at address 0xFFFC8000 &lt;br /&gt;
 Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) &lt;br /&gt;
 1 flash chips found. Total DiskOnChip size: 8 MiB &lt;br /&gt;
 mtd: Giving out device 0 to DiskOnChip Millennium &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured &lt;br /&gt;
 (etc..) &lt;br /&gt;
 Now I need MTD utilities. &lt;br /&gt;
 So I: &lt;br /&gt;
 cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login &lt;br /&gt;
 CVS password: &lt;br /&gt;
 &lt;br /&gt;
 (password is anoncvs) &lt;br /&gt;
 Then: &lt;br /&gt;
 cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd &lt;br /&gt;
&lt;br /&gt;
Forget the drivers and such, you don't need them. What you need is the tools. &lt;br /&gt;
 cd mtd/tools &lt;br /&gt;
 make &lt;br /&gt;
&lt;br /&gt;
Go ahead and copy the executables somewhere handy, you'll need them. &lt;br /&gt;
&lt;br /&gt;
Now we need to make the last 6M into a &amp;quot;disk&amp;quot;. We need to format it. The tool is nftl_format, so:&lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# ./nftl_format &lt;br /&gt;
 $Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ &lt;br /&gt;
 Usage: ./nftl_format [ []] &lt;br /&gt;
 [root@carly util]# expr 2048 \* 1024 &lt;br /&gt;
 2097152 &lt;br /&gt;
 [root@carly util]# expr 6 \* 1024 \* 1024 &lt;br /&gt;
 6291456 &lt;br /&gt;
 [root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 &lt;br /&gt;
 $Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ &lt;br /&gt;
 Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 &lt;br /&gt;
 Phase 2.a Writing NFTL Media Header and Bad Unit Table &lt;br /&gt;
 Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table &lt;br /&gt;
 Phase 3. Writing Unit Control Information to each Erase Unit &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
we now have a formatted disk in there. We can now partition it. &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# modprobe nftl &lt;br /&gt;
&lt;br /&gt;
dmesg shows LOTS of errors, since this was never partitioned ... &lt;br /&gt;
&lt;br /&gt;
Also, if you don't have /dev/nftla, &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# mknod /dev/nftla b 93 0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. &lt;br /&gt;
&lt;br /&gt;
now fdisk /dev/nftla &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# fdisk /dev/nftlA &lt;br /&gt;
 Command (m for help): n &lt;br /&gt;
 Command action &lt;br /&gt;
 e extended &lt;br /&gt;
 p primary partition (1-4) &lt;br /&gt;
 p &lt;br /&gt;
 Partition number (1-4): 1 &lt;br /&gt;
 First cylinder (1-1, default 1): &lt;br /&gt;
 Using default value 1 &lt;br /&gt;
 Command (m for help): p &lt;br /&gt;
 Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders &lt;br /&gt;
 Units = cylinders of 12224 * 512 bytes &lt;br /&gt;
 Device Boot Start End Blocks Id System &lt;br /&gt;
 /dev/nftlA1 1 1 6111+ 83 Linux &lt;br /&gt;
 Partition 1 has different physical/logical endings: &lt;br /&gt;
 phys=(768, 0, 0) logical=(0, 0, 12224) &lt;br /&gt;
 Partition 1 does not end on cylinder boundary: &lt;br /&gt;
 phys=(768, 0, 0) should be (768, 0, 12224) &lt;br /&gt;
 Command (m for help): w &lt;br /&gt;
 The partition table has been altered! &lt;br /&gt;
 Calling ioctl() to re-read partition table. &lt;br /&gt;
 WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. &lt;br /&gt;
 Syncing disks. &lt;br /&gt;
 [root@carly util]# mknod /dev/nftlA1 b 93 1 &lt;br /&gt;
 [root@carly util]# mke2fs /dev/nftlA1 &lt;br /&gt;
 mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 &lt;br /&gt;
 Filesystem label= &lt;br /&gt;
 OS type: Linux &lt;br /&gt;
 Block size=1024 (log=0) &lt;br /&gt;
 Fragment size=1024 (log=0) &lt;br /&gt;
 1528 inodes, 6111 blocks &lt;br /&gt;
 305 blocks (4.99%) reserved for the super user &lt;br /&gt;
 First data block=1 &lt;br /&gt;
 1 block group &lt;br /&gt;
 8192 blocks per group, 8192 fragments per group &lt;br /&gt;
 1528 inodes per group &lt;br /&gt;
 Writing inode tables: done &lt;br /&gt;
 Writing superblocks and filesystem accounting information: done &lt;br /&gt;
&lt;br /&gt;
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# mount /dev/nftlA1 /mnt &lt;br /&gt;
 [root@carly util]# cd /mnt &lt;br /&gt;
 [root@carly mnt]# df . &lt;br /&gt;
 Filesystem 1k-blocks Used Available Use% Mounted on &lt;br /&gt;
 /dev/nftlA1 5915 13 5597 1% /mnt &lt;br /&gt;
 [root@carly mnt]# &lt;br /&gt;
&lt;br /&gt;
and so you now have an ext2 file system on the DoC. &lt;br /&gt;
&lt;br /&gt;
(Above is from [[User:Rminnich|Ron Minnich]])&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off embedded sis630 devices? ===&lt;br /&gt;
&lt;br /&gt;
 From aip@cwlinux.com Mon Mar 25 08:54:07 2002 &lt;br /&gt;
 Date: Mon, 25 Mar 2002 22:07:54 +0800 &lt;br /&gt;
 From: Andrew Ip &lt;br /&gt;
 To: Kei Furuuchi &lt;br /&gt;
 Cc: linuxbios@lanl.gov &lt;br /&gt;
 Subject: Re: How to turn off unused pci device. &lt;br /&gt;
 Hi, &lt;br /&gt;
 &amp;gt; I have pcchips m758lmr which has audio chip besides sis630. &lt;br /&gt;
 &amp;gt; those functions in sis630 are not used in the motherboard. &lt;br /&gt;
 &amp;gt; But, the functions keep coming up. How do I turn off those? &lt;br /&gt;
 The following is from Nikolai Valdych previous message. Hope this help. &lt;br /&gt;
 -Andrew &lt;br /&gt;
 -- &lt;br /&gt;
 Andrew Ip &lt;br /&gt;
 Email: aip@cwlinux.com &lt;br /&gt;
 Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. &lt;br /&gt;
 Set bit to 1 to turn off the device, bit 0 to enable it. &lt;br /&gt;
 This is the device list: &lt;br /&gt;
 Multimedia Audio controler &lt;br /&gt;
 Modem controler &lt;br /&gt;
 Ethernet sis930 controler &lt;br /&gt;
 USB controler. &lt;br /&gt;
 For example, to turn off Ethernet + USB it would be: &lt;br /&gt;
 0x7c0c -&amp;gt; 1100 in binary (first 4 bits) &lt;br /&gt;
 To turn off Multimedia audio : &lt;br /&gt;
 0x7c01 -&amp;gt; 0001 &lt;br /&gt;
 in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! &lt;br /&gt;
 nikolai &lt;br /&gt;
 p.s. though my modem is not yet working..... damn driver...... &lt;br /&gt;
&lt;br /&gt;
=== What is a PIRQ table? ===&lt;br /&gt;
&lt;br /&gt;
 From Adam Sulmicki: &lt;br /&gt;
 &lt;br /&gt;
 I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.&lt;br /&gt;
 &lt;br /&gt;
 I found the description of the $PIR data structure in the&lt;br /&gt;
        (broken)http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp&lt;br /&gt;
 Anyone have a better link or a copy of what was there? --[[User:RSmith|RSmith]] 23:34, 1 Mar 2005 (CET)&lt;br /&gt;
 &lt;br /&gt;
 looking over linuxbios sources I see that it saves the $PIR data structure&lt;br /&gt;
 somewhere between 0xf0000 &amp;amp; 0x100000.&lt;br /&gt;
 &lt;br /&gt;
 so it seems I'll have to search for $PIR and then save it before copying&lt;br /&gt;
 over our bios. sigh. hoped for some fixed address in mem.&lt;br /&gt;
 &lt;br /&gt;
 -- &lt;br /&gt;
 Adam&lt;br /&gt;
 http://www.eax.com      The Supreme Headquarters of the 32 bit registers&lt;br /&gt;
&lt;br /&gt;
=== How do I set up etherboot with LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
Note from Ron: I have edited this somewhat to remove Geode-specific items. &lt;br /&gt;
&lt;br /&gt;
 Christer Weinigel writes: &lt;br /&gt;
 To: rminnich@lanl.gov&lt;br /&gt;
 Cc: linuxbios@lanl.gov&lt;br /&gt;
 Subject: Re: LinuxBIOS + Etherboot HOWTO?&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 I had some trouble using LinuxBIOS + etherboot... &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   /Christer &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Modify etherboot-5.0/src/Config, comment out: &lt;br /&gt;
 &lt;br /&gt;
    # BIOS select don't change unless you know what you are doing&lt;br /&gt;
    #CFLAGS32+=     -DPCBIOS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 and uncomment the following: &lt;br /&gt;
 &lt;br /&gt;
    # Options to make a version of Etherboot that will work under linuxBIOS.&lt;br /&gt;
    CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL \&lt;br /&gt;
               -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Compile Etherboot to make an elf file for your ethernet card: &lt;br /&gt;
 &lt;br /&gt;
     make bin32/natsemi.elf&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Compile and install mkelfImage from freebios/util/mkelfImage. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Create a bootimage to put on your TFTP server: &lt;br /&gt;
 &lt;br /&gt;
    mkelfImage --command-line=&amp;quot;root=/dev/hda2 console=ttyS0,38400&amp;quot; \&lt;br /&gt;
               --kernel vmlinux -o /tftpboot/kernel&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: &lt;br /&gt;
 &lt;br /&gt;
    option USE_ELF_BOOT=1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. &lt;br /&gt;
 &lt;br /&gt;
    insmod bios.o&lt;br /&gt;
    dd if=natsemi.elf of=/dev/bios bs=64k&lt;br /&gt;
    dd if=linuxbios.rom of=/dev/bios bs=64k seek=1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Finally boot LinuxBIOS. &lt;br /&gt;
 &lt;br /&gt;
=== How do I set GEODE video? ===&lt;br /&gt;
&lt;br /&gt;
 From christer@weinigel.se Wed Nov 27 07:47:17 2002&lt;br /&gt;
 Date: 27 Nov 2002 10:55:01 +0100&lt;br /&gt;
 From: Christer Weinigel &lt;br /&gt;
 To: Adam Bezanson &lt;br /&gt;
 Cc: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: Re: Geode Kernel Config &lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;Adam Bezanson&amp;quot;  writes:&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; I've got an Eval card from National Semi that contains&lt;br /&gt;
 &amp;gt; the SC1200. I'd like to try LinuxBios on it.&lt;br /&gt;
 &amp;gt; I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.&lt;br /&gt;
 &amp;gt; What patches do I need to apply to the kernel?&lt;br /&gt;
 &amp;gt; Is there a config file I can use to configure the kernel, or&lt;br /&gt;
 &amp;gt; should I do it manually? &lt;br /&gt;
 &lt;br /&gt;
 A normal 2.4 Linux kernel will work fine as long as you compile for a&lt;br /&gt;
 586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)&lt;br /&gt;
 since the TSC behaves a bit differently. &lt;br /&gt;
 &lt;br /&gt;
 If you want support for the watchdog or the GPIO pins in a 2.4 kernel,&lt;br /&gt;
 you can find an old patch from me at:&lt;br /&gt;
 &lt;br /&gt;
    http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&amp;amp;oe=UTF-8&amp;amp;output=gplain&lt;br /&gt;
 &lt;br /&gt;
 An updated version of this patch has been included in Linux 2.5.  Alan&lt;br /&gt;
 Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE&lt;br /&gt;
 controller; I don't know if there is a corresponding patch for 2.4. &lt;br /&gt;
 &lt;br /&gt;
 Other than that, take a look at the freebios/src/mainboard/nano/nano&lt;br /&gt;
 directory and make a copy of it.  All you should have to do is to&lt;br /&gt;
 modify the Pin Multiplexing Register (PMR) and Miscellaneous Config&lt;br /&gt;
 Register (MCR) in the Config file and to modify the irq assignments.&lt;br /&gt;
 &lt;br /&gt;
 Depending on what you want to do, there are a few limitations with&lt;br /&gt;
 the current LinuxBIOS on the SC1200: &lt;br /&gt;
 &lt;br /&gt;
    There is no video support in LinuxBIOS itself, so you won't get&lt;br /&gt;
    any video until you have loaded the NatSemi Geode Linux&lt;br /&gt;
    framebuffer driver (can be found at www.linux4.tv under the&lt;br /&gt;
    heading SP1SC10 Platform Image).&lt;br /&gt;
 &lt;br /&gt;
    There is no SMM/VSA support at all, this means that anything&lt;br /&gt;
    relying on it won't work.  What this means is that Audio won't&lt;br /&gt;
    work.&lt;br /&gt;
 &lt;br /&gt;
 Other than that everything works fine, IDE in PIO mode, the PCI bus,&lt;br /&gt;
 watchdog, GPIOs, everything.&lt;br /&gt;
 &lt;br /&gt;
  /Christer&lt;br /&gt;
 &lt;br /&gt;
 -- &lt;br /&gt;
 &amp;quot;Just how much can I get away with and still go to heaven?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Freelance consultant specializing in device driver programming for Linux &lt;br /&gt;
 Christer Weinigel   http://www.weinigel.se&lt;br /&gt;
 _______________________________________________&lt;br /&gt;
 Linuxbios mailing list&lt;br /&gt;
 Linuxbios@clustermatic.org&lt;br /&gt;
 http://www.clustermatic.org/mailman/listinfo/linuxbios&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I set up testbios? ===&lt;br /&gt;
&lt;br /&gt;
 From daubin@actuality-systems.com Wed Oct  6 10:23:10 2004&lt;br /&gt;
 Date: Tue, 5 Oct 2004 15:19:24 -0400&lt;br /&gt;
 From: Dave Aubin &lt;br /&gt;
 To: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: RE: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
 &lt;br /&gt;
 I've taken the time to put together a simple testbios faq.&lt;br /&gt;
 I hope it is helpful.  Feedback and additions are welcome. &lt;br /&gt;
 &lt;br /&gt;
 Thanks,&lt;br /&gt;
 Dave&lt;br /&gt;
 &lt;br /&gt;
==== Testbios (vgabios) Faq ====&lt;br /&gt;
&lt;br /&gt;
Date: 10/5/2004&lt;br /&gt;
Author(s): David Aubin  daubin@actuality-systems.com&lt;br /&gt;
&lt;br /&gt;
Purpose:  Testbios is an i386 emulator that sits on top of userspace linux.  It's primary purpose is to provide program video rom's in to the cached memory area.&lt;br /&gt;
&lt;br /&gt;
===== Where to obtain testbios =====&lt;br /&gt;
&lt;br /&gt;
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]&lt;br /&gt;
&lt;br /&gt;
===== Prerequisites =====&lt;br /&gt;
&lt;br /&gt;
You must have installed pci-utils&lt;br /&gt;
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml&lt;br /&gt;
&lt;br /&gt;
===== How to build testbios =====&lt;br /&gt;
* cd freebios/util/vgabios&lt;br /&gt;
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)&lt;br /&gt;
&lt;br /&gt;
Begin ./Makefile for x64:&lt;br /&gt;
 CC       =  gcc&lt;br /&gt;
 ARCH     := $(shell uname -m | sed -e s,i[3456789]86,i386,)&lt;br /&gt;
 INCLUDE  =  -I ../pciutils-2.1.11&lt;br /&gt;
 CFLAGS   =  -Wall -Ix86emu/include -O2 -g $(INCLUDE)&lt;br /&gt;
 &lt;br /&gt;
 INTOBJS  =  int10.o int15.o int16.o int1a.o inte6.o&lt;br /&gt;
 OBJECTS  =  testbios.o helper_exec.o helper_mem.o $(INTOBJS)&lt;br /&gt;
 LDFLAGS  =  -static-libgcc -static&lt;br /&gt;
 &lt;br /&gt;
 LIBS     =  x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a&lt;br /&gt;
 &lt;br /&gt;
 # user space pci is the only option right now.&lt;br /&gt;
 OBJECTS += pci-userspace.o&lt;br /&gt;
 &lt;br /&gt;
 ifeq ($(shell if test &amp;quot;$(ARCH)&amp;quot; == &amp;quot;x86_64&amp;quot; ; then echo 1; fi), 1)&lt;br /&gt;
         CFLAGS +=-m32 -march=i386&lt;br /&gt;
         endif&lt;br /&gt;
 &lt;br /&gt;
         all: testbios&lt;br /&gt;
 &lt;br /&gt;
         testbios: $(OBJECTS) $(LIBS)&lt;br /&gt;
                 $(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)&lt;br /&gt;
 $(LIBS)&lt;br /&gt;
 &lt;br /&gt;
 helper_exec.o: helper_exec.c test.h&lt;br /&gt;
 &lt;br /&gt;
 x86emu/src/x86emu/libx86emu.a:&lt;br /&gt;
         $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux&lt;br /&gt;
 &lt;br /&gt;
         clean:&lt;br /&gt;
                 $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean&lt;br /&gt;
                 rm -f *.o *~ testbios &lt;br /&gt;
 &lt;br /&gt;
         distclean: clean&lt;br /&gt;
                 $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End ./Makefile&lt;br /&gt;
&lt;br /&gt;
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)&lt;br /&gt;
&lt;br /&gt;
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:&lt;br /&gt;
 #############################################################################&lt;br /&gt;
 #&lt;br /&gt;
 #                                               Realmode X86 Emulator Library&lt;br /&gt;
 #&lt;br /&gt;
 #               Copyright (C) 1996-1999 SciTech Software, Inc.&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;========================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 #  Permission to use, copy, modify, distribute, and sell this software and&lt;br /&gt;
 #  its documentation for any purpose is hereby granted without fee,&lt;br /&gt;
 #  provided that the above copyright notice appear in all copies and that&lt;br /&gt;
 #  both that copyright notice and this permission notice appear in&lt;br /&gt;
 #  supporting documentation, and that the name of the authors not be used&lt;br /&gt;
 #  in advertising or publicity pertaining to distribution of the software&lt;br /&gt;
 #  without specific, written prior permission.  The authors makes no&lt;br /&gt;
 #  representations about the suitability of this software for any purpose.&lt;br /&gt;
 #  It is provided &amp;quot;as is&amp;quot; without express or implied warranty.&lt;br /&gt;
 #&lt;br /&gt;
 #  THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,&lt;br /&gt;
 #  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO&lt;br /&gt;
 #  EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR&lt;br /&gt;
 #  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF&lt;br /&gt;
 #  USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR&lt;br /&gt;
 #  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR&lt;br /&gt;
 #  PERFORMANCE OF THIS SOFTWARE.&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;========================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Descripton:   Linux specific makefile for the x86emu library.&lt;br /&gt;
 #&lt;br /&gt;
 #############################################################################&lt;br /&gt;
 &lt;br /&gt;
 TARGETLIB = libx86emu.a&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 OBJS=\&lt;br /&gt;
 debug.o \&lt;br /&gt;
 decode.o \&lt;br /&gt;
 fpu.o \&lt;br /&gt;
 ops.o \&lt;br /&gt;
 ops2.o \&lt;br /&gt;
 prim_ops.o \&lt;br /&gt;
 sys.o&lt;br /&gt;
 &lt;br /&gt;
 $(TARGETLIB): $(OBJS)&lt;br /&gt;
         ar rv $(TARGETLIB) $(OBJS)&lt;br /&gt;
 &lt;br /&gt;
        INCS   = -I. -Ix86emu -I../../include&lt;br /&gt;
        CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG&lt;br /&gt;
        ARCH   := $(shell uname -m | sed -e s,i[3456789]86,i386,)&lt;br /&gt;
        ifeq ($(shell if test &amp;quot;$(ARCH)&amp;quot; == &amp;quot;x86_64&amp;quot; ; then echo 1; fi), 1)&lt;br /&gt;
                CFLAGS +=-m32 -march=i386&lt;br /&gt;
                endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 .c.o:&lt;br /&gt;
 #       gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c&lt;br /&gt;
         gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c&lt;br /&gt;
 &lt;br /&gt;
 .cpp.o:&lt;br /&gt;
 #       gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp&lt;br /&gt;
         gcc -c $(CFLAGS) $(INCS) $*.cpp &lt;br /&gt;
 &lt;br /&gt;
 clean:&lt;br /&gt;
         rm -f *.a *.o&lt;br /&gt;
 &lt;br /&gt;
 validate:       validate.o libx86emu.a&lt;br /&gt;
         gcc -o validate validate.o -lx86emu -L.&lt;br /&gt;
 &lt;br /&gt;
End ~vgabios/x86emu/src/x86emu/makefile.linux&lt;br /&gt;
&lt;br /&gt;
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static.  Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.&lt;br /&gt;
&lt;br /&gt;
===== How to retrieve a good video bios =====&lt;br /&gt;
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])&lt;br /&gt;
&lt;br /&gt;
However you should be able to retrieve your own video bios as well with linux.&lt;br /&gt;
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.&lt;br /&gt;
** From the command line enter:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or &amp;lt;br /&amp;gt;dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432&amp;lt;br /&amp;gt;This assumes you card's bios is cached in 0xc0000.  You&amp;lt;br /&amp;gt;can see where and how much your card's bios is using by&amp;lt;br /&amp;gt;doing a cat iomem | grep &amp;quot;Video ROM&amp;quot;&amp;lt;br /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*** dd Explained (man dd to learn more):&lt;br /&gt;
****  if is the location to retrieve from.&lt;br /&gt;
****  of is the output file (your rom image)&lt;br /&gt;
****  skip jumps n blocks where the default n is 512 bytes&lt;br /&gt;
****  count is how many blocks you wish to read&lt;br /&gt;
****  bs is the block size&lt;br /&gt;
** You now have a video bios image&lt;br /&gt;
&lt;br /&gt;
===== How to use testbios =====&lt;br /&gt;
* Currently testbios only works from user space linux (10/4/04)&lt;br /&gt;
* Example from a linux command line or script enter the following to get your video bios programmed:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;./testbios -s 65536 --abseg /dev/mem ./vgabios.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
** Testbios explained&lt;br /&gt;
***  -s  how much of the video bios is there&lt;br /&gt;
***  --abseg where would you like to write this (/dev/mem default)&lt;br /&gt;
***  filename of video bios&lt;br /&gt;
***  -d diag mode &lt;br /&gt;
****  How to get pci busdevfn&lt;br /&gt;
****  lspci&lt;br /&gt;
****  look for your video card&lt;br /&gt;
***** Example:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;2:00:00&amp;lt;br /&amp;gt;2 (00 &amp;lt;&amp;lt; 3) | 00 = 0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Example:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;00:12.0:&amp;lt;br /&amp;gt;0 (12 &amp;lt;&amp;lt; 3) | 0 = 0x90&amp;lt;/code&amp;gt;&lt;br /&gt;
*** -t dump &lt;br /&gt;
*** -c codesegment Where do you want to start, default is 0xc0000&lt;br /&gt;
*** -b base  Where do you want base to be default is 0xc000&lt;br /&gt;
*** -i instruction pointer usually left off as the default&lt;br /&gt;
&lt;br /&gt;
==== Followup to Testbios FAQ ====&lt;br /&gt;
 -----Original Message-----&lt;br /&gt;
 From: linuxbios-admin@clustermatic.org&lt;br /&gt;
 [mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin&lt;br /&gt;
 Sent: Tuesday, October 05, 2004 2:22 PM&lt;br /&gt;
 To: Richard Smith&lt;br /&gt;
 Cc: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: RE: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
 &lt;br /&gt;
 Hi,&lt;br /&gt;
 &lt;br /&gt;
 Thank you:)  Yes, it was at 0xc0000-0xc7fff, which is only 32k.&lt;br /&gt;
 But the image I got from the windows tool was 64k (double 8000).&lt;br /&gt;
 Weird.  I would like to stay away from window tools.&lt;br /&gt;
 The info you provided is nice.  I wish there was a way for us To make&lt;br /&gt;
 a faq and we could add this to the testbios faq.  There Is a lot of good&lt;br /&gt;
 info on the clustermatic list, but it is all Dispersed.  &lt;br /&gt;
 Ron if I write a simple faq can you provide some mechanism to Allow&lt;br /&gt;
 updates to it?&lt;br /&gt;
 &lt;br /&gt;
 Thanks,&lt;br /&gt;
 Dave &lt;br /&gt;
 &lt;br /&gt;
 -----Original Message-----&lt;br /&gt;
 From: Richard Smith [mailto:rsmith@bitworks.com]&lt;br /&gt;
 Sent: Tuesday, October 05, 2004 2:16 PM&lt;br /&gt;
 To: Dave Aubin&lt;br /&gt;
 Cc: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: Re: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
 &lt;br /&gt;
 Dave Aubin wrote:&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; It seems my dd returned an unusable binary.  I found a good binary for&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; The nvidia card from here:&lt;br /&gt;
 &amp;gt; http://whitebunny.demon.nl/hardware/chipset_nvidia.html&lt;br /&gt;
 &amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 I was wondering about your dd command that but I had not had a chance to&lt;br /&gt;
 respond yet.&lt;br /&gt;
 &lt;br /&gt;
 This is what I use:&lt;br /&gt;
 &lt;br /&gt;
 dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432&lt;br /&gt;
 &lt;br /&gt;
 That will rip the bios from 0x0c0000.  You can verify that you actually&lt;br /&gt;
 have bios there with&lt;br /&gt;
 &lt;br /&gt;
   'hd -s 0x0c0000 -n 256 /dev/mem'&lt;br /&gt;
 &lt;br /&gt;
 in some cases it may be located at 0x0e0000 rather than 0x0c0000.&lt;br /&gt;
 &lt;br /&gt;
 It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)&lt;br /&gt;
 and futher on you should see some text identifying the bios.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 --&lt;br /&gt;
 Richard A. Smith&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 _______________________________________________&lt;br /&gt;
 Linuxbios mailing list&lt;br /&gt;
 Linuxbios@clustermatic.org&lt;br /&gt;
 http://www.clustermatic.org/mailman/listinfo/linuxbios&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/FAQ</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/FAQ"/>
				<updated>2005-03-09T18:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: /* Which different operating systems will LinuxBIOS boot? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
=== What is LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
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. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. &lt;br /&gt;
&lt;br /&gt;
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. &lt;br /&gt;
&lt;br /&gt;
=== Why do we need LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. &lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. &lt;br /&gt;
&lt;br /&gt;
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. &lt;br /&gt;
&lt;br /&gt;
=== Who is working on LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. &lt;br /&gt;
&lt;br /&gt;
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. &lt;br /&gt;
&lt;br /&gt;
=== Who is funding LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. &lt;br /&gt;
&lt;br /&gt;
=== Will LinuxBIOS work on my machine? ===&lt;br /&gt;
&lt;br /&gt;
See the  [[Supported Motherboards]] page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS.&lt;br /&gt;
&lt;br /&gt;
=== What commercial products use LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
See the [[products]] page.&lt;br /&gt;
&lt;br /&gt;
=== Which different operating systems will LinuxBIOS boot? ===&lt;br /&gt;
&lt;br /&gt;
Linux (of course)&lt;br /&gt;
Plan 9&lt;br /&gt;
&lt;br /&gt;
Windows 2000 (via [[ADLO]])&lt;br /&gt;
&lt;br /&gt;
We have look at some of the BSD OSes but (e.g.) FreeBSD makes BIOS calls, and we don't support&lt;br /&gt;
BIOS calls. Possibly ADLO could be used to support FreeBSD, but the right thing to do is remove&lt;br /&gt;
FreeBSD's dependence on BIOS calls.&lt;br /&gt;
&lt;br /&gt;
=== How can I help with LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS.&lt;br /&gt;
&lt;br /&gt;
== Developer ==&lt;br /&gt;
&lt;br /&gt;
=== What kind of hardware tools do I need? ===&lt;br /&gt;
&lt;br /&gt;
A motherboard (or mainboard as LinuxBIOS calls it) that has a supported chipset on it.  Ok.. Well not exactly.  As long as you have the documentation for the chipset/mainboard and its free of any NDA issues you can use an unsupported chipset/Mainboard but you have a twisty road ahead of you.&lt;br /&gt;
	&lt;br /&gt;
And of course you need a Linux developemnet machine.  The LinuxBIOS build enviroment is not supported on Windows.  It may be possilbe to do in under cygwin but nobody has tried.&lt;br /&gt;
		&lt;br /&gt;
It's also handy to have one/some/all of the following:&lt;br /&gt;
	&lt;br /&gt;
- EPROM/Flash programmer that can program the flash on your motherboard.&lt;br /&gt;
  http://www.mcumall.com/&lt;br /&gt;
- ROM emulator&lt;br /&gt;
- Bios Savior &lt;br /&gt;
  http://www.ioss.com.tw/web/English/RD1BIOSSavior.html&lt;br /&gt;
  http://www.cwlinux.com/eng/products/products_lbmb.php&lt;br /&gt;
- POST card&lt;br /&gt;
  &amp;lt;Need some more links to POST cards&amp;gt;&lt;br /&gt;
- Compact Flash IDE adaptor  &lt;br /&gt;
  http://www.cwlinux.com/eng/products/products_ide2cf.php&lt;br /&gt;
  http://www.mini-box.com/s.nl/sc.8/category.14/.f&lt;br /&gt;
  http://www.acscontrol.com/Index_ACS.asp?Page=/Pages/Products/CompactFlash/IDE_To_CF_Adapter.htm&lt;br /&gt;
- Oscilliscope&lt;br /&gt;
- In Circuit Emulator hardware debugger&lt;br /&gt;
- LinuxBIOS SDK&lt;br /&gt;
  http://www.cwlinux.com/eng/products/products_sdk.php&lt;br /&gt;
&lt;br /&gt;
=== What documentation do I need? ===&lt;br /&gt;
&lt;br /&gt;
As much as you can possibly get your hands on.  Minimum you need the docs for your chipset.  Without chipset docs you are basically lost.  &lt;br /&gt;
	&lt;br /&gt;
There have been some reports of people making things work by booting with the BIOS that comes with the board.  Dumping the PCI config registers and then making LinuxBIOS match those registers.  But since sometimes you have to set different bits in a given register at different times so that intermediate info will be lost.  Getting a mainboard up with out chipset docs can be a very long and involved process.&lt;br /&gt;
&lt;br /&gt;
=== What if my chipset docs are covered by an NDA? ===&lt;br /&gt;
&lt;br /&gt;
If the documentation for your chipset covered by and NDA with no source release agreement you won't be able to release your code back to to the LinuxBIOS project in general or you will violate the GPL.&lt;br /&gt;
Many vendors accept releasing the source code produced after reading such specs while they don't allow the specs themselves to be revealed. Also, you can offer them to review the code before releasing it.&lt;br /&gt;
&lt;br /&gt;
=== Where is the mailing list archived? ===&lt;br /&gt;
&lt;br /&gt;
The best archive out there is at the University of Maryland. &lt;br /&gt;
&lt;br /&gt;
http://www.mail-archive.com/linuxbios@clustermatic.org/&lt;br /&gt;
&lt;br /&gt;
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists).&lt;br /&gt;
&lt;br /&gt;
=== Where do I get the code? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Download_freebios_v2|download page]].&lt;br /&gt;
&lt;br /&gt;
=== How do I build? ===&lt;br /&gt;
&lt;br /&gt;
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)&lt;br /&gt;
&lt;br /&gt;
=== Why is the code so complicated and what can I do to make it easier? ===&lt;br /&gt;
&lt;br /&gt;
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. &lt;br /&gt;
&lt;br /&gt;
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. &lt;br /&gt;
&lt;br /&gt;
=== What chipsets are supported? ===&lt;br /&gt;
&lt;br /&gt;
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if my motherboard is supported by LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
There are 2 methods:&lt;br /&gt;
&lt;br /&gt;
1) Check [[Supported Motherboards]]&lt;br /&gt;
&lt;br /&gt;
If you don't see your chipset/Mainboard listed there then boot linux on your target and send the output of 'lspci -vvv' to the linuxBIOS list asking if this chipset is supported.&lt;br /&gt;
&lt;br /&gt;
2) &amp;quot;Use the source Luke&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Check out the latest copy of LinuxBIOS from CVS [[Download freebios v2]] and look in the freebios2/src/mainboard directory. (The LinuxBios module is called 'freebios2' in CVS for legacy reasons) There are directories for each manufacturer of mainboards that LinuxBIOS supports.  Below the manufacturer directory is a directory for each mainboard or family of&lt;br /&gt;
mainboard.  If a directory for your mainboad dosen't exist then theres a good chance LinuxBIOS dosen't support your mainboard out-of-the-box.  Posting to the list would probally be the next option.  See 'the lspci -vvv' in the earlier part of the question.&lt;br /&gt;
	&lt;br /&gt;
If the directory does exist then it still dosen't mean 100% the mainboard will work but at least it probally worked at one time.  Posting to the list will probally get you the latest info for that mainboard.&lt;br /&gt;
&lt;br /&gt;
=== What is this POST card thing? ===&lt;br /&gt;
&lt;br /&gt;
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. &lt;br /&gt;
&lt;br /&gt;
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). &lt;br /&gt;
&lt;br /&gt;
=== How do I contribute my changes? ===&lt;br /&gt;
&lt;br /&gt;
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. &lt;br /&gt;
&lt;br /&gt;
=== How do I (re-)flash the BIOS? ===&lt;br /&gt;
&lt;br /&gt;
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions: &lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
LinuxBIOS v2 contains a flash utility called &amp;quot;flash_rom&amp;quot;. It can be found at freebios2/util/flash_and_burn.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 bash# ./flash_rom&lt;br /&gt;
 Calibrating timer since microsleep sucks ... takes a second&lt;br /&gt;
 Setting up microsecond timing loop&lt;br /&gt;
 515M loops per second&lt;br /&gt;
 OK, calibrated, now do the deed&lt;br /&gt;
 Enabling flash write on AMD8111...OK&lt;br /&gt;
 Trying Am29F040B, 512 KB&lt;br /&gt;
 probe_29f040b: id1 0x4e, id2 0x41&lt;br /&gt;
 Trying At29C040A, 512 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying Mx29f002, 256 KB&lt;br /&gt;
 probe_29f002: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST29EE020A, 256 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST28SF040A, 512 KB&lt;br /&gt;
 probe_28sf040: id1 0x4e, id2 0x41&lt;br /&gt;
 Trying SST39SF020A, 256 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST39VF020, 256 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 Trying SST49LF040, 512 KB&lt;br /&gt;
 probe_jedec: id1 0xbf, id2 0x51&lt;br /&gt;
 SST49LF040 found at physical address: 0xfff80000&lt;br /&gt;
 Part is SST49LF040&lt;br /&gt;
 OK, only ENABLING flash write, but NOT FLASHING&lt;br /&gt;
 bash# flash_rom --help&lt;br /&gt;
 usage: ./flash_rom [-rwv] [-c chipname] [-s exclude_start] [-e exclude_end] [file]&lt;br /&gt;
  -r: read flash and save into file&lt;br /&gt;
  -w: write file into flash (default when file is specified)&lt;br /&gt;
  -v: verify flash against file&lt;br /&gt;
  -c: probe only for specified flash chip&lt;br /&gt;
  -s: exclude start position&lt;br /&gt;
  -e: exclude end postion&lt;br /&gt;
   If no file is specified, then all that happens&lt;br /&gt;
   is that flash info is dumped&lt;br /&gt;
&lt;br /&gt;
Besides that, OpenBIOS contains a flash driver called [http://www.openbios.org/development/devbios.html /dev/bios] which may support some systems and flash chips unsupported by flash_rom.&lt;br /&gt;
 &lt;br /&gt;
==== SiS 630/950 M/Bs ====&lt;br /&gt;
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. &lt;br /&gt;
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. &lt;br /&gt;
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. &lt;br /&gt;
&lt;br /&gt;
==== Intel L440GX ====&lt;br /&gt;
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. &lt;br /&gt;
How do I actually burn a flash ROM? &lt;br /&gt;
&lt;br /&gt;
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash.&lt;br /&gt;
&lt;br /&gt;
=== How do I burn a DoC? ===&lt;br /&gt;
&lt;br /&gt;
Currently, only the DoC Millennium is supported. See the documentation. &lt;br /&gt;
&lt;br /&gt;
=== Can I do any serious damage mucking around with this stuff? ===&lt;br /&gt;
&lt;br /&gt;
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). &lt;br /&gt;
&lt;br /&gt;
* Incorrect insertion of the flash (1 casualty) &lt;br /&gt;
* Incorrect jumper settings (1 casualty) &lt;br /&gt;
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) &lt;br /&gt;
* Miscellaneous miswirings and mishandlings (3+ casualties)&lt;br /&gt;
&lt;br /&gt;
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===&lt;br /&gt;
&lt;br /&gt;
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. &lt;br /&gt;
&lt;br /&gt;
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. &lt;br /&gt;
&lt;br /&gt;
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: &lt;br /&gt;
&lt;br /&gt;
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. &lt;br /&gt;
&lt;br /&gt;
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! &lt;br /&gt;
&lt;br /&gt;
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. &lt;br /&gt;
&lt;br /&gt;
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. &lt;br /&gt;
&lt;br /&gt;
=== How do I put a filesystem on DoC? ===&lt;br /&gt;
OK, here is a little HOWTO on how to set up MTD with a file system. &lt;br /&gt;
&lt;br /&gt;
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. &lt;br /&gt;
&lt;br /&gt;
So I: &lt;br /&gt;
 modprobe doc2001 &lt;br /&gt;
 modprobe docprobe &lt;br /&gt;
 dmesg &lt;br /&gt;
&lt;br /&gt;
which shows: &lt;br /&gt;
&lt;br /&gt;
 DiskOnChip Millennium found at address 0xFFFC8000 &lt;br /&gt;
 Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) &lt;br /&gt;
 1 flash chips found. Total DiskOnChip size: 8 MiB &lt;br /&gt;
 mtd: Giving out device 0 to DiskOnChip Millennium &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured &lt;br /&gt;
 (etc..) &lt;br /&gt;
 Now I need MTD utilities. &lt;br /&gt;
 So I: &lt;br /&gt;
 cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login &lt;br /&gt;
 CVS password: &lt;br /&gt;
 &lt;br /&gt;
 (password is anoncvs) &lt;br /&gt;
 Then: &lt;br /&gt;
 cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd &lt;br /&gt;
&lt;br /&gt;
Forget the drivers and such, you don't need them. What you need is the tools. &lt;br /&gt;
 cd mtd/tools &lt;br /&gt;
 make &lt;br /&gt;
&lt;br /&gt;
Go ahead and copy the executables somewhere handy, you'll need them. &lt;br /&gt;
&lt;br /&gt;
Now we need to make the last 6M into a &amp;quot;disk&amp;quot;. We need to format it. The tool is nftl_format, so:&lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# ./nftl_format &lt;br /&gt;
 $Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ &lt;br /&gt;
 Usage: ./nftl_format [ []] &lt;br /&gt;
 [root@carly util]# expr 2048 \* 1024 &lt;br /&gt;
 2097152 &lt;br /&gt;
 [root@carly util]# expr 6 \* 1024 \* 1024 &lt;br /&gt;
 6291456 &lt;br /&gt;
 [root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 &lt;br /&gt;
 $Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ &lt;br /&gt;
 Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 &lt;br /&gt;
 Phase 2.a Writing NFTL Media Header and Bad Unit Table &lt;br /&gt;
 Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table &lt;br /&gt;
 Phase 3. Writing Unit Control Information to each Erase Unit &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
we now have a formatted disk in there. We can now partition it. &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# modprobe nftl &lt;br /&gt;
&lt;br /&gt;
dmesg shows LOTS of errors, since this was never partitioned ... &lt;br /&gt;
&lt;br /&gt;
Also, if you don't have /dev/nftla, &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# mknod /dev/nftla b 93 0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. &lt;br /&gt;
&lt;br /&gt;
now fdisk /dev/nftla &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# fdisk /dev/nftlA &lt;br /&gt;
 Command (m for help): n &lt;br /&gt;
 Command action &lt;br /&gt;
 e extended &lt;br /&gt;
 p primary partition (1-4) &lt;br /&gt;
 p &lt;br /&gt;
 Partition number (1-4): 1 &lt;br /&gt;
 First cylinder (1-1, default 1): &lt;br /&gt;
 Using default value 1 &lt;br /&gt;
 Command (m for help): p &lt;br /&gt;
 Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders &lt;br /&gt;
 Units = cylinders of 12224 * 512 bytes &lt;br /&gt;
 Device Boot Start End Blocks Id System &lt;br /&gt;
 /dev/nftlA1 1 1 6111+ 83 Linux &lt;br /&gt;
 Partition 1 has different physical/logical endings: &lt;br /&gt;
 phys=(768, 0, 0) logical=(0, 0, 12224) &lt;br /&gt;
 Partition 1 does not end on cylinder boundary: &lt;br /&gt;
 phys=(768, 0, 0) should be (768, 0, 12224) &lt;br /&gt;
 Command (m for help): w &lt;br /&gt;
 The partition table has been altered! &lt;br /&gt;
 Calling ioctl() to re-read partition table. &lt;br /&gt;
 WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. &lt;br /&gt;
 Syncing disks. &lt;br /&gt;
 [root@carly util]# mknod /dev/nftlA1 b 93 1 &lt;br /&gt;
 [root@carly util]# mke2fs /dev/nftlA1 &lt;br /&gt;
 mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 &lt;br /&gt;
 Filesystem label= &lt;br /&gt;
 OS type: Linux &lt;br /&gt;
 Block size=1024 (log=0) &lt;br /&gt;
 Fragment size=1024 (log=0) &lt;br /&gt;
 1528 inodes, 6111 blocks &lt;br /&gt;
 305 blocks (4.99%) reserved for the super user &lt;br /&gt;
 First data block=1 &lt;br /&gt;
 1 block group &lt;br /&gt;
 8192 blocks per group, 8192 fragments per group &lt;br /&gt;
 1528 inodes per group &lt;br /&gt;
 Writing inode tables: done &lt;br /&gt;
 Writing superblocks and filesystem accounting information: done &lt;br /&gt;
&lt;br /&gt;
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. &lt;br /&gt;
&lt;br /&gt;
 [root@carly util]# mount /dev/nftlA1 /mnt &lt;br /&gt;
 [root@carly util]# cd /mnt &lt;br /&gt;
 [root@carly mnt]# df . &lt;br /&gt;
 Filesystem 1k-blocks Used Available Use% Mounted on &lt;br /&gt;
 /dev/nftlA1 5915 13 5597 1% /mnt &lt;br /&gt;
 [root@carly mnt]# &lt;br /&gt;
&lt;br /&gt;
and so you now have an ext2 file system on the DoC. &lt;br /&gt;
&lt;br /&gt;
(Above is from [[User:Rminnich|Ron Minnich]])&lt;br /&gt;
&lt;br /&gt;
=== How do I turn off embedded sis630 devices? ===&lt;br /&gt;
&lt;br /&gt;
 From aip@cwlinux.com Mon Mar 25 08:54:07 2002 &lt;br /&gt;
 Date: Mon, 25 Mar 2002 22:07:54 +0800 &lt;br /&gt;
 From: Andrew Ip &lt;br /&gt;
 To: Kei Furuuchi &lt;br /&gt;
 Cc: linuxbios@lanl.gov &lt;br /&gt;
 Subject: Re: How to turn off unused pci device. &lt;br /&gt;
 Hi, &lt;br /&gt;
 &amp;gt; I have pcchips m758lmr which has audio chip besides sis630. &lt;br /&gt;
 &amp;gt; those functions in sis630 are not used in the motherboard. &lt;br /&gt;
 &amp;gt; But, the functions keep coming up. How do I turn off those? &lt;br /&gt;
 The following is from Nikolai Valdych previous message. Hope this help. &lt;br /&gt;
 -Andrew &lt;br /&gt;
 -- &lt;br /&gt;
 Andrew Ip &lt;br /&gt;
 Email: aip@cwlinux.com &lt;br /&gt;
 Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. &lt;br /&gt;
 Set bit to 1 to turn off the device, bit 0 to enable it. &lt;br /&gt;
 This is the device list: &lt;br /&gt;
 Multimedia Audio controler &lt;br /&gt;
 Modem controler &lt;br /&gt;
 Ethernet sis930 controler &lt;br /&gt;
 USB controler. &lt;br /&gt;
 For example, to turn off Ethernet + USB it would be: &lt;br /&gt;
 0x7c0c -&amp;gt; 1100 in binary (first 4 bits) &lt;br /&gt;
 To turn off Multimedia audio : &lt;br /&gt;
 0x7c01 -&amp;gt; 0001 &lt;br /&gt;
 in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! &lt;br /&gt;
 nikolai &lt;br /&gt;
 p.s. though my modem is not yet working..... damn driver...... &lt;br /&gt;
&lt;br /&gt;
=== What is a PIRQ table? ===&lt;br /&gt;
&lt;br /&gt;
 From Adam Sulmicki: &lt;br /&gt;
 &lt;br /&gt;
 I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.&lt;br /&gt;
 &lt;br /&gt;
 I found the description of the $PIR data structure in the&lt;br /&gt;
        (broken)http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp&lt;br /&gt;
 Anyone have a better link or a copy of what was there? --[[User:RSmith|RSmith]] 23:34, 1 Mar 2005 (CET)&lt;br /&gt;
 &lt;br /&gt;
 looking over linuxbios sources I see that it saves the $PIR data structure&lt;br /&gt;
 somewhere between 0xf0000 &amp;amp; 0x100000.&lt;br /&gt;
 &lt;br /&gt;
 so it seems I'll have to search for $PIR and then save it before copying&lt;br /&gt;
 over our bios. sigh. hoped for some fixed address in mem.&lt;br /&gt;
 &lt;br /&gt;
 -- &lt;br /&gt;
 Adam&lt;br /&gt;
 http://www.eax.com      The Supreme Headquarters of the 32 bit registers&lt;br /&gt;
&lt;br /&gt;
=== How do I set up etherboot with LinuxBIOS? ===&lt;br /&gt;
&lt;br /&gt;
Note from Ron: I have edited this somewhat to remove Geode-specific items. &lt;br /&gt;
&lt;br /&gt;
 Christer Weinigel writes: &lt;br /&gt;
 To: rminnich@lanl.gov&lt;br /&gt;
 Cc: linuxbios@lanl.gov&lt;br /&gt;
 Subject: Re: LinuxBIOS + Etherboot HOWTO?&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 I had some trouble using LinuxBIOS + etherboot... &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   /Christer &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Modify etherboot-5.0/src/Config, comment out: &lt;br /&gt;
 &lt;br /&gt;
    # BIOS select don't change unless you know what you are doing&lt;br /&gt;
    #CFLAGS32+=     -DPCBIOS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 and uncomment the following: &lt;br /&gt;
 &lt;br /&gt;
    # Options to make a version of Etherboot that will work under linuxBIOS.&lt;br /&gt;
    CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL \&lt;br /&gt;
               -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Compile Etherboot to make an elf file for your ethernet card: &lt;br /&gt;
 &lt;br /&gt;
     make bin32/natsemi.elf&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Compile and install mkelfImage from freebios/util/mkelfImage. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Create a bootimage to put on your TFTP server: &lt;br /&gt;
 &lt;br /&gt;
    mkelfImage --command-line=&amp;quot;root=/dev/hda2 console=ttyS0,38400&amp;quot; \&lt;br /&gt;
               --kernel vmlinux -o /tftpboot/kernel&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: &lt;br /&gt;
 &lt;br /&gt;
    option USE_ELF_BOOT=1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. &lt;br /&gt;
 &lt;br /&gt;
    insmod bios.o&lt;br /&gt;
    dd if=natsemi.elf of=/dev/bios bs=64k&lt;br /&gt;
    dd if=linuxbios.rom of=/dev/bios bs=64k seek=1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Finally boot LinuxBIOS. &lt;br /&gt;
 &lt;br /&gt;
=== How do I set GEODE video? ===&lt;br /&gt;
&lt;br /&gt;
 From christer@weinigel.se Wed Nov 27 07:47:17 2002&lt;br /&gt;
 Date: 27 Nov 2002 10:55:01 +0100&lt;br /&gt;
 From: Christer Weinigel &lt;br /&gt;
 To: Adam Bezanson &lt;br /&gt;
 Cc: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: Re: Geode Kernel Config &lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;Adam Bezanson&amp;quot;  writes:&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; I've got an Eval card from National Semi that contains&lt;br /&gt;
 &amp;gt; the SC1200. I'd like to try LinuxBios on it.&lt;br /&gt;
 &amp;gt; I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.&lt;br /&gt;
 &amp;gt; What patches do I need to apply to the kernel?&lt;br /&gt;
 &amp;gt; Is there a config file I can use to configure the kernel, or&lt;br /&gt;
 &amp;gt; should I do it manually? &lt;br /&gt;
 &lt;br /&gt;
 A normal 2.4 Linux kernel will work fine as long as you compile for a&lt;br /&gt;
 586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)&lt;br /&gt;
 since the TSC behaves a bit differently. &lt;br /&gt;
 &lt;br /&gt;
 If you want support for the watchdog or the GPIO pins in a 2.4 kernel,&lt;br /&gt;
 you can find an old patch from me at:&lt;br /&gt;
 &lt;br /&gt;
    http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&amp;amp;oe=UTF-8&amp;amp;output=gplain&lt;br /&gt;
 &lt;br /&gt;
 An updated version of this patch has been included in Linux 2.5.  Alan&lt;br /&gt;
 Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE&lt;br /&gt;
 controller; I don't know if there is a corresponding patch for 2.4. &lt;br /&gt;
 &lt;br /&gt;
 Other than that, take a look at the freebios/src/mainboard/nano/nano&lt;br /&gt;
 directory and make a copy of it.  All you should have to do is to&lt;br /&gt;
 modify the Pin Multiplexing Register (PMR) and Miscellaneous Config&lt;br /&gt;
 Register (MCR) in the Config file and to modify the irq assignments.&lt;br /&gt;
 &lt;br /&gt;
 Depending on what you want to do, there are a few limitations with&lt;br /&gt;
 the current LinuxBIOS on the SC1200: &lt;br /&gt;
 &lt;br /&gt;
    There is no video support in LinuxBIOS itself, so you won't get&lt;br /&gt;
    any video until you have loaded the NatSemi Geode Linux&lt;br /&gt;
    framebuffer driver (can be found at www.linux4.tv under the&lt;br /&gt;
    heading SP1SC10 Platform Image).&lt;br /&gt;
 &lt;br /&gt;
    There is no SMM/VSA support at all, this means that anything&lt;br /&gt;
    relying on it won't work.  What this means is that Audio won't&lt;br /&gt;
    work.&lt;br /&gt;
 &lt;br /&gt;
 Other than that everything works fine, IDE in PIO mode, the PCI bus,&lt;br /&gt;
 watchdog, GPIOs, everything.&lt;br /&gt;
 &lt;br /&gt;
  /Christer&lt;br /&gt;
 &lt;br /&gt;
 -- &lt;br /&gt;
 &amp;quot;Just how much can I get away with and still go to heaven?&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Freelance consultant specializing in device driver programming for Linux &lt;br /&gt;
 Christer Weinigel   http://www.weinigel.se&lt;br /&gt;
 _______________________________________________&lt;br /&gt;
 Linuxbios mailing list&lt;br /&gt;
 Linuxbios@clustermatic.org&lt;br /&gt;
 http://www.clustermatic.org/mailman/listinfo/linuxbios&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I set up testbios? ===&lt;br /&gt;
&lt;br /&gt;
 From daubin@actuality-systems.com Wed Oct  6 10:23:10 2004&lt;br /&gt;
 Date: Tue, 5 Oct 2004 15:19:24 -0400&lt;br /&gt;
 From: Dave Aubin &lt;br /&gt;
 To: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: RE: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
 &lt;br /&gt;
 I've taken the time to put together a simple testbios faq.&lt;br /&gt;
 I hope it is helpful.  Feedback and additions are welcome. &lt;br /&gt;
 &lt;br /&gt;
 Thanks,&lt;br /&gt;
 Dave&lt;br /&gt;
 &lt;br /&gt;
==== Testbios (vgabios) Faq ====&lt;br /&gt;
&lt;br /&gt;
Date: 10/5/2004&lt;br /&gt;
Author(s): David Aubin  daubin@actuality-systems.com&lt;br /&gt;
&lt;br /&gt;
Purpose:  Testbios is an i386 emulator that sits on top of userspace linux.  It's primary purpose is to provide program video rom's in to the cached memory area.&lt;br /&gt;
&lt;br /&gt;
===== Where to obtain testbios =====&lt;br /&gt;
&lt;br /&gt;
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]&lt;br /&gt;
&lt;br /&gt;
===== Prerequisites =====&lt;br /&gt;
&lt;br /&gt;
You must have installed pci-utils&lt;br /&gt;
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml&lt;br /&gt;
&lt;br /&gt;
===== How to build testbios =====&lt;br /&gt;
* cd freebios/util/vgabios&lt;br /&gt;
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)&lt;br /&gt;
&lt;br /&gt;
Begin ./Makefile for x64:&lt;br /&gt;
 CC       =  gcc&lt;br /&gt;
 ARCH     := $(shell uname -m | sed -e s,i[3456789]86,i386,)&lt;br /&gt;
 INCLUDE  =  -I ../pciutils-2.1.11&lt;br /&gt;
 CFLAGS   =  -Wall -Ix86emu/include -O2 -g $(INCLUDE)&lt;br /&gt;
 &lt;br /&gt;
 INTOBJS  =  int10.o int15.o int16.o int1a.o inte6.o&lt;br /&gt;
 OBJECTS  =  testbios.o helper_exec.o helper_mem.o $(INTOBJS)&lt;br /&gt;
 LDFLAGS  =  -static-libgcc -static&lt;br /&gt;
 &lt;br /&gt;
 LIBS     =  x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a&lt;br /&gt;
 &lt;br /&gt;
 # user space pci is the only option right now.&lt;br /&gt;
 OBJECTS += pci-userspace.o&lt;br /&gt;
 &lt;br /&gt;
 ifeq ($(shell if test &amp;quot;$(ARCH)&amp;quot; == &amp;quot;x86_64&amp;quot; ; then echo 1; fi), 1)&lt;br /&gt;
         CFLAGS +=-m32 -march=i386&lt;br /&gt;
         endif&lt;br /&gt;
 &lt;br /&gt;
         all: testbios&lt;br /&gt;
 &lt;br /&gt;
         testbios: $(OBJECTS) $(LIBS)&lt;br /&gt;
                 $(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)&lt;br /&gt;
 $(LIBS)&lt;br /&gt;
 &lt;br /&gt;
 helper_exec.o: helper_exec.c test.h&lt;br /&gt;
 &lt;br /&gt;
 x86emu/src/x86emu/libx86emu.a:&lt;br /&gt;
         $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux&lt;br /&gt;
 &lt;br /&gt;
         clean:&lt;br /&gt;
                 $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean&lt;br /&gt;
                 rm -f *.o *~ testbios &lt;br /&gt;
 &lt;br /&gt;
         distclean: clean&lt;br /&gt;
                 $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End ./Makefile&lt;br /&gt;
&lt;br /&gt;
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)&lt;br /&gt;
&lt;br /&gt;
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:&lt;br /&gt;
 #############################################################################&lt;br /&gt;
 #&lt;br /&gt;
 #                                               Realmode X86 Emulator Library&lt;br /&gt;
 #&lt;br /&gt;
 #               Copyright (C) 1996-1999 SciTech Software, Inc.&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;========================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 #  Permission to use, copy, modify, distribute, and sell this software and&lt;br /&gt;
 #  its documentation for any purpose is hereby granted without fee,&lt;br /&gt;
 #  provided that the above copyright notice appear in all copies and that&lt;br /&gt;
 #  both that copyright notice and this permission notice appear in&lt;br /&gt;
 #  supporting documentation, and that the name of the authors not be used&lt;br /&gt;
 #  in advertising or publicity pertaining to distribution of the software&lt;br /&gt;
 #  without specific, written prior permission.  The authors makes no&lt;br /&gt;
 #  representations about the suitability of this software for any purpose.&lt;br /&gt;
 #  It is provided &amp;quot;as is&amp;quot; without express or implied warranty.&lt;br /&gt;
 #&lt;br /&gt;
 #  THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,&lt;br /&gt;
 #  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO&lt;br /&gt;
 #  EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR&lt;br /&gt;
 #  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF&lt;br /&gt;
 #  USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR&lt;br /&gt;
 #  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR&lt;br /&gt;
 #  PERFORMANCE OF THIS SOFTWARE.&lt;br /&gt;
 #&lt;br /&gt;
 #&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;========================================================================&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 #&lt;br /&gt;
 # Descripton:   Linux specific makefile for the x86emu library.&lt;br /&gt;
 #&lt;br /&gt;
 #############################################################################&lt;br /&gt;
 &lt;br /&gt;
 TARGETLIB = libx86emu.a&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 OBJS=\&lt;br /&gt;
 debug.o \&lt;br /&gt;
 decode.o \&lt;br /&gt;
 fpu.o \&lt;br /&gt;
 ops.o \&lt;br /&gt;
 ops2.o \&lt;br /&gt;
 prim_ops.o \&lt;br /&gt;
 sys.o&lt;br /&gt;
 &lt;br /&gt;
 $(TARGETLIB): $(OBJS)&lt;br /&gt;
         ar rv $(TARGETLIB) $(OBJS)&lt;br /&gt;
 &lt;br /&gt;
        INCS   = -I. -Ix86emu -I../../include&lt;br /&gt;
        CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG&lt;br /&gt;
        ARCH   := $(shell uname -m | sed -e s,i[3456789]86,i386,)&lt;br /&gt;
        ifeq ($(shell if test &amp;quot;$(ARCH)&amp;quot; == &amp;quot;x86_64&amp;quot; ; then echo 1; fi), 1)&lt;br /&gt;
                CFLAGS +=-m32 -march=i386&lt;br /&gt;
                endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 .c.o:&lt;br /&gt;
 #       gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c&lt;br /&gt;
         gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c&lt;br /&gt;
 &lt;br /&gt;
 .cpp.o:&lt;br /&gt;
 #       gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp&lt;br /&gt;
         gcc -c $(CFLAGS) $(INCS) $*.cpp &lt;br /&gt;
 &lt;br /&gt;
 clean:&lt;br /&gt;
         rm -f *.a *.o&lt;br /&gt;
 &lt;br /&gt;
 validate:       validate.o libx86emu.a&lt;br /&gt;
         gcc -o validate validate.o -lx86emu -L.&lt;br /&gt;
 &lt;br /&gt;
End ~vgabios/x86emu/src/x86emu/makefile.linux&lt;br /&gt;
&lt;br /&gt;
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static.  Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.&lt;br /&gt;
&lt;br /&gt;
===== How to retrieve a good video bios =====&lt;br /&gt;
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])&lt;br /&gt;
&lt;br /&gt;
However you should be able to retrieve your own video bios as well with linux.&lt;br /&gt;
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.&lt;br /&gt;
** From the command line enter:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or &amp;lt;br /&amp;gt;dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432&amp;lt;br /&amp;gt;This assumes you card's bios is cached in 0xc0000.  You&amp;lt;br /&amp;gt;can see where and how much your card's bios is using by&amp;lt;br /&amp;gt;doing a cat iomem | grep &amp;quot;Video ROM&amp;quot;&amp;lt;br /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*** dd Explained (man dd to learn more):&lt;br /&gt;
****  if is the location to retrieve from.&lt;br /&gt;
****  of is the output file (your rom image)&lt;br /&gt;
****  skip jumps n blocks where the default n is 512 bytes&lt;br /&gt;
****  count is how many blocks you wish to read&lt;br /&gt;
****  bs is the block size&lt;br /&gt;
** You now have a video bios image&lt;br /&gt;
&lt;br /&gt;
===== How to use testbios =====&lt;br /&gt;
* Currently testbios only works from user space linux (10/4/04)&lt;br /&gt;
* Example from a linux command line or script enter the following to get your video bios programmed:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;./testbios -s 65536 --abseg /dev/mem ./vgabios.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
** Testbios explained&lt;br /&gt;
***  -s  how much of the video bios is there&lt;br /&gt;
***  --abseg where would you like to write this (/dev/mem default)&lt;br /&gt;
***  filename of video bios&lt;br /&gt;
***  -d diag mode &lt;br /&gt;
****  How to get pci busdevfn&lt;br /&gt;
****  lspci&lt;br /&gt;
****  look for your video card&lt;br /&gt;
***** Example:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;2:00:00&amp;lt;br /&amp;gt;2 (00 &amp;lt;&amp;lt; 3) | 00 = 0x200&amp;lt;/code&amp;gt;&lt;br /&gt;
***** Example:&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;00:12.0:&amp;lt;br /&amp;gt;0 (12 &amp;lt;&amp;lt; 3) | 0 = 0x90&amp;lt;/code&amp;gt;&lt;br /&gt;
*** -t dump &lt;br /&gt;
*** -c codesegment Where do you want to start, default is 0xc0000&lt;br /&gt;
*** -b base  Where do you want base to be default is 0xc000&lt;br /&gt;
*** -i instruction pointer usually left off as the default&lt;br /&gt;
&lt;br /&gt;
==== Followup to Testbios FAQ ====&lt;br /&gt;
 -----Original Message-----&lt;br /&gt;
 From: linuxbios-admin@clustermatic.org&lt;br /&gt;
 [mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin&lt;br /&gt;
 Sent: Tuesday, October 05, 2004 2:22 PM&lt;br /&gt;
 To: Richard Smith&lt;br /&gt;
 Cc: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: RE: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
 &lt;br /&gt;
 Hi,&lt;br /&gt;
 &lt;br /&gt;
 Thank you:)  Yes, it was at 0xc0000-0xc7fff, which is only 32k.&lt;br /&gt;
 But the image I got from the windows tool was 64k (double 8000).&lt;br /&gt;
 Weird.  I would like to stay away from window tools.&lt;br /&gt;
 The info you provided is nice.  I wish there was a way for us To make&lt;br /&gt;
 a faq and we could add this to the testbios faq.  There Is a lot of good&lt;br /&gt;
 info on the clustermatic list, but it is all Dispersed.  &lt;br /&gt;
 Ron if I write a simple faq can you provide some mechanism to Allow&lt;br /&gt;
 updates to it?&lt;br /&gt;
 &lt;br /&gt;
 Thanks,&lt;br /&gt;
 Dave &lt;br /&gt;
 &lt;br /&gt;
 -----Original Message-----&lt;br /&gt;
 From: Richard Smith [mailto:rsmith@bitworks.com]&lt;br /&gt;
 Sent: Tuesday, October 05, 2004 2:16 PM&lt;br /&gt;
 To: Dave Aubin&lt;br /&gt;
 Cc: linuxbios@clustermatic.org&lt;br /&gt;
 Subject: Re: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
 &lt;br /&gt;
 Dave Aubin wrote:&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; It seems my dd returned an unusable binary.  I found a good binary for&lt;br /&gt;
 &lt;br /&gt;
 &amp;gt; The nvidia card from here:&lt;br /&gt;
 &amp;gt; http://whitebunny.demon.nl/hardware/chipset_nvidia.html&lt;br /&gt;
 &amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 I was wondering about your dd command that but I had not had a chance to&lt;br /&gt;
 respond yet.&lt;br /&gt;
 &lt;br /&gt;
 This is what I use:&lt;br /&gt;
 &lt;br /&gt;
 dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432&lt;br /&gt;
 &lt;br /&gt;
 That will rip the bios from 0x0c0000.  You can verify that you actually&lt;br /&gt;
 have bios there with&lt;br /&gt;
 &lt;br /&gt;
   'hd -s 0x0c0000 -n 256 /dev/mem'&lt;br /&gt;
 &lt;br /&gt;
 in some cases it may be located at 0x0e0000 rather than 0x0c0000.&lt;br /&gt;
 &lt;br /&gt;
 It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)&lt;br /&gt;
 and futher on you should see some text identifying the bios.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 --&lt;br /&gt;
 Richard A. Smith&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 _______________________________________________&lt;br /&gt;
 Linuxbios mailing list&lt;br /&gt;
 Linuxbios@clustermatic.org&lt;br /&gt;
 http://www.clustermatic.org/mailman/listinfo/linuxbios&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Payloads</id>
		<title>Payloads</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Payloads"/>
				<updated>2005-03-01T22:07:53Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LinuxBIOS in itself is &amp;quot;only&amp;quot; minimal code for initializing a&lt;br /&gt;
mainboard with peripherals just enough for a Linux kernel to take&lt;br /&gt;
over and to the rest. LinuxBIOS does not contain a kernel per se.&lt;br /&gt;
&lt;br /&gt;
After the initialization, LinuxBIOS jumps to a payload and while&lt;br /&gt;
there has been discussion about stacking payloads that's currently&lt;br /&gt;
not in practice.&lt;br /&gt;
&lt;br /&gt;
The payload was originally intended to be a Linux kernel stored in&lt;br /&gt;
flash. Flash ROM growth rate was anticipated optimistically however,&lt;br /&gt;
today there are not many mainboards that actually have enough flash&lt;br /&gt;
ROM room for a kernel. 512KB can be seen here-and-there and a few&lt;br /&gt;
boards come with 1MB. Recent kernels really want that MB, and then&lt;br /&gt;
you'll only have room for 3-400 KB of initial ramdisk, which could&lt;br /&gt;
be too small too, depending on the application.&lt;br /&gt;
&lt;br /&gt;
So, other payloads are used; the two major ones are FILO and&lt;br /&gt;
Etherboot. FILO loads a kernel from a filesystem on an IDE device and&lt;br /&gt;
Etherboot loads a kernel from the network or from a filesystem on an&lt;br /&gt;
IDE device.&lt;br /&gt;
&lt;br /&gt;
If you're using FILO there is no Linux kernel until FILO loads it,&lt;br /&gt;
and the kernel loaded by FILO (or Etherboot) can absolutely be the&lt;br /&gt;
one you want to run in your system. Just set it up with the correct&lt;br /&gt;
root and init commandline so that it can start init.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Etherboot]] --- it includes FILO, and its FILO support SATA and USB booting.&lt;br /&gt;
&lt;br /&gt;
[[FILO]] - Simple bootloader with filesystem support&lt;br /&gt;
&lt;br /&gt;
[http://www.openbios.org OpenBIOS]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/PCCHIPS_M810LR</id>
		<title>PCCHIPS M810LR</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/PCCHIPS_M810LR"/>
				<updated>2005-03-01T17:23:46Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My experience getting LinuxBios working on a PC-Chips M810LR motherboard with an M-Systems Millennium MD-2800-D08 Disk-on-Chip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 by Antony Stone &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Background&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I first came across LinuxBios at the LBW workshop at Doolin, Ireland, and it seemed like such a great project that I just wanted to get home and build one of my own. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to Lance Davis and John Hearns for supplying hardware, Bill Boughton and Richard Russon for persevering with the software, and Chuck Moss for supplying some DoCs to play with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Even better, I recognised the PC-Chips motherboard they were using there - an M810LMR, and I knew I had two of these in systems already. So all I had to do was get myself a Disk-on-Chip device, and I'd have an instant-booting system, right ? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Well, things were not quite so simple as that, so after managing to get my system working from a combination of: &lt;br /&gt;
&lt;br /&gt;
reading what documentation I could find &lt;br /&gt;
knowing that I'd seen one working already &lt;br /&gt;
guesswork and reading bits of the source code &lt;br /&gt;
invaluable help and assistance from Ron Minnich and Andrew Ip &lt;br /&gt;
&lt;br /&gt;
I decided to write up my experiences to let other people know what I had to do to get things working, in the hope that this may make it easier for other people later on. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vendors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 It seems that PC-Chips have recently (August 2002) decided to rename their motherboard product range, so this is going to lead to even more confusion over which particular board you are working with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, PC-Chips does appear to be one of the more helpful motherboard vendors as far as the LinuxBios project is concerned, and they certainly do seem to make some good value-for-money highly-integrated motherboards. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Disk-on-Chip devices are something I'd never worked with before, and I had no idea where to get them from, either. I live in the UK, so I simply went to M-Systems' website and looked for UK or European distributors. There were two distributors listed for the UK, so I phoned them up, and bought three MD-2800-D08 devices from one of them. I have my own company, so I qualified as a trade customer. I have no idea where you would buy these as a private individual, but I'll stick my neck out here and say that anyone who has trouble getting the Millennium DoC devices in the UK can email me and I'll try to help. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As well as PC-Chips renumbering their motherboards, it also turns out that M-Systems are discontinuing the MD-2800 series and replacing them with the MD-2802 range, which are apparently &amp;quot;hardware and software interchangeable&amp;quot;. The MD-2800 devices are being discontinued, but the MD-2802 should work identically in all designs. I bought the last three MD-2800s the supplier had :-) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, I had a motherboard, and a Disk-on-Chip device. How to get LinuxBios up and running ? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first thing is to read the LinuxBios FAQ and the documentation for the SiS630 motherboards. This should give you a good idea of the overall process, and the steps involved. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The steps listed in the documentation are:&lt;br /&gt;
(Note: the following list should be numbered from 0 to 8 (as should the next list further down) for consistency with the original documentation. If your browser shows a list numbered from 1 to 9, you may want to consider updating it.) &lt;br /&gt;
&lt;br /&gt;
Get Linux installed on your LinuxBios machine &lt;br /&gt;
&lt;br /&gt;
Get LinuxBios source from the sourceforge &lt;br /&gt;
&lt;br /&gt;
Get a 2.4 kernel, patch it, then build it &lt;br /&gt;
&lt;br /&gt;
Configure and build LinuxBios &lt;br /&gt;
&lt;br /&gt;
Get the MTD utilities from http://www.linux-mtd.infradead.org and build the 'erase' utility &lt;br /&gt;
&lt;br /&gt;
Set up the 'flash_on' program in your path &lt;br /&gt;
&lt;br /&gt;
Remove the Bios from its socket and put a Disk-on-Chip in its place &lt;br /&gt;
&lt;br /&gt;
Burn the LinuxBios image into the Disk-on-Chip &lt;br /&gt;
&lt;br /&gt;
Hit reset. &lt;br /&gt;
&lt;br /&gt;
The details&lt;br /&gt;
&lt;br /&gt;
Step 0 should be easy enough for people who are attempting LinuxBios in the first place, however note that the kernel you are running must have support for MTD (Memory Technology Devices), which most people won't have turned on as standard. &lt;br /&gt;
&lt;br /&gt;
Therefore you should recompile your kernel on your machine with modules enabled (I generally don't use a modular kernel, but for programming the DoC devices in the Bios socket of the motherboard, you have to run a command before loading the DoC modules, therefore you can't compile this support directly into the kernel), and support for the Millennium DoC devices. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I generally use 'make menuconfig' to configure my kernel; here are the options you need to select (accurate for a 2.4.19 kernel) in order to build LinuxBios into a DoC device: &lt;br /&gt;
&lt;br /&gt;
Loadable module support&lt;br /&gt;
[*] Enable loadable module support&lt;br /&gt;
[ ]   Set version information on all module symbols&lt;br /&gt;
[*]   Kernel module loader&lt;br /&gt;
&lt;br /&gt;
Memory Technology Devices (MTD)&lt;br /&gt;
&amp;lt;M&amp;gt; Memory Technology Device (MTD) support&lt;br /&gt;
[ ] Debugging&lt;br /&gt;
&amp;lt; &amp;gt;   MTD partitioning support&lt;br /&gt;
&amp;lt; &amp;gt;   MTD concatenating support&lt;br /&gt;
--- User Modules and Transition Layers&lt;br /&gt;
&amp;lt;M&amp;gt;   Direct char device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   Caching block device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   Readonly block device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   FTL (Flash Transition Layer) support&lt;br /&gt;
&amp;lt; &amp;gt;   NFTL (NAND Flash Transition Layer) support&lt;br /&gt;
RAM/ROM/Flash chip drivers  ---&amp;gt;&lt;br /&gt;
Mapping drivers for chip access  ---&amp;gt;&lt;br /&gt;
Self-contained MTD device drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt; &amp;gt;   Ramix PMC551 PCI Mezzanine RAM card support&lt;br /&gt;
&amp;lt; &amp;gt;   Uncached system RAM&lt;br /&gt;
&amp;lt; &amp;gt;   Test driver using RAM&lt;br /&gt;
&amp;lt; &amp;gt;   MTD emulation using block device&lt;br /&gt;
--- Disk-On-Chip Device Drivers&lt;br /&gt;
&amp;lt; &amp;gt;   M-Systems Disk-On-Chip 1000&lt;br /&gt;
&amp;lt; &amp;gt;   M-Systems Disk-On-Chip 2000 and Millennium&lt;br /&gt;
&amp;lt;M&amp;gt;   M-Systems Disk-On-Chip Millennium-only alternative driver&lt;br /&gt;
[*]     Advanced detection options for DiskOnChip&lt;br /&gt;
(0)     Physical address of DiskOnChip&lt;br /&gt;
[*]     Probe high addresses&lt;br /&gt;
[ ]     Probe for 0x55 0xAA BIOS Extension Signature&lt;br /&gt;
&lt;br /&gt;
NAND Flash Device Drivers  ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a highly impressive 'gotcha' in the MTD driver support - you must edit one of the kernel source files before compiling with MTD support, in order to be able to write (ie erase or program) the DoC devices. If you do not do this you will get errors when you try to erase or program the device, such as: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/dev/mtd0: No such device&lt;br /&gt;
/dev/mtd0: Bad file descriptor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The change required is in /usr/src/linux/drivers/mtd/devices/docprobe.c &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Change the line which reads: &lt;br /&gt;
&lt;br /&gt;
 #define DOC_SINGLE_DRIVER&lt;br /&gt;
&lt;br /&gt;
so that it becomes: &lt;br /&gt;
 #undef DOC_SINGLE_DRIVER&lt;br /&gt;
&lt;br /&gt;
You may want to read the comment just above the line you're editing, and be grateful that someone told you where to find this file to change it.... &lt;br /&gt;
&lt;br /&gt;
You also need to have Python installed on your system, because the LinuxBios build process is based around a Python program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is also highly recommended that you install a 32-pin ZIF (Zero Insertion Force) socket on your motherboard, because later on you will need to swap chips in the Bios socket while the motherboard is powered on. This is not something you want to make any mistakes with, eg using a metal tool, getting the Bios or DoC pins misaligned or bent, shorting out some nearby components or connectors... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the orientation of the Bios chip in its socket (there is a notch at one end, or a dot in one corner, of the chip), remove the chip, and plug a 32-pin ZIF socket into the motherboard socket (you will probably need to bend the pins of some nearby connectors to get it to fit - I found an unused 3-pin fan connector in the way). Place the lever of the ZIF socket at the end where the notch or dot was on the Bios chip. Make sure you plug the ZIF socket cleanly into all 32 holes on the socket on the motherboard - it's easy to miss a couple of pins at one end and get the whole thing moved along one place. You will probably want to do this with the motherboard not installed in a case, so you can look underneath the ZIF socket as you are inserting it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the ZIF socket is in place, lift the lever, insert the original Bios chip (notch or dot at the lever end of the socket) and lower the lever to secure the chip in place. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you see the usual Bios startup screen when you power on your motherboard, then you know you've done this bit correctly, and you can easily swap the chips over later on in the instructions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get the LinuxBios source by CVS: &lt;br /&gt;
&lt;br /&gt;
export CVS_RSH=ssh&lt;br /&gt;
cvs -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios login&lt;br /&gt;
cvs -z3 -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios co freebios&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 (Press return at the password prompt and ignore errors about &amp;quot;failed to open ./cvspass for reading&amp;quot; and even &amp;quot;login aborted: fatal error: exiting&amp;quot;. Press on regardless.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before you get a fresh kernel source to patch with LinuxBios, check the LinuxBios kernel patches to see which kernel version is supported for your motherboard / chipset. You may be able to apply the patches to a different kernel, but at this stage in the game it's probably best to build an old kernel strictly by the instructions, and make sure you can get LinuxBios working at all, and then afterwards you can try to bring the kernel up to the version you'd like it to be. &lt;br /&gt;
&lt;br /&gt;
I used kernel version 2.4.19 because (a) this was already installed on my machine, and (b) there was a linux-2.4.19-sis.patch file available, which matched my motherboard. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find the kernel patches in the FreeBios source you just downloaded from CVS by looking in freebios/src/kernel-patches This directory contains both the patches for the kernels, and also the config files for building the new kernel (note that not all these are guaranteed to work in all situations - you may need to look at other config files and make some manual adjustments to get your particular setup working). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the kernel patches and config files are for the kernel you will program into the DoC device and eventually boot your machine from. They may not be the best choice for the kernel you use to build LinuxBios and burn the DoC before trying to boot it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you build the kernel, use 'make bzImage' and then just leave the kernel where it is. LinuxBios will later look for the file /usr/src/linux/vmlinux &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LinuxBios was developed from an earlier project called FreeBios, and therefore the source code you have downloaded is in a directory called 'freebios' &lt;br /&gt;
&lt;br /&gt;
You need to create your own config file, and make the build images for programming into the DoC device, in a different directory so that they are not deleted when you update your copy of the source code from the CVS repository. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because of the way the directory names worked out, I chose to create a new directory called 'linuxbios' side by side with 'freebios', and built my DoC images in there. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is what I did to build LinuxBios: &lt;br /&gt;
&lt;br /&gt;
mkdir linuxbios&lt;br /&gt;
cd linuxbios&lt;br /&gt;
cp ../freebios/util/config/NLBConfig.py .&lt;br /&gt;
cp ../freebios/util/config/pcchips.config .&lt;br /&gt;
&lt;br /&gt;
 I then edited pcchips.config, making the following changes: &lt;br /&gt;
Removed 'single' from the end of the kernel commandline, because I wanted my machine to boot into standard multiuser mode &lt;br /&gt;
Added 'cpu k7' because I'm using an Athlon processor &lt;br /&gt;
Added 'option ENABLE_MII=1' to get the onboard ethernet working (Thanks to Andrew Ip for telling me how to do this) &lt;br /&gt;
Changed 'option HAVE_FRAMEBUFFER' to 'option HAVE_FRAMEBUFFER=1' (this eliminates a warning message later but is not essential) &lt;br /&gt;
&lt;br /&gt;
I also edited one of the LinuxBios source files in order to get the keyboard working on my motherboard (again, thanks to Andrew Ip for this): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the file freebios/src/arch/i386/lib/hardwaremain.c uncomment the function call keyboard_on() around line 344. If you do not do this, then when you finally boot your LinuxBios machine, you will get several hundred error messages &amp;quot;pc_keyb: controller jammed (0xFF)&amp;quot;, and your keyboard will not work. It will not stop your LinuxBios system from working, however - you will still be able to log in on the serial port, and ssh across the network. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I then ran the Python program to create the build files: &lt;br /&gt;
&lt;br /&gt;
python NLBConfig.py pcchips.config ~/freebios&lt;br /&gt;
&lt;br /&gt;
This creates a subdirectory within linuxbios (where you are now) called pcchips, and creates the following files in it: &lt;br /&gt;
&lt;br /&gt;
LinuxBIOSDoc.config&lt;br /&gt;
&lt;br /&gt;
Makefile&lt;br /&gt;
&lt;br /&gt;
Makefile.settings&lt;br /&gt;
&lt;br /&gt;
crt0_includes.h&lt;br /&gt;
&lt;br /&gt;
nsuperio.c&lt;br /&gt;
&lt;br /&gt;
Once you have these files, and you have compiled your target kernel (which is then sitting in /usr/src/linux/vmlinux), you can run the makefile and build your LinuxBios image: &lt;br /&gt;
&lt;br /&gt;
cd pcchips&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
Note that if this is not the first time you're building the image, you may want to do a 'make clean' before the 'make'. &lt;br /&gt;
&lt;br /&gt;
I then copied the 'burn_mtd' utility into the newly-created pcchips directory, because by default it looks in the current directory for the source files to burn into the DoC device, so there's a lot less typing if the utility is in the same place. &lt;br /&gt;
&lt;br /&gt;
cp ../../freebios/util/mtd/burn_mtd .&lt;br /&gt;
&lt;br /&gt;
I made a couple of changes to the burn_mtd utility, in order to match the filenames generated by the Makefile a few moments ago: &lt;br /&gt;
&lt;br /&gt;
Change the first two occurrences of 'vmlinux' (one in the comment on line 3, the other in 'linux=vmlinux.bin.gz' on line 16) to 'linux' (so that line 16 now reads 'linux=linux.bin.gz'). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building the MTD 'erase' utility was pretty straightforward - I assume you'll have no problems here. &lt;br /&gt;
&lt;br /&gt;
Go into the freebios/util/sis directory and build the 'flash_on' utility by doing: &lt;br /&gt;
make flash_on&lt;br /&gt;
&lt;br /&gt;
Copy the 'erase' and 'flash_on' utilities which you just built into your search path (I put them into /usr/local/sbin) &lt;br /&gt;
&lt;br /&gt;
This is the point where you are grateful you got yourself a 32-pin ZIF socket and plugged it into your motherboard. &lt;br /&gt;
&lt;br /&gt;
While the power is on and your system is running, release the lever on the ZIF socket, remove the original Flash Bios chip, replace it with a DoC (check the orientation ! The notch in the end of the chip goes at the lever end of the socket), and secure it in place with the lever. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run the command&lt;br /&gt;
&lt;br /&gt;
 ./burn_mtd&lt;br /&gt;
&lt;br /&gt;
 and with any luck it will program a LinuxBios chip for you ! &lt;br /&gt;
&lt;br /&gt;
The output of burn_mtd should look like this: &lt;br /&gt;
&lt;br /&gt;
# ./burn_mtd&lt;br /&gt;
rmmod: module docprobe is not loaded&lt;br /&gt;
rmmod: module doc2001 is not loaded&lt;br /&gt;
rmmod: module docecc is not loaded&lt;br /&gt;
11+1 records in&lt;br /&gt;
12+0 records out&lt;br /&gt;
0+1 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
Erase Total 1024 Units&lt;br /&gt;
Performing Flash Erase of length 8192 at offset 0x7fe000 done&lt;br /&gt;
1+0 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
1+0 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
126+0 records in&lt;br /&gt;
126+0 records out&lt;br /&gt;
1536+0 records in&lt;br /&gt;
1536+0 records out&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
 If at this stage you get the following instead: &lt;br /&gt;
# ./burn_mtd&lt;br /&gt;
rmmod: module docprobe is not loaded&lt;br /&gt;
rmmod: module doc2001 is not loaded&lt;br /&gt;
rmmod: module docecc is not loaded&lt;br /&gt;
11+1 records in&lt;br /&gt;
12+0 records out&lt;br /&gt;
0+1 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
File open error&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
then you should check that you selected the correct MTD options when building your development kernel (you did reboot after building that so you're running it now, right ?), and also that you edited the file /usr/src/linux/drivers/mtd/devices/docprobe.c to undefine DOC_SINGLE_DRIVER before building that kernel. &lt;br /&gt;
&lt;br /&gt;
 Press reset. &lt;br /&gt;
&lt;br /&gt;
If your system reboots and you see a penguin in the top corner of your screen instead of an AMI or Award Bios startup message, then you should jump up and down, punch the air, say things like &amp;quot;Wow!&amp;quot;, and generally be pleased with yourself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problems?&lt;br /&gt;
&lt;br /&gt;
Do not worry if bits of the system do seem to get started properly (eg hard disk, ethernet, keyboard, root filing system...). They can almost certainly get sorted out later. &lt;br /&gt;
&lt;br /&gt;
If you do not get a penguin on your screen (in fact, you get nothing at all), then try plugging a serial cable into your RS232 port (the M810LR boards only have one RS232 port), connect a terminal emulator set to 115200 baud, 8 bits, no parity, and press reset again. You should get some debugging information and general startup message out of the serial port which might help you or someone else to work out what's not quite right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If absolutely nothing happens, then it's possible that you haven't got a suitable image burned into the DoC, so power off the motherboard, remove the DoC and put the original Bios back in again, power the system back up, and see if you've missed something from the above instructions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you think I've missed something from these instructions, then please email me so I can update them for other users. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For general help with LinuxBios, there is a current mailing list at http://www.clustermatic.org/mailman/listinfo/linuxbios and archives of earlier lists at http://www.acl.lanl.gov/linuxbios/faq/archive and http://www.missl.cs.umd.edu/archives/linuxbios. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Good luck. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Antony Stone.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/PCCHIPS_M810LR</id>
		<title>PCCHIPS M810LR</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/PCCHIPS_M810LR"/>
				<updated>2005-03-01T17:22:52Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My experience getting LinuxBios working on a PC-Chips M810LR motherboard with an M-Systems Millennium MD-2800-D08 Disk-on-Chip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 by Antony Stone &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Background&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I first came across LinuxBios at the LBW workshop at Doolin, Ireland, and it seemed like such a great project that I just wanted to get home and build one of my own. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to Lance Davis and John Hearns for supplying hardware, Bill Boughton and Richard Russon for persevering with the software, and Chuck Moss for supplying some DoCs to play with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Even better, I recognised the PC-Chips motherboard they were using there - an M810LMR, and I knew I had two of these in systems already. So all I had to do was get myself a Disk-on-Chip device, and I'd have an instant-booting system, right ? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Well, things were not quite so simple as that, so after managing to get my system working from a combination of: &lt;br /&gt;
&lt;br /&gt;
reading what documentation I could find &lt;br /&gt;
knowing that I'd seen one working already &lt;br /&gt;
guesswork and reading bits of the source code &lt;br /&gt;
invaluable help and assistance from Ron Minnich and Andrew Ip &lt;br /&gt;
&lt;br /&gt;
I decided to write up my experiences to let other people know what I had to do to get things working, in the hope that this may make it easier for other people later on. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vendors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 It seems that PC-Chips have recently (August 2002) decided to rename their motherboard product range, so this is going to lead to even more confusion over which particular board you are working with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, PC-Chips does appear to be one of the more helpful motherboard vendors as far as the LinuxBios project is concerned, and they certainly do seem to make some good value-for-money highly-integrated motherboards. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Disk-on-Chip devices are something I'd never worked with before, and I had no idea where to get them from, either. I live in the UK, so I simply went to M-Systems' website and looked for UK or European distributors. There were two distributors listed for the UK, so I phoned them up, and bought three MD-2800-D08 devices from one of them. I have my own company, so I qualified as a trade customer. I have no idea where you would buy these as a private individual, but I'll stick my neck out here and say that anyone who has trouble getting the Millennium DoC devices in the UK can email me and I'll try to help. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As well as PC-Chips renumbering their motherboards, it also turns out that M-Systems are discontinuing the MD-2800 series and replacing them with the MD-2802 range, which are apparently &amp;quot;hardware and software interchangeable&amp;quot;. The MD-2800 devices are being discontinued, but the MD-2802 should work identically in all designs. I bought the last three MD-2800s the supplier had :-) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, I had a motherboard, and a Disk-on-Chip device. How to get LinuxBios up and running ? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first thing is to read the LinuxBios FAQ and the documentation for the SiS630 motherboards. This should give you a good idea of the overall process, and the steps involved. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The steps listed in the documentation are:&lt;br /&gt;
(Note: the following list should be numbered from 0 to 8 (as should the next list further down) for consistency with the original documentation. If your browser shows a list numbered from 1 to 9, you may want to consider updating it.) &lt;br /&gt;
&lt;br /&gt;
Get Linux installed on your LinuxBios machine &lt;br /&gt;
&lt;br /&gt;
Get LinuxBios source from the sourceforge &lt;br /&gt;
&lt;br /&gt;
Get a 2.4 kernel, patch it, then build it &lt;br /&gt;
&lt;br /&gt;
Configure and build LinuxBios &lt;br /&gt;
&lt;br /&gt;
Get the MTD utilities from http://www.linux-mtd.infradead.org and build the 'erase' utility &lt;br /&gt;
&lt;br /&gt;
Set up the 'flash_on' program in your path &lt;br /&gt;
&lt;br /&gt;
Remove the Bios from its socket and put a Disk-on-Chip in its place &lt;br /&gt;
&lt;br /&gt;
Burn the LinuxBios image into the Disk-on-Chip &lt;br /&gt;
&lt;br /&gt;
Hit reset. &lt;br /&gt;
&lt;br /&gt;
The details&lt;br /&gt;
&lt;br /&gt;
Step 0 should be easy enough for people who are attempting LinuxBios in the first place, however note that the kernel you are running must have support for MTD (Memory Technology Devices), which most people won't have turned on as standard. &lt;br /&gt;
&lt;br /&gt;
Therefore you should recompile your kernel on your machine with modules enabled (I generally don't use a modular kernel, but for programming the DoC devices in the Bios socket of the motherboard, you have to run a command before loading the DoC modules, therefore you can't compile this support directly into the kernel), and support for the Millennium DoC devices. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I generally use 'make menuconfig' to configure my kernel; here are the options you need to select (accurate for a 2.4.19 kernel) in order to build LinuxBios into a DoC device: &lt;br /&gt;
&lt;br /&gt;
Loadable module support&lt;br /&gt;
[*] Enable loadable module support&lt;br /&gt;
[ ]   Set version information on all module symbols&lt;br /&gt;
[*]   Kernel module loader&lt;br /&gt;
&lt;br /&gt;
Memory Technology Devices (MTD)&lt;br /&gt;
&amp;lt;M&amp;gt; Memory Technology Device (MTD) support&lt;br /&gt;
[ ] Debugging&lt;br /&gt;
&amp;lt; &amp;gt;   MTD partitioning support&lt;br /&gt;
&amp;lt; &amp;gt;   MTD concatenating support&lt;br /&gt;
--- User Modules and Transition Layers&lt;br /&gt;
&amp;lt;M&amp;gt;   Direct char device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   Caching block device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   Readonly block device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   FTL (Flash Transition Layer) support&lt;br /&gt;
&amp;lt; &amp;gt;   NFTL (NAND Flash Transition Layer) support&lt;br /&gt;
RAM/ROM/Flash chip drivers  ---&amp;gt;&lt;br /&gt;
Mapping drivers for chip access  ---&amp;gt;&lt;br /&gt;
Self-contained MTD device drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt; &amp;gt;   Ramix PMC551 PCI Mezzanine RAM card support&lt;br /&gt;
&amp;lt; &amp;gt;   Uncached system RAM&lt;br /&gt;
&amp;lt; &amp;gt;   Test driver using RAM&lt;br /&gt;
&amp;lt; &amp;gt;   MTD emulation using block device&lt;br /&gt;
--- Disk-On-Chip Device Drivers&lt;br /&gt;
&amp;lt; &amp;gt;   M-Systems Disk-On-Chip 1000&lt;br /&gt;
&amp;lt; &amp;gt;   M-Systems Disk-On-Chip 2000 and Millennium&lt;br /&gt;
&amp;lt;M&amp;gt;   M-Systems Disk-On-Chip Millennium-only alternative driver&lt;br /&gt;
[*]     Advanced detection options for DiskOnChip&lt;br /&gt;
(0)     Physical address of DiskOnChip&lt;br /&gt;
[*]     Probe high addresses&lt;br /&gt;
[ ]     Probe for 0x55 0xAA BIOS Extension Signature&lt;br /&gt;
&lt;br /&gt;
NAND Flash Device Drivers  ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 There is also a highly impressive 'gotcha' in the MTD driver support - you must edit one of the kernel source files before compiling with MTD support, in order to be able to write (ie erase or program) the DoC devices. If you do not do this you will get errors when you try to erase or program the device, such as: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/dev/mtd0: No such device&lt;br /&gt;
/dev/mtd0: Bad file descriptor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The change required is in /usr/src/linux/drivers/mtd/devices/docprobe.c &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Change the line which reads: &lt;br /&gt;
&lt;br /&gt;
#define DOC_SINGLE_DRIVER&lt;br /&gt;
&lt;br /&gt;
 so that it becomes: &lt;br /&gt;
#undef DOC_SINGLE_DRIVER&lt;br /&gt;
&lt;br /&gt;
 You may want to read the comment just above the line you're editing, and be grateful that someone told you where to find this file to change it.... &lt;br /&gt;
&lt;br /&gt;
You also need to have Python installed on your system, because the LinuxBios build process is based around a Python program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is also highly recommended that you install a 32-pin ZIF (Zero Insertion Force) socket on your motherboard, because later on you will need to swap chips in the Bios socket while the motherboard is powered on. This is not something you want to make any mistakes with, eg using a metal tool, getting the Bios or DoC pins misaligned or bent, shorting out some nearby components or connectors... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the orientation of the Bios chip in its socket (there is a notch at one end, or a dot in one corner, of the chip), remove the chip, and plug a 32-pin ZIF socket into the motherboard socket (you will probably need to bend the pins of some nearby connectors to get it to fit - I found an unused 3-pin fan connector in the way). Place the lever of the ZIF socket at the end where the notch or dot was on the Bios chip. Make sure you plug the ZIF socket cleanly into all 32 holes on the socket on the motherboard - it's easy to miss a couple of pins at one end and get the whole thing moved along one place. You will probably want to do this with the motherboard not installed in a case, so you can look underneath the ZIF socket as you are inserting it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the ZIF socket is in place, lift the lever, insert the original Bios chip (notch or dot at the lever end of the socket) and lower the lever to secure the chip in place. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you see the usual Bios startup screen when you power on your motherboard, then you know you've done this bit correctly, and you can easily swap the chips over later on in the instructions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get the LinuxBios source by CVS: &lt;br /&gt;
&lt;br /&gt;
export CVS_RSH=ssh&lt;br /&gt;
cvs -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios login&lt;br /&gt;
cvs -z3 -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios co freebios&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 (Press return at the password prompt and ignore errors about &amp;quot;failed to open ./cvspass for reading&amp;quot; and even &amp;quot;login aborted: fatal error: exiting&amp;quot;. Press on regardless.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before you get a fresh kernel source to patch with LinuxBios, check the LinuxBios kernel patches to see which kernel version is supported for your motherboard / chipset. You may be able to apply the patches to a different kernel, but at this stage in the game it's probably best to build an old kernel strictly by the instructions, and make sure you can get LinuxBios working at all, and then afterwards you can try to bring the kernel up to the version you'd like it to be. &lt;br /&gt;
&lt;br /&gt;
I used kernel version 2.4.19 because (a) this was already installed on my machine, and (b) there was a linux-2.4.19-sis.patch file available, which matched my motherboard. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find the kernel patches in the FreeBios source you just downloaded from CVS by looking in freebios/src/kernel-patches This directory contains both the patches for the kernels, and also the config files for building the new kernel (note that not all these are guaranteed to work in all situations - you may need to look at other config files and make some manual adjustments to get your particular setup working). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the kernel patches and config files are for the kernel you will program into the DoC device and eventually boot your machine from. They may not be the best choice for the kernel you use to build LinuxBios and burn the DoC before trying to boot it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you build the kernel, use 'make bzImage' and then just leave the kernel where it is. LinuxBios will later look for the file /usr/src/linux/vmlinux &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LinuxBios was developed from an earlier project called FreeBios, and therefore the source code you have downloaded is in a directory called 'freebios' &lt;br /&gt;
&lt;br /&gt;
You need to create your own config file, and make the build images for programming into the DoC device, in a different directory so that they are not deleted when you update your copy of the source code from the CVS repository. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because of the way the directory names worked out, I chose to create a new directory called 'linuxbios' side by side with 'freebios', and built my DoC images in there. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is what I did to build LinuxBios: &lt;br /&gt;
&lt;br /&gt;
mkdir linuxbios&lt;br /&gt;
cd linuxbios&lt;br /&gt;
cp ../freebios/util/config/NLBConfig.py .&lt;br /&gt;
cp ../freebios/util/config/pcchips.config .&lt;br /&gt;
&lt;br /&gt;
 I then edited pcchips.config, making the following changes: &lt;br /&gt;
Removed 'single' from the end of the kernel commandline, because I wanted my machine to boot into standard multiuser mode &lt;br /&gt;
Added 'cpu k7' because I'm using an Athlon processor &lt;br /&gt;
Added 'option ENABLE_MII=1' to get the onboard ethernet working (Thanks to Andrew Ip for telling me how to do this) &lt;br /&gt;
Changed 'option HAVE_FRAMEBUFFER' to 'option HAVE_FRAMEBUFFER=1' (this eliminates a warning message later but is not essential) &lt;br /&gt;
&lt;br /&gt;
I also edited one of the LinuxBios source files in order to get the keyboard working on my motherboard (again, thanks to Andrew Ip for this): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the file freebios/src/arch/i386/lib/hardwaremain.c uncomment the function call keyboard_on() around line 344. If you do not do this, then when you finally boot your LinuxBios machine, you will get several hundred error messages &amp;quot;pc_keyb: controller jammed (0xFF)&amp;quot;, and your keyboard will not work. It will not stop your LinuxBios system from working, however - you will still be able to log in on the serial port, and ssh across the network. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I then ran the Python program to create the build files: &lt;br /&gt;
&lt;br /&gt;
python NLBConfig.py pcchips.config ~/freebios&lt;br /&gt;
&lt;br /&gt;
This creates a subdirectory within linuxbios (where you are now) called pcchips, and creates the following files in it: &lt;br /&gt;
&lt;br /&gt;
LinuxBIOSDoc.config&lt;br /&gt;
&lt;br /&gt;
Makefile&lt;br /&gt;
&lt;br /&gt;
Makefile.settings&lt;br /&gt;
&lt;br /&gt;
crt0_includes.h&lt;br /&gt;
&lt;br /&gt;
nsuperio.c&lt;br /&gt;
&lt;br /&gt;
Once you have these files, and you have compiled your target kernel (which is then sitting in /usr/src/linux/vmlinux), you can run the makefile and build your LinuxBios image: &lt;br /&gt;
&lt;br /&gt;
cd pcchips&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
Note that if this is not the first time you're building the image, you may want to do a 'make clean' before the 'make'. &lt;br /&gt;
&lt;br /&gt;
I then copied the 'burn_mtd' utility into the newly-created pcchips directory, because by default it looks in the current directory for the source files to burn into the DoC device, so there's a lot less typing if the utility is in the same place. &lt;br /&gt;
&lt;br /&gt;
cp ../../freebios/util/mtd/burn_mtd .&lt;br /&gt;
&lt;br /&gt;
I made a couple of changes to the burn_mtd utility, in order to match the filenames generated by the Makefile a few moments ago: &lt;br /&gt;
&lt;br /&gt;
Change the first two occurrences of 'vmlinux' (one in the comment on line 3, the other in 'linux=vmlinux.bin.gz' on line 16) to 'linux' (so that line 16 now reads 'linux=linux.bin.gz'). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building the MTD 'erase' utility was pretty straightforward - I assume you'll have no problems here. &lt;br /&gt;
&lt;br /&gt;
Go into the freebios/util/sis directory and build the 'flash_on' utility by doing: &lt;br /&gt;
make flash_on&lt;br /&gt;
&lt;br /&gt;
Copy the 'erase' and 'flash_on' utilities which you just built into your search path (I put them into /usr/local/sbin) &lt;br /&gt;
&lt;br /&gt;
This is the point where you are grateful you got yourself a 32-pin ZIF socket and plugged it into your motherboard. &lt;br /&gt;
&lt;br /&gt;
While the power is on and your system is running, release the lever on the ZIF socket, remove the original Flash Bios chip, replace it with a DoC (check the orientation ! The notch in the end of the chip goes at the lever end of the socket), and secure it in place with the lever. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run the command&lt;br /&gt;
&lt;br /&gt;
 ./burn_mtd&lt;br /&gt;
&lt;br /&gt;
 and with any luck it will program a LinuxBios chip for you ! &lt;br /&gt;
&lt;br /&gt;
The output of burn_mtd should look like this: &lt;br /&gt;
&lt;br /&gt;
# ./burn_mtd&lt;br /&gt;
rmmod: module docprobe is not loaded&lt;br /&gt;
rmmod: module doc2001 is not loaded&lt;br /&gt;
rmmod: module docecc is not loaded&lt;br /&gt;
11+1 records in&lt;br /&gt;
12+0 records out&lt;br /&gt;
0+1 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
Erase Total 1024 Units&lt;br /&gt;
Performing Flash Erase of length 8192 at offset 0x7fe000 done&lt;br /&gt;
1+0 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
1+0 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
126+0 records in&lt;br /&gt;
126+0 records out&lt;br /&gt;
1536+0 records in&lt;br /&gt;
1536+0 records out&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
 If at this stage you get the following instead: &lt;br /&gt;
# ./burn_mtd&lt;br /&gt;
rmmod: module docprobe is not loaded&lt;br /&gt;
rmmod: module doc2001 is not loaded&lt;br /&gt;
rmmod: module docecc is not loaded&lt;br /&gt;
11+1 records in&lt;br /&gt;
12+0 records out&lt;br /&gt;
0+1 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
File open error&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
then you should check that you selected the correct MTD options when building your development kernel (you did reboot after building that so you're running it now, right ?), and also that you edited the file /usr/src/linux/drivers/mtd/devices/docprobe.c to undefine DOC_SINGLE_DRIVER before building that kernel. &lt;br /&gt;
&lt;br /&gt;
 Press reset. &lt;br /&gt;
&lt;br /&gt;
If your system reboots and you see a penguin in the top corner of your screen instead of an AMI or Award Bios startup message, then you should jump up and down, punch the air, say things like &amp;quot;Wow!&amp;quot;, and generally be pleased with yourself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problems?&lt;br /&gt;
&lt;br /&gt;
Do not worry if bits of the system do seem to get started properly (eg hard disk, ethernet, keyboard, root filing system...). They can almost certainly get sorted out later. &lt;br /&gt;
&lt;br /&gt;
If you do not get a penguin on your screen (in fact, you get nothing at all), then try plugging a serial cable into your RS232 port (the M810LR boards only have one RS232 port), connect a terminal emulator set to 115200 baud, 8 bits, no parity, and press reset again. You should get some debugging information and general startup message out of the serial port which might help you or someone else to work out what's not quite right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If absolutely nothing happens, then it's possible that you haven't got a suitable image burned into the DoC, so power off the motherboard, remove the DoC and put the original Bios back in again, power the system back up, and see if you've missed something from the above instructions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you think I've missed something from these instructions, then please email me so I can update them for other users. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For general help with LinuxBios, there is a current mailing list at http://www.clustermatic.org/mailman/listinfo/linuxbios and archives of earlier lists at http://www.acl.lanl.gov/linuxbios/faq/archive and http://www.missl.cs.umd.edu/archives/linuxbios. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Good luck. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Antony Stone.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/PCCHIPS_M810LR</id>
		<title>PCCHIPS M810LR</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/PCCHIPS_M810LR"/>
				<updated>2005-03-01T17:20:46Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My experience getting LinuxBios working on a PC-Chips M810LR motherboard with an M-Systems Millennium MD-2800-D08 Disk-on-Chip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 by Antony Stone &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Background&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 I first came across LinuxBios at the LBW workshop at Doolin, Ireland, and it seemed like such a great project that I just wanted to get home and build one of my own. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to Lance Davis and John Hearns for supplying hardware, Bill Boughton and Richard Russon for persevering with the software, and Chuck Moss for supplying some DoCs to play with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Even better, I recognised the PC-Chips motherboard they were using there - an M810LMR, and I knew I had two of these in systems already. So all I had to do was get myself a Disk-on-Chip device, and I'd have an instant-booting system, right ? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Well, things were not quite so simple as that, so after managing to get my system working from a combination of: &lt;br /&gt;
&lt;br /&gt;
reading what documentation I could find &lt;br /&gt;
knowing that I'd seen one working already &lt;br /&gt;
guesswork and reading bits of the source code &lt;br /&gt;
invaluable help and assistance from Ron Minnich and Andrew Ip &lt;br /&gt;
&lt;br /&gt;
I decided to write up my experiences to let other people know what I had to do to get things working, in the hope that this may make it easier for other people later on. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vendors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 It seems that PC-Chips have recently (August 2002) decided to rename their motherboard product range, so this is going to lead to even more confusion over which particular board you are working with. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, PC-Chips does appear to be one of the more helpful motherboard vendors as far as the LinuxBios project is concerned, and they certainly do seem to make some good value-for-money highly-integrated motherboards. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Disk-on-Chip devices are something I'd never worked with before, and I had no idea where to get them from, either. I live in the UK, so I simply went to M-Systems' website and looked for UK or European distributors. There were two distributors listed for the UK, so I phoned them up, and bought three MD-2800-D08 devices from one of them. I have my own company, so I qualified as a trade customer. I have no idea where you would buy these as a private individual, but I'll stick my neck out here and say that anyone who has trouble getting the Millennium DoC devices in the UK can email me and I'll try to help. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As well as PC-Chips renumbering their motherboards, it also turns out that M-Systems are discontinuing the MD-2800 series and replacing them with the MD-2802 range, which are apparently &amp;quot;hardware and software interchangeable&amp;quot;. The MD-2800 devices are being discontinued, but the MD-2802 should work identically in all designs. I bought the last three MD-2800s the supplier had :-) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting started&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 So, I had a motherboard, and a Disk-on-Chip device. How to get LinuxBios up and running ? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first thing is to read the LinuxBios FAQ and the documentation for the SiS630 motherboards. This should give you a good idea of the overall process, and the steps involved. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The steps listed in the documentation are:&lt;br /&gt;
 (Note: the following list should be numbered from 0 to 8 (as should the next list further down) for consistency with the original documentation. If your browser shows a list numbered from 1 to 9, you may want to consider updating it.) &lt;br /&gt;
&lt;br /&gt;
Get Linux installed on your LinuxBios machine &lt;br /&gt;
Get LinuxBios source from the sourceforge &lt;br /&gt;
Get a 2.4 kernel, patch it, then build it &lt;br /&gt;
Configure and build LinuxBios &lt;br /&gt;
Get the MTD utilities from http://www.linux-mtd.infradead.org and build the 'erase' utility &lt;br /&gt;
Set up the 'flash_on' program in your path &lt;br /&gt;
Remove the Bios from its socket and put a Disk-on-Chip in its place &lt;br /&gt;
Burn the LinuxBios image into the Disk-on-Chip &lt;br /&gt;
Hit reset. &lt;br /&gt;
&lt;br /&gt;
The details&lt;br /&gt;
&lt;br /&gt;
Step 0 should be easy enough for people who are attempting LinuxBios in the first place, however note that the kernel you are running must have support for MTD (Memory Technology Devices), which most people won't have turned on as standard. &lt;br /&gt;
&lt;br /&gt;
Therefore you should recompile your kernel on your machine with modules enabled (I generally don't use a modular kernel, but for programming the DoC devices in the Bios socket of the motherboard, you have to run a command before loading the DoC modules, therefore you can't compile this support directly into the kernel), and support for the Millennium DoC devices. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I generally use 'make menuconfig' to configure my kernel; here are the options you need to select (accurate for a 2.4.19 kernel) in order to build LinuxBios into a DoC device: &lt;br /&gt;
&lt;br /&gt;
Loadable module support&lt;br /&gt;
[*] Enable loadable module support&lt;br /&gt;
[ ]   Set version information on all module symbols&lt;br /&gt;
[*]   Kernel module loader&lt;br /&gt;
&lt;br /&gt;
Memory Technology Devices (MTD)&lt;br /&gt;
&amp;lt;M&amp;gt; Memory Technology Device (MTD) support&lt;br /&gt;
[ ] Debugging&lt;br /&gt;
&amp;lt; &amp;gt;   MTD partitioning support&lt;br /&gt;
&amp;lt; &amp;gt;   MTD concatenating support&lt;br /&gt;
--- User Modules and Transition Layers&lt;br /&gt;
&amp;lt;M&amp;gt;   Direct char device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   Caching block device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   Readonly block device access to MTD devices&lt;br /&gt;
&amp;lt; &amp;gt;   FTL (Flash Transition Layer) support&lt;br /&gt;
&amp;lt; &amp;gt;   NFTL (NAND Flash Transition Layer) support&lt;br /&gt;
RAM/ROM/Flash chip drivers  ---&amp;gt;&lt;br /&gt;
Mapping drivers for chip access  ---&amp;gt;&lt;br /&gt;
Self-contained MTD device drivers  ---&amp;gt;&lt;br /&gt;
&amp;lt; &amp;gt;   Ramix PMC551 PCI Mezzanine RAM card support&lt;br /&gt;
&amp;lt; &amp;gt;   Uncached system RAM&lt;br /&gt;
&amp;lt; &amp;gt;   Test driver using RAM&lt;br /&gt;
&amp;lt; &amp;gt;   MTD emulation using block device&lt;br /&gt;
--- Disk-On-Chip Device Drivers&lt;br /&gt;
&amp;lt; &amp;gt;   M-Systems Disk-On-Chip 1000&lt;br /&gt;
&amp;lt; &amp;gt;   M-Systems Disk-On-Chip 2000 and Millennium&lt;br /&gt;
&amp;lt;M&amp;gt;   M-Systems Disk-On-Chip Millennium-only alternative driver&lt;br /&gt;
[*]     Advanced detection options for DiskOnChip&lt;br /&gt;
(0)     Physical address of DiskOnChip&lt;br /&gt;
[*]     Probe high addresses&lt;br /&gt;
[ ]     Probe for 0x55 0xAA BIOS Extension Signature&lt;br /&gt;
&lt;br /&gt;
NAND Flash Device Drivers  ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 There is also a highly impressive 'gotcha' in the MTD driver support - you must edit one of the kernel source files before compiling with MTD support, in order to be able to write (ie erase or program) the DoC devices. If you do not do this you will get errors when you try to erase or program the device, such as: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/dev/mtd0: No such device&lt;br /&gt;
/dev/mtd0: Bad file descriptor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 The change required is in /usr/src/linux/drivers/mtd/devices/docprobe.c &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Change the line which reads: &lt;br /&gt;
&lt;br /&gt;
#define DOC_SINGLE_DRIVER&lt;br /&gt;
&lt;br /&gt;
 so that it becomes: &lt;br /&gt;
#undef DOC_SINGLE_DRIVER&lt;br /&gt;
&lt;br /&gt;
 You may want to read the comment just above the line you're editing, and be grateful that someone told you where to find this file to change it.... &lt;br /&gt;
&lt;br /&gt;
You also need to have Python installed on your system, because the LinuxBios build process is based around a Python program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is also highly recommended that you install a 32-pin ZIF (Zero Insertion Force) socket on your motherboard, because later on you will need to swap chips in the Bios socket while the motherboard is powered on. This is not something you want to make any mistakes with, eg using a metal tool, getting the Bios or DoC pins misaligned or bent, shorting out some nearby components or connectors... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the orientation of the Bios chip in its socket (there is a notch at one end, or a dot in one corner, of the chip), remove the chip, and plug a 32-pin ZIF socket into the motherboard socket (you will probably need to bend the pins of some nearby connectors to get it to fit - I found an unused 3-pin fan connector in the way). Place the lever of the ZIF socket at the end where the notch or dot was on the Bios chip. Make sure you plug the ZIF socket cleanly into all 32 holes on the socket on the motherboard - it's easy to miss a couple of pins at one end and get the whole thing moved along one place. You will probably want to do this with the motherboard not installed in a case, so you can look underneath the ZIF socket as you are inserting it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the ZIF socket is in place, lift the lever, insert the original Bios chip (notch or dot at the lever end of the socket) and lower the lever to secure the chip in place. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you see the usual Bios startup screen when you power on your motherboard, then you know you've done this bit correctly, and you can easily swap the chips over later on in the instructions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get the LinuxBios source by CVS: &lt;br /&gt;
&lt;br /&gt;
export CVS_RSH=ssh&lt;br /&gt;
cvs -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios login&lt;br /&gt;
cvs -z3 -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios co freebios&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 (Press return at the password prompt and ignore errors about &amp;quot;failed to open ./cvspass for reading&amp;quot; and even &amp;quot;login aborted: fatal error: exiting&amp;quot;. Press on regardless.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before you get a fresh kernel source to patch with LinuxBios, check the LinuxBios kernel patches to see which kernel version is supported for your motherboard / chipset. You may be able to apply the patches to a different kernel, but at this stage in the game it's probably best to build an old kernel strictly by the instructions, and make sure you can get LinuxBios working at all, and then afterwards you can try to bring the kernel up to the version you'd like it to be. &lt;br /&gt;
&lt;br /&gt;
I used kernel version 2.4.19 because (a) this was already installed on my machine, and (b) there was a linux-2.4.19-sis.patch file available, which matched my motherboard. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find the kernel patches in the FreeBios source you just downloaded from CVS by looking in freebios/src/kernel-patches This directory contains both the patches for the kernels, and also the config files for building the new kernel (note that not all these are guaranteed to work in all situations - you may need to look at other config files and make some manual adjustments to get your particular setup working). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the kernel patches and config files are for the kernel you will program into the DoC device and eventually boot your machine from. They may not be the best choice for the kernel you use to build LinuxBios and burn the DoC before trying to boot it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you build the kernel, use 'make bzImage' and then just leave the kernel where it is. LinuxBios will later look for the file /usr/src/linux/vmlinux &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LinuxBios was developed from an earlier project called FreeBios, and therefore the source code you have downloaded is in a directory called 'freebios' &lt;br /&gt;
&lt;br /&gt;
You need to create your own config file, and make the build images for programming into the DoC device, in a different directory so that they are not deleted when you update your copy of the source code from the CVS repository. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because of the way the directory names worked out, I chose to create a new directory called 'linuxbios' side by side with 'freebios', and built my DoC images in there. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is what I did to build LinuxBios: &lt;br /&gt;
&lt;br /&gt;
mkdir linuxbios&lt;br /&gt;
cd linuxbios&lt;br /&gt;
cp ../freebios/util/config/NLBConfig.py .&lt;br /&gt;
cp ../freebios/util/config/pcchips.config .&lt;br /&gt;
&lt;br /&gt;
 I then edited pcchips.config, making the following changes: &lt;br /&gt;
Removed 'single' from the end of the kernel commandline, because I wanted my machine to boot into standard multiuser mode &lt;br /&gt;
Added 'cpu k7' because I'm using an Athlon processor &lt;br /&gt;
Added 'option ENABLE_MII=1' to get the onboard ethernet working (Thanks to Andrew Ip for telling me how to do this) &lt;br /&gt;
Changed 'option HAVE_FRAMEBUFFER' to 'option HAVE_FRAMEBUFFER=1' (this eliminates a warning message later but is not essential) &lt;br /&gt;
&lt;br /&gt;
I also edited one of the LinuxBios source files in order to get the keyboard working on my motherboard (again, thanks to Andrew Ip for this): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the file freebios/src/arch/i386/lib/hardwaremain.c uncomment the function call keyboard_on() around line 344. If you do not do this, then when you finally boot your LinuxBios machine, you will get several hundred error messages &amp;quot;pc_keyb: controller jammed (0xFF)&amp;quot;, and your keyboard will not work. It will not stop your LinuxBios system from working, however - you will still be able to log in on the serial port, and ssh across the network. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I then ran the Python program to create the build files: &lt;br /&gt;
&lt;br /&gt;
python NLBConfig.py pcchips.config ~/freebios&lt;br /&gt;
&lt;br /&gt;
 This creates a subdirectory within linuxbios (where you are now) called pcchips, and creates the following files in it: &lt;br /&gt;
LinuxBIOSDoc.config&lt;br /&gt;
Makefile&lt;br /&gt;
Makefile.settings&lt;br /&gt;
crt0_includes.h&lt;br /&gt;
nsuperio.c&lt;br /&gt;
&lt;br /&gt;
 Once you have these files, and you have compiled your target kernel (which is then sitting in /usr/src/linux/vmlinux), you can run the makefile and build your LinuxBios image: &lt;br /&gt;
cd pcchips&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
 Note that if this is not the first time you're building the image, you may want to do a 'make clean' before the 'make'. &lt;br /&gt;
&lt;br /&gt;
I then copied the 'burn_mtd' utility into the newly-created pcchips directory, because by default it looks in the current directory for the source files to burn into the DoC device, so there's a lot less typing if the utility is in the same place. &lt;br /&gt;
&lt;br /&gt;
cp ../../freebios/util/mtd/burn_mtd .&lt;br /&gt;
&lt;br /&gt;
 I made a couple of changes to the burn_mtd utility, in order to match the filenames generated by the Makefile a few moments ago: &lt;br /&gt;
&lt;br /&gt;
Change the first two occurrences of 'vmlinux' (one in the comment on line 3, the other in 'linux=vmlinux.bin.gz' on line 16) to 'linux' (so that line 16 now reads 'linux=linux.bin.gz'). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building the MTD 'erase' utility was pretty straightforward - I assume you'll have no problems here. &lt;br /&gt;
&lt;br /&gt;
Go into the freebios/util/sis directory and build the 'flash_on' utility by doing: &lt;br /&gt;
make flash_on&lt;br /&gt;
&lt;br /&gt;
 Copy the 'erase' and 'flash_on' utilities which you just built into your search path (I put them into /usr/local/sbin) &lt;br /&gt;
&lt;br /&gt;
This is the point where you are grateful you got yourself a 32-pin ZIF socket and plugged it into your motherboard. &lt;br /&gt;
&lt;br /&gt;
While the power is on and your system is running, release the lever on the ZIF socket, remove the original Flash Bios chip, replace it with a DoC (check the orientation ! The notch in the end of the chip goes at the lever end of the socket), and secure it in place with the lever. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run the command &lt;br /&gt;
./burn_mtd&lt;br /&gt;
&lt;br /&gt;
 and with any luck it will program a LinuxBios chip for you ! &lt;br /&gt;
&lt;br /&gt;
The output of burn_mtd should look like this: &lt;br /&gt;
&lt;br /&gt;
# ./burn_mtd&lt;br /&gt;
rmmod: module docprobe is not loaded&lt;br /&gt;
rmmod: module doc2001 is not loaded&lt;br /&gt;
rmmod: module docecc is not loaded&lt;br /&gt;
11+1 records in&lt;br /&gt;
12+0 records out&lt;br /&gt;
0+1 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
Erase Total 1024 Units&lt;br /&gt;
Performing Flash Erase of length 8192 at offset 0x7fe000 done&lt;br /&gt;
1+0 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
1+0 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
126+0 records in&lt;br /&gt;
126+0 records out&lt;br /&gt;
1536+0 records in&lt;br /&gt;
1536+0 records out&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
 If at this stage you get the following instead: &lt;br /&gt;
# ./burn_mtd&lt;br /&gt;
rmmod: module docprobe is not loaded&lt;br /&gt;
rmmod: module doc2001 is not loaded&lt;br /&gt;
rmmod: module docecc is not loaded&lt;br /&gt;
11+1 records in&lt;br /&gt;
12+0 records out&lt;br /&gt;
0+1 records in&lt;br /&gt;
1+0 records out&lt;br /&gt;
File open error&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
dd: opening '/dev/mtd0': No such device&lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
 then you should check that you selected the correct MTD options when building your development kernel (you did reboot after building that so you're running it now, right ?), and also that you edited the file /usr/src/linux/drivers/mtd/devices/docprobe.c to undefine DOC_SINGLE_DRIVER before building that kernel. &lt;br /&gt;
&lt;br /&gt;
Press reset. &lt;br /&gt;
&lt;br /&gt;
If your system reboots and you see a penguin in the top corner of your screen instead of an AMI or Award Bios startup message, then you should jump up and down, punch the air, say things like &amp;quot;Wow!&amp;quot;, and generally be pleased with yourself. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problems?&lt;br /&gt;
&lt;br /&gt;
 Do not worry if bits of the system do seem to get started properly (eg hard disk, ethernet, keyboard, root filing system...). They can almost certainly get sorted out later. &lt;br /&gt;
&lt;br /&gt;
If you do not get a penguin on your screen (in fact, you get nothing at all), then try plugging a serial cable into your RS232 port (the M810LR boards only have one RS232 port), connect a terminal emulator set to 115200 baud, 8 bits, no parity, and press reset again. You should get some debugging information and general startup message out of the serial port which might help you or someone else to work out what's not quite right. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If absolutely nothing happens, then it's possible that you haven't got a suitable image burned into the DoC, so power off the motherboard, remove the DoC and put the original Bios back in again, power the system back up, and see if you've missed something from the above instructions. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you think I've missed something from these instructions, then please email me so I can update them for other users. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For general help with LinuxBios, there is a current mailing list at http://www.clustermatic.org/mailman/listinfo/linuxbios and archives of earlier lists at http://www.acl.lanl.gov/linuxbios/faq/archive and http://www.missl.cs.umd.edu/archives/linuxbios. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Good luck. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Antony Stone.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/The_EPIA-M/MII</id>
		<title>The EPIA-M/MII</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/The_EPIA-M/MII"/>
				<updated>2005-03-01T17:18:40Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From nick.barker9@btinternet.com Wed Oct  6 10:56:16 2004&lt;br /&gt;
Date: Wed, 6 Oct 2004 06:47:08 +0100&lt;br /&gt;
From: Nick Barker &lt;br /&gt;
To: Ronald G. Minnich &lt;br /&gt;
Subject: EPIA-M / MII a large patch&lt;br /&gt;
&lt;br /&gt;
    [ The following text is in the &amp;quot;iso-8859-1&amp;quot; character set. ]&lt;br /&gt;
    [ Your display is set for the &amp;quot;UTF-8&amp;quot; character set.  ]&lt;br /&gt;
    [ Some special characters may be displayed incorrectly. ]&lt;br /&gt;
&lt;br /&gt;
Ron,&lt;br /&gt;
&lt;br /&gt;
As announced on the list, here is my patch for freebios2 - epia-m/mii&lt;br /&gt;
&lt;br /&gt;
The patch contains both bug fixes and new features as follows:&lt;br /&gt;
&lt;br /&gt;
- ACPI power management and interrupt routing&lt;br /&gt;
- Boot from onboard compact flash&lt;br /&gt;
- Legacy VGA Bios working&lt;br /&gt;
- mtrr's set up correctly for VGA&lt;br /&gt;
- AGP and GART set up correctly&lt;br /&gt;
- vt1211 h/w monitor, com ports, lpt and fdc enabled&lt;br /&gt;
- 1/2 speed baud rate problem resolved&lt;br /&gt;
&lt;br /&gt;
Caveat&lt;br /&gt;
The patch uses the memory setup code ported into C from version 1 for the&lt;br /&gt;
EPIA-M, but has been adjusted for 256Mb only - i.e. the size that I'm&lt;br /&gt;
currently using. This code, in northbridge/raminit.c, is an ugly hack to get&lt;br /&gt;
the system up and booted, and I do not particularly offer it as the 'final&lt;br /&gt;
solution'. I've always assumed that one day it would be replaced with proper&lt;br /&gt;
autodetection - a job for someone with access to the appropriate&lt;br /&gt;
documentation i.e. vt8623 datasheets.&lt;br /&gt;
&lt;br /&gt;
I have tried to restrict any changes to epia-m specific files, however there&lt;br /&gt;
are a few generic files that I have had to make some changes in,&lt;br /&gt;
particularly in the ACPI, vga bios and mtrr areas. These changes 'should' be&lt;br /&gt;
benign to other platforms.&lt;br /&gt;
&lt;br /&gt;
There are other areas which I consider 'hackish', in particular the setting&lt;br /&gt;
up of the cardbus bridge. This device is ignored altogether by the PCI&lt;br /&gt;
detection code because it has a header type of PCI to cardbus bridge (type 2&lt;br /&gt;
I think). Having failed to understand the intricacies of the pci detection&lt;br /&gt;
and configuration mechanism, I have resorted to setting up the bridge&lt;br /&gt;
manually, and with fixed memory resources, as annotated in the code.&lt;br /&gt;
&lt;br /&gt;
The Config.lb provided is set up for filo and legacy vga bios. In other&lt;br /&gt;
words it makes an image 192K big to which a captured vga bios should be&lt;br /&gt;
prepended.&lt;br /&gt;
&lt;br /&gt;
The patch is relative to the web based CVS snapshot of 20041004-1100.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ACPI power management and interrupt routing&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
I have added the code which creates three new ACPI tables, and sets up the&lt;br /&gt;
southbridge power management unit into ACPI mode.&lt;br /&gt;
&lt;br /&gt;
The new tables are the:&lt;br /&gt;
Fixed ACPI Description Table (FADT)&lt;br /&gt;
Firmware ACPI Control Structure (FACS)&lt;br /&gt;
Differentiated System Description Table (DSDT)&lt;br /&gt;
&lt;br /&gt;
The FADT mostly describes the power management unit, and is declared in&lt;br /&gt;
fadt.c in the mainboard/via/epia-m directory.&lt;br /&gt;
&lt;br /&gt;
The FACS is intended to provide non volatile memory to the ACPI system for&lt;br /&gt;
suspend to disk activities. However it is currently implemented as a zeroed&lt;br /&gt;
table. I have only included it because Linux ACPI complains if there isn't&lt;br /&gt;
one if a FADT has been provided.&lt;br /&gt;
&lt;br /&gt;
The DSDT describes the interrupt routing and power management capabilities&lt;br /&gt;
of devices, and is what Linux uses for interrupt routing if it can. The&lt;br /&gt;
DSDT, defined in mainboard/via/epia-m/dsdt.c is exactly that provided with&lt;br /&gt;
the original Award bios. It has been created using the following approximate&lt;br /&gt;
steps:&lt;br /&gt;
   1) Under Award Bios, 'cat /proc/acpi/dsdt &amp;gt; dsdt'&lt;br /&gt;
   2) Decompile dsdt with Intel's iasl - 'iasl -d dsdt'&lt;br /&gt;
   3) Compile to C table with Intel's iasl - 'iasl -tc dsdt.dsl'&lt;br /&gt;
   4) Copy output to mainboard/via/epia-m/dsdt.c&lt;br /&gt;
&lt;br /&gt;
The award dsdt may carry the same IPR situation as the VGA bios, and it&lt;br /&gt;
could be that the file dsdt.c should not be distributed with the code.&lt;br /&gt;
However it is easy enough to create your own using the steps above.&lt;br /&gt;
&lt;br /&gt;
The ACPI code seems to be fully functional - giving software off and reset,&lt;br /&gt;
as well as providing power button click events (the whole reason I wrote&lt;br /&gt;
this !!).&lt;br /&gt;
I assume the ACPI subsystem in Linux is also shifting the processor into S1&lt;br /&gt;
and S2 states, and doing other things that ACPI should do, but I haven't&lt;br /&gt;
confirmed that yet.&lt;br /&gt;
&lt;br /&gt;
Boot from onboard Compact Flash&lt;br /&gt;
-------------------------------&lt;br /&gt;
I have added a new device to the southbridge tree -&lt;br /&gt;
southbridge/ricoh/rl5c476, which is the setup code for the Ricoh cardbus&lt;br /&gt;
bridge found on the MII. I wasn't quite sure where to put it in the source&lt;br /&gt;
tree, but I guessed it was more like a southbridge than anything else.&lt;br /&gt;
&lt;br /&gt;
The code sets up a compact flash in the CF slot as an IDE drive based at&lt;br /&gt;
address 0x1e8, in other words the standard address for the third IDE&lt;br /&gt;
controller as used by Filo, Linux, and I guess Etherboot.&lt;br /&gt;
&lt;br /&gt;
The code is a bit clunky in as much as it allocates fixed addresses for&lt;br /&gt;
memory windows - which ought to be allocated by the pci detection code, but&lt;br /&gt;
I can't figure out how to make this happen.&lt;br /&gt;
&lt;br /&gt;
Filo detects the CF as drive 'hde' as long as filo has been compiled with&lt;br /&gt;
SUPPORT_PCI=1 commented out. With SUPPORT_PCI included, filo only searches&lt;br /&gt;
for PCI devices of the IDE controller type, whereas without it, filo will&lt;br /&gt;
check its standard addresses for an IDE controller.&lt;br /&gt;
&lt;br /&gt;
You can configure Linux to support the CF in one of two ways, depending upon&lt;br /&gt;
your needs:&lt;br /&gt;
&lt;br /&gt;
- Standard IDE disk support. Just let the standard IDE detection code in&lt;br /&gt;
Linux pick up the CF as a standard device. This has the advantage of being&lt;br /&gt;
quick and easy to get going. However if you then start up pcmcia utils to&lt;br /&gt;
deal with the pcmcia slot, you will run into difficulties as the&lt;br /&gt;
pcmcia-utils package resets the CF slot. There might be options you can use&lt;br /&gt;
to instruct pcmcia-utils to ignore the CF slot entirely, but I haven't found&lt;br /&gt;
them yet.&lt;br /&gt;
&lt;br /&gt;
- PCMCIA-UTILS support. Firstly you have to tell the standard IDE detection&lt;br /&gt;
code NOT to look for the third IDE controller, do so with a linux command&lt;br /&gt;
line option of 'ide2=noprobe'. Next you need to set up an initrd. The&lt;br /&gt;
pcmcia-utils HOWTO describes how to do this with 'pcinitrd'. In addition you&lt;br /&gt;
have to add the program 'resetcf' from freebios2/util directory to the&lt;br /&gt;
initrd, and make sure it is called just before the socket driver is loaded&lt;br /&gt;
in the linuxrc file. This step is necessary because the yenta socket driver&lt;br /&gt;
does not correctly clear down the state of the CF socket as left by&lt;br /&gt;
freebios2 (detail - yenta socket driver never clears the io offset used by&lt;br /&gt;
freebios2 to make the CF look like /dev/hde - I guess it normally relies on&lt;br /&gt;
the power on default being zero!!!). My linux command line in filo looks&lt;br /&gt;
like:&lt;br /&gt;
&lt;br /&gt;
AUTOBOOT_FILE = &amp;quot;hde:/vmlinuz initrd=hde:/initrd.gz root=/dev/hde&lt;br /&gt;
console=tty0 ide2=noprobe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Legacy VGA BIOS&lt;br /&gt;
---------------&lt;br /&gt;
I struggled for some time getting the VGA bios to work properly, as others&lt;br /&gt;
on the mailing list seem to be also. Here is a list of my findings:&lt;br /&gt;
&lt;br /&gt;
Some people are finding that the bios initialisation code is crashing with a&lt;br /&gt;
random interrupt vector. This always seemed to happen at cs:ip=c000:0188. A&lt;br /&gt;
look at the actual instruction at that location reveals that it is an STI&lt;br /&gt;
instruction which enables hardware interrupt processing, not an INTXX&lt;br /&gt;
instruction. On freebios2, the i8259 interrupt controller is never&lt;br /&gt;
initialised, so it is understandable that if the vga bios has been playing&lt;br /&gt;
with interrupts that after the STI intruction a random interupt vector is&lt;br /&gt;
issued by the i8259 - and hence the problems as reported. My fix is to&lt;br /&gt;
include the version 1 i8259 initialisation code, and that allows the bios to&lt;br /&gt;
finish.&lt;br /&gt;
&lt;br /&gt;
The next problem encounterred was that after vga initialisation, the screen&lt;br /&gt;
didn't come on. After groping around the XFree sources for the CLE266 I&lt;br /&gt;
discovered a bios call to select which output device(s) to enable, and have&lt;br /&gt;
added a call to that function to turn on the standard console. Anyone&lt;br /&gt;
wanting the TV output or LCD panel output are recommended to look at the&lt;br /&gt;
Xserver sources for that bios call.&lt;br /&gt;
&lt;br /&gt;
The final problem was that the freebios2 code was setting up the video&lt;br /&gt;
memory window at 0xa0000 - 0xbffff as cacheable in its fixed mtrr code. This&lt;br /&gt;
was resolved by getting sizeram() in northbridge.c to break the main area of&lt;br /&gt;
memory into 2 chuncks either side of this window.&lt;br /&gt;
&lt;br /&gt;
MTRR's for VGA&lt;br /&gt;
--------------&lt;br /&gt;
I have added code to create correct mtrr's for the VGA framebuffer and the&lt;br /&gt;
AGP. This has meant some minor changes in mtrr.c&lt;br /&gt;
&lt;br /&gt;
AGP port and GART&lt;br /&gt;
-----------------&lt;br /&gt;
The AGP bridge seems to work correctly after setting it up like award. The&lt;br /&gt;
GART window is hard coded at address 0xd0000000, as per award, and&lt;br /&gt;
could/should be set by the pci_device allocation code. Linux AGP support&lt;br /&gt;
does not crash the system and I believe it to be fully working.&lt;br /&gt;
&lt;br /&gt;
VT1211&lt;br /&gt;
------&lt;br /&gt;
I have created a new superio device for the vt1211, which sets up the&lt;br /&gt;
hardware monitor, com ports, lpt and fdc. The h/w monitor set up values are&lt;br /&gt;
taken from v1. None of this has been tested beyond Linux correctly spotting&lt;br /&gt;
the devices.&lt;br /&gt;
&lt;br /&gt;
1/2 speed baud rate problem&lt;br /&gt;
---------------------------&lt;br /&gt;
I believe that the 1/2 speed baud rate problem is down to trying to do&lt;br /&gt;
things before the southbridge and certain clocks have fully settled down. By&lt;br /&gt;
putting a delay after the rtc_init() and before trying to use the SMB bus,&lt;br /&gt;
the problem seems to be rectified. The counter in the delay loop could be&lt;br /&gt;
optimised if anyone out there has the desire - 1000 isn't enough, whilst&lt;br /&gt;
5000 is.&lt;br /&gt;
&lt;br /&gt;
And Finally&lt;br /&gt;
-----------&lt;br /&gt;
As an indicator that the BIOS is going, I've got the power LED to blink&lt;br /&gt;
rapidly from early on, until the BIOS has just about finished its job. Could&lt;br /&gt;
be first thing for newcomers to look for when they don't get any other form&lt;br /&gt;
of output.&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Technoland_SBC_710</id>
		<title>Technoland SBC 710</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Technoland_SBC_710"/>
				<updated>2005-03-01T16:21:19Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is intended to help people bring up new LinuxBIOS targets. Our first example will be the Technoland SBC 710, since it has a set of chips that are for the most part already supported. &lt;br /&gt;
&lt;br /&gt;
'''Bringing up LinuxBIOS on the SBC710'''&lt;br /&gt;
&lt;br /&gt;
 The SBC710 is sold by Technoland and consists of a PGA370 socket for support of Pentium 3s and Celerons; a 440BX northbridge; a PIIX4e South Bridge; a C&amp;amp;T video chip; and two winbond SuperIO chips (83977EF and 83877TF). As it happens most of these chips are supported by LinuxBIOS, which is one reason we chose the board. Another reason we chose the board is because PC motherboard vendors are in the habit of hiding the things you need to know to get LinuxBIOS working. This card, we are finding, is an open book. It is as a result pretty easy to get it going. Finally, it is cheap: $380 without CPU or memory and about $600 with PIII/800 CPU and 256MB memory. Getting LinuxBIOS up involves several steps: &lt;br /&gt;
&lt;br /&gt;
Enumerating the chips on the board &lt;br /&gt;
&lt;br /&gt;
Figuring out the FLASH type to be used, given the sockets available &lt;br /&gt;
&lt;br /&gt;
Figure out if there are devices in the 640K-960K (0xa0000-0xeffff) space &lt;br /&gt;
&lt;br /&gt;
Determining how to configure DRAM&lt;br /&gt;
 &lt;br /&gt;
Determining if and how to run the serial ports for debug messages &lt;br /&gt;
&lt;br /&gt;
Building in any new chipset support&lt;br /&gt;
 &lt;br /&gt;
Setting up a &amp;quot;mainboard&amp;quot; tree for LinuxBIOS in the LinuxBIOS source&lt;br /&gt;
 &lt;br /&gt;
Building a LinuxBIOS for your target &lt;br /&gt;
&lt;br /&gt;
Burning a FLASH or DoC part &lt;br /&gt;
&lt;br /&gt;
Running it; fixing problems&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Enumerating the chips on the board &lt;br /&gt;
&lt;br /&gt;
For the SBC 710, the chips we need to be concerned with are: Intel 82443BX North Bridge (also known as 440BX); Intel PIIX4E South Bridge; C&amp;amp;T video chip; and two Winbond Super IO chips, the 83977EF and the 83877TF. All of these chips except the 83877 and the C&amp;amp;T chip are supported. We don't care about the C&amp;amp;T chip because we don't do graphics in LinuxBIOS (yet). We will have to add support for the 83877 later; we'll go into that. &lt;br /&gt;
&lt;br /&gt;
Figuring out the FLASH type to be used, given the sockets available &lt;br /&gt;
&lt;br /&gt;
The SBC 710 supports BOTH a 256 KB (4 Mbit) flash part and a DoC flash part. This is an ideal situation. We can boot a fairly complex LinuxBIOS from the FLASH part, as it is at least 8 times larger than the largest LinuxBIOS rom image; and we can put a very large Linux kernel in even the smallest 8 MB DoC part, and even an initial ram disk (initrd) if we wish. The FLASH part is addressed at the normal 0xf0000 address, and the DoC is addressed (via jumper) at 0xd0000. &lt;br /&gt;
&lt;br /&gt;
Figure out if there are devices in the 640K-960K (0xa0000-0xeffff) space &lt;br /&gt;
&lt;br /&gt;
Some systems have just normal RAM or VGA memory in the 0xa0000-0xeffff space, so this space can actually be used as a type of memory -- namely, cacheable for reads and write-invalidate for writes. Other systems have I/O devices in this address space, so the memory must be configured as completely non-cacheable. The determination of how this area is treated is controlled by the Fixed-address Memory Type Range Registers (Fixed MTRRs). To leave this address space as RAM, we don't have to do anything. To use it as a device space, we have to set &lt;br /&gt;
option MTRR_ONLY_TOP_64K_FLASH&lt;br /&gt;
&lt;br /&gt;
 in the mainboard Config file. The SBC 710 has devices in the 0xa0000-0xeffff address space -- namely, the Disk On Chip. The mainboard Config file will need to have this option set. &lt;br /&gt;
&lt;br /&gt;
Determining how to configure SDRAM&lt;br /&gt;
&lt;br /&gt;
 SDRAM configuration is the single biggest problem for LinuxBIOS. In part it is due to the complexity of SDRAM, since we need to check over 17 different parameters to figure out how to determine the SDRAM control registers. That is only one of the problems. By definition, memory is not functioning before we program the SDRAM, so our code is very limited in what it can do, which makes for some very complex and hard-to-read assembly. Finally, poor chipset designs can make it hard to get it all right. Actual SDRAM parameters such as CAS latency, speed, etc. are maintained on a Serial EEPROM (SEEPROM) on the SDRAM module. The SEEPROM is accessed over a serial motherboard link called the SMBUS. LinuxBIOS needs to access the data in the SEEPROM and then configure SDRAM control registers. The actual SDRAM control registers are on the North Bridge, as expected; the South Bridge controls the SMBUS. To actually program the SDRAM control registers on the North Bridge, we must direct the South Bridge to send packets on the SMBUS to query the Serial EPROM on the SDRAM modules to find out their configuration. Fortunately, thanks to our many contributors, both these chips are supported. If the board vendor has not done anything to make it difficult to operate the SMBUS, everything should work fine. &lt;br /&gt;
&lt;br /&gt;
Test one: can we read the SMBUS? &lt;br /&gt;
&lt;br /&gt;
This program can be used to test SPD accessibility on systems with a PIIX4E. We were not sure if it would work, given that IBM on the Thinkpad T22 obscures this information. &lt;br /&gt;
&lt;br /&gt;
A quick note on the SMBUS &lt;br /&gt;
&lt;br /&gt;
A note on this program. You need to understand a bit about SMBUS to understand it. If you're doing a port you should understand it anyway! Here is a quick introduction. The data rate is roughly 100 Kbits/second. SMBUS is a serial bus found on most new motherboards. SMBUS is also sometimes called I2C, although that usage is being deprecated. SMBUS is a packet-oriented bus and is used for communications with many different systems on PCs, including smart batteries, sensor chips, and SDRAM. SMBUS packets contain a 7-bit address for selecting devices. This address in the SMBUS packet is shifted left one bit and, for read operations, OR'ed with a 1 in the low-order bit. Certain devices are assigned fixed addresses; SDRAM is one of them. Currently SDRAM occupies addresses 0x50 to 0x53. One thing that complicates SMBUS usage is that a system may have more than one SMBUS. For example, ASUS motherboards sometimes have two; IBM thinkpads also seem to have more than one. The motherboard vendors often obscure the existence of the SDRAM SMBUS by hiding it in hardware. On the ASUS CUA we had to find the enable control for SDRAM SMBUS by using a PCI analyzer to capture the I/O operations. &lt;br /&gt;
&lt;br /&gt;
Program operation &lt;br /&gt;
&lt;br /&gt;
Our simple program probes the SMBUS by enabling SMBUS access in the PIIX4E and then, first, enumerating all accessible devices on the SMBUS; and, second, seeing if any SDRAM devices can be accessed. We won't describe how the program does this, since if you're doing a port you need to have a thorough understanding of how it works. Walk through it line by line until you know what it does. &lt;br /&gt;
&lt;br /&gt;
Program output &lt;br /&gt;
&lt;br /&gt;
When we run the program we find that it correctly probes SDRAM in slot 0, the only SDRAM slot on the SBC 710. This result is very encouraging, since it means that the LinuxBIOS SDRAM setup code will probably work with no changes whatsoever. We have cleared the worst hurdle. &lt;br /&gt;
&lt;br /&gt;
Determining if and how to run the serial ports for debug messages &lt;br /&gt;
&lt;br /&gt;
The SBC 710 supports two serial ports. What we don't know is which of the two Winbond Super IO chips supports which serial port. There is no real question about our ability to drive the serial ports, the work will be in figuring out which chip to drive, and how to drive it. &lt;br /&gt;
&lt;br /&gt;
Which Super IO does what? &lt;br /&gt;
&lt;br /&gt;
There are two Super IOs on this card. They are both capable of running floppy, keyboard, serial, etc. For configuring LinuxBIOS we need to know which Super IO does which function. Fortunately we can probe the Super IOs from user mode and figure out, for all of the devices, which device is turned. This information will in turn guide the LinuxBIOS configuration. &lt;br /&gt;
&lt;br /&gt;
Building in new chipset support &lt;br /&gt;
&lt;br /&gt;
The only new chipset to this board is the Winbond w83877tf superio. Most winbond Super IO parts are pretty much the same. To start, we can borrow code from another winbond. Since the w83627hf has the most complete support, we borrow the code from that one. To set up the new Super IO, we generally need two files: superio.c (C setup) and setup_serial.inc (needed for very early low-level debug printing). The w83627hf provides both of these. To set up the new superio: &lt;br /&gt;
cd src/superio/winbond&lt;br /&gt;
mkdir w83877tf&lt;br /&gt;
cp w83627hf/* w83877tf&lt;br /&gt;
&lt;br /&gt;
 Next you need to look at the superio.c file and fix it up. You can see what needs to be done by comparing the three winbond superio directories. The differences are actually quite minor. Luckily this was the only new support needed for LinuxBIOS on the SBC 710. &lt;br /&gt;
&lt;br /&gt;
Setting up a &amp;quot;mainboard&amp;quot; tree for LinuxBIOS in the LinuxBIOS source&lt;br /&gt;
&lt;br /&gt;
 The next step is to set up a mainboard directory for the mainboard. The general form of the tree for components and mainboards is src/part-type/vendor name/mainboard name, so for example for the ASUS CUA the tree in LinuxBIOS is: src/mainboard/asus/cua. The mainboard directory contains one mandatory file: Config. Config is used by the Python-based configuration tool to build several files for building LinuxBIOS for the mainboard. These files include a Makefile, ldscript file, crt0.S file, and several other files depending on what is in the Config file. Optional files include mainboard.c, for setting up mainboard-specific features of the mainboard; irq_tables.c, for setting up irq tables for the mainboard (irq tables are ALWAYS mainboard-specific); and config.example, so users have a sample config file for the mainboard when they build it. There are enough existing mainboard targets for LinuxBIOS that we can usually find a mainboard that is close enough to use as a starting point. Thanks to one of our contributors there is a generic 440bx mainboard directory (not really guaranteed to work for everyone) called src/mainboard/intel/l440bx. The Config file in this directory is definitely wrong, since it specifies the wrong superio. Here is the original Config file. As you can see it specifies most things correctly save for the wrong Super IO part (it uses and SMC part). Here is the corrected version of Config for the SBC 710. The differences are minor: &lt;br /&gt;
7c7&lt;br /&gt;
&amp;lt; mainboardinit superio/NSC/pc87309/setup_serial.inc&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; # mainboardinit superio/NSC/pc87309/setup_serial.inc&lt;br /&gt;
13c13,15&lt;br /&gt;
&amp;lt; superio NSC/pc87309&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; #superio NSC/pc87309&lt;br /&gt;
&amp;gt; nsuperio winbond/w83977ef keyboard=1&lt;br /&gt;
&amp;gt; nsuperio winbond/w83877tf&lt;br /&gt;
24a27,29&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; option UPDATE_MICROCODE&lt;br /&gt;
&amp;gt; option MTRR_ONLY_TOP_64K_FLASH&lt;br /&gt;
&lt;br /&gt;
 We have to comment out the setup_serial.inc (we don't know which one to use yet); and we change the Super IO parts. Finally we always enable UPDATE_MICROCODE since this board always uses PIIIs and we know that some of them will need microcode patches. If you check out the CVS tree, you can see we also add a mainboard.c: &lt;br /&gt;
mainboard_fixup()&lt;br /&gt;
{&lt;br /&gt;
  void southbridge_fixup(void);&lt;br /&gt;
  southbridge_fixup();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 This code is needed to fix up the PIIX4E for Linux use. The other code files, irq_tables.c and do_ramtest.inc, are also used for the SBC 710. Finally we provide an example.config to make it easy to build LinuxBIOS for the SBC 710. &lt;br /&gt;
&lt;br /&gt;
Building a LinuxBIOS for your target &lt;br /&gt;
&lt;br /&gt;
To build LinuxBIOS, you need to create a config file. Here is the starting point for this mainboard. &lt;br /&gt;
# Sample config file for technoland sbc710&lt;br /&gt;
&lt;br /&gt;
target tlsbc710&lt;br /&gt;
&lt;br /&gt;
mainboard technoland/sbc710&lt;br /&gt;
&lt;br /&gt;
# Enable Serial Console for debugging&lt;br /&gt;
option SERIAL_CONSOLE&lt;br /&gt;
option NO_KEYBOARD&lt;br /&gt;
&lt;br /&gt;
option INBUF_COPY&lt;br /&gt;
option DEFAULT_CONSOLE_LOGLEVEL=9&lt;br /&gt;
option DEBUG&lt;br /&gt;
option USE_GENERIC_ROM=1&lt;br /&gt;
&lt;br /&gt;
# Path to your kernel (vmlinux)&lt;br /&gt;
linux ~/src/bios/linux-2.4.7-sis&lt;br /&gt;
&lt;br /&gt;
# Kernel command line parameters&lt;br /&gt;
commandline root=/dev/hda6 console=ttyS0,115200 FS_MODE=ro hda=flash hdb=flash&lt;br /&gt;
&lt;br /&gt;
 We name the target directory, the mainboard, and set some options. For more information on the options in a configuration file see the CVS tree; look in Documentation at the configmanual.ps document. To build this linuxbios tree, you need to figure out where you want to build it, figure out where you linux is, and fix the file as needed. For testing we take the file as is and run the config tool: &lt;br /&gt;
python ~/src/freebios/util/config/NLBConfig.py config.example ~/src/freebios/&lt;br /&gt;
&lt;br /&gt;
 The build is fine. &lt;br /&gt;
&lt;br /&gt;
Burning a FLASH or DoC part &lt;br /&gt;
&lt;br /&gt;
You will next need to burn the 256KB flash part used in the SBC 710. For this purpose we use our AMD SMP systems and either the MTD utilities or a user-mode program. We will be experimenting with MTD on the SBC 710 as well. &lt;br /&gt;
&lt;br /&gt;
Running it; fixing problems&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Technoland_SBC_710</id>
		<title>Technoland SBC 710</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Technoland_SBC_710"/>
				<updated>2005-03-01T16:20:30Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is intended to help people bring up new LinuxBIOS targets. Our first example will be the Technoland SBC 710, since it has a set of chips that are for the most part already supported. &lt;br /&gt;
&lt;br /&gt;
'''Bringing up LinuxBIOS on the SBC710'''&lt;br /&gt;
&lt;br /&gt;
 The SBC710 is sold by Technoland and consists of a PGA370 socket for support of Pentium 3s and Celerons; a 440BX northbridge; a PIIX4e South Bridge; a C&amp;amp;T video chip; and two winbond SuperIO chips (83977EF and 83877TF). As it happens most of these chips are supported by LinuxBIOS, which is one reason we chose the board. Another reason we chose the board is because PC motherboard vendors are in the habit of hiding the things you need to know to get LinuxBIOS working. This card, we are finding, is an open book. It is as a result pretty easy to get it going. Finally, it is cheap: $380 without CPU or memory and about $600 with PIII/800 CPU and 256MB memory. Getting LinuxBIOS up involves several steps: &lt;br /&gt;
Enumerating the chips on the board &lt;br /&gt;
Figuring out the FLASH type to be used, given the sockets available &lt;br /&gt;
Figure out if there are devices in the 640K-960K (0xa0000-0xeffff) space &lt;br /&gt;
Determining how to configure DRAM&lt;br /&gt;
 &lt;br /&gt;
Determining if and how to run the serial ports for debug messages &lt;br /&gt;
Building in any new chipset support&lt;br /&gt;
 &lt;br /&gt;
Setting up a &amp;quot;mainboard&amp;quot; tree for LinuxBIOS in the LinuxBIOS source&lt;br /&gt;
 &lt;br /&gt;
Building a LinuxBIOS for your target &lt;br /&gt;
Burning a FLASH or DoC part &lt;br /&gt;
Running it; fixing problems&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Enumerating the chips on the board &lt;br /&gt;
&lt;br /&gt;
For the SBC 710, the chips we need to be concerned with are: Intel 82443BX North Bridge (also known as 440BX); Intel PIIX4E South Bridge; C&amp;amp;T video chip; and two Winbond Super IO chips, the 83977EF and the 83877TF. All of these chips except the 83877 and the C&amp;amp;T chip are supported. We don't care about the C&amp;amp;T chip because we don't do graphics in LinuxBIOS (yet). We will have to add support for the 83877 later; we'll go into that. &lt;br /&gt;
&lt;br /&gt;
Figuring out the FLASH type to be used, given the sockets available &lt;br /&gt;
&lt;br /&gt;
The SBC 710 supports BOTH a 256 KB (4 Mbit) flash part and a DoC flash part. This is an ideal situation. We can boot a fairly complex LinuxBIOS from the FLASH part, as it is at least 8 times larger than the largest LinuxBIOS rom image; and we can put a very large Linux kernel in even the smallest 8 MB DoC part, and even an initial ram disk (initrd) if we wish. The FLASH part is addressed at the normal 0xf0000 address, and the DoC is addressed (via jumper) at 0xd0000. &lt;br /&gt;
&lt;br /&gt;
Figure out if there are devices in the 640K-960K (0xa0000-0xeffff) space &lt;br /&gt;
&lt;br /&gt;
Some systems have just normal RAM or VGA memory in the 0xa0000-0xeffff space, so this space can actually be used as a type of memory -- namely, cacheable for reads and write-invalidate for writes. Other systems have I/O devices in this address space, so the memory must be configured as completely non-cacheable. The determination of how this area is treated is controlled by the Fixed-address Memory Type Range Registers (Fixed MTRRs). To leave this address space as RAM, we don't have to do anything. To use it as a device space, we have to set &lt;br /&gt;
option MTRR_ONLY_TOP_64K_FLASH&lt;br /&gt;
&lt;br /&gt;
 in the mainboard Config file. The SBC 710 has devices in the 0xa0000-0xeffff address space -- namely, the Disk On Chip. The mainboard Config file will need to have this option set. &lt;br /&gt;
&lt;br /&gt;
Determining how to configure SDRAM&lt;br /&gt;
&lt;br /&gt;
 SDRAM configuration is the single biggest problem for LinuxBIOS. In part it is due to the complexity of SDRAM, since we need to check over 17 different parameters to figure out how to determine the SDRAM control registers. That is only one of the problems. By definition, memory is not functioning before we program the SDRAM, so our code is very limited in what it can do, which makes for some very complex and hard-to-read assembly. Finally, poor chipset designs can make it hard to get it all right. Actual SDRAM parameters such as CAS latency, speed, etc. are maintained on a Serial EEPROM (SEEPROM) on the SDRAM module. The SEEPROM is accessed over a serial motherboard link called the SMBUS. LinuxBIOS needs to access the data in the SEEPROM and then configure SDRAM control registers. The actual SDRAM control registers are on the North Bridge, as expected; the South Bridge controls the SMBUS. To actually program the SDRAM control registers on the North Bridge, we must direct the South Bridge to send packets on the SMBUS to query the Serial EPROM on the SDRAM modules to find out their configuration. Fortunately, thanks to our many contributors, both these chips are supported. If the board vendor has not done anything to make it difficult to operate the SMBUS, everything should work fine. &lt;br /&gt;
&lt;br /&gt;
Test one: can we read the SMBUS? &lt;br /&gt;
&lt;br /&gt;
This program can be used to test SPD accessibility on systems with a PIIX4E. We were not sure if it would work, given that IBM on the Thinkpad T22 obscures this information. &lt;br /&gt;
&lt;br /&gt;
A quick note on the SMBUS &lt;br /&gt;
&lt;br /&gt;
A note on this program. You need to understand a bit about SMBUS to understand it. If you're doing a port you should understand it anyway! Here is a quick introduction. The data rate is roughly 100 Kbits/second. SMBUS is a serial bus found on most new motherboards. SMBUS is also sometimes called I2C, although that usage is being deprecated. SMBUS is a packet-oriented bus and is used for communications with many different systems on PCs, including smart batteries, sensor chips, and SDRAM. SMBUS packets contain a 7-bit address for selecting devices. This address in the SMBUS packet is shifted left one bit and, for read operations, OR'ed with a 1 in the low-order bit. Certain devices are assigned fixed addresses; SDRAM is one of them. Currently SDRAM occupies addresses 0x50 to 0x53. One thing that complicates SMBUS usage is that a system may have more than one SMBUS. For example, ASUS motherboards sometimes have two; IBM thinkpads also seem to have more than one. The motherboard vendors often obscure the existence of the SDRAM SMBUS by hiding it in hardware. On the ASUS CUA we had to find the enable control for SDRAM SMBUS by using a PCI analyzer to capture the I/O operations. &lt;br /&gt;
&lt;br /&gt;
Program operation &lt;br /&gt;
&lt;br /&gt;
Our simple program probes the SMBUS by enabling SMBUS access in the PIIX4E and then, first, enumerating all accessible devices on the SMBUS; and, second, seeing if any SDRAM devices can be accessed. We won't describe how the program does this, since if you're doing a port you need to have a thorough understanding of how it works. Walk through it line by line until you know what it does. &lt;br /&gt;
&lt;br /&gt;
Program output &lt;br /&gt;
&lt;br /&gt;
When we run the program we find that it correctly probes SDRAM in slot 0, the only SDRAM slot on the SBC 710. This result is very encouraging, since it means that the LinuxBIOS SDRAM setup code will probably work with no changes whatsoever. We have cleared the worst hurdle. &lt;br /&gt;
&lt;br /&gt;
Determining if and how to run the serial ports for debug messages &lt;br /&gt;
&lt;br /&gt;
The SBC 710 supports two serial ports. What we don't know is which of the two Winbond Super IO chips supports which serial port. There is no real question about our ability to drive the serial ports, the work will be in figuring out which chip to drive, and how to drive it. &lt;br /&gt;
&lt;br /&gt;
Which Super IO does what? &lt;br /&gt;
&lt;br /&gt;
There are two Super IOs on this card. They are both capable of running floppy, keyboard, serial, etc. For configuring LinuxBIOS we need to know which Super IO does which function. Fortunately we can probe the Super IOs from user mode and figure out, for all of the devices, which device is turned. This information will in turn guide the LinuxBIOS configuration. &lt;br /&gt;
&lt;br /&gt;
Building in new chipset support &lt;br /&gt;
&lt;br /&gt;
The only new chipset to this board is the Winbond w83877tf superio. Most winbond Super IO parts are pretty much the same. To start, we can borrow code from another winbond. Since the w83627hf has the most complete support, we borrow the code from that one. To set up the new Super IO, we generally need two files: superio.c (C setup) and setup_serial.inc (needed for very early low-level debug printing). The w83627hf provides both of these. To set up the new superio: &lt;br /&gt;
cd src/superio/winbond&lt;br /&gt;
mkdir w83877tf&lt;br /&gt;
cp w83627hf/* w83877tf&lt;br /&gt;
&lt;br /&gt;
 Next you need to look at the superio.c file and fix it up. You can see what needs to be done by comparing the three winbond superio directories. The differences are actually quite minor. Luckily this was the only new support needed for LinuxBIOS on the SBC 710. &lt;br /&gt;
&lt;br /&gt;
Setting up a &amp;quot;mainboard&amp;quot; tree for LinuxBIOS in the LinuxBIOS source&lt;br /&gt;
&lt;br /&gt;
 The next step is to set up a mainboard directory for the mainboard. The general form of the tree for components and mainboards is src/part-type/vendor name/mainboard name, so for example for the ASUS CUA the tree in LinuxBIOS is: src/mainboard/asus/cua. The mainboard directory contains one mandatory file: Config. Config is used by the Python-based configuration tool to build several files for building LinuxBIOS for the mainboard. These files include a Makefile, ldscript file, crt0.S file, and several other files depending on what is in the Config file. Optional files include mainboard.c, for setting up mainboard-specific features of the mainboard; irq_tables.c, for setting up irq tables for the mainboard (irq tables are ALWAYS mainboard-specific); and config.example, so users have a sample config file for the mainboard when they build it. There are enough existing mainboard targets for LinuxBIOS that we can usually find a mainboard that is close enough to use as a starting point. Thanks to one of our contributors there is a generic 440bx mainboard directory (not really guaranteed to work for everyone) called src/mainboard/intel/l440bx. The Config file in this directory is definitely wrong, since it specifies the wrong superio. Here is the original Config file. As you can see it specifies most things correctly save for the wrong Super IO part (it uses and SMC part). Here is the corrected version of Config for the SBC 710. The differences are minor: &lt;br /&gt;
7c7&lt;br /&gt;
&amp;lt; mainboardinit superio/NSC/pc87309/setup_serial.inc&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; # mainboardinit superio/NSC/pc87309/setup_serial.inc&lt;br /&gt;
13c13,15&lt;br /&gt;
&amp;lt; superio NSC/pc87309&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; #superio NSC/pc87309&lt;br /&gt;
&amp;gt; nsuperio winbond/w83977ef keyboard=1&lt;br /&gt;
&amp;gt; nsuperio winbond/w83877tf&lt;br /&gt;
24a27,29&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; option UPDATE_MICROCODE&lt;br /&gt;
&amp;gt; option MTRR_ONLY_TOP_64K_FLASH&lt;br /&gt;
&lt;br /&gt;
 We have to comment out the setup_serial.inc (we don't know which one to use yet); and we change the Super IO parts. Finally we always enable UPDATE_MICROCODE since this board always uses PIIIs and we know that some of them will need microcode patches. If you check out the CVS tree, you can see we also add a mainboard.c: &lt;br /&gt;
mainboard_fixup()&lt;br /&gt;
{&lt;br /&gt;
  void southbridge_fixup(void);&lt;br /&gt;
  southbridge_fixup();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 This code is needed to fix up the PIIX4E for Linux use. The other code files, irq_tables.c and do_ramtest.inc, are also used for the SBC 710. Finally we provide an example.config to make it easy to build LinuxBIOS for the SBC 710. &lt;br /&gt;
&lt;br /&gt;
Building a LinuxBIOS for your target &lt;br /&gt;
&lt;br /&gt;
To build LinuxBIOS, you need to create a config file. Here is the starting point for this mainboard. &lt;br /&gt;
# Sample config file for technoland sbc710&lt;br /&gt;
&lt;br /&gt;
target tlsbc710&lt;br /&gt;
&lt;br /&gt;
mainboard technoland/sbc710&lt;br /&gt;
&lt;br /&gt;
# Enable Serial Console for debugging&lt;br /&gt;
option SERIAL_CONSOLE&lt;br /&gt;
option NO_KEYBOARD&lt;br /&gt;
&lt;br /&gt;
option INBUF_COPY&lt;br /&gt;
option DEFAULT_CONSOLE_LOGLEVEL=9&lt;br /&gt;
option DEBUG&lt;br /&gt;
option USE_GENERIC_ROM=1&lt;br /&gt;
&lt;br /&gt;
# Path to your kernel (vmlinux)&lt;br /&gt;
linux ~/src/bios/linux-2.4.7-sis&lt;br /&gt;
&lt;br /&gt;
# Kernel command line parameters&lt;br /&gt;
commandline root=/dev/hda6 console=ttyS0,115200 FS_MODE=ro hda=flash hdb=flash&lt;br /&gt;
&lt;br /&gt;
 We name the target directory, the mainboard, and set some options. For more information on the options in a configuration file see the CVS tree; look in Documentation at the configmanual.ps document. To build this linuxbios tree, you need to figure out where you want to build it, figure out where you linux is, and fix the file as needed. For testing we take the file as is and run the config tool: &lt;br /&gt;
python ~/src/freebios/util/config/NLBConfig.py config.example ~/src/freebios/&lt;br /&gt;
&lt;br /&gt;
 The build is fine. &lt;br /&gt;
&lt;br /&gt;
Burning a FLASH or DoC part &lt;br /&gt;
&lt;br /&gt;
You will next need to burn the 256KB flash part used in the SBC 710. For this purpose we use our AMD SMP systems and either the MTD utilities or a user-mode program. We will be experimenting with MTD on the SBC 710 as well. &lt;br /&gt;
&lt;br /&gt;
Running it; fixing problems&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Technoland_SBC_710</id>
		<title>Technoland SBC 710</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Technoland_SBC_710"/>
				<updated>2005-03-01T16:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is intended to help people bring up new LinuxBIOS targets. Our first example will be the Technoland SBC 710, since it has a set of chips that are for the most part already supported. &lt;br /&gt;
&lt;br /&gt;
Bringing up LinuxBIOS on the SBC710&lt;br /&gt;
&lt;br /&gt;
 The SBC710 is sold by Technoland and consists of a PGA370 socket for support of Pentium 3s and Celerons; a 440BX northbridge; a PIIX4e South Bridge; a C&amp;amp;T video chip; and two winbond SuperIO chips (83977EF and 83877TF). As it happens most of these chips are supported by LinuxBIOS, which is one reason we chose the board. Another reason we chose the board is because PC motherboard vendors are in the habit of hiding the things you need to know to get LinuxBIOS working. This card, we are finding, is an open book. It is as a result pretty easy to get it going. Finally, it is cheap: $380 without CPU or memory and about $600 with PIII/800 CPU and 256MB memory. Getting LinuxBIOS up involves several steps: &lt;br /&gt;
Enumerating the chips on the board &lt;br /&gt;
Figuring out the FLASH type to be used, given the sockets available &lt;br /&gt;
Figure out if there are devices in the 640K-960K (0xa0000-0xeffff) space &lt;br /&gt;
Determining how to configure DRAM&lt;br /&gt;
 &lt;br /&gt;
Determining if and how to run the serial ports for debug messages &lt;br /&gt;
Building in any new chipset support&lt;br /&gt;
 &lt;br /&gt;
Setting up a &amp;quot;mainboard&amp;quot; tree for LinuxBIOS in the LinuxBIOS source&lt;br /&gt;
 &lt;br /&gt;
Building a LinuxBIOS for your target &lt;br /&gt;
Burning a FLASH or DoC part &lt;br /&gt;
Running it; fixing problems&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Enumerating the chips on the board &lt;br /&gt;
&lt;br /&gt;
For the SBC 710, the chips we need to be concerned with are: Intel 82443BX North Bridge (also known as 440BX); Intel PIIX4E South Bridge; C&amp;amp;T video chip; and two Winbond Super IO chips, the 83977EF and the 83877TF. All of these chips except the 83877 and the C&amp;amp;T chip are supported. We don't care about the C&amp;amp;T chip because we don't do graphics in LinuxBIOS (yet). We will have to add support for the 83877 later; we'll go into that. &lt;br /&gt;
&lt;br /&gt;
Figuring out the FLASH type to be used, given the sockets available &lt;br /&gt;
&lt;br /&gt;
The SBC 710 supports BOTH a 256 KB (4 Mbit) flash part and a DoC flash part. This is an ideal situation. We can boot a fairly complex LinuxBIOS from the FLASH part, as it is at least 8 times larger than the largest LinuxBIOS rom image; and we can put a very large Linux kernel in even the smallest 8 MB DoC part, and even an initial ram disk (initrd) if we wish. The FLASH part is addressed at the normal 0xf0000 address, and the DoC is addressed (via jumper) at 0xd0000. &lt;br /&gt;
&lt;br /&gt;
Figure out if there are devices in the 640K-960K (0xa0000-0xeffff) space &lt;br /&gt;
&lt;br /&gt;
Some systems have just normal RAM or VGA memory in the 0xa0000-0xeffff space, so this space can actually be used as a type of memory -- namely, cacheable for reads and write-invalidate for writes. Other systems have I/O devices in this address space, so the memory must be configured as completely non-cacheable. The determination of how this area is treated is controlled by the Fixed-address Memory Type Range Registers (Fixed MTRRs). To leave this address space as RAM, we don't have to do anything. To use it as a device space, we have to set &lt;br /&gt;
option MTRR_ONLY_TOP_64K_FLASH&lt;br /&gt;
&lt;br /&gt;
 in the mainboard Config file. The SBC 710 has devices in the 0xa0000-0xeffff address space -- namely, the Disk On Chip. The mainboard Config file will need to have this option set. &lt;br /&gt;
&lt;br /&gt;
Determining how to configure SDRAM&lt;br /&gt;
&lt;br /&gt;
 SDRAM configuration is the single biggest problem for LinuxBIOS. In part it is due to the complexity of SDRAM, since we need to check over 17 different parameters to figure out how to determine the SDRAM control registers. That is only one of the problems. By definition, memory is not functioning before we program the SDRAM, so our code is very limited in what it can do, which makes for some very complex and hard-to-read assembly. Finally, poor chipset designs can make it hard to get it all right. Actual SDRAM parameters such as CAS latency, speed, etc. are maintained on a Serial EEPROM (SEEPROM) on the SDRAM module. The SEEPROM is accessed over a serial motherboard link called the SMBUS. LinuxBIOS needs to access the data in the SEEPROM and then configure SDRAM control registers. The actual SDRAM control registers are on the North Bridge, as expected; the South Bridge controls the SMBUS. To actually program the SDRAM control registers on the North Bridge, we must direct the South Bridge to send packets on the SMBUS to query the Serial EPROM on the SDRAM modules to find out their configuration. Fortunately, thanks to our many contributors, both these chips are supported. If the board vendor has not done anything to make it difficult to operate the SMBUS, everything should work fine. &lt;br /&gt;
&lt;br /&gt;
Test one: can we read the SMBUS? &lt;br /&gt;
&lt;br /&gt;
This program can be used to test SPD accessibility on systems with a PIIX4E. We were not sure if it would work, given that IBM on the Thinkpad T22 obscures this information. &lt;br /&gt;
&lt;br /&gt;
A quick note on the SMBUS &lt;br /&gt;
&lt;br /&gt;
A note on this program. You need to understand a bit about SMBUS to understand it. If you're doing a port you should understand it anyway! Here is a quick introduction. The data rate is roughly 100 Kbits/second. SMBUS is a serial bus found on most new motherboards. SMBUS is also sometimes called I2C, although that usage is being deprecated. SMBUS is a packet-oriented bus and is used for communications with many different systems on PCs, including smart batteries, sensor chips, and SDRAM. SMBUS packets contain a 7-bit address for selecting devices. This address in the SMBUS packet is shifted left one bit and, for read operations, OR'ed with a 1 in the low-order bit. Certain devices are assigned fixed addresses; SDRAM is one of them. Currently SDRAM occupies addresses 0x50 to 0x53. One thing that complicates SMBUS usage is that a system may have more than one SMBUS. For example, ASUS motherboards sometimes have two; IBM thinkpads also seem to have more than one. The motherboard vendors often obscure the existence of the SDRAM SMBUS by hiding it in hardware. On the ASUS CUA we had to find the enable control for SDRAM SMBUS by using a PCI analyzer to capture the I/O operations. &lt;br /&gt;
&lt;br /&gt;
Program operation &lt;br /&gt;
&lt;br /&gt;
Our simple program probes the SMBUS by enabling SMBUS access in the PIIX4E and then, first, enumerating all accessible devices on the SMBUS; and, second, seeing if any SDRAM devices can be accessed. We won't describe how the program does this, since if you're doing a port you need to have a thorough understanding of how it works. Walk through it line by line until you know what it does. &lt;br /&gt;
&lt;br /&gt;
Program output &lt;br /&gt;
&lt;br /&gt;
When we run the program we find that it correctly probes SDRAM in slot 0, the only SDRAM slot on the SBC 710. This result is very encouraging, since it means that the LinuxBIOS SDRAM setup code will probably work with no changes whatsoever. We have cleared the worst hurdle. &lt;br /&gt;
&lt;br /&gt;
Determining if and how to run the serial ports for debug messages &lt;br /&gt;
&lt;br /&gt;
The SBC 710 supports two serial ports. What we don't know is which of the two Winbond Super IO chips supports which serial port. There is no real question about our ability to drive the serial ports, the work will be in figuring out which chip to drive, and how to drive it. &lt;br /&gt;
&lt;br /&gt;
Which Super IO does what? &lt;br /&gt;
&lt;br /&gt;
There are two Super IOs on this card. They are both capable of running floppy, keyboard, serial, etc. For configuring LinuxBIOS we need to know which Super IO does which function. Fortunately we can probe the Super IOs from user mode and figure out, for all of the devices, which device is turned. This information will in turn guide the LinuxBIOS configuration. &lt;br /&gt;
&lt;br /&gt;
Building in new chipset support &lt;br /&gt;
&lt;br /&gt;
The only new chipset to this board is the Winbond w83877tf superio. Most winbond Super IO parts are pretty much the same. To start, we can borrow code from another winbond. Since the w83627hf has the most complete support, we borrow the code from that one. To set up the new Super IO, we generally need two files: superio.c (C setup) and setup_serial.inc (needed for very early low-level debug printing). The w83627hf provides both of these. To set up the new superio: &lt;br /&gt;
cd src/superio/winbond&lt;br /&gt;
mkdir w83877tf&lt;br /&gt;
cp w83627hf/* w83877tf&lt;br /&gt;
&lt;br /&gt;
 Next you need to look at the superio.c file and fix it up. You can see what needs to be done by comparing the three winbond superio directories. The differences are actually quite minor. Luckily this was the only new support needed for LinuxBIOS on the SBC 710. &lt;br /&gt;
&lt;br /&gt;
Setting up a &amp;quot;mainboard&amp;quot; tree for LinuxBIOS in the LinuxBIOS source&lt;br /&gt;
&lt;br /&gt;
 The next step is to set up a mainboard directory for the mainboard. The general form of the tree for components and mainboards is src/part-type/vendor name/mainboard name, so for example for the ASUS CUA the tree in LinuxBIOS is: src/mainboard/asus/cua. The mainboard directory contains one mandatory file: Config. Config is used by the Python-based configuration tool to build several files for building LinuxBIOS for the mainboard. These files include a Makefile, ldscript file, crt0.S file, and several other files depending on what is in the Config file. Optional files include mainboard.c, for setting up mainboard-specific features of the mainboard; irq_tables.c, for setting up irq tables for the mainboard (irq tables are ALWAYS mainboard-specific); and config.example, so users have a sample config file for the mainboard when they build it. There are enough existing mainboard targets for LinuxBIOS that we can usually find a mainboard that is close enough to use as a starting point. Thanks to one of our contributors there is a generic 440bx mainboard directory (not really guaranteed to work for everyone) called src/mainboard/intel/l440bx. The Config file in this directory is definitely wrong, since it specifies the wrong superio. Here is the original Config file. As you can see it specifies most things correctly save for the wrong Super IO part (it uses and SMC part). Here is the corrected version of Config for the SBC 710. The differences are minor: &lt;br /&gt;
7c7&lt;br /&gt;
&amp;lt; mainboardinit superio/NSC/pc87309/setup_serial.inc&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; # mainboardinit superio/NSC/pc87309/setup_serial.inc&lt;br /&gt;
13c13,15&lt;br /&gt;
&amp;lt; superio NSC/pc87309&lt;br /&gt;
---&lt;br /&gt;
&amp;gt; #superio NSC/pc87309&lt;br /&gt;
&amp;gt; nsuperio winbond/w83977ef keyboard=1&lt;br /&gt;
&amp;gt; nsuperio winbond/w83877tf&lt;br /&gt;
24a27,29&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; option UPDATE_MICROCODE&lt;br /&gt;
&amp;gt; option MTRR_ONLY_TOP_64K_FLASH&lt;br /&gt;
&lt;br /&gt;
 We have to comment out the setup_serial.inc (we don't know which one to use yet); and we change the Super IO parts. Finally we always enable UPDATE_MICROCODE since this board always uses PIIIs and we know that some of them will need microcode patches. If you check out the CVS tree, you can see we also add a mainboard.c: &lt;br /&gt;
mainboard_fixup()&lt;br /&gt;
{&lt;br /&gt;
  void southbridge_fixup(void);&lt;br /&gt;
  southbridge_fixup();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 This code is needed to fix up the PIIX4E for Linux use. The other code files, irq_tables.c and do_ramtest.inc, are also used for the SBC 710. Finally we provide an example.config to make it easy to build LinuxBIOS for the SBC 710. &lt;br /&gt;
&lt;br /&gt;
Building a LinuxBIOS for your target &lt;br /&gt;
&lt;br /&gt;
To build LinuxBIOS, you need to create a config file. Here is the starting point for this mainboard. &lt;br /&gt;
# Sample config file for technoland sbc710&lt;br /&gt;
&lt;br /&gt;
target tlsbc710&lt;br /&gt;
&lt;br /&gt;
mainboard technoland/sbc710&lt;br /&gt;
&lt;br /&gt;
# Enable Serial Console for debugging&lt;br /&gt;
option SERIAL_CONSOLE&lt;br /&gt;
option NO_KEYBOARD&lt;br /&gt;
&lt;br /&gt;
option INBUF_COPY&lt;br /&gt;
option DEFAULT_CONSOLE_LOGLEVEL=9&lt;br /&gt;
option DEBUG&lt;br /&gt;
option USE_GENERIC_ROM=1&lt;br /&gt;
&lt;br /&gt;
# Path to your kernel (vmlinux)&lt;br /&gt;
linux ~/src/bios/linux-2.4.7-sis&lt;br /&gt;
&lt;br /&gt;
# Kernel command line parameters&lt;br /&gt;
commandline root=/dev/hda6 console=ttyS0,115200 FS_MODE=ro hda=flash hdb=flash&lt;br /&gt;
&lt;br /&gt;
 We name the target directory, the mainboard, and set some options. For more information on the options in a configuration file see the CVS tree; look in Documentation at the configmanual.ps document. To build this linuxbios tree, you need to figure out where you want to build it, figure out where you linux is, and fix the file as needed. For testing we take the file as is and run the config tool: &lt;br /&gt;
python ~/src/freebios/util/config/NLBConfig.py config.example ~/src/freebios/&lt;br /&gt;
&lt;br /&gt;
 The build is fine. &lt;br /&gt;
&lt;br /&gt;
Burning a FLASH or DoC part &lt;br /&gt;
&lt;br /&gt;
You will next need to burn the 256KB flash part used in the SBC 710. For this purpose we use our AMD SMP systems and either the MTD utilities or a user-mode program. We will be experimenting with MTD on the SBC 710 as well. &lt;br /&gt;
&lt;br /&gt;
Running it; fixing problems&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/Welcome_to_coreboot</id>
		<title>Welcome to coreboot</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/Welcome_to_coreboot"/>
				<updated>2005-03-01T16:16:17Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the LinuxBIOS Wiki.&lt;br /&gt;
&lt;br /&gt;
LinuxBIOS is an Open Source project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.&lt;br /&gt;
&lt;br /&gt;
[[MB supported in freebios v2]]&lt;br /&gt;
&lt;br /&gt;
[[Download freebios v2]]&lt;br /&gt;
&lt;br /&gt;
[[Payloads]]&lt;br /&gt;
&lt;br /&gt;
[[FAQ]]&lt;br /&gt;
&lt;br /&gt;
[[Port Guides]]&lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	<entry>
		<id>http://www.coreboot.org/FAQ</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://www.coreboot.org/FAQ"/>
				<updated>2005-03-01T16:07:29Z</updated>
		
		<summary type="html">&lt;p&gt;Rminnich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;General&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
What is LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Why do we need LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Who is working on LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Who is funding LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Will LinuxBIOS work on my machine? &lt;br /&gt;
&lt;br /&gt;
What commercial products use LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
How can I help with LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Developer&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Where is the mailing list archived? &lt;br /&gt;
Where do I get the code? &lt;br /&gt;
&lt;br /&gt;
How do I build? &lt;br /&gt;
&lt;br /&gt;
Why is the code so complicated and what can I do to make it easier? &lt;br /&gt;
&lt;br /&gt;
What chipsets are supported? &lt;br /&gt;
&lt;br /&gt;
What is this POST card thing? &lt;br /&gt;
&lt;br /&gt;
How do I contribute my changes? &lt;br /&gt;
&lt;br /&gt;
How do I re-flash the BIOS? &lt;br /&gt;
&lt;br /&gt;
How do I actually burn a flash ROM? &lt;br /&gt;
&lt;br /&gt;
How do I burn a DoC? &lt;br /&gt;
&lt;br /&gt;
Can I do any serious damage mucking around with this stuff? &lt;br /&gt;
&lt;br /&gt;
How do I put a filesystem on DoC? &lt;br /&gt;
&lt;br /&gt;
How do I turn off embedded sis630 devices? &lt;br /&gt;
&lt;br /&gt;
What is a PIRQ table? &lt;br /&gt;
&lt;br /&gt;
How do I set up etherboot with LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
How do I set GEODE video? &lt;br /&gt;
&lt;br /&gt;
How do I set up testbios? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
&lt;br /&gt;
What is LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
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. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. &lt;br /&gt;
&lt;br /&gt;
Why do we need LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. &lt;br /&gt;
&lt;br /&gt;
Who is working on LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. &lt;br /&gt;
&lt;br /&gt;
Who is funding LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. &lt;br /&gt;
&lt;br /&gt;
Will LinuxBIOS work on my machine? &lt;br /&gt;
&lt;br /&gt;
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
What commercial products use LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
See the products page. &lt;br /&gt;
&lt;br /&gt;
How can I help with LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Contact Ron Minnich for projects related to LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Developer&lt;br /&gt;
&lt;br /&gt;
 Where is the mailing list archived? &lt;br /&gt;
&lt;br /&gt;
The best archive out there is at the University of Maryland. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). &lt;br /&gt;
&lt;br /&gt;
Where do I get the code? &lt;br /&gt;
&lt;br /&gt;
See download. &lt;br /&gt;
&lt;br /&gt;
How do I build? &lt;br /&gt;
&lt;br /&gt;
See the documentation. For help generating a config file, see Generate a config file. &lt;br /&gt;
&lt;br /&gt;
Why is the code so complicated and what can I do to make it easier? &lt;br /&gt;
&lt;br /&gt;
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. &lt;br /&gt;
&lt;br /&gt;
What chipsets are supported? &lt;br /&gt;
&lt;br /&gt;
See status for the most up-to-date info.. &lt;br /&gt;
&lt;br /&gt;
What is this POST card thing? &lt;br /&gt;
&lt;br /&gt;
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). &lt;br /&gt;
&lt;br /&gt;
How do I contribute my changes? &lt;br /&gt;
&lt;br /&gt;
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. &lt;br /&gt;
&lt;br /&gt;
How do I re-flash the BIOS? &lt;br /&gt;
&lt;br /&gt;
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. &lt;br /&gt;
&lt;br /&gt;
SiS 630/950 M/Bs&lt;br /&gt;
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. &lt;br /&gt;
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. &lt;br /&gt;
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. &lt;br /&gt;
Intel L440GX&lt;br /&gt;
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. &lt;br /&gt;
How do I actually burn a flash ROM? &lt;br /&gt;
&lt;br /&gt;
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. &lt;br /&gt;
&lt;br /&gt;
How do I burn a DoC? &lt;br /&gt;
&lt;br /&gt;
Currently, only the DoC Millennium is supported. See the documentation. &lt;br /&gt;
&lt;br /&gt;
Can I do any serious damage mucking around with this stuff? &lt;br /&gt;
&lt;br /&gt;
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). &lt;br /&gt;
&lt;br /&gt;
Incorrect inserstion of the flash (1 casualty) &lt;br /&gt;
Incorrect jumper settings (1 casualty) &lt;br /&gt;
Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) &lt;br /&gt;
Miscellaneous miswirings and mishandlings (3+ casualties) &lt;br /&gt;
&lt;br /&gt;
And finally a note on electrostatic discharge (ESD) and ESD protection thanks to Bari Ari. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: &lt;br /&gt;
&lt;br /&gt;
Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. &lt;br /&gt;
ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! &lt;br /&gt;
Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. &lt;br /&gt;
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. &lt;br /&gt;
How do I put a filesystem on DoC? &lt;br /&gt;
OK, here is a little HOWTO on how to set up MTD with a file system. &lt;br /&gt;
&lt;br /&gt;
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So I: &lt;br /&gt;
 modprobe doc2001 &lt;br /&gt;
 modprobe docprobe &lt;br /&gt;
 dmesg &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
which shows: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DiskOnChip Millennium found at address 0xFFFC8000 &lt;br /&gt;
 Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) &lt;br /&gt;
 1 flash chips found. Total DiskOnChip size: 8 MiB &lt;br /&gt;
 mtd: Giving out device 0 to DiskOnChip Millennium &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured &lt;br /&gt;
 Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured &lt;br /&gt;
 (etc..) &lt;br /&gt;
 Now I need MTD utilities. &lt;br /&gt;
 So I: &lt;br /&gt;
 cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login &lt;br /&gt;
 CVS password: &lt;br /&gt;
 &lt;br /&gt;
 (password is anoncvs) &lt;br /&gt;
 Then: &lt;br /&gt;
 cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Forget the drivers and such, you don't need them. What you need is the tools. &lt;br /&gt;
 cd mtd/tools &lt;br /&gt;
 make &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Go ahead and copy the executables somewhere handy, you'll need them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we need to make the last 6M into a &amp;quot;disk&amp;quot;. We need to format it. The tool is nftl_format, so: &lt;br /&gt;
 [root@carly util]# ./nftl_format &lt;br /&gt;
 $Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ &lt;br /&gt;
 Usage: ./nftl_format [ []] &lt;br /&gt;
 [root@carly util]# expr 2048 \* 1024 &lt;br /&gt;
 2097152 &lt;br /&gt;
 [root@carly util]# expr 6 \* 1024 \* 1024 &lt;br /&gt;
 6291456 &lt;br /&gt;
 [root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 &lt;br /&gt;
 $Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ &lt;br /&gt;
 Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 &lt;br /&gt;
 Phase 2.a Writing NFTL Media Header and Bad Unit Table &lt;br /&gt;
 Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table &lt;br /&gt;
 Phase 3. Writing Unit Control Information to each Erase Unit &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
we now have a formatted disk in there. We can now partition it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@carly util]# modprobe nftl &lt;br /&gt;
 dmesg shows LOTS of errors, since this was never partitioned ... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, if you don't have /dev/nftla, &lt;br /&gt;
 [root@carly util]# mknod /dev/nftla b 93 0 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
now fdisk /dev/nftla &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@carly util]# fdisk /dev/nftlA &lt;br /&gt;
 Command (m for help): n &lt;br /&gt;
 Command action &lt;br /&gt;
 e extended &lt;br /&gt;
 p primary partition (1-4) &lt;br /&gt;
 p &lt;br /&gt;
 Partition number (1-4): 1 &lt;br /&gt;
 First cylinder (1-1, default 1): &lt;br /&gt;
 Using default value 1 &lt;br /&gt;
 Command (m for help): p &lt;br /&gt;
 Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders &lt;br /&gt;
 Units = cylinders of 12224 * 512 bytes &lt;br /&gt;
 Device Boot Start End Blocks Id System &lt;br /&gt;
 /dev/nftlA1 1 1 6111+ 83 Linux &lt;br /&gt;
 Partition 1 has different physical/logical endings: &lt;br /&gt;
 phys=(768, 0, 0) logical=(0, 0, 12224) &lt;br /&gt;
 Partition 1 does not end on cylinder boundary: &lt;br /&gt;
 phys=(768, 0, 0) should be (768, 0, 12224) &lt;br /&gt;
 Command (m for help): w &lt;br /&gt;
 The partition table has been altered! &lt;br /&gt;
 Calling ioctl() to re-read partition table. &lt;br /&gt;
 WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. &lt;br /&gt;
 Syncing disks. &lt;br /&gt;
 [root@carly util]# mknod /dev/nftlA1 b 93 1 &lt;br /&gt;
 [root@carly util]# mke2fs /dev/nftlA1 &lt;br /&gt;
 mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 &lt;br /&gt;
 Filesystem label= &lt;br /&gt;
 OS type: Linux &lt;br /&gt;
 Block size=1024 (log=0) &lt;br /&gt;
 Fragment size=1024 (log=0) &lt;br /&gt;
 1528 inodes, 6111 blocks &lt;br /&gt;
 305 blocks (4.99%) reserved for the super user &lt;br /&gt;
 First data block=1 &lt;br /&gt;
 1 block group &lt;br /&gt;
 8192 blocks per group, 8192 fragments per group &lt;br /&gt;
 1528 inodes per group &lt;br /&gt;
 Writing inode tables: done &lt;br /&gt;
 Writing superblocks and filesystem accounting information: done &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[root@carly util]# mount /dev/nftlA1 /mnt &lt;br /&gt;
 [root@carly util]# cd /mnt &lt;br /&gt;
 [root@carly mnt]# df . &lt;br /&gt;
 Filesystem 1k-blocks Used Available Use% Mounted on &lt;br /&gt;
 /dev/nftlA1 5915 13 5597 1% /mnt &lt;br /&gt;
 [root@carly mnt]# &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and so you now have an ext2 file system on the DoC. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ron &lt;br /&gt;
&lt;br /&gt;
How do I turn off embedded sis630 devices? &lt;br /&gt;
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 &lt;br /&gt;
 Date: Mon, 25 Mar 2002 22:07:54 +0800 &lt;br /&gt;
 From: Andrew Ip &lt;br /&gt;
 To: Kei Furuuchi &lt;br /&gt;
 Cc: linuxbios@lanl.gov &lt;br /&gt;
 Subject: Re: How to turn off unused pci device. &lt;br /&gt;
 Hi, &lt;br /&gt;
 &amp;gt; I have pcchips m758lmr which has audio chip besides sis630. &lt;br /&gt;
 &amp;gt; those functions in sis630 are not used in the motherboard. &lt;br /&gt;
 &amp;gt; But, the functions keep coming up. How do I turn off those? &lt;br /&gt;
 The following is from Nikolai Valdych previous message. Hope this help. &lt;br /&gt;
 -Andrew &lt;br /&gt;
 -- &lt;br /&gt;
 Andrew Ip &lt;br /&gt;
 Email: aip@cwlinux.com &lt;br /&gt;
 Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: &lt;br /&gt;
Multimedia Audio controler &lt;br /&gt;
Modem controler &lt;br /&gt;
Ethernet sis930 controler &lt;br /&gt;
USB controler. &lt;br /&gt;
For example, to turn off Ethernet + USB it would be: &lt;br /&gt;
 0x7c0c -&amp;gt; 1100 in binary (first 4 bits) &lt;br /&gt;
 To turn off Multimedia audio : &lt;br /&gt;
 0x7c01 -&amp;gt; 0001 &lt;br /&gt;
 in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! &lt;br /&gt;
 nikolai &lt;br /&gt;
 p.s. though my modem is not yet working..... damn driver...... &lt;br /&gt;
What is a PIRQ table? &lt;br /&gt;
&lt;br /&gt;
From Adam Sulmicki: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I found beautfiul descrition of the BIOS implementation of the PIRQ in&lt;br /&gt;
the red PCI book.&lt;br /&gt;
&lt;br /&gt;
I found the description of the $PIR data structure in the&lt;br /&gt;
        http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp&lt;br /&gt;
&lt;br /&gt;
looking over linuxbios sources I see that it saves the $PIR data structure&lt;br /&gt;
somewhere between 0xf0000 &amp;amp; 0x100000.&lt;br /&gt;
&lt;br /&gt;
so it seems I'll have to search for $PIR and then save it before copying&lt;br /&gt;
over our bios. sigh. hoped for some fixed address in mem.&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
Adam&lt;br /&gt;
http://www.eax.com      The Supreme Headquarters of the 32 bit registers&lt;br /&gt;
&lt;br /&gt;
 How do I set up etherboot with LinuxBIOS? &lt;br /&gt;
&lt;br /&gt;
Note from Ron: I have edited this somewhat to remove Geode-specific items. &lt;br /&gt;
&lt;br /&gt;
Christer Weinigel writes: &lt;br /&gt;
To: rminnich@lanl.gov&lt;br /&gt;
 Cc: linuxbios@lanl.gov&lt;br /&gt;
 Subject: Re: LinuxBIOS + Etherboot HOWTO?&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
I had some trouble using LinuxBIOS + etherboot... &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Â Â Â /Christer &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify etherboot-5.0/src/Config, comment out: &lt;br /&gt;
&lt;br /&gt;
    # BIOS select don't change unless you know what you are doing&lt;br /&gt;
    #CFLAGS32+=     -DPCBIOS&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
and uncomment the following: &lt;br /&gt;
&lt;br /&gt;
    # Options to make a version of Etherboot that will work under linuxBIOS.&lt;br /&gt;
    CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL \&lt;br /&gt;
               -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Compile Etherboot to make an elf file for your ethernet card: &lt;br /&gt;
&lt;br /&gt;
     make bin32/natsemi.elf&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Compile and install mkelfImage from freebios/util/mkelfImage. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a bootimage to put on your TFTP server: &lt;br /&gt;
&lt;br /&gt;
    mkelfImage --command-line=&amp;quot;root=/dev/hda2 console=ttyS0,38400&amp;quot; \&lt;br /&gt;
               --kernel vmlinux -o /tftpboot/kernel&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: &lt;br /&gt;
&lt;br /&gt;
    option USE_ELF_BOOT=1&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. &lt;br /&gt;
&lt;br /&gt;
    insmod bios.o&lt;br /&gt;
    dd if=natsemi.elf of=/dev/bios bs=64k&lt;br /&gt;
    dd if=linuxbios.rom of=/dev/bios bs=64k seek=1&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Finally boot LinuxBIOS. &lt;br /&gt;
&lt;br /&gt;
How do I set GEODE video? &lt;br /&gt;
From christer@weinigel.se Wed Nov 27 07:47:17 2002&lt;br /&gt;
Date: 27 Nov 2002 10:55:01 +0100&lt;br /&gt;
From: Christer Weinigel &lt;br /&gt;
To: Adam Bezanson &lt;br /&gt;
Cc: linuxbios@clustermatic.org&lt;br /&gt;
Subject: Re: Geode Kernel Config&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Adam Bezanson&amp;quot;  writes:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; I've got an Eval card from National Semi that contains&lt;br /&gt;
&amp;gt; the SC1200. I'd like to try LinuxBios on it.&lt;br /&gt;
&amp;gt; I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.&lt;br /&gt;
&amp;gt; What patches do I need to apply to the kernel?&lt;br /&gt;
&amp;gt; Is there a config file I can use to configure the kernel, or&lt;br /&gt;
&amp;gt; should I do it manually?&lt;br /&gt;
&lt;br /&gt;
A normal 2.4 Linux kernel will work fine as long as you compile for a&lt;br /&gt;
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)&lt;br /&gt;
since the TSC behaves a bit differently.&lt;br /&gt;
&lt;br /&gt;
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,&lt;br /&gt;
you can find an old patch from me at:&lt;br /&gt;
&lt;br /&gt;
    http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&amp;amp;oe=UTF-8&amp;amp;output=gplain&lt;br /&gt;
&lt;br /&gt;
An updated version of this patch has been included in Linux 2.5.  Alan&lt;br /&gt;
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE&lt;br /&gt;
controller; I don't know if there is a corresponding patch for 2.4.&lt;br /&gt;
&lt;br /&gt;
Other than that, take a look at the freebios/src/mainboard/nano/nano&lt;br /&gt;
directory and make a copy of it.  All you should have to do is to&lt;br /&gt;
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config&lt;br /&gt;
Register (MCR) in the Config file and to modify the irq assignments.&lt;br /&gt;
&lt;br /&gt;
Depending on what you want to do, there are a few limitations with&lt;br /&gt;
the current LinuxBIOS on the SC1200: &lt;br /&gt;
&lt;br /&gt;
    There is no video support in LinuxBIOS itself, so you won't get&lt;br /&gt;
    any video until you have loaded the NatSemi Geode Linux&lt;br /&gt;
    framebuffer driver (can be found at www.linux4.tv under the&lt;br /&gt;
    heading SP1SC10 Platform Image).&lt;br /&gt;
&lt;br /&gt;
    There is no SMM/VSA support at all, this means that anything&lt;br /&gt;
    relying on it won't work.  What this means is that Audio won't&lt;br /&gt;
    work.&lt;br /&gt;
&lt;br /&gt;
Other than that everything works fine, IDE in PIO mode, the PCI bus,&lt;br /&gt;
watchdog, GPIOs, everything.&lt;br /&gt;
&lt;br /&gt;
  /Christer&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
&amp;quot;Just how much can I get away with and still go to heaven?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Freelance consultant specializing in device driver programming for Linux &lt;br /&gt;
Christer Weinigel   http://www.weinigel.se&lt;br /&gt;
_______________________________________________&lt;br /&gt;
Linuxbios mailing list&lt;br /&gt;
Linuxbios@clustermatic.org&lt;br /&gt;
http://www.clustermatic.org/mailman/listinfo/linuxbios&lt;br /&gt;
&lt;br /&gt;
 How do I set up testbios? &lt;br /&gt;
From daubin@actuality-systems.com Wed Oct  6 10:23:10 2004&lt;br /&gt;
Date: Tue, 5 Oct 2004 15:19:24 -0400&lt;br /&gt;
From: Dave Aubin &lt;br /&gt;
To: linuxbios@clustermatic.org&lt;br /&gt;
Subject: RE: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
&lt;br /&gt;
I've taken the time to put together a simple testbios faq.&lt;br /&gt;
I hope it is helpful.  Feedback and additions are welcome.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
Dave&lt;br /&gt;
&lt;br /&gt;
Testbios (vgabios) Faq&lt;br /&gt;
&lt;br /&gt;
Date: 10/5/2004&lt;br /&gt;
Author(s): David Aubin  daubin@actuality-systems.com&lt;br /&gt;
&lt;br /&gt;
Purpose:  Testbios is an i386 emulator that sits on top of user&lt;br /&gt;
space linux.  It's primary purpose is to provide program video rom's in&lt;br /&gt;
to&lt;br /&gt;
the cached memory area.&lt;br /&gt;
&lt;br /&gt;
Faq Contents:&lt;br /&gt;
1.  Where to obtain testbios&lt;br /&gt;
2.  Prerequisites&lt;br /&gt;
3.  How to build testbios&lt;br /&gt;
4.  How to retrieve a good video bios&lt;br /&gt;
5.  How to use testbios&lt;br /&gt;
&lt;br /&gt;
1.  Where to obtain testbios&lt;br /&gt;
        A. Testbios(vgabios) can be retrieved from the&lt;br /&gt;
linuxbios/freebios source tree:&lt;br /&gt;
http://www.linuxbios.org/developer/download/index.html&lt;br /&gt;
&lt;br /&gt;
2.  Prerequisites&lt;br /&gt;
        A. You must have installed pci-utils&lt;br /&gt;
                i.  Get&lt;br /&gt;
http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml&lt;br /&gt;
&lt;br /&gt;
3.  How to build testbios:&lt;br /&gt;
        A.  cd freebios/util/vgabios&lt;br /&gt;
        B.  Edit ./Makefile and fill in the correct values for your&lt;br /&gt;
environment&lt;br /&gt;
            I build on a 64 AMD so my makefile looks like this&lt;br /&gt;
&lt;br /&gt;
--Being ./Makefile for x64--&lt;br /&gt;
CC       =  gcc&lt;br /&gt;
ARCH     := $(shell uname -m | sed -e s,i[3456789]86,i386,)&lt;br /&gt;
INCLUDE  =  -I ../pciutils-2.1.11&lt;br /&gt;
CFLAGS   =  -Wall -Ix86emu/include -O2 -g $(INCLUDE)&lt;br /&gt;
&lt;br /&gt;
INTOBJS  =  int10.o int15.o int16.o int1a.o inte6.o&lt;br /&gt;
OBJECTS  =  testbios.o helper_exec.o helper_mem.o $(INTOBJS)&lt;br /&gt;
LDFLAGS  =  -static-libgcc -static&lt;br /&gt;
&lt;br /&gt;
LIBS     =  x86emu/src/x86emu/libx86emu.a&lt;br /&gt;
../pciutils-2.1.11/lib/libpci.a&lt;br /&gt;
&lt;br /&gt;
# user space pci is the only option right now.&lt;br /&gt;
OBJECTS += pci-userspace.o&lt;br /&gt;
&lt;br /&gt;
ifeq ($(shell if test &amp;quot;$(ARCH)&amp;quot; == &amp;quot;x86_64&amp;quot; ; then echo 1; fi), 1)&lt;br /&gt;
        CFLAGS +=-m32 -march=i386&lt;br /&gt;
        endif&lt;br /&gt;
&lt;br /&gt;
        all: testbios&lt;br /&gt;
&lt;br /&gt;
        testbios: $(OBJECTS) $(LIBS)&lt;br /&gt;
                $(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)&lt;br /&gt;
$(LIBS)&lt;br /&gt;
&lt;br /&gt;
helper_exec.o: helper_exec.c test.h&lt;br /&gt;
&lt;br /&gt;
x86emu/src/x86emu/libx86emu.a:&lt;br /&gt;
        $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux&lt;br /&gt;
&lt;br /&gt;
        clean:&lt;br /&gt;
                $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean&lt;br /&gt;
                rm -f *.o *~ testbios&lt;br /&gt;
&lt;br /&gt;
        distclean: clean&lt;br /&gt;
                $(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean&lt;br /&gt;
&lt;br /&gt;
--End ./Makefile--&lt;br /&gt;
&lt;br /&gt;
        C.  Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in&lt;br /&gt;
the correct values for your environment&lt;br /&gt;
            I build on a 64 AMD so my makefile looks like this&lt;br /&gt;
&lt;br /&gt;
--Begin ~vgabios/x86emu/src/x86emu/makefile.linux--&lt;br /&gt;
########################################################################&lt;br /&gt;
#####&lt;br /&gt;
#&lt;br /&gt;
#                                               Realmode X86 Emulator&lt;br /&gt;
Library&lt;br /&gt;
#&lt;br /&gt;
#               Copyright (C) 1996-1999 SciTech Software, Inc.&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
========================================================================&lt;br /&gt;
#&lt;br /&gt;
#  Permission to use, copy, modify, distribute, and sell this software&lt;br /&gt;
and&lt;br /&gt;
#  its documentation for any purpose is hereby granted without fee,&lt;br /&gt;
#  provided that the above copyright notice appear in all copies and&lt;br /&gt;
that&lt;br /&gt;
#  both that copyright notice and this permission notice appear in&lt;br /&gt;
#  supporting documentation, and that the name of the authors not be&lt;br /&gt;
used&lt;br /&gt;
#  in advertising or publicity pertaining to distribution of the&lt;br /&gt;
software&lt;br /&gt;
#  without specific, written prior permission.  The authors makes no&lt;br /&gt;
#  representations about the suitability of this software for any&lt;br /&gt;
purpose.&lt;br /&gt;
#  It is provided &amp;quot;as is&amp;quot; without express or implied warranty.&lt;br /&gt;
#&lt;br /&gt;
#  THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,&lt;br /&gt;
#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN&lt;br /&gt;
NO&lt;br /&gt;
#  EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR&lt;br /&gt;
#  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS&lt;br /&gt;
OF&lt;br /&gt;
#  USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR&lt;br /&gt;
#  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE&lt;br /&gt;
OR&lt;br /&gt;
#  PERFORMANCE OF THIS SOFTWARE.&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
========================================================================&lt;br /&gt;
#&lt;br /&gt;
# Descripton:   Linux specific makefile for the x86emu library.&lt;br /&gt;
#&lt;br /&gt;
########################################################################&lt;br /&gt;
#####&lt;br /&gt;
&lt;br /&gt;
TARGETLIB = libx86emu.a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OBJS=\&lt;br /&gt;
debug.o \&lt;br /&gt;
decode.o \&lt;br /&gt;
fpu.o \&lt;br /&gt;
ops.o \&lt;br /&gt;
ops2.o \&lt;br /&gt;
prim_ops.o \&lt;br /&gt;
sys.o&lt;br /&gt;
&lt;br /&gt;
$(TARGETLIB): $(OBJS)&lt;br /&gt;
        ar rv $(TARGETLIB) $(OBJS)&lt;br /&gt;
&lt;br /&gt;
        INCS   = -I. -Ix86emu -I../../include&lt;br /&gt;
        CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG&lt;br /&gt;
-DDEBUG&lt;br /&gt;
        ARCH   := $(shell uname -m | sed -e s,i[3456789]86,i386,)&lt;br /&gt;
        ifeq ($(shell if test &amp;quot;$(ARCH)&amp;quot; == &amp;quot;x86_64&amp;quot; ; then echo 1; fi),&lt;br /&gt;
1)&lt;br /&gt;
                CFLAGS +=-m32 -march=i386&lt;br /&gt;
                endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.c.o:&lt;br /&gt;
#       gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c&lt;br /&gt;
        gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c&lt;br /&gt;
&lt;br /&gt;
.cpp.o:&lt;br /&gt;
#       gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp&lt;br /&gt;
        gcc -c $(CFLAGS) $(INCS) $*.cpp&lt;br /&gt;
&lt;br /&gt;
clean:&lt;br /&gt;
        rm -f *.a *.o&lt;br /&gt;
&lt;br /&gt;
validate:       validate.o libx86emu.a&lt;br /&gt;
        gcc -o validate validate.o -lx86emu -L.&lt;br /&gt;
&lt;br /&gt;
--End ~vgabios/x86emu/src/x86emu/makefile.linux--&lt;br /&gt;
&lt;br /&gt;
        D.  Once built you could have a 32bit testbios executable made.&lt;br /&gt;
Depending on your embedded environment you might want to have it built&lt;br /&gt;
shared as the above example makes it static.  Just remove -static-libgcc&lt;br /&gt;
-static from the LDFLAGS on ./Makefile if you wish to have it built&lt;br /&gt;
shared.&lt;br /&gt;
&lt;br /&gt;
4.  How to retrieve a good video bios&lt;br /&gt;
        A.  There are sites that have video bios roms on their website.&lt;br /&gt;
            I know of this one for nvidia cards:&lt;br /&gt;
            http://whitebunny.demon.nl/hardware/chipset_nvidia.html&lt;br /&gt;
        B.  However you should be able to retrieve your own video bios&lt;br /&gt;
as well&lt;br /&gt;
            with linux.&lt;br /&gt;
            i.  Boot up a machine with a commercial bios (not linux&lt;br /&gt;
bios) with&lt;br /&gt;
                the video card you wish to work under linux bios.&lt;br /&gt;
            ii. From the command line enter:&lt;br /&gt;
                dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or &lt;br /&gt;
                dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432&lt;br /&gt;
&lt;br /&gt;
                This assumes you card's bios is cached in 0xc0000.  You&lt;br /&gt;
                can see where and how much your card's bios is using by&lt;br /&gt;
                doing a cat iomem | grep &amp;quot;Video ROM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                a.  dd Explained (man dd to learn more):&lt;br /&gt;
                        1.  if is the location to retrieve from.&lt;br /&gt;
                        2.  of is the output file (your rom image)&lt;br /&gt;
                        3.  skip jumps n blocks where the default n is&lt;br /&gt;
512 bytes&lt;br /&gt;
                        4.  count is how many blocks you wish to read&lt;br /&gt;
                        5.  bs is the block size&lt;br /&gt;
        C.  You now have a video bios image&lt;br /&gt;
&lt;br /&gt;
5.  How to use testbios&lt;br /&gt;
        A.  Currently testbios only works from user space linux&lt;br /&gt;
(10/4/04)&lt;br /&gt;
        B.  Example from a linux command line or script enter the&lt;br /&gt;
following to&lt;br /&gt;
            get your video bios programmed:&lt;br /&gt;
            ./testbios -s 65536 --abseg /dev/mem ./vgabios.bin&lt;br /&gt;
            i. Testbios explained&lt;br /&gt;
                a.  -s  how much of the video bios is there&lt;br /&gt;
                b.  --abseg where would you like to write this (/dev/mem&lt;br /&gt;
default)&lt;br /&gt;
                c.  filename of video bios&lt;br /&gt;
                d.  -d diag mode &lt;br /&gt;
                        1.  How to get pci busdevfn&lt;br /&gt;
                                A.  lspci&lt;br /&gt;
                                B.  look for your video card&lt;br /&gt;
                                        Example:&lt;br /&gt;
                                        2:00:00&lt;br /&gt;
                                        2 (00 &amp;lt;&amp;lt; 3) | 00 = 0x200&lt;br /&gt;
                                        Example:&lt;br /&gt;
                                        00:12.0:&lt;br /&gt;
                                        0 (12 &amp;lt;&amp;lt; 3) | 0 = 0x90&lt;br /&gt;
                e. -t dump &lt;br /&gt;
                f. -c codesegment Where do you want to start, default is&lt;br /&gt;
0xc0000&lt;br /&gt;
                g. -b base  Where do you want base to be default is&lt;br /&gt;
0xc000&lt;br /&gt;
                h. -i instruction pointer usually left off as the&lt;br /&gt;
default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----Original Message-----&lt;br /&gt;
From: linuxbios-admin@clustermatic.org&lt;br /&gt;
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin&lt;br /&gt;
Sent: Tuesday, October 05, 2004 2:22 PM&lt;br /&gt;
To: Richard Smith&lt;br /&gt;
Cc: linuxbios@clustermatic.org&lt;br /&gt;
Subject: RE: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
  Thank you:)  Yes, it was at 0xc0000-0xc7fff, which is only 32k.&lt;br /&gt;
But the image I got from the windows tool was 64k (double 8000).&lt;br /&gt;
Weird.  I would like to stay away from window tools.&lt;br /&gt;
  The info you provided is nice.  I wish there was a way for us To make&lt;br /&gt;
a faq and we could add this to the testbios faq.  There Is a lot of good&lt;br /&gt;
info on the clustermatic list, but it is all Dispersed.  &lt;br /&gt;
  Ron if I write a simple faq can you provide some mechanism to Allow&lt;br /&gt;
updates to it?&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
Dave &lt;br /&gt;
&lt;br /&gt;
-----Original Message-----&lt;br /&gt;
From: Richard Smith [mailto:rsmith@bitworks.com]&lt;br /&gt;
Sent: Tuesday, October 05, 2004 2:16 PM&lt;br /&gt;
To: Dave Aubin&lt;br /&gt;
Cc: linuxbios@clustermatic.org&lt;br /&gt;
Subject: Re: Testbios help with nvidia 6800Gt and simple how to&lt;br /&gt;
&lt;br /&gt;
Dave Aubin wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; It seems my dd returned an unusable binary.  I found a good binary for&lt;br /&gt;
&lt;br /&gt;
&amp;gt; The nvidia card from here:&lt;br /&gt;
&amp;gt; http://whitebunny.demon.nl/hardware/chipset_nvidia.html&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&lt;br /&gt;
I was wondering about your dd command that but I had not had a chance to&lt;br /&gt;
respond yet.&lt;br /&gt;
&lt;br /&gt;
This is what I use:&lt;br /&gt;
&lt;br /&gt;
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432&lt;br /&gt;
&lt;br /&gt;
That will rip the bios from 0x0c0000.  You can verify that you actually&lt;br /&gt;
have bios there with&lt;br /&gt;
&lt;br /&gt;
  'hd -s 0x0c0000 -n 256 /dev/mem'&lt;br /&gt;
&lt;br /&gt;
in some cases it may be located at 0x0e0000 rather than 0x0c0000.&lt;br /&gt;
&lt;br /&gt;
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)&lt;br /&gt;
and futher on you should see some text identifying the bios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
Richard A. Smith&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
_______________________________________________&lt;br /&gt;
Linuxbios mailing list&lt;br /&gt;
Linuxbios@clustermatic.org&lt;br /&gt;
http://www.clustermatic.org/mailman/listinfo/linuxbios&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Â &lt;/div&gt;</summary>
		<author><name>Rminnich</name></author>	</entry>

	</feed>