Coreboot v3 refuses to initialize the VGA in QEMU because the PCI device ID's are mismatched.
It turns out that the header has been overwritten by a copyright string, so that v3 is following a bad pointer into the ROM looking for the PCI device IDs and not finding it. Coreboot v2 still successfully initializes the VGA because it skips the vendor check.
The question is if we should make the vendor check a warning instead of failing. I realize that the right thing to do is fix the ROM, but there may be other broken ROMs as well.
Another thing we could do is only fail on a mismatched ID if we find a correct PCIR signature on the data section.
Myles
On 22.01.2008 18:59, Myles Watson wrote:
Coreboot v3 refuses to initialize the VGA in QEMU because the PCI device ID's are mismatched.
It turns out that the header has been overwritten by a copyright string, so that v3 is following a bad pointer into the ROM looking for the PCI device IDs and not finding it. Coreboot v2 still successfully initializes the VGA because it skips the vendor check.
The question is if we should make the vendor check a warning instead of failing. I realize that the right thing to do is fix the ROM, but there may be other broken ROMs as well.
I'd say we refuse to execute the ROM in v3. If the ROM is broken, we have no way to determine how broken it is. Unconditional execution may prevent booting the machine, thereby forcing an out-of-system flash of coreboot with ROM execution disabled.
How many ROMs of real hardware are broken that way? If their number is close to zero, printing a scary warning message will be best. If there is a large number of such broken ROMs, we can make execution dependent on some NVRAM setting, which will refuse execution after NVRAM clear.
Do you know which versions of Qemu ship the broken ROM? Is there already a patch for it?
Regards, Carl-Daniel
On Jan 22, 2008 10:20 AM, Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
I'd say we refuse to execute the ROM in v3. If the ROM is broken, we have no way to determine how broken it is. Unconditional execution may prevent booting the machine, thereby forcing an out-of-system flash of coreboot with ROM execution disabled.
I agree. I have yet to see a real ROM broken in this way.
Print the warning message and refuse to run it. And get QEMU to fix both their broken VGA rom and their broken BIOS :-)
ron
-----Original Message----- From: ron minnich [mailto:rminnich@gmail.com]
On Jan 22, 2008 10:20 AM, Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
I'd say we refuse to execute the ROM in v3. If the ROM is broken, we have no way to determine how broken it is. Unconditional execution may prevent booting the machine, thereby forcing an out-of-system flash of coreboot with ROM execution disabled.
I agree. I have yet to see a real ROM broken in this way.
Print the warning message and refuse to run it. And get QEMU to fix both their broken VGA rom and their broken BIOS :-)
The VGA BIOS is now fixed in CVS if you download the latest. I don't know when QEMU will pick it up.
Myles