Allow YABEL to fake write accesses to config space

A new Kconfig option tells YABEL to succeed on write accesses
on other devices' config space without performing the actual
write.
This is enough for some basic bus modification done by some
Option ROMs.

Change-Id: Iab04f3a5c350b96654da4ba26858037f4c4b5c0a
Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com>
Reviewed-on: http://review.coreboot.org/1249
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Patrick Georgi 2012-07-20 13:44:50 +02:00 committed by Stefan Reinauer
parent bcdbe90296
commit c4b2a1b6de
2 changed files with 14 additions and 0 deletions

View File

@ -98,6 +98,18 @@ config YABEL_PCI_ACCESS_OTHER_DEVICES
onboard graphics chips whose Option ROM needs to reconfigure the onboard graphics chips whose Option ROM needs to reconfigure the
north bridge. north bridge.
config YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG
prompt "Fake success on writing other device's config space"
bool
depends on YABEL_PCI_ACCESS_OTHER_DEVICES
help
By default, YABEL aborts when the Option ROM tries to write to other
devices' config spaces. With this option enabled, the write doesn't
follow through, but the Option ROM is allowed to go on.
This can create issues such as hanging Option ROMs (if it depends on
that other register changing to the written value), so test for
impact before using this option.
config YABEL_VIRTMEM_LOCATION config YABEL_VIRTMEM_LOCATION
prompt "Location of YABEL's virtual memory" prompt "Location of YABEL's virtual memory"
hex hex

View File

@ -524,7 +524,9 @@ pci_cfg_write(X86EMU_pioAddr addr, u32 val, u8 size)
printf printf
("Config write access invalid! PCI device %x:%x.%x, offs: %x\n", ("Config write access invalid! PCI device %x:%x.%x, offs: %x\n",
bus, devfn >> 3, devfn & 7, offs); bus, devfn >> 3, devfn & 7, offs);
#if !CONFIG_YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG
HALT_SYS(); HALT_SYS();
#endif
} else { } else {
#if CONFIG_PCI_OPTION_ROM_RUN_YABEL #if CONFIG_PCI_OPTION_ROM_RUN_YABEL
switch (size) { switch (size) {