When loading an option ROM use the class stored in the device to decide whether the option ROM is a special VGA type. An S3 card that I've got has the wrong class in the VGA BIOS. (A Stealth 64 DRAM T PCI, from 1994 - BIOS V2.02) Signed-off-by: Mark Marshall Index: src/devices/pci_rom.c =================================================================== --- src/devices/pci_rom.c (revision 4822) +++ src/devices/pci_rom.c (working copy) @@ -116,7 +116,10 @@ rom_size = rom_header->size * 512; - if (PCI_CLASS_DISPLAY_VGA == rom_data->class_hi) { + // We check to see if the device thinks it is a VGA device not + // whether the ROM image is for a VGA device because some + // devices have a mismatch between the hardware and the ROM + if (PCI_CLASS_DISPLAY_VGA == (dev->class >> 8)) { #if CONFIG_CONSOLE_VGA == 1 && CONFIG_CONSOLE_VGA_MULTI == 0 extern device_t vga_pri; // the primary vga device, defined in device.c if (dev != vga_pri) return NULL; // only one VGA supported