[SeaBIOS] [PATCH 1/2] Add an option to only execute option ROMs contained in CBFS
kevin at koconnor.net
Fri Feb 13 21:05:11 CET 2015
On Wed, Feb 11, 2015 at 05:32:03PM -0600, Timothy Pearson wrote:
> TEST: Booted ASUS KFSN4-DRE with iPXE ROMs built in to CBFS;
> with this option set the on-board network ROMs were ignored
> while the iPXE ROMs executed normally.
> Signed-off-by: Timothy Pearson <tpearson at raptorengineeringinc.com>
Thanks for providing the patch and sorry for the delay in reviewing.
> src/Kconfig | 11 +++++++++++
> src/optionroms.c | 3 +++
> 2 files changed, 14 insertions(+)
> diff --git a/src/Kconfig b/src/Kconfig
> index 45ca59c..9cac231 100644
> --- a/src/Kconfig
> +++ b/src/Kconfig
> @@ -355,6 +355,17 @@ menu "BIOS interfaces"
> default y
> Support finding and running option roms during POST.
> + config CBFS_OPTIONROMS_ONLY
> + depends on OPTIONROMS && COREBOOT_FLASH
> + bool "Only execute option ROMs stored in CBFS"
> + default "n"
> + help
> + Only execute option ROMs that are stored in CBFS.
> + Do not scan PCI bus for option ROMs. This is useful
> + if one or more of your PCI devices crash/hang SeaBIOS
> + when executing their option ROMs, but you need to use
> + one or more option ROMs (such as SeaVGABIOS) that were
> + loaded into CBFS.
In general, I prefer for these types of options to be set at runtime
(by making a new CBFS file such as "etc/run-option-roms" and using the
romfile_loadint() mechanism) instead of at compile time.
That said, it should already possible to prevent a particular option
rom from running by creating a dummy option rom for that device in
CBFS. That is, it should be possible to create a dummy cbfs file
"pci1234,5678.rom" to prevent the option rom on PCI device 1234:5678
from running. Not sure if this fixes the issue you were seeing, but
if so maybe the best fix is to just update the documentation.
More information about the SeaBIOS