aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/devices/Kconfig12
-rw-r--r--src/devices/oprom/yabel/io.c2
2 files changed, 14 insertions, 0 deletions
diff --git a/src/devices/Kconfig b/src/devices/Kconfig
index cec2048931..d83d551b5f 100644
--- a/src/devices/Kconfig
+++ b/src/devices/Kconfig
@@ -98,6 +98,18 @@ config YABEL_PCI_ACCESS_OTHER_DEVICES
onboard graphics chips whose Option ROM needs to reconfigure the
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
prompt "Location of YABEL's virtual memory"
hex
diff --git a/src/devices/oprom/yabel/io.c b/src/devices/oprom/yabel/io.c
index 00bb1a0d2f..5c19b5142c 100644
--- a/src/devices/oprom/yabel/io.c
+++ b/src/devices/oprom/yabel/io.c
@@ -524,7 +524,9 @@ pci_cfg_write(X86EMU_pioAddr addr, u32 val, u8 size)
printf
("Config write access invalid! PCI device %x:%x.%x, offs: %x\n",
bus, devfn >> 3, devfn & 7, offs);
+#if !CONFIG_YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG
HALT_SYS();
+#endif
} else {
#if CONFIG_PCI_OPTION_ROM_RUN_YABEL
switch (size) {