[coreboot] option roms in SeaBIOS and Coreboot

Rudolf Marek r.marek at assembler.cz
Tue Nov 25 00:15:48 CET 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

I obtained some SAS PCIe card. I have some good and bad news ;)

1) it does not work at all, PCI ROM signature wrong.
2) it does work with some help glitch
3) it does not work as expected

I solved 1) with a simple hack patch (attached) The PCI ROM BARs should not be
relocated. The K8 processor has some PCI hole resource and imho there is a
problem that even the PCI hole starts at TOPMEM, it still hits RAM because of
video framebuffer for integrated VGA.

I fixed this isssue by not touching PCI ROM base, check the patch.

2) It does work! PCI option rom get executed. This particular ROM has "press
space to skip" option, and if I do that I get to grub/linux whatever.

3) If I do not press space, the PCI option rom is supposed to init the HW.

it just freezes somewhere inside, but keyboard IRQ still delivered.

With original BIOS, some other screen is printed with another screen mode, but
it freezes too ;)))

Some remark to the end. I'm not sure if next_rom pointer should be adjusted
before the rom is copied.

In my case VGA has someting like 36KB and with 2K align it gets to 0xCA000 for
next ROM. I tried with ALIGN of 64KB but it does not help that particular silly
option rom :) Maybe the align should be handled also depending on actual rom
size. I mean "allow spaces for aligns between roms".

Rudolf

Here are some debug messages:

Attempting to find coreboot table
Copying ACPI RSDP from 1bff0000 to 000ff330
init SMBIOS tables
Found 1 cpu(s)
SMBIOS table addr=0x000ff350
ram_size=0x1bff0000
Scan for VGA option rom
Attempting to init PCI bdf 00000100
Copying option rom from fff80000 (ROM) to 000c0000 (RAM)
Running option rom at 0000c000:00000003
fail handle_155fXX:47(00000086):
  a=00005f18 b=000002e4 c=00000000 d=000003c3 si=00000000 di=0000e261
  ds=00000000 es=0000f000 ip=00008c26 cs=0000c000 f=00000006 r=00007926
Turning on vga console
Starting SeaBIOS
...
...
Attempting to map option rom on dev 000000c3
Option rom sizing returned 00000000 00000000
Attempting to init PCI bdf 00000200
Attempting to map option rom on dev 00000200
Option rom sizing returned f1100000 fffc0000
Card 00000200 option rom mapped at f1100000
Copying option rom from f1100000 (ROM) to 000d0000 (RAM)
Running option rom at 0000d000:00000003
Changing serial settings was 00000003/00000002 now 00000003/00000000
Attempting to init PCI bdf 00000408
Attempting to map option rom on dev 00000408
Option rom sizing returned 00000000 00000000
Press F12 for boot menu.



Some example of PCI/MEMORY resources, from another computer via the k8resdump
(check Coreboot util)

DRAM map: #0 0x0000000000 - 0x003fffffff Access: R/W  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:0
DRAM map: #1 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:1
DRAM map: #2 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:2
DRAM map: #3 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:3
DRAM map: #4 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:4
DRAM map: #5 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:5
DRAM map: #6 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:6
DRAM map: #7 0x0000000000 - 0x0000ffffff Access: /  IntlvEN:0x0 IntlvSEL:0x0
Dstnode:7
MMIO map: #0 0x0000000000 - 0x000000ffff Access: /     Dstnode:0 DstLink 0
MMIO map: #1 0x0000000000 - 0x000000ffff Access: /     Dstnode:0 DstLink 0
MMIO map: #2 0x0000000000 - 0x000000ffff Access: /     Dstnode:0 DstLink 0
MMIO map: #3 0x0000000000 - 0x000000ffff Access: /     Dstnode:0 DstLink 0
MMIO map: #4 0x0000000000 - 0x000000ffff Access: /     Dstnode:0 DstLink 0
MMIO map: #5 0x0000000000 - 0x000000ffff Access: /     Dstnode:0 DstLink 0
MMIO map: #6 0x00000a0000 - 0x00000bffff Access: R/W     Dstnode:0 DstLink 0
MMIO map: #7 0x0040000000 - 0x00ff70ffff Access: R/W     Dstnode:0 DstLink 0
  IO map: #0  0x000000 - 0x000fff Access: /    Dstnode:0 DstLink 0
  IO map: #1  0x001000 - 0x0fffff Access: R/W   VGA Dstnode:0 DstLink 0
  IO map: #2  0x000000 - 0x000fff Access: /    Dstnode:0 DstLink 0
  IO map: #3  0x000000 - 0x000fff Access: /    Dstnode:0 DstLink 0


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkkrNaEACgkQ3J9wPJqZRNWa6gCeLV7DszkrcuNR0vGzzZs9GW7H
ALQAmgKV18+HnsAGgmRNiKM3enmYT6Xe
=PXog
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hack.patch
Type: text/x-diff
Size: 2853 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20081125/6b2b37ce/attachment.bin>


More information about the coreboot mailing list