1# Kconfig SeaBIOS configuration 2 3mainmenu "SeaBIOS Configuration" 4 5menu "General Features" 6 7choice 8 prompt "Build Target" 9 default QEMU 10 11 config COREBOOT 12 bool "Build for coreboot" 13 help 14 Configure as a coreboot payload. 15 16 config QEMU 17 bool "Build for QEMU/Xen/KVM/Bochs" 18 select QEMU_HARDWARE 19 help 20 Configure for an emulated machine (QEMU, Xen, KVM, or Bochs). 21 22 config CSM 23 bool "Build as Compatibility Support Module for EFI BIOS" 24 help 25 Configure to be used by EFI firmware as Compatibility Support 26 module (CSM) to provide legacy BIOS services. 27 28endchoice 29 30 config QEMU_HARDWARE 31 bool "Support hardware found on emulators (QEMU/Xen/KVM/Bochs)" if !QEMU 32 default n 33 help 34 Support virtual hardware when the code detects it is 35 running on an emulator. 36 37 config XEN 38 depends on QEMU 39 bool "Support Xen HVM" 40 default y 41 help 42 Configure to be used by xen hvmloader, for a HVM guest. 43 44 config THREADS 45 bool "Parallelize hardware init" 46 default y 47 help 48 Support running hardware initialization in parallel. 49 50 config RELOCATE_INIT 51 bool "Copy init code to high memory" 52 default y 53 help 54 Support relocating the one time initialization code to high memory. 55 56 config BOOTMENU 57 depends on BOOT 58 bool "Bootmenu" 59 default y 60 help 61 Support an interactive boot menu at end of post. 62 config BOOTSPLASH 63 depends on BOOTMENU 64 bool "Graphical boot splash screen" 65 default y 66 help 67 Support showing a graphical boot splash screen. 68 config BOOTORDER 69 depends on BOOT 70 bool "Boot ordering" 71 default y 72 help 73 Support controlling of the boot order via the fw_cfg/CBFS 74 "bootorder" file. 75 76 config COREBOOT_FLASH 77 depends on COREBOOT 78 bool "coreboot CBFS support" 79 default y 80 help 81 Support searching coreboot flash format. 82 config LZMA 83 depends on COREBOOT_FLASH 84 bool "CBFS lzma support" 85 default y 86 help 87 Support CBFS files compressed using the lzma decompression 88 algorithm. 89 config CBFS_LOCATION 90 depends on COREBOOT_FLASH 91 hex "CBFS memory end location" 92 default 0 93 help 94 Memory address of where the CBFS data ends. This should 95 be zero for normal builds. It may be a non-zero value if 96 the CBFS filesystem is at a non-standard location (eg, 97 0xffe00000 if CBFS ends 2Meg below the end of flash). 98 99 config MULTIBOOT 100 depends on COREBOOT 101 bool "multiboot support" 102 default y 103 help 104 Add multiboot header in bios.bin.raw and accept files supplied 105 as multiboot modules. 106 config ENTRY_EXTRASTACK 107 bool "Use internal stack for 16bit interrupt entry points" 108 default y 109 help 110 Utilize an internal stack for all the legacy 16bit 111 interrupt entry points. This reduces the amount of space 112 on the caller's stack that SeaBIOS uses. This may 113 adversely impact any legacy operating systems that call 114 the BIOS in 16bit protected mode. 115 116 config MALLOC_UPPERMEMORY 117 bool "Allocate memory that needs to be in first Meg above 0xc0000" 118 default y 119 help 120 Use the "Upper Memory Block" area (0xc0000-0xf0000) for 121 internal "low memory" allocations. If this is not 122 selected, the memory is instead allocated from the 123 "9-segment" (0x90000-0xa0000). 124 125 config ROM_SIZE 126 int "ROM size (in KB)" 127 default 0 128 help 129 Set the ROM size. Say '0' here to make seabios figure the 130 needed size automatically. 131 132 Currently SeaBIOS will easily fit into 256 KB. To make it fit 133 it into 128 KB (which was big enouth for a long time) you'll 134 probably have to disable some featues such as xhci support. 135 136endmenu 137 138menu "Hardware support" 139 config ATA 140 depends on DRIVES 141 bool "ATA controllers" 142 default y 143 help 144 Support for IDE disk code. 145 config ATA_DMA 146 depends on ATA 147 bool "ATA DMA" 148 default n 149 help 150 Detect and try to use ATA bus mastering DMA controllers. 151 config ATA_PIO32 152 depends on ATA 153 bool "ATA 32bit PIO" 154 default n 155 help 156 Use 32bit PIO accesses on ATA (minor optimization on PCI transfers). 157 config AHCI 158 depends on DRIVES 159 bool "AHCI controllers" 160 default y 161 help 162 Support for AHCI disk code. 163 config SDCARD 164 depends on DRIVES 165 bool "SD controllers" 166 default y 167 help 168 Support for SD cards on PCI host controllers. 169 config VIRTIO_BLK 170 depends on DRIVES && QEMU_HARDWARE 171 bool "virtio-blk controllers" 172 default y 173 help 174 Support boot from virtio-blk storage. 175 config VIRTIO_SCSI 176 depends on DRIVES && QEMU_HARDWARE 177 bool "virtio-scsi controllers" 178 default y 179 help 180 Support boot from virtio-scsi storage. 181 config PVSCSI 182 depends on DRIVES && QEMU_HARDWARE 183 bool "PVSCSI controllers" 184 default y 185 help 186 Support boot from Paravirtualized SCSI storage. This kind of storage 187 is mainly supported by VMware ESX hypervisor. It is commonly used 188 to allow fast storage access by communicating directly with the 189 underlying hypervisor. Enabling this type of boot will allow 190 booting directly from images imported from an ESX platform, 191 without the need to use slower emulation of storage controllers 192 such as IDE. 193 config ESP_SCSI 194 depends on DRIVES && QEMU_HARDWARE 195 bool "AMD PCscsi controllers" 196 default y 197 help 198 Support boot from AMD PCscsi storage. 199 config LSI_SCSI 200 depends on DRIVES && QEMU_HARDWARE 201 bool "lsi53c895a scsi controllers" 202 default y 203 help 204 Support boot from qemu-emulated lsi53c895a scsi storage. 205 config MEGASAS 206 depends on DRIVES 207 bool "LSI MegaRAID SAS controllers" 208 default y 209 help 210 Support boot from LSI MegaRAID SAS scsi storage. 211 config MPT_SCSI 212 depends on DRIVES && QEMU_HARDWARE 213 bool "LSI MPT Fusion controllers" 214 default y 215 help 216 Support boot from LSI MPT Fusion scsi storage. 217 config FLOPPY 218 depends on DRIVES && HARDWARE_IRQ 219 bool "Floppy controller" 220 default y 221 help 222 Support floppy drive access. 223 config FLASH_FLOPPY 224 depends on DRIVES 225 bool "Floppy images from CBFS or fw_cfg" 226 default y 227 help 228 Support floppy images stored in coreboot flash or from 229 QEMU fw_cfg. 230 config NVME 231 depends on DRIVES 232 bool "NVMe controllers" 233 default y 234 help 235 Support for NVMe disk code. 236 237 config PS2PORT 238 depends on KEYBOARD || MOUSE 239 bool "PS/2 port" 240 default y 241 help 242 Support PS2 ports (keyboard and mouse). 243 244 config USB 245 bool "USB" 246 default y 247 help 248 Support USB devices. 249 config USB_UHCI 250 depends on USB 251 bool "USB UHCI controllers" 252 default y 253 help 254 Support USB UHCI controllers. 255 config USB_OHCI 256 depends on USB 257 bool "USB OHCI controllers" 258 default y 259 help 260 Support USB OHCI controllers. 261 config USB_EHCI 262 depends on USB 263 bool "USB EHCI controllers" 264 default y 265 help 266 Support USB EHCI controllers. 267 config USB_XHCI 268 depends on USB 269 bool "USB XHCI controllers" 270 default y 271 help 272 Support USB XHCI controllers. 273 config USB_MSC 274 depends on USB && DRIVES 275 bool "USB drives" 276 default y 277 help 278 Support USB BOT (bulk-only transport) disks. 279 config USB_UAS 280 depends on USB && DRIVES 281 bool "UAS drives" 282 default y 283 help 284 Support USB UAS (usb attached scsi) disks. 285 config USB_HUB 286 depends on USB 287 bool "USB hubs" 288 default y 289 help 290 Support USB hubs. 291 config USB_KEYBOARD 292 depends on USB && KEYBOARD 293 bool "USB keyboards" 294 default y 295 help 296 Support USB keyboards. 297 config USB_MOUSE 298 depends on USB && MOUSE 299 bool "USB mice" 300 default y 301 help 302 Support USB mice. 303 304 config SERIAL 305 bool "Serial port" 306 default y 307 help 308 Support serial ports. This also enables int 14 serial port calls. 309 config SERCON 310 bool "Serial console" 311 default y 312 help 313 Support redirecting vga output to the serial console. 314 config LPT 315 bool "Parallel port" 316 default y 317 help 318 Support parallel ports. This also enables int 17 parallel port calls. 319 config RTC_TIMER 320 bool "Real Time Clock (RTC) scheduling" 321 depends on HARDWARE_IRQ 322 default y 323 help 324 Support MC146818 Real Time Clock chip timer 325 interrupts. This also enables int 1583 and int 1586 calls. 326 327 Disabling this support does not disable access to the RTC 328 cmos registers. 329 330 config HARDWARE_IRQ 331 bool "Hardware interrupts" 332 default y 333 help 334 Program and support hardware interrupts using the i8259 335 programmable interrupt controller (PIC). This option must 336 be enabled in order to support most boot loaders. Only 337 disable this option if running on peculiar hardware known 338 not to support irq routing. 339 340 config USE_SMM 341 depends on QEMU 342 bool "System Management Mode (SMM)" 343 default y 344 help 345 Support System Management Mode (on emulators). 346 config CALL32_SMM 347 bool 348 depends on USE_SMM 349 default y 350 config MTRR_INIT 351 depends on QEMU 352 bool "Initialize MTRRs" 353 default y 354 help 355 Initialize the Memory Type Range Registers (on emulators). 356 config PMTIMER 357 bool "Support ACPI timer" 358 default y 359 help 360 Detect and use the ACPI timer for timekeeping. 361 config TSC_TIMER 362 bool "Support CPU timestamp counter as timer" 363 default y 364 help 365 Support for using the CPU timestamp counter as an internal 366 timing source. 367endmenu 368 369menu "BIOS interfaces" 370 config DRIVES 371 bool "Drive interface" 372 default y 373 help 374 Support int13 disk/floppy drive functions. 375 376 config CDROM_BOOT 377 depends on DRIVES 378 bool "DVD/CDROM booting" 379 default y 380 help 381 Support for booting from a CD. (El Torito spec support.) 382 config CDROM_EMU 383 depends on CDROM_BOOT 384 bool "DVD/CDROM boot drive emulation" 385 default y 386 help 387 Support bootable CDROMs that emulate a floppy/harddrive. 388 389 config PCIBIOS 390 bool "PCIBIOS interface" 391 default y 392 help 393 Support int 1a/b1 PCI BIOS calls. 394 config APMBIOS 395 bool "APM interface" 396 default y 397 help 398 Support int 15/53 APM BIOS calls. 399 config PNPBIOS 400 bool "PnP BIOS interface" 401 default y 402 help 403 Support PnP BIOS entry point. 404 config OPTIONROMS 405 bool "Option ROMS" 406 default y 407 help 408 Support finding and running option roms during POST. 409 config PMM 410 depends on OPTIONROMS 411 bool "PMM interface" 412 default y 413 help 414 Support Post Memory Manager (PMM) entry point. 415 config BOOT 416 bool "Boot interface" 417 default y 418 help 419 Support int 19/18 system bootup support. 420 config KEYBOARD 421 bool "Keyboard interface" 422 default y 423 help 424 Support int 16 keyboard calls. 425 config KBD_CALL_INT15_4F 426 depends on KEYBOARD 427 bool "Keyboard hook interface" 428 default y 429 help 430 Support calling int155f on each keyboard event. 431 config MOUSE 432 bool "Mouse interface" 433 default y 434 help 435 Support for int15c2 mouse calls. 436 437 config S3_RESUME 438 bool "S3 resume" 439 default y 440 help 441 Support S3 resume handler. 442 443 config VGAHOOKS 444 bool "Hardware specific VGA helpers" 445 default y 446 help 447 Support int 155f BIOS callbacks specific to some Intel and 448 VIA on-board vga devices. 449 450 config DISABLE_A20 451 bool "Disable A20" 452 default n 453 help 454 Disable A20 on 16bit boot. 455 456 config WRITABLE_UPPERMEMORY 457 depends on QEMU 458 bool "Make unused UMB memory read/writeable." 459 default n 460 help 461 When selected, the "Upper Memory Block" area 462 (0x90000-0xa0000) that is not used for option roms will be 463 made writable. This allows the ram to be directly 464 modified by programs. However, some old DOS high memory 465 managers may require the UMB region to be read-only. 466 467 config TCGBIOS 468 depends on S3_RESUME 469 bool "TPM support and TCG BIOS extensions" 470 default y 471 help 472 Provide TPM support along with TCG BIOS extensions 473 474endmenu 475 476menu "BIOS Tables" 477 depends on QEMU 478 config PIRTABLE 479 bool "PIR table" 480 default y 481 help 482 Support generation of a PIR table in 0xf000 segment. 483 config MPTABLE 484 bool "MPTable" 485 default y 486 help 487 Support generation of MPTable. 488 config SMBIOS 489 bool "SMBIOS" 490 default y 491 help 492 Support generation of SM BIOS tables. This is also 493 sometimes called DMI. 494 config ACPI 495 bool "ACPI" 496 default y 497 help 498 Support generation of ACPI tables. 499 config ACPI_DSDT 500 bool "Include default ACPI DSDT" 501 default y 502 depends on ACPI 503 help 504 Include default DSDT ACPI table in BIOS. 505 Required for QEMU 1.3 and older. 506 This option can be disabled for QEMU 1.4 and newer 507 to save some space in the ROM file. 508 If unsure, say Y. 509 config FW_ROMFILE_LOAD 510 bool "Load BIOS tables from ROM files" 511 depends on QEMU_HARDWARE 512 default y 513 help 514 Support loading BIOS firmware tables from ROM files. 515 At the moment, only ACPI tables can be loaded in this way. 516 Required for QEMU 1.7 and newer. 517 This option can be disabled for QEMU 1.6 and older 518 to save some space in the ROM file. 519 If unsure, say Y. 520endmenu 521 522source vgasrc/Kconfig 523 524menu "Debugging" 525 config DEBUG_LEVEL 526 int "Debug level" 527 default 1 528 help 529 Control how verbose debug output is. The higher the 530 number, the more verbose SeaBIOS will be. 531 532 Set to zero to disable debugging. 533 534 config DEBUG_SERIAL 535 depends on DEBUG_LEVEL != 0 536 bool "Serial port debugging" 537 default n 538 help 539 Send debugging information to serial port. 540 config DEBUG_SERIAL_PORT 541 depends on DEBUG_SERIAL 542 hex "Serial port base address" 543 default 0x3f8 544 help 545 Base port for serial - generally 0x3f8, 0x2f8, 0x3e8, or 0x2e8. 546 config DEBUG_SERIAL_MMIO 547 depends on DEBUG_LEVEL != 0 && !DEBUG_SERIAL 548 bool "Serial port debugging via memory mapped IO" 549 default n 550 help 551 Send debugging information to serial port mapped in memory. 552 config DEBUG_SERIAL_MEM_ADDRESS 553 depends on DEBUG_SERIAL_MMIO 554 hex "Serial port memory mapped IO address" 555 help 556 On some chipsets the serial port is memory mapped, in those cases 557 provide the 32 bit address. E.g. 0xFEDC6000 for the AMD Kern 558 (a.k.a Hudson UART). 559 560 config DEBUG_IO 561 depends on QEMU_HARDWARE && DEBUG_LEVEL != 0 562 bool "Special IO port debugging" 563 default y 564 help 565 Some emulators or hypervisors provide with a way to output debug 566 information by outputing strings in a special port present in the 567 IO space. 568 569 config DEBUG_COREBOOT 570 depends on COREBOOT && DEBUG_LEVEL != 0 571 bool "coreboot cbmem debug logging" 572 default y 573 help 574 Send debugging information to the coreboot cbmem console buffer. 575 Needs CONFIG_CONSOLE_CBMEM in coreboot. You can read the log 576 after boot using 'cbmem -c'. Only 32bit code (basically every- 577 thing before booting the OS) writes to the log buffer. 578 579endmenu 580