##
## This file is part of the coreboot project.
##
-## Copyright (C) 2007 coresystems GmbH
+## Copyright (C) 2007-2010 coresystems GmbH
## (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH)
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; version 2 of the License
+## the Free Software Foundation; version 2 of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
-menu "Devices"
-
config VGA_BRIDGE_SETUP
bool "Setup bridges on path to VGA adapter"
default y
help
- Allow bridges to set up legacy decoding ranges for VGA. Don't disable
+ Allow bridges to set up legacy decoding ranges for VGA. Don't disable
this unless you're sure you don't want the briges setup for VGA.
+# TODO: Explain differences (if any) for onboard cards.
config VGA_ROM_RUN
- bool "Run VGA Option ROMs"
+ bool "Run VGA option ROMs"
+ default y
help
- Execute VGA option ROMs if found. This is required to enable PCI/AGP
- VGA plugin cards.
+ Execute VGA option ROMs, if found. This is required to enable
+ PCI/AGP/PCI-E video cards.
config PCI_ROM_RUN
- bool "Run non-VGA Option ROMs"
+ bool "Run non-VGA option ROMs"
+ default y
help
- Execute non-VGA PCI option ROMs if found.
+ Execute non-VGA PCI option ROMs, if found.
+
+ Examples include IDE/SATA controller option ROMs and option ROMs
+ for network cards (NICs).
choice
- prompt "Option ROM Execution"
- default PCI_OPTION_ROM_RUN_REALMODE
+ prompt "Option ROM execution type"
+ default PCI_OPTION_ROM_RUN_YABEL if !ARCH_X86
+ default PCI_OPTION_ROM_RUN_REALMODE if ARCH_X86
depends on PCI_ROM_RUN || VGA_ROM_RUN
+
+config PCI_OPTION_ROM_RUN_REALMODE
+ prompt "Native mode"
+ bool
+ depends on ARCH_X86
help
- You can choose to execute PCI option ROMs natively (32bit x86 system
- required) or in an emulator (x86emu or YABEL).
+ If you select this option, PCI option ROMs will be executed
+ natively on the CPU in real mode. No CPU emulation is involved,
+ so this is the fastest, but also the least secure option.
+ (only works on x86/x64 systems)
- config PCI_OPTION_ROM_RUN_REALMODE
- prompt "Real mode"
- bool
+config PCI_OPTION_ROM_RUN_YABEL
+ prompt "Secure mode"
+ bool
+ help
+ If you select this option, the x86emu CPU emulator will be used to
+ execute PCI option ROMs.
- config PCI_OPTION_ROM_RUN_YABEL
- prompt "YABEL"
- bool
+ This option prevents option ROMs from doing dirty tricks with the
+ system (such as installing SMM modules or hypervisors), but it is
+ also significantly slower than the native option ROM initialization
+ method.
+
+ This is the default choice for non-x86 systems.
- config PCI_OPTION_ROM_RUN_X86EMU
- prompt "X86EMU"
- bool
endchoice
+# TODO: Describe better, and/or make a "choice" selection for this.
config YABEL_DEBUG_FLAGS
- prompt "Hex value for debug flags"
+ prompt "Hex value for YABEL debug flags"
hex
default 0x0
depends on PCI_OPTION_ROM_RUN_YABEL
help
- See debug.h for values 0 is no debug output, 0x31ff is _verbose_.
+ CONFIG_YABEL_DEBUG_FLAGS is a binary switch that allows you
+ to select the following items to debug. 1=on 0=off. After you
+ decide what you want to debug create the binary value, convert to
+ hex and set the option.
+
+ Example for "debug all":
+ CONFIG_YABEL_DEBUG_FLAGS = 0x31FF
+
+ |-DEBUG_JMP - Print info about JMP and RETF opcodes from x86emu
+ ||-DEBUG_TRACE_X86EMU - Print _all_ opcodes that are executed by
+ || x86emu (WARNING: this will produce a LOT
+ || of output)
+ |||-Currently unused
+ ||||-Currently unused
+ |||||-Currently unused
+ ||||||-DEBUG_PNP - Print Plug And Play accesses made by option ROM
+ |||||||-DEBUG_DISK - Print Disk I/O related messages, currently unused
+ ||||||||-DEBUG_PMM - Print messages related to POST Memory
+ |||||||| Manager (PMM)
+ |||||||||-DEBUG_VBE - Print messages related to VESA BIOS Extension
+ ||||||||| (VBE) functions
+ ||||||||||-DEBUG_PRINT_INT10 - Let INT10 (i.e. character output)
+ |||||||||| calls print messages to debug output
+ |||||||||||-DEBUG_INTR - Print messages related to interrupt handling
+ ||||||||||||-DEBUG_CHECK_VMEM_ACCESS - Print messages related to
+ |||||||||||| accesses to certain areas of
+ |||||||||||| the virtual memory (e.g. BDA
+ |||||||||||| (BIOS Data Area) or interrupt
+ |||||||||||| vectors)
+ |||||||||||||-DEBUG_MEM - Print memory accesses made by option ROM
+ ||||||||||||| (NOTE: this also includes accesses to
+ ||||||||||||| fetch instructions)
+ ||||||||||||||-DEBUG_IO - Print I/O accesses made by option ROM
+ 11000111111111 - Maximum binary value, i.e. "debug all"
+ (WARNING: This could run for hours)
+
+ DEBUG_IO 0x0001
+ DEBUG_MEM 0x0002
+ DEBUG_CHECK_VMEM_ACCESS 0x0004
+ DEBUG_INTR 0x0008
+ DEBUG_PRINT_INT10 0x0010
+ DEBUG_VBE 0x0020
+ DEBUG_PMM 0x0040
+ DEBUG_DISK 0x0080
+ DEBUG_PNP 0x0100
+ DEBUG_TRACE_X86EMU 0x1000
+ DEBUG_JMP 0x2000
+
+ See debug.h for values. 0 is no debug output, 0x31ff is _verbose_.
+
+config YABEL_PCI_ACCESS_OTHER_DEVICES
+ prompt "Allow option ROMs to access other devices"
+ bool
+ depends on PCI_OPTION_ROM_RUN_YABEL
+ help
+ Per default, YABEL only allows option ROMs to access the PCI device
+ that they are associated with. However, this causes trouble for some
+ onboard graphics chips whose option ROM needs to reconfigure the
+ north bridge.
-endmenu
+config YABEL_VIRTMEM_LOCATION
+ prompt "Location of YABEL's virtual memory"
+ hex
+ depends on PCI_OPTION_ROM_RUN_YABEL && EXPERT
+ default 0x1000000
+ help
+ YABEL requires 1MB memory for its CPU emulation. This memory is
+ normally located at 16MB.
+
+config YABEL_DIRECTHW
+ prompt "Direct hardware access"
+ bool
+ depends on PCI_OPTION_ROM_RUN_YABEL
+ help
+ YABEL consists of two parts: It uses x86emu for the CPU emulation and
+ additionally provides a PC system emulation that filters bad device
+ and memory access (such as PCI config space access to other devices
+ than the initialized one).
+
+ When choosing this option, x86emu will pass through all hardware
+ accesses to memory and I/O devices to the underlying memory and I/O
+ addresses. While this option prevents option ROMs from doing dirty
+ tricks with the CPU (such as installing SMM modules or hypervisors),
+ they can still access all devices in the system.
+ Enable this option for a good compromise between security and speed.
+
+config BOOTSPLASH
+ prompt "Show graphical bootsplash"
+ bool
+ depends on PCI_OPTION_ROM_RUN_YABEL
+ help
+ This option shows a graphical bootsplash screen. The grapics are
+ loaded from the CBFS file bootsplash.jpg.
+
+# TODO: Turn this into a "choice".
+config FRAMEBUFFER_VESA_MODE
+ prompt "VESA framebuffer video mode"
+ hex
+ default 0x117
+ depends on BOOTSPLASH
+ help
+ This option sets the resolution used for the coreboot framebuffer and
+ bootsplash screen. Set to 0x117 for 1024x768x16. A diligent soul will
+ some day make this a "choice".
+
+config COREBOOT_KEEP_FRAMEBUFFER
+ prompt "Keep VESA framebuffer"
+ bool
+ depends on BOOTSPLASH
+ help
+ This option keeps the framebuffer mode set after coreboot finishes
+ execution. If this option is enabled, coreboot will pass a
+ framebuffer entry in its coreboot table and the payload will need a
+ framebuffer driver. If this option is disabled, coreboot will switch
+ back to text mode before handing control to a payload.
config CONSOLE_VGA_MULTI
bool
config HYPERTRANSPORT_PLUGIN_SUPPORT
bool
- default y
+ default n
config PCIX_PLUGIN_SUPPORT
bool