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