[SeaBIOS] Loading Option ROM for SATA Controller Card

Kevin O'Connor kevin at koconnor.net
Fri Dec 8 16:48:07 CET 2017

On Sun, Nov 26, 2017 at 06:28:01PM -0800, Adam Novak wrote:
> I've installed a SI-PEX40064 SATA controller card
> <http://www.sybausa.com/index.php?route=product/product&product_id=156>
> in my system that I am trying to use with PCI passthrough via Xen, in
> order to give a guest VM its own real SATA controller so as to not
> have to deal with virtual disks. Moreover, I want to boot off of a
> disk attached to the card.
> The card implements (or pretends to implement) AHCI, so SeaBIOS starts
> up and can see the attached disk. But SeaBIOS gets a timeout
> communicating with the disk:
> |eff9d000| WARNING - Timeout at ahci_port_setup:469!
> |eff9d000| AHCI/2: device not ready (tf 0x58)
> The card has a PCI Option ROM, and I think the Option ROM needs to be
> loaded for the card to work and/or be bootable. But SeaBIOS refuses to
> load the Option ROM. (My real physical system with Asus EFI firmware
> and CSM enabled does load the Option ROM for the card when it is
> installed.) I dug into the code, and it looks like it's the same issue
> as is mentioned here:
> https://mail.coreboot.org/pipermail/seabios/2017-June/011425.html
> Basically, a device is not checked for an option ROM (or an
> fw_fcg/CBFS-based Option ROM file), and its option ROM is not loaded,
> if pci->have_driver is set for the device. That field gets set for
> anything that apparently implements AHCI, so the Option ROMs for AHCI
> controllers are skipped, even if they are useful. Removing that check
> causes the option ROM for my card to be loaded, and allows the
> bootloader stored on the disk attached to the card to start up.

That check is there because it would not be correct for both an option
rom and a native driver to simultaneously attempt to register the same
drive.  Basically, there can be only one driver for a PCI card -
either a native SeaBIOS one or an Option ROM.

What happens if you compile SeaBIOS with CONFIG_AHCI disabled?


More information about the SeaBIOS mailing list