diff options
Diffstat (limited to 'resources/seabios/patches/0001-Add-runtime-option-etc-only-load-option-roms-load-bu.patch')
-rw-r--r-- | resources/seabios/patches/0001-Add-runtime-option-etc-only-load-option-roms-load-bu.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/resources/seabios/patches/0001-Add-runtime-option-etc-only-load-option-roms-load-bu.patch b/resources/seabios/patches/0001-Add-runtime-option-etc-only-load-option-roms-load-bu.patch new file mode 100644 index 00000000..ee91d8c6 --- /dev/null +++ b/resources/seabios/patches/0001-Add-runtime-option-etc-only-load-option-roms-load-bu.patch @@ -0,0 +1,58 @@ +From 69d303f3860b4127343613785ceb5d52fa715321 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sun, 16 May 2021 00:16:30 +0100 +Subject: [PATCH 1/1] Add runtime option: etc/only-load-option-roms (load, but + don't run) + +From anecdotal reports, sometimes it is useful; I've heard of instances where +certain Nvidia graphics cards can, if using the nouveau driver on a GNU+Linux +system, be used without running any option ROM, but where the option ROM has +certain data tables in it that the driver can use. + +If set to 1, this will disable *all* option ROM loading, even SeaVGABIOS. It +also affects CSM. In practise, the only time someone would ever use this is if +they were using a graphics card in the above scenario. Such a use-case is +incredibly rare. + +If set to 0, the normal behaviour can be observed (load, and execute). The +run time option etc/pci-optionrom-exec will still be in effect. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/optionroms.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/optionroms.c b/src/optionroms.c +index e906ab9..db5e893 100644 +--- a/src/optionroms.c ++++ b/src/optionroms.c +@@ -23,7 +23,7 @@ + #include "util.h" // get_pnp_offset + #include "tcgbios.h" // tpm_* + +-static int EnforceChecksum, S3ResumeVga, RunPCIroms; ++static int EnforceChecksum, S3ResumeVga, RunPCIroms, OnlyLoadOptionRoms; + + + /**************************************************************** +@@ -34,6 +34,9 @@ static int EnforceChecksum, S3ResumeVga, RunPCIroms; + static void + __callrom(struct rom_header *rom, u16 offset, u16 bdf) + { ++ if (OnlyLoadOptionRoms) ++ return; ++ + u16 seg = FLATPTR_TO_SEG(rom); + dprintf(1, "Running option rom at %04x:%04x\n", seg, offset); + +@@ -461,6 +464,7 @@ vgarom_setup(void) + EnforceChecksum = romfile_loadint("etc/optionroms-checksum", 1); + S3ResumeVga = romfile_loadint("etc/s3-resume-vga-init", CONFIG_QEMU); + RunPCIroms = romfile_loadint("etc/pci-optionrom-exec", 2); ++ OnlyLoadOptionRoms = romfile_loadint("etc/only-load-option-roms", 0); + ScreenAndDebug = romfile_loadint("etc/screen-and-debug", 1); + + // Clear option rom memory +-- +2.25.1 + |