# Kconfig SeaBIOS configuration mainmenu "SeaBIOS Configuration" choice prompt "Processor architecture" default X86 config X86 bool "Intel/AMD x86" help Build PC BIOS. config PARISC bool "PA-RISC" help Build PARISC BIOS. endchoice menu "General Features" choice prompt "Build Target" default QEMU config COREBOOT bool "Build for coreboot" if X86 help Configure as a coreboot payload. config QEMU bool "Build for QEMU/Xen/KVM/Bochs" select QEMU_HARDWARE help Configure for an emulated machine (QEMU, Xen, KVM, or Bochs). config CSM bool "Build as Compatibility Support Module for EFI BIOS" if X86 help Configure to be used by EFI firmware as Compatibility Support module (CSM) to provide legacy BIOS services. endchoice config QEMU_HARDWARE bool "Support hardware found on emulators (QEMU/Xen/KVM/Bochs)" if !QEMU default n help Support virtual hardware when the code detects it is running on an emulator. config XEN depends on QEMU && !PARISC bool "Support Xen HVM" default y help Configure to be used by xen hvmloader, for a HVM guest. config THREADS bool "Parallelize hardware init" depends on !PARISC default y help Support running hardware initialization in parallel. config RELOCATE_INIT bool "Copy init code to high memory" default y depends on X86 help Support relocating the one time initialization code to high memory. config BOOTMENU depends on BOOT bool "Bootmenu" default y help Support an interactive boot menu at end of post. config BOOTSPLASH depends on BOOTMENU && !PARISC bool "Graphical boot splash screen" default y help Support showing a graphical boot splash screen. config BOOTORDER depends on BOOT bool "Boot ordering" default y help Support controlling of the boot order via the fw_cfg/CBFS "bootorder" file. config COREBOOT_FLASH depends on COREBOOT bool "coreboot CBFS support" default y help Support searching coreboot flash format. config LZMA depends on COREBOOT_FLASH bool "CBFS lzma support" default y help Support CBFS files compressed using the lzma decompression algorithm. config CBFS_LOCATION depends on COREBOOT_FLASH hex "CBFS memory end location" default 0 help Memory address of where the CBFS data ends. This should be zero for normal builds. It may be a non-zero value if the CBFS filesystem is at a non-standard location (eg, 0xffe00000 if CBFS ends 2Meg below the end of flash). config MULTIBOOT depends on COREBOOT bool "multiboot support" default y help Add multiboot header in bios.bin.raw and accept files supplied as multiboot modules. config ENTRY_EXTRASTACK bool "Use internal stack for 16bit interrupt entry points" default y depends on X86 help Utilize an internal stack for all the legacy 16bit interrupt entry points. This reduces the amount of space on the caller's stack that SeaBIOS uses. This may adversely impact any legacy operating systems that call the BIOS in 16bit protected mode. config MALLOC_UPPERMEMORY bool "Allocate memory that needs to be in first Meg above 0xc0000" default y depends on X86 help Use the "Upper Memory Block" area (0xc0000-0xf0000) for internal "low memory" allocations. If this is not selected, the memory is instead allocated from the "9-segment" (0x90000-0xa0000). config ROM_SIZE int "ROM size (in KB)" default 0 help Set the ROM size. Say '0' here to make seabios figure the needed size automatically. Currently SeaBIOS will easily fit into 256 KB. To make it fit it into 128 KB (which was big enouth for a long time) you'll probably have to disable some featues such as xhci support. endmenu menu "Hardware support" config ATA depends on DRIVES bool "ATA controllers" default y help Support for IDE disk code. config ATA_DMA depends on ATA bool "ATA DMA" default n help Detect and try to use ATA bus mastering DMA controllers. config ATA_PIO32 depends on ATA bool "ATA 32bit PIO" default n help Use 32bit PIO accesses on ATA (minor optimization on PCI transfers). config AHCI depends on DRIVES bool "AHCI controllers" default y help Support for AHCI disk code. config SDCARD depends on DRIVES && !PARISC bool "SD controllers" default y help Support for SD cards on PCI host controllers. config VIRTIO_BLK depends on DRIVES && QEMU_HARDWARE bool "virtio-blk controllers" default y help Support boot from virtio-blk storage. config VIRTIO_SCSI depends on DRIVES && QEMU_HARDWARE bool "virtio-scsi controllers" default y help Support boot from virtio-scsi storage. config PVSCSI depends on DRIVES && QEMU_HARDWARE bool "PVSCSI controllers" default y help Support boot from Paravirtualized SCSI storage. This kind of storage is mainly supported by VMware ESX hypervisor. It is commonly used to allow fast storage access by communicating directly with the underlying hypervisor. Enabling this type of boot will allow booting directly from images imported from an ESX platform, without the need to use slower emulation of storage controllers such as IDE. config ESP_SCSI depends on DRIVES && QEMU_HARDWARE bool "AMD PCscsi controllers" default y help Support boot from AMD PCscsi storage. config LSI_SCSI depends on DRIVES && QEMU_HARDWARE bool "lsi53c895a scsi controllers" default y help Support boot from qemu-emulated lsi53c895a scsi storage. config MEGASAS depends on DRIVES bool "LSI MegaRAID SAS controllers" default y help Support boot from LSI MegaRAID SAS scsi storage. config MPT_SCSI depends on DRIVES && QEMU_HARDWARE bool "LSI MPT Fusion controllers" default y help Support boot from LSI MPT Fusion scsi storage. config FLOPPY depends on DRIVES && HARDWARE_IRQ && !PARISC bool "Floppy controller" default y help Support floppy drive access. config FLASH_FLOPPY depends on DRIVES && !PARISC bool "Floppy images from CBFS or fw_cfg" default y help Support floppy images stored in coreboot flash or from QEMU fw_cfg. config NVME depends on DRIVES && !PARISC bool "NVMe controllers" default y help Support for NVMe disk code. config PS2PORT depends on KEYBOARD || MOUSE bool "PS/2 port" default y help Support PS2 ports (keyboard and mouse). config USB bool "USB" default y help Support USB devices. config USB_UHCI depends on USB bool "USB UHCI controllers" default y help Support USB UHCI controllers. config USB_OHCI depends on USB bool "USB OHCI controllers" default y help Support USB OHCI controllers. config USB_EHCI depends on USB bool "USB EHCI controllers" default y help Support USB EHCI controllers. config USB_XHCI depends on USB && !PARISC bool "USB XHCI controllers" default y help Support USB XHCI controllers. config USB_MSC depends on USB && DRIVES bool "USB drives" default y help Support USB BOT (bulk-only transport) disks. config USB_UAS depends on USB && DRIVES bool "UAS drives" default y help Support USB UAS (usb attached scsi) disks. config USB_HUB depends on USB bool "USB hubs" default y help Support USB hubs. config USB_KEYBOARD depends on USB && KEYBOARD bool "USB keyboards" default y help Support USB keyboards. config USB_MOUSE depends on USB && MOUSE bool "USB mice" default y help Support USB mice. config SERIAL bool "Serial port" default y help Support serial ports. This also enables int 14 serial port calls. config SERCON bool "Serial console" default y help Support redirecting vga output to the serial console. config LPT bool "Parallel port" default y help Support parallel ports. This also enables int 17 parallel port calls. config RTC_TIMER bool "Real Time Clock (RTC) scheduling" depends on HARDWARE_IRQ && !PARISC default y help Support MC146818 Real Time Clock chip timer interrupts. This also enables int 1583 and int 1586 calls. Disabling this support does not disable access to the RTC cmos registers. config HARDWARE_IRQ bool "Hardware interrupts" depends on !PARISC default y help Program and support hardware interrupts using the i8259 programmable interrupt controller (PIC). This option must be enabled in order to support most boot loaders. Only disable this option if running on peculiar hardware known not to support irq routing. config USE_SMM depends on QEMU && X86 bool "System Management Mode (SMM)" default y help Support System Management Mode (on emulators). config CALL32_SMM bool depends on USE_SMM default y config MTRR_INIT depends on QEMU && X86 bool "Initialize MTRRs" default y help Initialize the Memory Type Range Registers (on emulators). config PMTIMER bool "Support ACPI timer" default y depends on X86 help Detect and use the ACPI timer for timekeeping. config TSC_TIMER bool "Support CPU timestamp counter as timer" default y help Support for using the CPU timestamp counter as an internal timing source. endmenu menu "BIOS interfaces" config DRIVES bool "Drive interface" default y help Support int13 disk/floppy drive functions. config CDROM_BOOT depends on DRIVES bool "DVD/CDROM booting" default y help Support for booting from a CD. (El Torito spec support.) config CDROM_EMU depends on CDROM_BOOT bool "DVD/CDROM boot drive emulation" default y help Support bootable CDROMs that emulate a floppy/harddrive. config PCIBIOS bool "PCIBIOS interface" default y help Support int 1a/b1 PCI BIOS calls. config APMBIOS bool "APM interface" default y help Support int 15/53 APM BIOS calls. config PNPBIOS bool "PnP BIOS interface" default y help Support PnP BIOS entry point. config OPTIONROMS depends on !PARISC bool "Option ROMS" default y help Support finding and running option roms during POST. config PMM depends on OPTIONROMS bool "PMM interface" default y help Support Post Memory Manager (PMM) entry point. config BOOT bool "Boot interface" default y help Support int 19/18 system bootup support. config KEYBOARD bool "Keyboard interface" default y help Support int 16 keyboard calls. config KBD_CALL_INT15_4F depends on KEYBOARD bool "Keyboard hook interface" default y help Support calling int155f on each keyboard event. config MOUSE bool "Mouse interface" default y help Support for int15c2 mouse calls. config S3_RESUME bool "S3 resume" default y help Support S3 resume handler. config VGAHOOKS bool "Hardware specific VGA helpers" default y help Support int 155f BIOS callbacks specific to some Intel and VIA on-board vga devices. config DISABLE_A20 bool "Disable A20" default n help Disable A20 on 16bit boot. config WRITABLE_UPPERMEMORY depends on QEMU bool "Make unused UMB memory read/writeable." default n help When selected, the "Upper Memory Block" area (0x90000-0xa0000) that is not used for option roms will be made writable. This allows the ram to be directly modified by programs. However, some old DOS high memory managers may require the UMB region to be read-only. config TCGBIOS depends on S3_RESUME bool "TPM support and TCG BIOS extensions" default y help Provide TPM support along with TCG BIOS extensions endmenu menu "BIOS Tables" depends on QEMU && X86 config PIRTABLE bool "PIR table" default y help Support generation of a PIR table in 0xf000 segment. config MPTABLE bool "MPTable" default y help Support generation of MPTable. config SMBIOS bool "SMBIOS" default y help Support generation of SM BIOS tables. This is also sometimes called DMI. config ACPI bool "ACPI" default y help Support generation of ACPI tables. config ACPI_DSDT bool "Include default ACPI DSDT" default y depends on ACPI help Include default DSDT ACPI table in BIOS. Required for QEMU 1.3 and older. This option can be disabled for QEMU 1.4 and newer to save some space in the ROM file. If unsure, say Y. config FW_ROMFILE_LOAD bool "Load BIOS tables from ROM files" depends on QEMU_HARDWARE default y help Support loading BIOS firmware tables from ROM files. At the moment, only ACPI tables can be loaded in this way. Required for QEMU 1.7 and newer. This option can be disabled for QEMU 1.6 and older to save some space in the ROM file. If unsure, say Y. endmenu source vgasrc/Kconfig menu "Debugging" config DEBUG_LEVEL int "Debug level" default 1 help Control how verbose debug output is. The higher the number, the more verbose SeaBIOS will be. Set to zero to disable debugging. config DEBUG_SERIAL depends on DEBUG_LEVEL != 0 bool "Serial port debugging" default n help Send debugging information to serial port. config DEBUG_SERIAL_PORT depends on DEBUG_SERIAL hex "Serial port base address" default 0x3f8 help Base port for serial - generally 0x3f8, 0x2f8, 0x3e8, or 0x2e8. config DEBUG_SERIAL_MMIO depends on DEBUG_LEVEL != 0 && !DEBUG_SERIAL bool "Serial port debugging via memory mapped IO" default n help Send debugging information to serial port mapped in memory. config DEBUG_SERIAL_MEM_ADDRESS depends on DEBUG_SERIAL_MMIO hex "Serial port memory mapped IO address" help On some chipsets the serial port is memory mapped, in those cases provide the 32 bit address. E.g. 0xFEDC6000 for the AMD Kern (a.k.a Hudson UART). config DEBUG_IO depends on QEMU_HARDWARE && DEBUG_LEVEL != 0 bool "Special IO port debugging" default y help Some emulators or hypervisors provide with a way to output debug information by outputing strings in a special port present in the IO space. config DEBUG_COREBOOT depends on COREBOOT && DEBUG_LEVEL != 0 bool "coreboot cbmem debug logging" default y help Send debugging information to the coreboot cbmem console buffer. Needs CONFIG_CONSOLE_CBMEM in coreboot. You can read the log after boot using 'cbmem -c'. Only 32bit code (basically every- thing before booting the OS) writes to the log buffer. endmenu