Hello,
I've been trying to boot grub installed on the hard drive using coreboot
and SeaBIOS as a payload. The motherboard I'm using is Intel Mohon Peak.
Also, I do not use VGA for output, only serial port. So, I included the
sgabios into my rom file. Here is its layout:
$ ./build/cbfstool build/coreboot.rom print
coreboot.rom: 8192 kB, bootblocksize 1024, romsize 8388608, offset 0x600000
alignment: 64 bytes, architecture: x86
Name Offset Type Size
cmos_layout.bin 0x600000 cmos_layout 1352
pci1106,3230.rom 0x600580 optionrom 4096
fallback/romstage 0x6015c0 stage 26620
fallback/ramstage 0x607e00 stage 60427
fallback/payload 0x616a80 payload 53368
config 0x623b40 raw 4538
revision 0x624d40 raw 714
vgaroms/sgabios.bin 0x625040 raw 4096
(empty) 0x626080 null 1220376
mrc.cache 0x74ffc0 (unknown) 65536
cpu_microcode_blob.bin 0x760000 microcode 83968
(empty) 0x774840 null 46936
fsp.bin 0x77ffc0 (unknown) 372736
(empty) 0x7db000 null 150424
The issue is, it looks like SeaBIOS does not load sgabios at all.
Here is the SeaBIOS output, debug level 7 (I also put it in the attachment):
Attempting to find coreboot table
Found coreboot table forwarder.
Now attempting to find coreboot memory map
Found mainboard Intel Mohon Peak CRB
malloc preinit
Relocating init from 0x000e6b60 to 0x7fd97590 (size 35248)
malloc init
Found CBFS header at 0xfffffbe0
Add romfile: cmos_layout.bin (size=1352)
Add romfile: pci1106,3230.rom (size=4096)
Add romfile: fallback/romstage (size=26620)
Add romfile: fallback/ramstage (size=60427)
Add romfile: fallback/payload (size=53368)
Add romfile: config (size=4538)
Add romfile: revision (size=714)
Add romfile: vgaroms/sgabios.bin (size=4096)
Add romfile: (size=1220376)
Add romfile: mrc.cache (size=65536)
Add romfile: cpu_microcode_blob.bin (size=83968)
Add romfile: (size=46936)
Add romfile: fsp.bin (size=372736)
Add romfile: (size=150424)
init ivt
init bda
init bios32
init PNPBIOS table
init keyboard
init mouse
init pic
math cp init
tsc calibrate start=1665406224 end=1669527480 diff=4121256
CPU Mhz=2401
init timer
PCI probe
PCI device 00:00.0 (vd=8086:1f08 c=0600)
PCI device 00:01.0 (vd=8086:1f10 c=0604)
PCI device 00:03.0 (vd=8086:1f12 c=0604)
PCI device 00:0b.0 (vd=8086:1f18 c=0b40)
PCI device 00:0e.0 (vd=8086:1f14 c=0600)
PCI device 00:0f.0 (vd=8086:1f16 c=0806)
PCI device 00:13.0 (vd=8086:1f15 c=0880)
PCI device 00:16.0 (vd=8086:1f2c c=0c03)
PCI device 00:17.0 (vd=8086:1f22 c=0106)
PCI device 00:18.0 (vd=8086:1f32 c=0106)
PCI device 00:1f.0 (vd=8086:1f38 c=0601)
PCI device 00:1f.3 (vd=8086:1f3c c=0c05)
PCI device 01:00.0 (vd=1a03:1150 c=0604)
PCI device 02:00.0 (vd=1a03:2000 c=0300)
PCI device 03:00.0 (vd=10b5:8624 c=0604)
PCI device 04:04.0 (vd=10b5:8624 c=0604)
PCI device 04:05.0 (vd=10b5:8624 c=0604)
PCI device 04:08.0 (vd=10b5:8624 c=0604)
PCI device 04:09.0 (vd=10b5:8624 c=0604)
PCI device 06:00.0 (vd=8086:1528 c=0200)
PCI device 06:00.1 (vd=8086:1528 c=0200)
Found 21 PCI devices (max PCI bus is 08)
Relocating coreboot bios tables
Copying ACPI RSDP from 0x7fde2800 to 0x000f5730
Copying SMBIOS entry point from 0x7fdee000 to 0x000f5710
rsdp=0x000f5730
rsdt=0x7fde2830
fadt=0x7fde4950
pm_tmr_blk=408
Using pmtimer, ioport 0x408
/7fd95000\ Start thread
|7fd95000| init usb
|7fd95000| EHCI init on dev 00:16.0 (regs=0xdc865420)
/7fd94000\ Start thread
init ps2port
/7fd93000\ Start thread
|7fd93000| i8042_flush
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| i8042 flushed ff (status=ff)
|7fd93000| WARNING - Timeout at i8042_flush:71!
\7fd93000/ End thread
init lpt
Found 0 lpt ports
init serial
Found 2 serial ports
init floppy drives
init hard drives
init ahci
ebda moved from 9f000 to 9e800
AHCI controller at 17.0, iobase dc864000, irq 15
AHCI: cap 0xc720ff03, ports_impl 0x2
/7fd92000\ Start thread
|7fd92000| AHCI/1: probing
|7fd92000| AHCI/1: link up
\7fd95000/ End thread
/7fd91000\ Start thread
AHCI controller at 18.0, iobase dc864800, irq 0
AHCI: cap 0xc3309f01, ports_impl 0x0
init megasas
/7fd90000\ Start thread
|7fd92000| AHCI/1: ... finished, status 0x51, ERROR 0x4
/7fd8f000\ Start thread
|7fd92000| Searching bootorder for: /pci@i0cf8/*@17/drive@1/disk@0
/7fd8e000\ Start thread
|7fd92000| AHCI/1: registering: "AHCI/1: ST500DM002-1BD142 ATA-8
Hard-Disk (465"
|7fd92000| Registering bootable: AHCI/1: ST500DM002-1BD142 ATA-8
Hard-Disk (465)
\7fd92000/ End thread
/7fd93000\ Start thread
/7fd92000\ Start thread
|7fd91000| set_address 0x7fd96260
/7fd8d000\ Start thread
/7fd8c000\ Start thread
|7fd91000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd91000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
|7fd91000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd91000| config_usb: 0x7fd95b50
|7fd91000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=8)
|7fd91000| device rev=0200 cls=09 sub=00 proto=01 size=64
|7fd91000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd91000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=9)
\7fd8c000/ End thread
\7fd8d000/ End thread
\7fd92000/ End thread
\7fd93000/ End thread
\7fd8e000/ End thread
\7fd8f000/ End thread
\7fd90000/ End thread
|7fd91000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=25)
|7fd91000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
|7fd91000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=7)
|7fd91000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
|7fd91000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
|7fd91000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
|7fd91000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
/7fd93000\ Start thread
|7fd93000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
/7fd92000\ Start thread
|7fd93000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
/7fd90000\ Start thread
|7fd93000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
/7fd8f000\ Start thread
|7fd8f000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd90000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd92000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| set_address 0x7fd96260
|7fd8f000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd92000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd93000| ehci_control 0x7fd95ad0 (dir=0 cmd=8 data=0)
|7fd8f000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd92000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd93000| config_usb: 0x7fd95ad0
|7fd93000| ehci_control 0x7fd95ad0 (dir=128 cmd=8 data=8)
|7fd8f000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| device rev=0110 cls=00 sub=00 proto=00 size=8
|7fd93000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd93000| ehci_control 0x7fd95ad0 (dir=128 cmd=8 data=9)
\7fd8f000/ End thread
|7fd90000| ehci_control 0x7fd95b50 (dir=0 cmd=8 data=0)
|7fd93000| ehci_control 0x7fd95ad0 (dir=128 cmd=8 data=34)
|7fd90000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| ehci_control 0x7fd95ad0 (dir=0 cmd=8 data=0)
|7fd90000| set_address 0x7fd96260
|7fd92000| ehci_control 0x7fd95b50 (dir=128 cmd=8 data=4)
|7fd93000| usb_hid_setup 0x7fd95ad0
|7fd93000| ehci_control 0x7fd95ad0 (dir=0 cmd=8 data=0)
|7fd90000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd90000| ehci_control 0x7fd958d0 (dir=0 cmd=8 data=0)
\7fd92000/ End thread
|7fd93000| ehci_alloc_intr_pipe 0x7fd96260 3
|7fd93000| ebda moved from 9e800 to 9e400
|7fd93000| USB mouse initialized
\7fd93000/ End thread
|7fd90000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd90000| config_usb: 0x7fd958d0
|7fd90000| ehci_control 0x7fd958d0 (dir=128 cmd=8 data=8)
|7fd90000| device rev=0200 cls=00 sub=00 proto=00 size=8
|7fd90000| ehci_alloc_async_pipe 0x7fd96260 0
|7fd90000| ehci_control 0x7fd958d0 (dir=128 cmd=8 data=9)
|7fd90000| ehci_control 0x7fd958d0 (dir=128 cmd=8 data=59)
|7fd90000| ehci_control 0x7fd958d0 (dir=0 cmd=8 data=0)
|7fd90000| usb_hid_setup 0x7fd958d0
|7fd90000| ehci_control 0x7fd958d0 (dir=0 cmd=8 data=0)
|7fd90000| ehci_control 0x7fd958d0 (dir=0 cmd=8 data=0)
|7fd90000| ehci_alloc_intr_pipe 0x7fd96260 3
|7fd90000| ebda moved from 9e400 to 9e000
|7fd90000| USB keyboard initialized
\7fd90000/ End thread
|7fd91000| Initialized USB HUB (2 ports used)
\7fd91000/ End thread
|7fd94000| ehci_free_pipes 0x7fd96260
\7fd94000/ End thread
All threads complete.
Searching bootorder for: HALT
Mapping hd drive 0x000f5680 to 0
drive 0x000f5680: PCHS=16383/16/63 translation=lba LCHS=1024/255/63
s=976773168
malloc finalize
Space available for UMB: c0000-ef510, f4f60-f5680
Returned 253952 bytes of ZoneHigh
e820 map has 8 items:
0: 0000000000000000 - 000000000009e000 = 1 RAM
1: 000000000009e000 - 00000000000a0000 = 2 RESERVED
2: 00000000000f0000 - 0000000000100000 = 2 RESERVED
3: 0000000000100000 - 000000007fdde000 = 1 RAM
4: 000000007fdde000 - 000000007fe00000 = 2 RESERVED
5: 00000000e0000000 - 00000000f0000000 = 2 RESERVED
6: 00000000fee00000 - 00000000fee01000 = 2 RESERVED
7: 0000000100000000 - 0000000180000000 = 1 RAM
Jump to int19
enter handle_19:
NULL
Booting from 0000:7c00
enter handle_12:
a=00000000 b=00000000 c=00000000 d=00000080 ds=0000 es=0000 ss=9000
si=00007c05 di=00058cc0 bp=00001ff0 sp=0000ffd6 cs=0000 ip=8af1 f=0297
invalid handle_legacy_disk:696:
a=00004100 b=000655aa c=00000000 d=00000081 ds=0000 es=0000 ss=9000
si=00067fbc di=00000081 bp=00001ff0 sp=0000ffd6 cs=0000 ip=89a5 f=0246
invalid handle_legacy_disk:696:
a=00000800 b=00067fbc c=00000000 d=00000081 ds=0000 es=0000 ss=9000
si=00000000 di=00000081 bp=00001ff0 sp=0000ffd6 cs=0000 ip=89d9 f=0246
unimplemented handle_15XX:330:
a=000000c0 b=00000000 c=00000000 d=00000081 ds=0000 es=0000 ss=9000
si=00067fbc di=00000081 bp=00001ff0 sp=0000ffd6 cs=0000 ip=8ba6 f=0246
Press any key to continue.
Press any key to continue.
Press any key to continue.
Press any key to continue.
Press any key to continue.
The last five lines is clearly grub output, only after this goes nothing
and it seems to me that sgabios does not forward VGA output to the
serial port.
So, how do I fix that? Am I missing something?
Regards,
Viktor Kuzmichev