So when you extract an image from a live system it will probably be missing the initialisation code and have a load of variables and flags that do not accurately describe the state of the uninitialised card.
I did that because It didn't work with the original extracted VGA bios rom: it failed the exact same way.
How did I extract the original VGA bios rom the new way: I downloaded the bios from the manufacturer website and got that output:
Using file "../M4A785T-M-ASUS-2302.ROM" (1024kB) AMI95 Version : 0800 () 0xA0000 (393216 bytes) -> amiboot.rom 0xA0000 ( 43896 bytes) -> amibody_40.rom "AMD CIM-X NB binary" 0xB0000 ( 13816 bytes) -> amibody_60.rom "AMD CIM-X SB binary" 0xB3620 ( 53344 bytes) -> amibody_e1.rom 0xC06A0 ( 48444 bytes) -> amibody_e1.rom 0xAABA0 ( 16392 bytes) -> amibody_11.rom "P6 Microcode" 0xAEBBC ( 2084 bytes) -> amibody_08.rom "Interface" 0xAF400 ( 76 bytes) -> amibody_30.rom "Font Database" 0xAF460 ( 16 bytes) -> amibody_fc.rom "Asrock LOGO JPG" 0xAF484 ( 8 bytes) -> amibody_0c.rom "ROM-ID" 0x2401C (214806 bytes) -> amibody_1b.rom (458702 bytes) "SLAB" 0x00024 ( 69587 bytes) -> amibody_f2.rom ( 70986 bytes) 0x1100C ( 39320 bytes) -> amipci_1002_4392.rom ( 62464 bytes) "PCI AddOn ROM" 0x58748 ( 38420 bytes) -> amipci_1002_FFF1.rom ( 60928 bytes) "PCI AddOn ROM" 0x61D70 ( 38414 bytes) -> amipci_1002_FFF2.rom ( 60416 bytes) "PCI AddOn ROM" 0x6B394 ( 34939 bytes) -> amibody_f5.rom ( 64200 bytes) 0x73C24 ( 31244 bytes) -> amibody_f0.rom ( 50176 bytes) "Asrock Backup Util" 0x7B644 ( 28305 bytes) -> amipci_10EC_8168.rom ( 49152 bytes) "PCI AddOn ROM" 0x824EC ( 26793 bytes) -> amibody_10.rom ( 58599 bytes) "ACPI AML" 0x88DAC ( 22150 bytes) -> amibody_04.rom ( 35891 bytes) "Setup Client" 0x1A9B8 ( 21750 bytes) -> amilang_US.rom ( 48087 bytes) "Multilanguage" 0xCC3F8 ( 10235 bytes) -> amibody_0e.rom (308216 bytes) "OEM Logo" 0x8E448 ( 6141 bytes) -> amibody_18.rom ( 16965 bytes) "ADM (Display MGR)" 0xCEC08 ( 5025 bytes) -> amibody_1f.rom ( 26676 bytes) 0x8FC5C ( 3640 bytes) -> amibody_ad.rom ( 8211 bytes) 0x90AA8 ( 2893 bytes) -> amibody_ae.rom ( 8208 bytes) 0xAF4A8 ( 1436 bytes) -> amibody_19.rom ( 4868 bytes) "ADM Font" 0xAFA58 ( 1330 bytes) -> amibody_1a.rom ( 9890 bytes) "Small Logo" 0x9160C ( 1002 bytes) -> amibody_06.rom ( 2560 bytes) "DMI Data" 0x1FEBC ( 136 bytes) -> amibody_80.rom
the the 2 interesting roms are theses ones: amipci_1002_FFF1.rom and amipci_1002_FFF2.rom
The problem is that both seem valid:
$ romheaders amipci_1002_FFF1.rom
Image 1: PCI Expansion ROM Header: Signature: 0x55aa (Ok) CPU unique data: 0x77 0xe9 0x11 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Pointer to PCI Data Structure: 0x01c4
PCI Data Structure: Signature: 0x50434952 'PCIR' (Ok) Vendor ID: 0x1002 Device ID: 0x9710 Vital Product Data: 0x0000 PCI Data Structure Length: 0x0018 (24 bytes) PCI Data Structure Revision: 0x00 Class Code: 0x030000 (VGA Display controller) Image Length: 0x0077 blocks (60928 bytes) Revision Level of Code/Data: 0x0a5e Code Type: 0x00 (Intel x86) Last-Image Flag: 0x80 (last image in rom) Reserved: 0x0000
Platform specific data for x86 compliant option rom: Initialization Size: 0x77 (60928 bytes) Entry point for INIT function: 0x217
$ romheaders amipci_1002_FFF2.rom
Image 1: PCI Expansion ROM Header: Signature: 0x55aa (Ok) CPU unique data: 0x76 0xe9 0xfd 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Pointer to PCI Data Structure: 0x01b0
PCI Data Structure: Signature: 0x50434952 'PCIR' (Ok) Vendor ID: 0x1002 Device ID: 0x9710 Vital Product Data: 0x0000 PCI Data Structure Length: 0x0018 (24 bytes) PCI Data Structure Revision: 0x00 Class Code: 0x030000 (VGA Display controller) Image Length: 0x0076 blocks (60416 bytes) Revision Level of Code/Data: 0x0a5e Code Type: 0x00 (Intel x86) Last-Image Flag: 0x80 (last image in rom) Reserved: 0x0000
Platform specific data for x86 compliant option rom: Initialization Size: 0x76 (60416 bytes) Entry point for INIT function: 0x203
What should I try next?
Denis.
On Mon, 2011-11-14 at 18:23 +0100, Denis 'GNUtoo' Carikli wrote:
What should I try next?
Denis.
You can try to grep both all the ROMs for any instance of the PCI subsystem device/vendor IDs that were not set with coreboot. Remember endianess when searching, disassemble code around them and try to replicate with coreboot.
Try if SerialICE works with your board, it can give you all the PCI I/O traffic your oem bios generates to the graphics chip.
Kyösti