From 499fa42125e5722208f3afec80dbf27120263947 Mon Sep 17 00:00:00 2001 From: Leah Rowe <leah@libreboot.org> Date: Mon, 8 May 2023 19:45:32 +0100 Subject: [PATCH] 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 --- resources/scripts/build/boot/roms_helper | 14 ++-- resources/scripts/build/payload/seabios | 10 ++- resources/seabios/config/normal | 91 ++++++++++++++++++++++++ resources/seabios/config/vgarom | 3 +- 4 files changed, 105 insertions(+), 13 deletions(-) create mode 100644 resources/seabios/config/normal diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper index 9bcc693..dd4a3b1 100755 --- a/resources/scripts/build/boot/roms_helper +++ b/resources/scripts/build/boot/roms_helper @@ -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 diff --git a/resources/scripts/build/payload/seabios b/resources/scripts/build/payload/seabios index af2840d..4a7ba62 100755 --- a/resources/scripts/build/payload/seabios +++ b/resources/scripts/build/payload/seabios @@ -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 diff --git a/resources/seabios/config/normal b/resources/seabios/config/normal new file mode 100644 index 0000000..92b9c56 --- /dev/null +++ b/resources/seabios/config/normal @@ -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 diff --git a/resources/seabios/config/vgarom b/resources/seabios/config/vgarom index 92b9c56..9f543ce 100644 --- a/resources/seabios/config/vgarom +++ b/resources/seabios/config/vgarom @@ -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 -- GitLab