Discussion:
[SeaBIOS] SeaBIOS hang with VGA option ROM
Timothy Pearson
2015-01-26 18:57:06 UTC
Permalink
All,

I have a board here that uses an XGI Volari Z9s integrated graphics
device. The board boots under coreboot and loads Linux, but if I add
the appropriate VGA option ROM (extracted from the vendor BIOS) SeaBIOS
hangs:

SeaBIOS (version rel-1.7.5-150-g301dd09-20150126_124858-apollo)
Found mainboard ASUS KFSN4-DRE
Relocating init from 0x000e6fe0 to 0x3ff95800 (size 42816)
Found CBFS header at 0xfffffc80
CPU Mhz=2311
Found 26 PCI devices (max PCI bus is 05)
Copying MPTABLE from 0x3ffe0400/3ffe0410 to 0x000f1550
Copying ACPI RSDP from 0x3ffe1400 to 0x000f1520
Copying SMBIOS entry point from 0x3ffec800 to 0x000f1500
Using pmtimer, ioport 0x2008
Scan for VGA option rom
Running option rom at c000:0003

The Volari graphics initialise and work properly once Linux has booted
and loaded the appropriate device drivers. For now I have been using
SGABIOS for VGA emulation, however I would like to see the native VGA
work on boot.

Any ideas?

Thanks!
--
Timothy Pearson
Raptor Engineering
+1 (415) 727-8645
http://www.raptorengineeringinc.com
Kevin O'Connor
2015-01-26 19:51:32 UTC
Permalink
All,
I have a board here that uses an XGI Volari Z9s integrated graphics device.
The board boots under coreboot and loads Linux, but if I add the appropriate
SeaBIOS (version rel-1.7.5-150-g301dd09-20150126_124858-apollo)
Found mainboard ASUS KFSN4-DRE
Relocating init from 0x000e6fe0 to 0x3ff95800 (size 42816)
Found CBFS header at 0xfffffc80
CPU Mhz=2311
Found 26 PCI devices (max PCI bus is 05)
Copying MPTABLE from 0x3ffe0400/3ffe0410 to 0x000f1550
Copying ACPI RSDP from 0x3ffe1400 to 0x000f1520
Copying SMBIOS entry point from 0x3ffec800 to 0x000f1500
Using pmtimer, ioport 0x2008
Scan for VGA option rom
Running option rom at c000:0003
The Volari graphics initialise and work properly once Linux has booted and
loaded the appropriate device drivers. For now I have been using SGABIOS
for VGA emulation, however I would like to see the native VGA work on boot.
Any ideas?
It will likely be hard to figure out why your vendor vgabios is
hanging. It's possible something in seabios is causing it to get
confused, but it's also possible something during the coreboot
initialization is confusing it.

I suggest increasing the SeaBIOS debugging level to 8 and see if it
reveals any further information.

-Kevin
Kevin O'Connor
2015-01-26 20:20:45 UTC
Permalink
Post by Kevin O'Connor
It will likely be hard to figure out why your vendor vgabios is
hanging. It's possible something in seabios is causing it to get
confused, but it's also possible something during the coreboot
initialization is confusing it.
I suggest increasing the SeaBIOS debugging level to 8 and see if it
reveals any further information.
SeaBIOS (version rel-1.7.5-150-g301dd09-20150126_140432-apollo)
[...]
Scan for VGA option rom
Attempting to init PCI bdf 01:04.0 (vd 18ca:0020)
Checking rom 0x000c0000 (sig aa55 size 64)
Running option rom at c000:0003
So, no additional information. You could try increasing the debug
level to 99 just to see if irqs are still on (and if so, to see where
the pc is when irqs are hitting). However, unless you have access to
the vendor vgabios code it's very difficult to guess what's confusing
it.

BTW, did you make sure all of the following are disabled in coreboot:
CONFIG_VGA_ROM_RUN, CONFIG_PCI_ROM_RUN, CONFIG_ON_DEVICE_ROM_RUN

If coreboot supports native vga init for your board, you could try
using seavgabios and skip the vendor vgabios.

Another approach would be to see if you can get get the vga bios to
run in some emulator (such as xorg's x86emu, coreboot's emulator,
qemu, etc) and then try to figure out what's different.

Please keep the mailing list on the CC.

-Kevin
Timothy Pearson
2015-01-26 20:22:17 UTC
Permalink
Post by Kevin O'Connor
It will likely be hard to figure out why your vendor vgabios is
hanging. It's possible something in seabios is causing it to get
confused, but it's also possible something during the coreboot
initialization is confusing it.
I suggest increasing the SeaBIOS debugging level to 8 and see if it
reveals any further information.
-Kevin
Debug level 8:

SeaBIOS (version rel-1.7.5-150-g301dd09-20150126_140432-apollo)
Attempting to find coreboot table
Found coreboot table forwarder.
Now attempting to find coreboot memory map
Add to e820 map: 00000000 00001000 2
Add to e820 map: 00001000 0009f000 1
Add to e820 map: 000c0000 dff20000 1
Add to e820 map: dffe0000 00020000 2
Add to e820 map: e0000000 10000000 2
Add to e820 map: 00000000 a0000000 1
Add to e820 map: 00000000 00004000 1
Found mainboard ASUS KFSN4-DRE
malloc preinit
Add to e820 map: 000a0000 00050000 -1
Add to e820 map: 000f0000 00010000 2
Add to e820 map: dffa0000 00040000 2
_malloc zone=0x000ee6a8 size=45696 align=10 ret=0xdff94cc0
(detail=0xdff9ff40)
Relocating init from 0x000e34a0 to 0xdff94cc0 (size 45696)
malloc init
Found CBFS header at 0xfffffc80
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff94b90 (detail=0xdff94c30)
Add romfile: cmos_layout.bin (size=1776)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff94ac0 (detail=0xdff94b60)
Add romfile: fallback/romstage (size=93617)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff949f0 (detail=0xdff94a90)
Add romfile: fallback/ramstage (size=60222)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff94920 (detail=0xdff949c0)
Add romfile: fallback/payload (size=60428)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff94850 (detail=0xdff948f0)
Add romfile: config (size=4509)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff94780 (detail=0xdff94820)
Add romfile: revision (size=708)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff946b0 (detail=0xdff94750)
Add romfile: pci18ca,0020.rom (size=32768)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff945e0 (detail=0xdff94680)
Add romfile: pci14e4,1659.rom (size=70144)
_malloc zone=0xdff9fec8 size=156 align=10 ret=0xdff94510 (detail=0xdff945b0)
Add romfile: (size=722776)
init ivt
init bda
Add to e820 map: 0009fc00 00000400 2
init bios32
init PMM
init PNPBIOS table
init keyboard
init mouse
init pic
math cp init
tsc calibrate start=2150306768 end=2154273653 diff=3966885
CPU Mhz=2311
init timer
PCI probe
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff944c0 (detail=0xdff944e0)
PCI device 00:00.0 (vd=10de:005e c=0580)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94470 (detail=0xdff94490)
PCI device 00:01.0 (vd=10de:0051 c=0601)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94420 (detail=0xdff94440)
PCI device 00:01.1 (vd=10de:0052 c=0c05)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff943d0 (detail=0xdff943f0)
PCI device 00:02.0 (vd=10de:005a c=0c03)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94380 (detail=0xdff943a0)
PCI device 00:02.1 (vd=10de:005b c=0c03)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94330 (detail=0xdff94350)
PCI device 00:06.0 (vd=10de:0053 c=0101)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff942e0 (detail=0xdff94300)
PCI device 00:07.0 (vd=10de:0054 c=0101)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94290 (detail=0xdff942b0)
PCI device 00:08.0 (vd=10de:0055 c=0101)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94240 (detail=0xdff94260)
PCI device 00:09.0 (vd=10de:005c c=0604)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff941f0 (detail=0xdff94210)
PCI device 00:0b.0 (vd=10de:005d c=0604)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff941a0 (detail=0xdff941c0)
PCI device 00:0c.0 (vd=10de:005d c=0604)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94150 (detail=0xdff94170)
PCI device 00:0d.0 (vd=10de:005d c=0604)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94100 (detail=0xdff94120)
PCI device 00:0e.0 (vd=10de:005d c=0604)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff940b0 (detail=0xdff940d0)
PCI device 00:18.0 (vd=1022:1200 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94060 (detail=0xdff94080)
PCI device 00:18.1 (vd=1022:1201 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff94010 (detail=0xdff94030)
PCI device 00:18.2 (vd=1022:1202 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93fc0 (detail=0xdff93fe0)
PCI device 00:18.3 (vd=1022:1203 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93f70 (detail=0xdff93f90)
PCI device 00:18.4 (vd=1022:1204 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93f20 (detail=0xdff93f40)
PCI device 00:19.0 (vd=1022:1200 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93ed0 (detail=0xdff93ef0)
PCI device 00:19.1 (vd=1022:1201 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93e80 (detail=0xdff93ea0)
PCI device 00:19.2 (vd=1022:1202 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93e30 (detail=0xdff93e50)
PCI device 00:19.3 (vd=1022:1203 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93de0 (detail=0xdff93e00)
PCI device 00:19.4 (vd=1022:1204 c=0600)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93d90 (detail=0xdff93db0)
PCI device 01:04.0 (vd=18ca:0020 c=0300)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93d40 (detail=0xdff93d60)
PCI device 02:00.0 (vd=14e4:1659 c=0200)
_malloc zone=0xdff9fec8 size=32 align=10 ret=0xdff93cf0 (detail=0xdff93d10)
PCI device 03:00.0 (vd=14e4:1659 c=0200)
Found 26 PCI devices (max PCI bus is 05)
Relocating coreboot bios tables
_malloc zone=0xdff9fed0 size=460 align=10 ret=0x000f56f0 (detail=0xdff93cc0)
Copying MPTABLE from 0xdffe0400/dffe0410 to 0x000f56f0
_malloc zone=0xdff9fed0 size=36 align=10 ret=0x000f56c0 (detail=0xdff93c90)
Copying ACPI RSDP from 0xdffe1400 to 0x000f56c0
_malloc zone=0xdff9fed0 size=31 align=10 ret=0x000f56a0 (detail=0xdff93c60)
Copying SMBIOS entry point from 0xdffec800 to 0x000f56a0
rsdp=0x000f56c0
rsdt=0xdffe1430
fadt=0xdffe3cf0
pm_tmr_blk=2008
Using pmtimer, ioport 0x2008
Scan for VGA option rom
Attempting to init PCI bdf 01:04.0 (vd 18ca:0020)
Copying data ***@0xfff36278 to ***@0x000c0000
Checking rom 0x000c0000 (sig aa55 size 64)
Running option rom at c000:0003
--
Timothy Pearson
Raptor Engineering
+1 (415) 727-8645
http://www.raptorengineeringinc.com
Paul Menzel
2015-01-26 22:34:11 UTC
Permalink
Dear Timothy,


thank you for reporting this issue to the SeaBIOS mailing list.
Post by Timothy Pearson
I have a board here that uses an XGI Volari Z9s integrated graphics
device. The board boots under coreboot and loads Linux, but if I add
the appropriate VGA option ROM (extracted from the vendor BIOS) SeaBIOS
SeaBIOS (version rel-1.7.5-150-g301dd09-20150126_124858-apollo)
Found mainboard ASUS KFSN4-DRE
Relocating init from 0x000e6fe0 to 0x3ff95800 (size 42816)
Found CBFS header at 0xfffffc80
CPU Mhz=2311
Found 26 PCI devices (max PCI bus is 05)
Copying MPTABLE from 0x3ffe0400/3ffe0410 to 0x000f1550
Copying ACPI RSDP from 0x3ffe1400 to 0x000f1520
Copying SMBIOS entry point from 0x3ffec800 to 0x000f1500
Using pmtimer, ioport 0x2008
Scan for VGA option rom
Running option rom at c000:0003
The Volari graphics initialise and work properly once Linux has booted
and loaded the appropriate device drivers. For now I have been using
SGABIOS for VGA emulation, however I would like to see the native VGA
work on boot.
Is coreboot able to successfully run the Video BIOS? Just add it using
the coreboot Kconfig menu.


Thanks,

Paul
Timothy Pearson
2015-01-27 00:13:51 UTC
Permalink
Post by Paul Menzel
Dear Timothy,
thank you for reporting this issue to the SeaBIOS mailing list.
Post by Timothy Pearson
I have a board here that uses an XGI Volari Z9s integrated graphics
device. The board boots under coreboot and loads Linux, but if I add
the appropriate VGA option ROM (extracted from the vendor BIOS) SeaBIOS
SeaBIOS (version rel-1.7.5-150-g301dd09-20150126_124858-apollo)
Found mainboard ASUS KFSN4-DRE
Relocating init from 0x000e6fe0 to 0x3ff95800 (size 42816)
Found CBFS header at 0xfffffc80
CPU Mhz=2311
Found 26 PCI devices (max PCI bus is 05)
Copying MPTABLE from 0x3ffe0400/3ffe0410 to 0x000f1550
Copying ACPI RSDP from 0x3ffe1400 to 0x000f1520
Copying SMBIOS entry point from 0x3ffec800 to 0x000f1500
Using pmtimer, ioport 0x2008
Scan for VGA option rom
Running option rom at c000:0003
The Volari graphics initialise and work properly once Linux has booted
and loaded the appropriate device drivers. For now I have been using
SGABIOS for VGA emulation, however I would like to see the native VGA
work on boot.
Is coreboot able to successfully run the Video BIOS? Just add it using
the coreboot Kconfig menu.
Thanks,
Paul
No, coreboot hangs as well:

Root Device (ASUS KFSN4-DRE)
CPU_CLUSTER: 0 (AMD FAM10 Root Complex)
APIC: 00 (socket F_1207)
DOMAIN: 0000 (AMD FAM10 Root Complex)
PCI: 00:18.0 (AMD FAM10 Northbridge)
PCI: 00:00.0 (NVIDIA CK804 Southbridge)
PCI: 00:01.0 (NVIDIA CK804 Southbridge)
PNP: 002e.0 (Winbond W83627THG Super I/O)
PNP: 002e.1 (Winbond W83627THG Super I/O)
PNP: 002e.2 (Winbond W83627THG Super I/O)
PNP: 002e.3 (Winbond W83627THG Super I/O)
PNP: 002e.5 (Winbond W83627THG Super I/O)
PNP: 002e.7 (Winbond W83627THG Super I/O)
PNP: 002e.8 (Winbond W83627THG Super I/O)
PNP: 002e.9 (Winbond W83627THG Super I/O)
PNP: 002e.a (Winbond W83627THG Super I/O)
PNP: 002e.b (Winbond W83627THG Super I/O)
PCI: 00:01.1 (NVIDIA CK804 Southbridge)
I2C: 01:50 (unknown)
I2C: 01:51 (unknown)
I2C: 01:52 (unknown)
I2C: 01:53 (unknown)
I2C: 01:54 (unknown)
I2C: 01:55 (unknown)
I2C: 01:56 (unknown)
I2C: 01:57 (unknown)
PCI: 00:02.0 (NVIDIA CK804 Southbridge)
PCI: 00:02.1 (NVIDIA CK804 Southbridge)
PCI: 00:04.0 (NVIDIA CK804 Southbridge)
PCI: 00:04.1 (NVIDIA CK804 Southbridge)
PCI: 00:06.0 (NVIDIA CK804 Southbridge)
PCI: 00:07.0 (NVIDIA CK804 Southbridge)
PCI: 00:08.0 (NVIDIA CK804 Southbridge)
PCI: 00:09.0 (NVIDIA CK804 Southbridge)
PCI: 01:04.0 (NVIDIA CK804 Southbridge)
PCI: 00:0a.0 (NVIDIA CK804 Southbridge)
PCI: 00:0b.0 (NVIDIA CK804 Southbridge)
PCI: 02:00.0 (NVIDIA CK804 Southbridge)
PCI: 00:0c.0 (NVIDIA CK804 Southbridge)
PCI: 03:00.0 (NVIDIA CK804 Southbridge)
PCI: 00:0d.0 (NVIDIA CK804 Southbridge)
PCI: 04:00.0 (NVIDIA CK804 Southbridge)
PCI: 00:0e.0 (NVIDIA CK804 Southbridge)
PCI: 00:0f.0 (NVIDIA CK804 Southbridge)
PCI: 00:18.1 (AMD FAM10 Northbridge)
PCI: 00:18.2 (AMD FAM10 Northbridge)
PCI: 00:18.3 (AMD FAM10 Northbridge)
PCI: 00:18.4 (AMD FAM10 Northbridge)
PCI: 00:19.0 (AMD FAM10 Northbridge)
PCI: 00:19.1 (AMD FAM10 Northbridge)
PCI: 00:19.2 (AMD FAM10 Northbridge)
PCI: 00:19.3 (AMD FAM10 Northbridge)
PCI: 00:19.4 (AMD FAM10 Northbridge)
APIC: 01 (unknown)
APIC: 02 (unknown)
APIC: 03 (unknown)
APIC: 04 (unknown)
APIC: 05 (unknown)
APIC: 06 (unknown)
APIC: 07 (unknown)
SMBIOS tables: 333 bytes.
POST: 0x9e
POST: 0x9d
Adding CBMEM entry as no. 5
Writing table forward entry at 0x00000500
Wrote coreboot table at: 00000500, 0x10 bytes, checksum 4fdf
Table forward entry ends at 0x00000528.
... aligned to 0x00001000
Writing coreboot table at 0xdffed000
rom_table_end = 0xdffed000
... aligned to 0xdfff0000
0. 0000000000000000-0000000000000fff: CONFIGURATION TABLES
1. 0000000000001000-000000000009ffff: RAM
2. 00000000000c0000-00000000dffdffff: RAM
3. 00000000dffe0000-00000000dfffffff: CONFIGURATION TABLES
4. 00000000e0000000-00000000efffffff: RESERVED
5. 0000000100000000-000000039fffffff: RAM
Wrote coreboot table at: dffed000, 0x168 bytes, checksum 8058
coreboot table: 384 bytes.
FREE SPACE 0. dfff5000 0000b000
GDT 1. dffe0200 00000200
SMP TABLE 2. dffe0400 00001000
ACPI 3. dffe1400 0000b400
SMBIOS 4. dffec800 00000800
COREBOOT 5. dffed000 00008000
POST: 0x7a
CBFS: located payload @ fff253f8, 54870 bytes.
Loading segment from rom address 0xfff253f8
code (compression=1)
New segment dstaddr 0xe6398 memsize 0x19c68 srcaddr 0xfff25430
filesize 0xd61e
Loading segment from rom address 0xfff25414
Entry Point 0x000fd4cc
Bounce Buffer at dfdf3000, 2015328 bytes
Loading Segment: addr: 0x00000000000e6398 memsz: 0x0000000000019c68
filesz: 0x000000000000d61e
lb: [0x0000000000100000, 0x00000000001f6030)
Post relocation: addr: 0x00000000000e6398 memsz: 0x0000000000019c68
filesz: 0x000000000000d61e
using LZMA
[ 0x000e6398, 00100000, 0x00100000) <- fff25430
dest 000e6398, end 00100000, bouncebuffer dfdf3000
Loaded segments
POST: 0x7b
Jumping to boot code at 000fd4cc
POST: 0xf8
CPU0: stack: 00135000 - 00136000, lowest used address 00135a2c, stack
used: 1492 bytes
entry = 0x000fd4cc
lb_start = 0x00100000
lb_size = 0x000f6030
buffer = 0xdfdf3000

As everything else works I probably won't spend much more time on this,
but I am willing to test if anyone has ideas on how to fix the issue.

I take it coreboot cannot natively initialise XGI Volari devices?

Thanks!
--
Timothy Pearson
Raptor Engineering
+1 (415) 727-8645
http://www.raptorengineeringinc.com
Loading...