seabios: do normal config, disable oprom in vgarom

previously, "normal" initmode relied on the vgarom-based
seabios config, which enables option roms, but then lbmk
would insert pci-optionrom-exec 0 for vgarom, and 2 for normal

in libreboot, coreboot roms with "vgarom" in the filename do
pci option rom execution from coreboot, and "normal" roms
do execution from seabios(where seabios is the only payload
provided on normal setups)

this is because payloads like grub can also be used, on vgarom
setups, where coreboot must handle oprom execution
fsdg20230625
Leah Rowe 2023-05-08 19:45:32 +01:00
parent 450f19bd79
commit 3f1ee01507
4 changed files with 105 additions and 13 deletions

View File

@ -217,7 +217,8 @@ fi
if [ ! -f "${seavgabiosrom}" ] \
|| [ ! -f payload/seabios/seabios_libgfxinit.elf ] \
|| [ ! -f payload/seabios/seabios_vgarom.elf ]; then
|| [ ! -f payload/seabios/seabios_vgarom.elf ] \
|| [ ! -f payload/seabios/seabios_normal.elf ]; then
if [ "${payload_seabios}" = "y" ]; then
./build payload seabios
elif [ "${payload_grub}" = "y" ] \
@ -361,14 +362,7 @@ make_seabios_rom() {
target_opromloadonly="${3}" # 0 or 1. if 1, only load but don't execute oproms
target_initmode="${4}" # e.g. libgfxinit
if [ "${target_initmode}" = "normal" ]; then
target_seabioself="payload/seabios/seabios_vgarom.elf"
# if normal, etc/pci-optionrom-exec will be set to 2
else
target_seabioself="payload/seabios/seabios_${target_initmode}.elf"
# if libgfxinit, etc/pci-optionrom-exec will be set to 2
# if vgarom, etc/pci-optionrom-exec will be set to 0
fi
target_seabioself="payload/seabios/seabios_${target_initmode}.elf"
target_seavgabios_rom="payload/seabios/seavgabios.bin"
tmprom=$(mktemp -t coreboot_rom.XXXXXXXXXX)
@ -378,7 +372,7 @@ make_seabios_rom() {
"${cbfstool}" "${tmprom}" add-int -i 3000 -n etc/ps2-keyboard-spinup || exit 1
if [ "${target_initmode}" = "normal" ] || [ "${target_initmode}" = "libgfxinit" ]; then
"${cbfstool}" "${tmprom}" add-int -i 2 -n etc/pci-optionrom-exec || exit 1
elif [ "${target_initmode}" = "vgarom" ]; then
elif [ "${target_initmode}" = "vgarom" ]; then # coreboot executes the rom
"${cbfstool}" "${tmprom}" add-int -i 0 -n etc/pci-optionrom-exec || exit 1
fi # for undefined modes, don't add this integer. rely on SeaBIOS defaults
"${cbfstool}" "${tmprom}" add-int -i 0 -n etc/optionroms-checksum || exit 1

View File

@ -2,7 +2,7 @@
# helper script: builds SeaBIOS source code
#
# Copyright (C) 2020, 2021 Leah Rowe <info@minifree.org>
# Copyright (C) 2020, 2021, 2023 Leah Rowe <info@minifree.org>
# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
#
# This program is free software: you can redistribute it and/or modify
@ -55,6 +55,14 @@ make -j$(nproc)
mv out/bios.bin.elf ../payload/seabios/seabios_vgarom.elf
rm .config
# for normal setup:
[ -f Makefile ] && make distclean
cp ../resources/seabios/config/normal .config
make silentoldconfig -j$(nproc)
make -j$(nproc)
mv out/bios.bin.elf ../payload/seabios/seabios_normal.elf
rm .config
# clean it again. gotta keep it clean!
[ -f Makefile ] && make distclean

View File

@ -0,0 +1,91 @@
#
# Automatically generated file; DO NOT EDIT.
# SeaBIOS Configuration
#
#
# General Features
#
CONFIG_COREBOOT=y
# CONFIG_QEMU is not set
# CONFIG_CSM is not set
# CONFIG_QEMU_HARDWARE is not set
CONFIG_THREADS=y
CONFIG_RELOCATE_INIT=y
CONFIG_BOOTMENU=y
CONFIG_BOOTSPLASH=y
CONFIG_BOOTORDER=y
CONFIG_HOST_BIOS_GEOMETRY=y
CONFIG_COREBOOT_FLASH=y
CONFIG_LZMA=y
CONFIG_CBFS_LOCATION=0
CONFIG_MULTIBOOT=y
CONFIG_ENTRY_EXTRASTACK=y
CONFIG_MALLOC_UPPERMEMORY=y
CONFIG_ROM_SIZE=0
#
# Hardware support
#
CONFIG_ATA=y
CONFIG_ATA_DMA=y
# CONFIG_ATA_PIO32 is not set
CONFIG_AHCI=y
CONFIG_SDCARD=y
CONFIG_MEGASAS=y
CONFIG_FLOPPY=y
CONFIG_FLASH_FLOPPY=y
CONFIG_NVME=y
CONFIG_PS2PORT=y
CONFIG_USB=y
CONFIG_USB_UHCI=y
CONFIG_USB_OHCI=y
CONFIG_USB_EHCI=y
CONFIG_USB_XHCI=y
CONFIG_USB_MSC=y
CONFIG_USB_UAS=y
CONFIG_USB_HUB=y
CONFIG_USB_KEYBOARD=y
CONFIG_USB_MOUSE=y
CONFIG_SERIAL=y
CONFIG_SERCON=y
CONFIG_LPT=y
CONFIG_RTC_TIMER=y
CONFIG_HARDWARE_IRQ=y
CONFIG_PMTIMER=y
CONFIG_TSC_TIMER=y
#
# BIOS interfaces
#
CONFIG_DRIVES=y
CONFIG_CDROM_BOOT=y
CONFIG_CDROM_EMU=y
CONFIG_PCIBIOS=y
CONFIG_APMBIOS=y
CONFIG_PNPBIOS=y
CONFIG_OPTIONROMS=y
CONFIG_PMM=y
CONFIG_BOOT=y
CONFIG_KEYBOARD=y
CONFIG_KBD_CALL_INT15_4F=y
CONFIG_MOUSE=y
CONFIG_S3_RESUME=y
CONFIG_VGAHOOKS=y
# CONFIG_DISABLE_A20 is not set
CONFIG_TCGBIOS=y
#
# VGA ROM
#
CONFIG_NO_VGABIOS=y
# CONFIG_VGA_GEODEGX2 is not set
# CONFIG_VGA_GEODELX is not set
# CONFIG_VGA_COREBOOT is not set
# CONFIG_BUILD_VGABIOS is not set
CONFIG_VGA_EXTRA_STACK_SIZE=512
#
# Debugging
#
CONFIG_DEBUG_LEVEL=0

View File

@ -64,8 +64,7 @@ CONFIG_CDROM_EMU=y
CONFIG_PCIBIOS=y
CONFIG_APMBIOS=y
CONFIG_PNPBIOS=y
CONFIG_OPTIONROMS=y
CONFIG_PMM=y
# CONFIG_OPTIONROMS is not set
CONFIG_BOOT=y
CONFIG_KEYBOARD=y
CONFIG_KBD_CALL_INT15_4F=y