[LinuxBIOS] [PATCH] Add Intel i810, i82801aa (ICH) and Asus MEW-VM support

Corey Osgood corey_osgood at verizon.net
Sun May 27 10:48:51 CEST 2007


Just a couple quick responses, I'll get to work on changes as soon as I
can coax fedora into working correctly again. minicom.cap attached, I
forgot it before.

On Sat, 2007-05-26 at 15:29 +0200, Uwe Hermann wrote:
> > Also, the i82801aa is almost completely copy and pasted from the
> > i82801ca, with the device IDs swapped over (bad practice, I know, but if
> > ain't broke don't fix it).
> 
> This is change number 1 ;-)
> 
> The code is indeed fully copy+paste, which we should try to avoid. Can
> you change it to modify the i82801ca with #ifdef's to support the
> i82801aa, too? In the mainboard code you'd just have to
> 
>   #define I82801AA 1
> 
> or something similar...

Agreed, as long as no further fixup is necessary. Perhaps I'll just hold
onto this patch until I can fully test out the southbridge function, or
else we could commit as-is and I'll do some cleanup later. 

The main reason for the copy/paste was that I didn't think it would work
out-of-the-box as well as it has (if at all). I was looking for
something to start with and rewrite as needed, but that would be close
enough to give me some useful idea what the problem was. Some fixups
might still be needed to some of the device functions, especially USB
and audio. I don't even have audio headers on my board, so I can't test
that (I'll put a note of this in the code). In case you haven't noticed,
I tend to be somewhat unimaginative and lazy, so I like to have some
good or at least decent code to use as a guideline, then rip apart and
fix as needed.

I should probably stress here that I haven't yet gotten serial output
from a booting linux kernel although I do get to "loading kernel" and
"loading initrd", see log attached. For some reason the stock ubuntu
kernel either ignores that option, or else can't do it with the super io
not going through its usual post-ram init. Or else the kernel just isn't
booting at all. I'll work on testing all those possibilities soon.

I'll also look into the i82801er, and see what/where the big changes
are. Perhaps all 3 can be merged into one big i82801xx mess.

> Poll: do we want i810 or rather i82810? For the southbridges we use the
> full names (e.g. i82801aa), why don't we do the same with the
> northbridges?
> 
> (yes, that would also change i440bx to i82443bx)

Probably we should, the i440bx seems to be the only device known by its
marketing name rather than part name, and some of the naming conventions
marketing departments use are just plain stupid (*cough* Via *cough
cough*). I'll fix the i810 as well.

> 
> > +#include "i810.h"
> > +
> > +/*-----------------------------------------------------------------------------
> > +Macros and definitions.
> > +-----------------------------------------------------------------------------*/
> > +
> > +/* Uncomment this to enable debugging output. */
> > +#define DEBUG_RAM_SETUP 1
> 
> Btw, disabling this reduces the number of registers required for romcc,
> thus you can get further in the compile...

On i810, this isn't really a concern (yet), it already compiles/runs
fine and isn't nearly as complex as the 440bx code i was working on.
OTOH, it isn't as full-featured yet either, it's still using static
timings and is somewhat limited in what it can handle.

> > +			if(dimm_size < 32)
> > +			{
> > +				print_err("DIMM row sizes larger than 128MB not 
> > +							supported on i810\r\n");
> > +				print_err("Treating as 128MB DIMM\r\n");
> 
> Will this work? Did you test it?
> 

Well, at the moment it doesn't work at all and completely kills anything
but 128mb dimms, because I messed up and flipped the comparison (<) the
wrong way. Thanks for asking, I hadn't spotted this, nor had I tested
with anything but my 128mb dimm after adding it. Whether it works or not
remains to be seen, I'll need to finish some dynamic buffer strength
stuff first (since I can't pull a working value from a system that
refuses to boot).

> > +static void sdram_enable(int controllers, const struct mem_controller *ctrl)
> > +{
> > +	int i;
> > +	/* Todo: this will currently work with either one dual sided or two single
> > +	 * sided dimms. Needs to work with 2 dual sided dimms in the long run */
> > +	uint32_t row_offset;
> > +		
> > +	spd_set_dram_size(ctrl, row_offset); 
> > +	
> > +	/* 1. Apply NOP. */
> > +	PRINT_DEBUG("RAM Enable 1: Apply NOP\r\n");
> > +	do_ram_command(ctrl, RAM_COMMAND_NOP, 0, row_offset);
> > +	udelay(200);
> 
> Did you test the delays? It's likely that smaller values will suffice
> (not too important, though, RAM init is pretty fast anyway).
> 

Yep, everything pre-ram has been tested on several 128mb single-sided
dimms, guess I should have attached a boot log the first time. This was
based on my copy of i440bx's raminit.c, and those delays work on there
as well. They might be able to be tightened further, but I seriously
doubt anyone's going to notice even a 50% speedup to a 200 microsecond
delay.

> > +chip northbridge/intel/i810
> > +	device pci_domain 0 on 
> > +		chip southbridge/intel/i82801aa # Southbridge
> > +			device pci 1e.0 on end # PCI Bridge
> > +			device pci 1f.0 on  # ISA/LPC? Bridge
> > +				#chip superio/smsc/lpc47b272 # Super I/O
> > +				#	device pnp 2e.0 on end # Floppy
> > +				#	device pnp 2e.3 off end # Parallel port
> > +				#	device pnp 2e.4 on # COM1
> > +				#		io 0x60 = 0x3f8
> > +				#		irq 0x70 = 4
> > +				#	end
> > +				#	device pnp 2e.5 on end # COM2
> > +				#	device pnp 2e.4 on end # Power mgmt.
> > +				#	#device pnp 2e.5 on end # Mouse
> > +				#	device pnp 2e.7 on # Keyboard & Mouse?
> > +				#		io 0x60 = 0x60
> > +				#		io 0x62 = 0x64
> > +				#		irq 0x70 = 1
> > +				#		irq 0x72 = 12 # ???
> > +				#	end
> > +				#end
> > +			end
> > +			device pci 1f.1 on end # IDE
> > +			device pci 1f.2 on end # USB
> > +			device pci 1f.3 on end # SMBus
> > +			device pci 1f.5 off end # AC'97
> > +			device pci 1f.6 off end # AC'97 Modem (MC'97)?
> > +		end
> 
> > +		device pci 0.0 on end # Host bridge
> 
> Not sure about this. I thought the order of the devices _does_ matter
> here? I.e. lower IDs must come first? Can somebody please clarify this?
> 

I can't honestly remember why I did that, but it seems to work the same
either way. Probably was part of my attempt to get the super io working,
or else get rid of (fix?) some annoying log errors.

Anyways, just realized that the same superio is used by the
xe7501devkit, and I doubt that would have been committed if it wasn't
working. I'll give this another shot tomorrow, with a little tweaking,
and check the svn logs to see what's changed since it was originally
committed.

> I think there's a global debug.c somewhere, and if there isn't we
> should
> create one... 

There isn't that I can find, just about every mainboard has its own
debug.c, and all are nearly identical. I'll do some more grepping, and
see if I can find the functions in a file with a different name. Any
suggestions where to put a generic one, if it comes to that? I'm
thinking src/include/debug/mainboard_debug.c (and northbridge_debug.c,
since it's the same way). Or else combine all the functions into one big
debug.c and put it in the same place.

> > Index: src/mainboard/asus/mew-vm/auto.c
> 
> Oh, I'm not sure this will work or is a good idea.
> 
> I'd rather use "mew_vm" (instead of "mew-vm"). Pathnames may appear as
> variable names (for instance) in C code, that's also why all directory names
> start with a letter (i440bx, not 440bx).
> 
> Same for dashes, "mew-vm" is not a valid C variable name.

Somehow, somewhere in the build process, the dashes in the folder
name(s) get converted to an underscore, so all the variables are named
*mew_vm*, and this builds/runs just fine. If it still needs to be
changed, just let me know.

Thanks for the review,
Corey
-------------- next part --------------


LinuxBIOS-2.0.0.0Fallback Fri May 25 03:29:27 EDT 2007 starting...
No DIMM found in slot 00
Found DIMM in slot 01
DIMM is 0x20 in units of 4MB
After translation, dimm_size is 0x0d
DRP calculated to 0xd0
RAM Enable 1: Apply NOP
    Sending RAM command 0x8f to 0x00000000
RAM Enable 2: Precharge all
    Sending RAM command 0xaf to 0x00000000
RAM Enable 3: CBR
    Sending RAM command 0xef to 0x00000000
RAM Enable 4: Mode register set
    Sending RAM command 0xcf to 0x000001d0
RAM Enable 5: Normal operation
    Sending RAM command 0x2f to 0x00000000
Northbridge following SDRAM init:
PCI: 00:00.00
00: 86 80 20 71 06 00 80 20 02 00 00 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 60 00 d0 2f 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 da 77 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00
Copying LinuxBIOS to RAM.
Jumping to LinuxBIOS.
LinuxBIOS-2.0.0.0Fallback Fri May 25 03:29:27 EDT 2007 booting...
end 50f3cfc5, start 0
32-bit delta 1213
calibrate_tsc 32-bit result is 1213
clocks_per_usec: 1213
Enumerating buses...
scan_static_bus for Root Device
Finding PCI configuration type.
PCI: Using configuration type 1
PCI_DOMAIN: 0000 enabled
PCI_DOMAIN: 0000 scanning...
PCI: pci_scan_bus for bus 00
PCI: 00:00.0 [8086/7120] ops
PCI: 00:00.0 [8086/7120] enabled
Disabling static device: PCI: 00:01.0
PCI: devfn 0x9, bad id 0xffffffff
PCI: devfn 0xa, bad id 0xffffffff
PCI: devfn 0xb, bad id 0xffffffff
PCI: devfn 0xc, bad id 0xffffffff
PCI: devfn 0xd, bad id 0xffffffff
PCI: devfn 0xe, bad id 0xffffffff
PCI: devfn 0xf, bad id 0xffffffff
PCI: devfn 0x10, bad id 0xffffffff
PCI: devfn 0x18, bad id 0xffffffff
PCI: devfn 0x20, bad id 0xffffffff
PCI: devfn 0x28, bad id 0xffffffff
PCI: devfn 0x30, bad id 0xffffffff
PCI: devfn 0x38, bad id 0xffffffff
PCI: devfn 0x40, bad id 0xffffffff
PCI: devfn 0x48, bad id 0xffffffff
PCI: devfn 0x50, bad id 0xffffffff
PCI: devfn 0x58, bad id 0xffffffff
PCI: devfn 0x60, bad id 0xffffffff
PCI: devfn 0x68, bad id 0xffffffff
PCI: devfn 0x70, bad id 0xffffffff
PCI: devfn 0x78, bad id 0xffffffff
PCI: devfn 0x80, bad id 0xffffffff
PCI: devfn 0x88, bad id 0xffffffff
PCI: devfn 0x90, bad id 0xffffffff
PCI: devfn 0x98, bad id 0xffffffff
PCI: devfn 0xa0, bad id 0xffffffff
PCI: devfn 0xa8, bad id 0xffffffff
PCI: devfn 0xb0, bad id 0xffffffff
PCI: devfn 0xb8, bad id 0xffffffff
PCI: devfn 0xc0, bad id 0xffffffff
PCI: devfn 0xc8, bad id 0xffffffff
PCI: devfn 0xd0, bad id 0xffffffff
PCI: devfn 0xd8, bad id 0xffffffff
PCI: devfn 0xe0, bad id 0xffffffff
PCI: devfn 0xe8, bad id 0xffffffff
PCI: 00:1e.0 [8086/2418] bus ops
PCI: 00:1e.0 [8086/2418] enabled
PCI: 00:1f.0 [8086/2410] bus ops
PCI: 00:1f.0 [8086/2410] enabled
PCI: 00:1f.1 [8086/2411] ops
PCI: 00:1f.1 [8086/2411] enabled
PCI: 00:1f.2 [8086/2412] ops
PCI: 00:1f.2 [8086/2412] enabled
PCI: 00:1f.3 [8086/2413] enabled
PCI: devfn 0xfc, bad id 0xffffffff
PCI: devfn 0xff, bad id 0xffffffff
do_pci_scan_bridge for PCI: 00:1e.0
PCI: pci_scan_bus for bus 01
PCI: devfn 0x0, bad id 0xffffffff
PCI: devfn 0x8, bad id 0xffffffff
PCI: devfn 0x10, bad id 0xffffffff
PCI: devfn 0x18, bad id 0xffffffff
PCI: devfn 0x20, bad id 0xffffffff
PCI: devfn 0x28, bad id 0xffffffff
PCI: devfn 0x30, bad id 0xffffffff
PCI: devfn 0x38, bad id 0xffffffff
PCI: devfn 0x40, bad id 0xffffffff
PCI: devfn 0x48, bad id 0xffffffff
PCI: devfn 0x50, bad id 0xffffffff
PCI: devfn 0x58, bad id 0xffffffff
PCI: devfn 0x60, bad id 0xffffffff
PCI: devfn 0x68, bad id 0xffffffff
PCI: devfn 0x70, bad id 0xffffffff
PCI: devfn 0x78, bad id 0xffffffff
PCI: devfn 0x80, bad id 0xffffffff
PCI: devfn 0x88, bad id 0xffffffff
PCI: devfn 0x90, bad id 0xffffffff
PCI: devfn 0x98, bad id 0xffffffff
PCI: devfn 0xa0, bad id 0xffffffff
PCI: devfn 0xa8, bad id 0xffffffff
PCI: devfn 0xb0, bad id 0xffffffff
PCI: devfn 0xb8, bad id 0xffffffff
PCI: devfn 0xc0, bad id 0xffffffff
PCI: devfn 0xc8, bad id 0xffffffff
PCI: devfn 0xd0, bad id 0xffffffff
PCI: devfn 0xd8, bad id 0xffffffff
PCI: devfn 0xe0, bad id 0xffffffff
PCI: devfn 0xe8, bad id 0xffffffff
PCI: devfn 0xf0, bad id 0xffffffff
PCI: devfn 0xf8, bad id 0xffffffff
PCI: pci_scan_bus returning with max=001
do_pci_scan_bridge returns max 1
scan_static_bus for PCI: 00:1f.0
scan_static_bus for PCI: 00:1f.0 done
PCI: pci_scan_bus returning with max=001
scan_static_bus for Root Device done
done
Allocating resources...
Reading resources...
Root Device compute_allocate_io: base: 00000400 size: 00000000 align: 0 gran: 0
Root Device read_resources bus 0 link: 0
PCI_DOMAIN: 0000 read_resources bus 0 link: 0
PCI: 00:1e.0 compute_allocate_io: base: 00000000 size: 00000000 align: 12 gran: 12
PCI: 00:1e.0 read_resources bus 1 link: 0
PCI: 00:1e.0 read_resources bus 1 link: 0 done
PCI: 00:1e.0 compute_allocate_io: base: 00000000 size: 00000000 align: 12 gran: 12 done
PCI: 00:1e.0 compute_allocate_io: base: 0000f000 size: 00000000 align: 12 gran: 12
PCI: 00:1e.0 read_resources bus 1 link: 0
PCI: 00:1e.0 read_resources bus 1 link: 0 done
PCI: 00:1e.0 compute_allocate_io: base: 0000f000 size: 00000000 align: 12 gran: 12 done
PCI: 00:1e.0 1c <- [0x000000f000 - 0x000000efff] bus 01 io
PCI: 00:1e.0 compute_allocate_prefmem: base: 00000000 size: 00000000 align: 20 gran: 20
PCI: 00:1e.0 read_resources bus 1 link: 0
PCI: 00:1e.0 read_resources bus 1 link: 0 done
PCI: 00:1e.0 compute_allocate_prefmem: base: 00000000 size: 00000000 align: 20 gran: 20 done
PCI: 00:1e.0 compute_allocate_prefmem: base: fff00000 size: 00000000 align: 20 gran: 20
PCI: 00:1e.0 read_resources bus 1 link: 0
PCI: 00:1e.0 read_resources bus 1 link: 0 done
PCI: 00:1e.0 compute_allocate_prefmem: base: fff00000 size: 00000000 align: 20 gran: 20 done
PCI: 00:1e.0 24 <- [0x00fff00000 - 0x00ffefffff] bus 01 prefmem
PCI: 00:1e.0 compute_allocate_mem: base: 00000000 size: 00000000 align: 20 gran: 20
PCI: 00:1e.0 read_resources bus 1 link: 0
PCI: 00:1e.0 read_resources bus 1 link: 0 done
PCI: 00:1e.0 compute_allocate_mem: base: 00000000 size: 00000000 align: 20 gran: 20 done
PCI: 00:1e.0 compute_allocate_mem: base: fff00000 size: 00000000 align: 20 gran: 20
PCI: 00:1e.0 read_resources bus 1 link: 0
PCI: 00:1e.0 read_resources bus 1 link: 0 done
PCI: 00:1e.0 compute_allocate_mem: base: fff00000 size: 00000000 align: 20 gran: 20 done
PCI: 00:1e.0 20 <- [0x00fff00000 - 0x00ffefffff] bus 01 mem
<null> read_resources bus 0 link: 0
<null> read_resources bus 0 link: 0 done
PCI_DOMAIN: 0000 read_resources bus 0 link: 0 done
Root Device read_resources bus 0 link: 0 done
PCI: 00:1f.2 20 *  [0x00000400 - 0x0000041f] io
PCI: 00:1f.1 20 *  [0x00000420 - 0x0000042f] io
PCI: 00:1f.3 20 *  [0x00000430 - 0x0000043f] io
Root Device compute_allocate_io: base: 00000440 size: 00000040 align: 5 gran: 0 done
Root Device compute_allocate_mem: base: 00000000 size: 00000000 align: 0 gran: 0
Root Device read_resources bus 0 link: 0
Root Device read_resources bus 0 link: 0 done
Root Device compute_allocate_mem: base: 00000000 size: 00000000 align: 0 gran: 0 done
Done reading resources.
Setting resources...
Root Device compute_allocate_io: base: 00001000 size: 00000040 align: 5 gran: 0
Root Device read_resources bus 0 link: 0
Root Device read_resources bus 0 link: 0 done
PCI: 00:1f.2 20 *  [0x00001000 - 0x0000101f] io
PCI: 00:1f.1 20 *  [0x00001020 - 0x0000102f] io
PCI: 00:1f.3 20 *  [0x00001030 - 0x0000103f] io
Root Device compute_allocate_io: base: 00001040 size: 00000040 align: 5 gran: 0 done
Root Device compute_allocate_mem: base: 100000000 size: 00000000 align: 0 gran: 0
Root Device read_resources bus 0 link: 0
Root Device read_resources bus 0 link: 0 done
Root Device compute_allocate_mem: base: 100000000 size: 00000000 align: 0 gran: 0 done
Root Device assign_resources, bus 0 link: 0
Setting RAM size to 128 MB
PCI_DOMAIN: 0000 assign_resources, bus 0 link: 0
PCI: 00:1f.1 20 <- [0x0000001020 - 0x000000102f] io
PCI: 00:1f.2 20 <- [0x0000001000 - 0x000000101f] io
PCI: 00:1f.3 20 <- [0x0000001030 - 0x000000103f] io
PCI_DOMAIN: 0000 assign_resources, bus 0 link: 0
Root Device assign_resources, bus 0 link: 0
Done setting resources.
Done allocating resources.
Enabling resources...
PCI: 00:00.0 cmd <- 146
PCI: 00:1e.0 bridge ctrl <- 0003
PCI: 00:1e.0 cmd <- 141
PCI: 00:1f.0 cmd <- 14f
PCI: 00:1f.1 cmd <- 141
PCI: 00:1f.2 cmd <- 141
PCI: 00:1f.3 subsystem <- 00/00
PCI: 00:1f.3 cmd <- 141
done.
Initializing devices...
Root Device init
PCI: 00:1e.0 init
PCI: 00:1f.0 init
ioapic southbridge enabled 2186
Southbridge apic id = 2
set power on after power fail
set power on after power fail
RTC Init
PCI: 00:1f.1 init
IDE0 IDE1 PCI: 00:1f.2 init
PCI: 00:1f.3 init
PCI: 00:00.0 init
Northbridge Init
Devices initialized
Moving GDT to 0x500...ok
Adjust low_table_end from 0x00000530 to 0x00001000 
Adjust rom_table_end from 0x000f0000 to 0x000f0000 
Wrote linuxbios table at: 00000530 - 000006ac  checksum 6dea

Welcome to elfboot, the open sourced starter.
January 2002, Eric Biederman.
Version 1.3

rom_stream: 0xfffe0000 - 0xfffeffff
Found ELF candidate at offset 0
header_offset is 0
Try to load at offset 0x0
malloc Enter, size 32, free_mem_ptr 00016000
malloc 0x00016000
New segment addr 0x100000 size 0x2d4a0 offset 0xc0 filesize 0xe788
(cleaned up) New segment addr 0x100000 size 0x2d4a0 offset 0xc0 filesize 0xe788
lb: [0x0000000000004000, 0x000000000001a000)
malloc Enter, size 32, free_mem_ptr 00016020
malloc 0x00016020
New segment addr 0x12d4a0 size 0x48 offset 0xe860 filesize 0x48
(cleaned up) New segment addr 0x12d4a0 size 0x48 offset 0xe860 filesize 0x48
lb: [0x0000000000004000, 0x000000000001a000)
Dropping non PT_LOAD segment
Dropping non PT_LOAD segment
Loading Segment: addr: 0x0000000000100000 memsz: 0x000000000002d4a0 filesz: 0x000000000000e788
[ 0x0000000000100000, 000000000010e788, 0x000000000012d4a0) <- 00000000000000c0
Clearing Segment: addr: 0x000000000010e788 memsz: 0x000000000001ed18
Loading Segment: addr: 0x000000000012d4a0 memsz: 0x0000000000000048 filesz: 0x0000000000000048
[ 0x000000000012d4a0, 000000000012d4e8, 0x000000000012d4e8) <- 000000000000e860
Loaded segments
verified segments
closed down stream
Jumping to boot code at 0x10a3f8
entry    = 0x0010a3f8
lb_start = 0x00004000
lb_size  = 0x00016000
adjust   = 0x07fe6000
buffer   = 0x07fd4000
     elf_boot_notes = 0x00010640
adjusted_boot_notes = 0x07ff6640
FILO version 0.5 (amp at amplifier) Fri May 25 03:09:15 EDT 2007
menu: hda1:/boot/grub/menu.lst
hda: LBA 20GB: ST320413A                               
Mounted ext2fs
Press `ESC' to enter the menu... 2   Press `ESC' to enter the menu... 1   Press `ESC' to enter the menu... 0   
                                  FILO 0.5

+-------------------------------------------------------------------------+||||||||||||||||||||||||+-------------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, 'a' to modify the kernel arguments
      before booting, or 'c' for a command-line.  Ubuntu, kernel 2.6.17-11-generic                                         Ubuntu, kernel 2.6.17-11-generic (recovery mode)                         Ubuntu, kernel 2.6.17-10-generic                                         Ubuntu, kernel 2.6.17-10-generic (recovery mode)                         Ubuntu, memtest86+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Ubuntu, kernel 2.6.17-11-generic                                         Ubuntu, kernel 2.6.17-11-generic (recovery mode)                        
                                  FILO 0.5

+-------------------------------------------------------------------------+||||||||||||||||||||||||+-------------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press 'b' to boot, 'e' to edit the selected command in the
      boot sequence, 'c' for a command-line, 'o' to open a new line
      after ('O' for before) the selected line, 'd' to remove the
      selected line, or escape to go back to the main menu.  root  (hd0,0)                                                            kernel  /boot/vmlinuz-2.6.17-11-generic root=/dev/hda1 ro single         initrd  /boot/initrd.img-2.6.17-11-generic                               boot                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              root  (hd0,0)                                                            kernel  /boot/vmlinuz-2.6.17-11-generic root=/dev/hda1 ro single         [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.  ESC at any time cancels.  ENTER 
   at any time accepts your changes.]

grub edit> kernel  /boot/vmlinuz-2.6.17-11-generic root=/dev/hda1 ro single     c< single co                                                                    nsole=tty0 console  =ttySD 0,115200

                                  FILO 0.5

+-------------------------------------------------------------------------+||||||||||||||||||||||||+-------------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press 'b' to boot, 'e' to edit the selected command in the
      boot sequence, 'c' for a command-line, 'o' to open a new line
      after ('O' for before) the selected line, 'd' to remove the
      selected line, or escape to go back to the main menu.  root  (hd0,0)                                                            kernel  /boot/vmlinuz-2.6.17-11-generic root=/dev/hda1 ro single cons>   initrd  /boot/initrd.img-2.6.17-11-generic                               boot                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Booting command-list

root  (hd0,0)
kernel  /boot/vmlinuz-2.6.17-11-generic root=/dev/hda1 ro single console=tty0 c
onsole=ttyS0,115200
initrd  /boot/initrd.img-2.6.17-11-generic
boot

Booting 'hda1:/boot/vmlinuz-2.6.17-11-generic root=/dev/hda1 ro single console=
tty0 console=ttyS0,115200 initrd=/boot/initrd.img-2.6.17-11-generic'
Found Linux version 2.6.17-11-generic (root at terranova) #2 SMP Tue Mar 13 23:32:38 UTC 2007 bzImage.
Loading kernel... ok
Loading initrd... ok
Jumping to entry point...


More information about the coreboot mailing list