https://www.seabios.org/api.php?action=feedcontributions&user=Koconnor&feedformat=atomSeaBIOS - User contributions [en]2024-03-19T07:30:13ZUser contributionsMediaWiki 1.40.0https://www.seabios.org/index.php?title=Releases&diff=115Releases2022-03-02T02:14:24Z<p>Koconnor: Note v1.16.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.16.0 =<br />
<br />
Available on 20220301. Major changes in this release:<br />
<br />
* SMBIOS v3.0 support on QEMU<br />
* Several bug fixes and code cleanups.<br />
<br />
= SeaBIOS 1.15.0 =<br />
<br />
Available on 20211202. Major changes in this release:<br />
<br />
* Improved support for USB devices with multiple interfaces.<br />
* Support for USB XHCI devices using direct MMIO access (instead of PCI).<br />
* NVMe improvements.<br />
* Increased &quot;f-segment&quot; RAM allocations for BIOS tables.<br />
* Several bug fixes and code cleanups.<br />
<br />
= SeaBIOS 1.14.0 =<br />
<br />
Available on 20200810. Major changes in this release:<br />
<br />
* New virtio MMIO support. Support for finding virtio MMIO devices via an ACPI DSDT parser. Support for handling a large number of virtio devices.<br />
* Improved handling of USB keyboards with non-standard packet size.<br />
* Improved KVM CPU frequency detection.<br />
* Support for PCI mmconfig support on QEMU.<br />
* Several bug fixes and code cleanups.<br />
<br />
= SeaBIOS 1.13.0 =<br />
<br />
Available on 20191209. Major changes in this release:<br />
<br />
* Support for reading logical CHS drive information from QEMU<br />
* Workaround added for misbehaving optionroms that grab &quot;int19&quot;<br />
* The TPM 2 &quot;PCR bank&quot; option can now be set from the TPM menu<br />
* SeaVGABIOS support for QEMU &quot;atiext&quot; display<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.12.0 =<br />
<br />
Available on 20181117. Major changes in this release:<br />
<br />
* Initial support for &quot;TPM CRB&quot; hardware<br />
* Improved cdrom media reporting in the boot menu on QEMU<br />
* Improved floppy support on real floppy hardware<br />
* SeaVGABIOS support for QEMU &quot;bochs-display&quot; and QEMU &quot;ramfb&quot; displays<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.12.1 ==<br />
<br />
Available on 20190314. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.11.1 ==<br />
<br />
Available on 20180319. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.11.2 ==<br />
<br />
Available on 20180702. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=114Releases2021-12-03T02:34:47Z<p>Koconnor: Note v1.15.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.15.0 =<br />
<br />
Available on 20211202. Major changes in this release:<br />
<br />
* Improved support for USB devices with multiple interfaces.<br />
* Support for USB XHCI devices using direct MMIO access (instead of PCI).<br />
* NVMe improvements.<br />
* Increased &quot;f-segment&quot; RAM allocations for BIOS tables.<br />
* Several bug fixes and code cleanups.<br />
<br />
= SeaBIOS 1.14.0 =<br />
<br />
Available on 20200810. Major changes in this release:<br />
<br />
* New virtio MMIO support. Support for finding virtio MMIO devices via an ACPI DSDT parser. Support for handling a large number of virtio devices.<br />
* Improved handling of USB keyboards with non-standard packet size.<br />
* Improved KVM CPU frequency detection.<br />
* Support for PCI mmconfig support on QEMU.<br />
* Several bug fixes and code cleanups.<br />
<br />
= SeaBIOS 1.13.0 =<br />
<br />
Available on 20191209. Major changes in this release:<br />
<br />
* Support for reading logical CHS drive information from QEMU<br />
* Workaround added for misbehaving optionroms that grab &quot;int19&quot;<br />
* The TPM 2 &quot;PCR bank&quot; option can now be set from the TPM menu<br />
* SeaVGABIOS support for QEMU &quot;atiext&quot; display<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.12.0 =<br />
<br />
Available on 20181117. Major changes in this release:<br />
<br />
* Initial support for &quot;TPM CRB&quot; hardware<br />
* Improved cdrom media reporting in the boot menu on QEMU<br />
* Improved floppy support on real floppy hardware<br />
* SeaVGABIOS support for QEMU &quot;bochs-display&quot; and QEMU &quot;ramfb&quot; displays<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.12.1 ==<br />
<br />
Available on 20190314. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.11.1 ==<br />
<br />
Available on 20180319. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.11.2 ==<br />
<br />
Available on 20180702. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=113Releases2020-08-10T15:40:24Z<p>Koconnor: Note v1.14.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.14.0 =<br />
<br />
Available on 20200810. Major changes in this release:<br />
<br />
* New virtio MMIO support. Support for finding virtio MMIO devices via an ACPI DSDT parser. Support for handling a large number of virtio devices.<br />
* Improved handling of USB keyboards with non-standard packet size.<br />
* Improved KVM CPU frequency detection.<br />
* Support for PCI mmconfig support on QEMU.<br />
* Several bug fixes and code cleanups.<br />
<br />
= SeaBIOS 1.13.0 =<br />
<br />
Available on 20191209. Major changes in this release:<br />
<br />
* Support for reading logical CHS drive information from QEMU<br />
* Workaround added for misbehaving optionroms that grab &quot;int19&quot;<br />
* The TPM 2 &quot;PCR bank&quot; option can now be set from the TPM menu<br />
* SeaVGABIOS support for QEMU &quot;atiext&quot; display<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.12.0 =<br />
<br />
Available on 20181117. Major changes in this release:<br />
<br />
* Initial support for &quot;TPM CRB&quot; hardware<br />
* Improved cdrom media reporting in the boot menu on QEMU<br />
* Improved floppy support on real floppy hardware<br />
* SeaVGABIOS support for QEMU &quot;bochs-display&quot; and QEMU &quot;ramfb&quot; displays<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.12.1 ==<br />
<br />
Available on 20190314. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.11.1 ==<br />
<br />
Available on 20180319. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.11.2 ==<br />
<br />
Available on 20180702. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=112Releases2019-12-09T21:00:23Z<p>Koconnor: Note v1.13.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.13.0 =<br />
<br />
Available on 20191209. Major changes in this release:<br />
<br />
* Support for reading logical CHS drive information from QEMU<br />
* Workaround added for misbehaving optionroms that grab &quot;int19&quot;<br />
* The TPM 2 &quot;PCR bank&quot; option can now be set from the TPM menu<br />
* SeaVGABIOS support for QEMU &quot;atiext&quot; display<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.12.0 =<br />
<br />
Available on 20181117. Major changes in this release:<br />
<br />
* Initial support for &quot;TPM CRB&quot; hardware<br />
* Improved cdrom media reporting in the boot menu on QEMU<br />
* Improved floppy support on real floppy hardware<br />
* SeaVGABIOS support for QEMU &quot;bochs-display&quot; and QEMU &quot;ramfb&quot; displays<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.12.1 ==<br />
<br />
Available on 20190314. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.11.1 ==<br />
<br />
Available on 20180319. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.11.2 ==<br />
<br />
Available on 20180702. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=111Releases2019-10-28T15:22:41Z<p>Koconnor: Note release date for v1.12.1</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.12.0 =<br />
<br />
Available on 20181117. Major changes in this release:<br />
<br />
* Initial support for &quot;TPM CRB&quot; hardware<br />
* Improved cdrom media reporting in the boot menu on QEMU<br />
* Improved floppy support on real floppy hardware<br />
* SeaVGABIOS support for QEMU &quot;bochs-display&quot; and QEMU &quot;ramfb&quot; displays<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.12.1 ==<br />
<br />
Available on 20190314. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.11.1 ==<br />
<br />
Available on 20180319. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.11.2 ==<br />
<br />
Available on 20180702. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Contributing&diff=110Contributing2019-10-28T14:43:54Z<p>Koconnor: Add developer-certificate-of-origin</p>
<hr />
<div>SeaBIOS welcomes contributions of code (either fixing bugs or adding new functionality). At a high level, the process to contribute a change is:<br />
<br />
# [[Download|Obtain]] the current code and documentation<br />
# Enhance and test the code locally<br />
# Submit changes to the SeaBIOS [[Mailinglist|mailing list]] as a patch<br />
# Receive feedback, answer questions, and possibly provide updated patches<br />
# When accepted, a maintainer (Kevin O'Connor or Gerd Hoffman) will commit the change to the master SeaBIOS repository<br />
<br />
The SeaBIOS patch submission process is similar to the [http://wiki.qemu.org/Contribute/SubmitAPatch QEMU process]. Please review the QEMU process for more details and tips on the best way to submit patches. The SeaBIOS C code does follow a slightly different coding style from QEMU (eg, mixed code and C99 style variable declarations are encouraged, braces are not required around single statement blocks), however patches in the QEMU style are acceptable.<br />
<br />
As with QEMU, commits must contain a &quot;Signed-off-by&quot; line using your real name (sorry, no pseudonyms or anonymous contributions) and a current email address. It indicates agreement with the terms of the [[developer-certificate-of-origin|developer certificate of origin]].</div>Koconnorhttps://www.seabios.org/index.php?title=Developer-certificate-of-origin&diff=109Developer-certificate-of-origin2019-10-28T14:43:42Z<p>Koconnor: Add developer-certificate-of-origin</p>
<hr />
<div><blockquote><br />
Developer Certificate of Origin<br />
Version 1.1<br />
<br />
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.<br />
1 Letterman Drive<br />
Suite D4700<br />
San Francisco, CA, 94129<br />
<br />
Everyone is permitted to copy and distribute verbatim copies of this<br />
license document, but changing it is not allowed.<br />
<br />
<br />
Developer's Certificate of Origin 1.1<br />
<br />
By making a contribution to this project, I certify that:<br />
<br />
(a) The contribution was created in whole or in part by me and I<br />
have the right to submit it under the open source license<br />
indicated in the file; or<br />
<br />
(b) The contribution is based upon previous work that, to the best<br />
of my knowledge, is covered under an appropriate open source<br />
license and I have the right under that license to submit that<br />
work with modifications, whether created in whole or in part<br />
by me, under the same open source license (unless I am<br />
permitted to submit under a different license), as indicated<br />
in the file; or<br />
<br />
(c) The contribution was provided directly to me by some other<br />
person who certified (a), (b) or (c) and I have not modified<br />
it.<br />
<br />
(d) I understand and agree that this project and the contribution<br />
are public and that a record of the contribution (including all<br />
personal information I submit with it, including my sign-off) is<br />
maintained indefinitely and may be redistributed consistent with<br />
this project or the open source license(s) involved.<br />
</blockquote></div>Koconnorhttps://www.seabios.org/index.php?title=Mailinglist&diff=108Mailinglist2019-01-21T18:18:11Z<p>Koconnor: Fix cut-and-paste error in Mailinglist.md archive link</p>
<hr />
<div>For questions and general information about SeaBIOS, please subscribe to the [https://mail.coreboot.org/postorius/lists/seabios.seabios.org/ SeaBIOS mailing list]. It is necessary to subscribe to the list in order to send emails (to combat spam).<br />
<br />
A mailing list archive is available at: https://mail.coreboot.org/hyperkitty/list/seabios@seabios.org/<br />
<br />
Messages prior to January 2019 are archived at: http://www.seabios.org/pipermail/seabios/<br />
<br />
An unofficial archive is also available at: https://www.mail-archive.com/seabios@seabios.org/</div>Koconnorhttps://www.seabios.org/index.php?title=Mailinglist&diff=107Mailinglist2019-01-20T17:06:40Z<p>Koconnor: Update mailing list archive links</p>
<hr />
<div>For questions and general information about SeaBIOS, please subscribe to the [https://mail.coreboot.org/postorius/lists/seabios.seabios.org/ SeaBIOS mailing list]. It is necessary to subscribe to the list in order to send emails (to combat spam).<br />
<br />
A mailing list archive is available at: https://mail.coreboot.org/hyperkitty/list/seabios@seabios.org/<br />
<br />
Messages prior to January 2019 are archived at: http://www.seabios.org/mailman/listinfo/seabios/<br />
<br />
An unofficial archive is also available at: https://www.mail-archive.com/seabios@seabios.org/</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=106Releases2018-11-17T17:36:16Z<p>Koconnor: Note v1.12.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.12.0 =<br />
<br />
Available on 20181117. Major changes in this release:<br />
<br />
* Initial support for &quot;TPM CRB&quot; hardware<br />
* Improved cdrom media reporting in the boot menu on QEMU<br />
* Improved floppy support on real floppy hardware<br />
* SeaVGABIOS support for QEMU &quot;bochs-display&quot; and QEMU &quot;ramfb&quot; displays<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.11.1 ==<br />
<br />
Available on 20180319. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.11.2 ==<br />
<br />
Available on 20180702. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Download&diff=105Download2018-08-09T12:31:28Z<p>Koconnor: Update download file link</p>
<hr />
<div>SeaBIOS may be distributed under the terms of the [https://www.gnu.org/licenses/lgpl-3.0-standalone.html GNU LGPLv3] license. Both source code and binaries are available.<br />
<br />
= Latest source code =<br />
<br />
The SeaBIOS project uses the [https://git-scm.com/ git] revision control system. To download the latest source from revision control, run:<br />
<br />
<pre>$ git clone https://git.seabios.org/seabios.git<br />
$ cd seabios</pre><br />
There's also a [http://git.seabios.org/ website] to browse the latest source code online.<br />
<br />
= Released versions =<br />
<br />
Released versions of the source code are available at:<br />
<br />
https://www.seabios.org/downloads/<br />
<br />
Please see [[Releases|releases]] for information on each release.</div>Koconnorhttps://www.seabios.org/index.php?title=Download&diff=104Download2018-06-11T16:10:43Z<p>Koconnor: Update Download.md to use git clone via https</p>
<hr />
<div>SeaBIOS may be distributed under the terms of the [https://www.gnu.org/licenses/lgpl-3.0-standalone.html GNU LGPLv3] license. Both source code and binaries are available.<br />
<br />
= Latest source code =<br />
<br />
The SeaBIOS project uses the [https://git-scm.com/ git] revision control system. To download the latest source from revision control, run:<br />
<br />
<pre>$ git clone https://git.seabios.org/seabios.git<br />
$ cd seabios</pre><br />
There's also a [http://git.seabios.org/ website] to browse the latest source code online.<br />
<br />
= Released versions =<br />
<br />
Released versions of the source code are available at:<br />
<br />
https://code.coreboot.org/p/seabios/downloads/<br />
<br />
Please see [[Releases|releases]] for information on each release.</div>Koconnorhttps://www.seabios.org/index.php?title=Download&diff=103Download2017-12-08T16:03:42Z<p>Koconnor: Use more secure HTTPS URLs where possible</p>
<hr />
<div>SeaBIOS may be distributed under the terms of the [https://www.gnu.org/licenses/lgpl-3.0-standalone.html GNU LGPLv3] license. Both source code and binaries are available.<br />
<br />
= Latest source code =<br />
<br />
The SeaBIOS project uses the [https://git-scm.com/ git] revision control system. To download the latest source from revision control, run:<br />
<br />
<pre>$ git clone git://git.seabios.org/seabios.git seabios<br />
$ cd seabios</pre><br />
There's also a [http://git.seabios.org/ website] to browse the latest source code online.<br />
<br />
= Released versions =<br />
<br />
Released versions of the source code are available at:<br />
<br />
https://code.coreboot.org/p/seabios/downloads/<br />
<br />
Please see [[Releases|releases]] for information on each release.</div>Koconnorhttps://www.seabios.org/index.php?title=Runtime_config&diff=102Runtime config2017-11-15T18:36:13Z<p>Koconnor: Add sercon-port to Runtime_config.md documentation</p>
<hr />
<div>SeaBIOS can read several configuration items at runtime. On coreboot the configuration comes from files located in CBFS. When SeaBIOS runs natively on QEMU the files are passed from QEMU via the fw_cfg interface.<br />
<br />
This page documents the user visible configuration and control features that SeaBIOS supports.<br />
<br />
= LZMA compression =<br />
<br />
On coreboot, when scanning files in CBFS, any filename that ends with a &quot;.lzma&quot; suffix will be treated as a raw file that is compressed with the lzma compression algorithm. This works for option ROMs, configuration files, floppy images, etc. . (This feature should not be used with embedded payloads - to compress payloads, use the standard section based compression algorithm that is built into the payload specification.)<br />
<br />
For example, the file '''pci1106,3344.rom.lzma''' would be treated the same as '''pci1106,3344.rom''', but will be automatically uncompressed when accessed.<br />
<br />
A file is typically compressed with the lzma compression command line tool. For example:<br />
<br />
<code>lzma -zc /path/to/somefile.bin &gt; somefile.bin.lzma</code><br />
<br />
However, some recent versions of lzma no longer supply an uncompressed file size in the lzma header. (They instead populate the field with zero.) Unfortunately, SeaBIOS requires the uncompressed file size, so it may be necessary to use a different version of the lzma tool.<br />
<br />
= File aliases =<br />
<br />
It is possible to create the equivalent of &quot;symbolic links&quot; so that one file's content appears under another name. To do this, create a '''links''' file with one line per link and each line having the format of &quot;linkname&quot; and &quot;destname&quot; separated by a space character. For example, the '''links''' file may look like:<br />
<br />
<pre>pci1234,1000.rom somerom.rom<br />
pci1234,1001.rom somerom.rom<br />
pci1234,1002.rom somerom.rom</pre><br />
The above example would cause SeaBIOS to treat &quot;pci1234,1000.rom&quot; or &quot;pci1234,1001.rom&quot; as files with the same content as the file &quot;somerom.rom&quot;.<br />
<br />
= Option ROMs =<br />
<br />
SeaBIOS will scan all of the PCI devices in the target machine for option ROMs on PCI devices. It recognizes option ROMs in files that have the form '''pciVVVV,DDDD.rom'''. The VVVV,DDDD should correspond to the PCI vendor and device id of a device in the machine. If a given file is found then SeaBIOS will deploy the file instead of attempting to extract an option ROM from the device. In addition to supplying option ROMs for on-board devices that do not store their own ROMs, this mechanism may be used to prevent a ROM on a specific device from running.<br />
<br />
SeaBIOS always deploys the VGA rom associated with the active VGA device before any other ROMs.<br />
<br />
In addition, SeaBIOS will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. The ROMS in '''vgaroms/''' are run immediately after running the option ROM associated with the primary VGA device (if any were found), and the '''genroms/''' ROMs are run after all other PCI ROMs are run.<br />
<br />
= Bootsplash images =<br />
<br />
SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''.<br />
<br />
The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.<br />
<br />
SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have &quot;Press ESC for boot menu&quot; embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other_Configuration_items|configuration parameter]].<br />
<br />
The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[Debugging|trouble reporting section]] if a valid image isn't displayed properly.<br />
<br />
= Payloads =<br />
<br />
On coreboot, SeaBIOS will treat all files found in the '''img/''' directory as a coreboot payload. Each payload file will be available for boot, and one can select from the available payloads in the bootmenu. SeaBIOS supports both uncompressed and lzma compressed payloads.<br />
<br />
= Floppy images =<br />
<br />
It is possible to embed an image of a floppy into a file. SeaBIOS can then boot from and redirect floppy BIOS calls to the image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the directory '''floppyimg/'''.<br />
<br />
Using LZMA file compression with the [[#LZMA_compression|.lzma file suffix]] is a useful way to reduce the file size. Several floppy formats are available: 360K, 1.2MB, 720K, 1.44MB, 2.88MB, 160K, 180K, 320K.<br />
<br />
The floppy image will appear as writable to the system, however all writes are discarded on reboot.<br />
<br />
When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.<br />
<br />
= Configuring boot order =<br />
<br />
The '''bootorder''' file may be used to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file - first line of the file first.<br />
<br />
The easiest way to find the available boot methods is to look for &quot;Searching bootorder for&quot; in the SeaBIOS debug output. For example, one may see lines similar to:<br />
<br />
<pre>Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0<br />
Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1<br />
Searching bootorder for: /pci@i0cf8/usb@10,4/*@2</pre><br />
The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:<br />
<br />
<pre>/pci@i0cf8/usb@10,4/*@2<br />
/pci@i0cf8/*@f/drive@1/disk@0</pre><br />
will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.<br />
<br />
SeaBIOS also supports a special &quot;HALT&quot; directive. If a line that contains &quot;HALT&quot; is found in the bootorder file then SeaBIOS will (by default) only attempt to boot from devices explicitly listed above HALT in the file.<br />
<br />
= Other Configuration items =<br />
<br />
There are several additional configuration options available in the '''etc/''' directory.<br />
<br />
{|border=1<br />
!width="29%"| Filename<br />
!width="70%"| Description<br />
|-<br />
| show-boot-menu<br />
| Controls the display of the boot menu. Set to 0 to disable the boot menu.<br />
|-<br />
| boot-menu-message<br />
| Customize the text boot menu message. Normally, when in text mode SeaBIOS will report the string &quot;\nPress ESC for boot menu.\n\n&quot;. This field allows the string to be changed. (This is a string field, and is added as a file containing the raw string.)<br />
|-<br />
| boot-menu-key<br />
| Controls which key activates the boot menu. The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this field is set, be sure to also customize the '''boot-menu-message''' field above.<br />
|-<br />
| boot-menu-wait<br />
| Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.<br />
|-<br />
| boot-fail-wait<br />
| If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found<br />
|-<br />
| extra-pci-roots<br />
| If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.<br />
|-<br />
| ps2-keyboard-spinup<br />
| Some laptops that emulate PS2 keyboards don't respond to keyboard commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive. When this field is set, SeaBIOS will repeatedly attempt to detect the keyboard until the keyboard is found or the specified timeout is reached.<br />
|-<br />
| optionroms-checksum<br />
| Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.<br />
|-<br />
| pci-optionrom-exec<br />
| Controls option ROM execution for roms found on PCI devices (as opposed to roms found in CBFS/fw_cfg). Valid values are 0: Execute no ROMs, 1: Execute only VGA ROMs, 2: Execute all ROMs. The default is 2 (execute all ROMs).<br />
|-<br />
| s3-resume-vga-init<br />
| Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.<br />
|-<br />
| screen-and-debug<br />
| Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.<br />
|-<br />
| advertise-serial-debug-port<br />
| If using a serial debug port, one can set this file to a zero value to prevent SeaBIOS from listing that serial port as available for operating system use. This can be useful when running old DOS programs that are known to reset the baud rate of all advertised serial ports.<br />
|-<br />
| sercon-port<br />
| Set this to the IO address of a serial port to enable SeaBIOS' VGA adapter emulation on the given serial port.<br />
|-<br />
| floppy0<br />
| Set this to the type of the first floppy drive in the system (only type 4 for 3.5 inch drives is supported).<br />
|-<br />
| floppy1<br />
| The type of the second floppy drive in the system. See the description of '''floppy0''' for more info.<br />
|-<br />
| threads<br />
| By default, SeaBIOS will parallelize hardware initialization during bootup to reduce boot time. Multiple hardware devices can be initialized in parallel between vga initialization and option rom initialization. One can set this file to a value of zero to force hardware initialization to run serially. Alternatively, one can set this file to 2 to enable early hardware initialization that runs in parallel with vga, option rom initialization, and the boot menu.<br />
|-<br />
| sdcard*<br />
| One may create one or more files with an &quot;sdcard&quot; prefix (eg, &quot;etc/sdcard0&quot;) with the physical memory address of an SDHCI controller (one memory address per file). This may be useful for SDHCI controllers that do not appear as PCI devices, but are mapped to a consistent memory address. If this option is used then SeaBIOS will not scan for PCI SHDCI controllers.<br />
|-<br />
| usb-time-sigatt<br />
| The USB2 specification requires devices to signal that they are attached within 100ms of the USB port being powered on. Some USB devices are known to require more time. Prior to receiving an attachment signal there is no way to know if a USB port is empty or if it has a device attached. One may specify an amount of time here (in milliseconds, default 100) to wait for a USB device attachment signal. Increasing this value will also increase the overall machine bootup time.<br />
|}</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=101Releases2017-11-10T17:10:01Z<p>Koconnor: Note v1.11.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.11.0 =<br />
<br />
Available on 20171110. Major changes in this release:<br />
<br />
* Initial support for NVME drives<br />
* Support for vga emulation over a serial port in SeaBIOS (sercon)<br />
* Support for serial debugging using MMIO based serial ports<br />
* Support for scsi devices with multiple LUNs<br />
* Support for boot-to-boot persistent coreboot cbmem logs<br />
* Improved coreboot vga (cbvga) mode setting compatibility<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.3 ==<br />
<br />
Available on 20171019. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Memory_Model&diff=100Memory Model2017-09-03T01:44:07Z<p>Koconnor: Fix typos in Memory_Model.md</p>
<hr />
<div>The SeaBIOS code is required to support multiple x86 CPU memory models. This requirement impacts the code layout and internal storage of SeaBIOS.<br />
<br />
= x86 Memory Models =<br />
<br />
The x86 line of CPUs has evolved over many years. The original 8086 chip used 16bit pointers and could only address 1 megabyte of memory. The 80286 CPU still used 16bit pointers, but could address up to 16 megabytes of memory. The 80386 chips could process 32bit instructions and could access up to 4 gigabyte of memory. The most recent x86 chips can process 64bit instructions and access 16 exabytes of ram.<br />
<br />
During the evolution of the x86 CPUs from the 8086 to the 80386 the BIOS was extended to handle calls in the various modes that the CPU implemented.<br />
<br />
This section outlines the five different x86 CPU execution and memory access models that SeaBIOS supports.<br />
<br />
== 16bit real mode ==<br />
<br />
This mode is a [http://en.wikipedia.org/wiki/Memory_segmentation segmented] memory mode invoked by callers. The CPU defaults to executing 16bit instructions. Callers typically invoke the BIOS by issuing an &quot;int x&quot; instruction which causes a software [http://en.wikipedia.org/wiki/Interrupt interrupt] that is handled by the BIOS. The SeaBIOS code also handles hardware interrupts in this mode. SeaBIOS can only access the first 1 megabyte of memory in this mode, but it can access any part of that first megabyte.<br />
<br />
== 16bit bigreal mode ==<br />
<br />
This mode is a segmented memory mode that is used for [http://en.wikipedia.org/wiki/Option_ROM option roms]. The CPU defaults to executing 16bit instructions and segmented memory accesses are still used. However, the segment limits are increased so that the entire first 4 gigabytes of memory is fully accessible. Callers can invoke all the [[#16bit_real_mode|16bit real mode]] functions while in this mode and can also invoke the Post Memory Manager (PMM) functions that are available during option rom execution.<br />
<br />
== 16bit protected mode ==<br />
<br />
CPU execution in this mode is similar to [[#16bit_real_mode|16bit real mode]]. The CPU defaults to executing 16bit instructions. However, each segment register indexes a &quot;descriptor table&quot;, and it is difficult or impossible to know what the physical address of each segment is. Generally speaking, the BIOS can only access code and data in the f-segment. The PCIBIOS, APM BIOS, and PNP BIOS all have documented 16bit protected mode entry points.<br />
<br />
Some old code may attempt to invoke the standard [[#16bit_real_mode|16bit real mode]] entry points while in 16bit protected mode. The PCI BIOS specification explicitly requires that the legacy &quot;int 1a&quot; real mode entry point support 16bit protected mode calls if they are for the PCI BIOS. Callers of other legacy entry points in protected mode have not been observed and SeaBIOS does not support them.<br />
<br />
== 32bit segmented mode ==<br />
<br />
In this mode the processor runs in 32bit mode, but the segment registers may have a limit and may have a non-zero offset. In effect, this mode has all of the limitations of [[#16bit_protected_mode|16bit protected mode]] - the main difference between the modes is that the processor defaults to executing 32bit instructions. In addition to these limitations, callers may also run the SeaBIOS code at varying virtual addresses and so the code must support code relocation. The PCI BIOS specification and APM BIOS specification define 32bit segmented mode interfaces.<br />
<br />
== 32bit flat mode ==<br />
<br />
In this mode the processor defaults to executing 32bit instructions, and all segment registers have an offset of zero and allow access to the entire first 4 gigabytes of memory. This is the only &quot;sane&quot; mode for 32bit code - modern compilers and modern operating systems will generally only support this mode (when running 32bit code). Ironically, it's the only mode that is not strictly required for a BIOS to support. SeaBIOS uses this mode internally to support the POST and BOOT [[Execution%20and%20code%20flow|phases of execution]].<br />
<br />
= code16gcc =<br />
<br />
In order to produce code that can run when the processor is in a 16bit mode, SeaBIOS uses the [http://en.wikipedia.org/wiki/GNU_Binutils binutils] &quot;.code16gcc&quot; assembler flag. This instructs the assembler to emit extra prefix opcodes so that the 32bit code produced by [http://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc] will run even when the processor is in 16bit mode. Note that gcc always produces 32bit code - it does not know about the &quot;.code16gcc&quot; flag and does not know that the code will run in a 16bit mode.<br />
<br />
SeaBIOS uses the same code for all of the 16bit modes ([[#16bit_real_mode|16bit real mode]], [[#16bit_bigreal_mode|16bit bigreal mode]], and [[#16bit_protected_mode|16bit protected mode]]) and that code is assembled using &quot;.code16gcc&quot;. SeaBIOS is careful to use segment registers properly so that the same code can run in the different 16bit modes that it needs to support.<br />
<br />
= C code mode flags =<br />
<br />
Two compile time flags are available to determine the memory model the code is intended for: MODE16 and MODESEGMENT. When compiling for the 16 bit modes, MODE16 is true and MODESEGMENT is true. In 32bit segmented mode, MODE16 is false and MODESEGMENT is true. In 32bit flat mode both MODE16 and MODESEGMENT are false.<br />
<br />
= Common memory used at run-time =<br />
<br />
There are several memory areas that the SeaBIOS &quot;runtime&quot; [[Execution%20and%20code%20flow|phase]] makes use of:<br />
<br />
* 0x000000-0x000400: Interrupt descriptor table (IDT). This area defines 256 interrupt vectors as defined by the Intel CPU specification for 16bit irq handlers. This area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. SeaBIOS only uses this area to maintain compatibility with legacy systems.<br />
* 0x000400-0x000500: BIOS Data Area (BDA). This area contains various legacy flags and attributes. The area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. SeaBIOS only uses this area to maintain compatibility with legacy systems.<br />
* 0x09FC00-0x0A0000 (typical): Extended BIOS Data Area (EBDA). This area contains a few legacy flags and attributes. The area is typically located at 0x9FC00, but it can be moved by option roms, by legacy operating systems, and by SeaBIOS if CONFIG_MALLOC_UPPERMEMORY is not set. Its actual location is determined by a pointer in the BDA. The area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. SeaBIOS only uses this area to maintain compatibility with legacy systems.<br />
* 0x0E0000-0x0F0000 (typical): &quot;low&quot; memory. This area is used for custom read/writable storage internal to SeaBIOS. The area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. The area is typically located at the end of the e-segment, but the build may position it anywhere in the 0x0C0000-0x0F0000 region. However, if CONFIG_MALLOC_UPPERMEMORY is not set, then this region is between 0x090000-0x0A0000. Space is allocated in this region by either marking a global variable with the &quot;VARLOW&quot; flag or by calling malloc_low() during initialization. The area can be grown dynamically (via malloc_low), but it will never exceed 64K.<br />
* 0x0F0000-0x100000: The BIOS segment. This area is used for both runtime code and static variables. Space is allocated in this region by either marking a global variable with VAR16, one of the VARFSEG flags, or by calling malloc_fseg() during initialization. The area is read-only at runtime and can be accessed from 16bit real mode, 16bit bigreal mode, 16bit protected mode, and 32bit segmented mode calls.<br />
<br />
All of the above areas are also read/writable during the SeaBIOS initialization phase and are accessible when in 32bit flat mode.<br />
<br />
= Segmented mode memory access =<br />
<br />
The assembler entry functions for segmented mode calls (all modes except [[#32bit_flat_mode|32bit flat mode]]) will arrange to set the data segment (%ds) to be the same as the stack segment (%ss) before calling any C code. This permits all C variables located on the stack and C pointers to data located on the stack to work as normal.<br />
<br />
However, all code running in segmented mode must wrap non-stack memory accesses in special macros. These macros ensure the correct segment register is used. Failure to use the correct macro will result in an incorrect memory access that will likely cause hard to find errors.<br />
<br />
There are three low-level memory access macros:<br />
<br />
* GET_VAR / SET_VAR : Accesses a variable using the specified segment register. This isn't typically used directly by C code.<br />
* GET_FARVAR / SET_FARVAR : Assigns the extra segment (%es) to the given segment id and then performs the given memory access via %es.<br />
* GET_FLATPTR / SET_FLATPTR : These macros take a 32bit pointer, construct a segment/offset pair valid in real mode, and then perform the given access. These macros must not be used in 16bit protected mode or 32bit segmented mode.<br />
<br />
Since most memory accesses are to [[#Common_memory_used_at_run-time|common memory used at run-time]], several helper macros are also available.<br />
<br />
* GET_IDT / SET_IDT : Access the interrupt descriptor table (IDT).<br />
* GET_BDA / SET_BDA : Access the BIOS Data Area (BDA).<br />
* GET_EBDA / SET_EBDA : Access the Extended BIOS Data Area (EBDA).<br />
* GET_LOW / SET_LOW : Access internal variables marked with VARLOW. (There are also related macros GET_LOWFLAT / SET_LOWFLAT for accessing storage allocated with malloc_low.)<br />
* GET_GLOBAL : Access internal variables marked with the VAR16 or VARFSEG flags. (There is also the related macro GET_GLOBALFLAT for accessing storage allocated with malloc_fseg.)<br />
<br />
= Memory available during initialization =<br />
<br />
During the POST [[Execution%20and%20code%20flow|phase]] the code can fully access the first 4 gigabytes of memory. However, memory accesses are generally limited to the [[#Common_memory_used_at_run-time|common memory used at run-time]] and areas allocated at runtime via one of the malloc calls:<br />
<br />
* malloc_high : Permanent high-memory zone. This area is used for custom read/writable storage internal to SeaBIOS. The area is located at the top of the first 4 gigabytes of ram. It is commonly used for storing standard tables accessed by the operating system at runtime (ACPI, SMBIOS, and MPTable) and for DMA buffers used by hardware drivers. The area is read/writable at runtime and an entry in the e820 memory map is used to reserve it. When running on an emulator that has only 1 megabyte of ram this zone will be empty.<br />
* malloc_tmphigh : Temporary high-memory zone. This area is used for custom read/writable storage during the SeaBIOS initialization phase. The area generally starts after the first 1 megabyte of ram (0x100000) and ends prior to the Permanent high-memory zone. When running on an emulator that has only 1 megabyte of ram this zone will be empty. The area is not reserved from the operating system, so it must not be accessed after the SeaBIOS initialization phase.<br />
* malloc_tmplow : Temporary low-memory zone. This area is used for custom read/writable storage during the SeaBIOS initialization phase. The area resides between 0x07000-0x90000. The area is not reserved from the operating system and by specification it is required to be zero'd at the end of the initialization phase.<br />
<br />
The &quot;tmplow&quot; and &quot;tmphigh&quot; regions are only available during the initialization phase. Any access (either read or write) after completion of the initialization phase can result in difficult to find errors.</div>Koconnorhttps://www.seabios.org/index.php?title=Memory_Model&diff=99Memory Model2017-09-03T01:43:12Z<p>Koconnor: There is only one VAR16 flag now</p>
<hr />
<div>The SeaBIOS code is required to support multiple x86 CPU memory models. This requirement impacts the code layout and internal storage of SeaBIOS.<br />
<br />
= x86 Memory Models =<br />
<br />
The x86 line of CPUs has evolved over many years. The original 8086 chip used 16bit pointers and could only address 1 megabyte of memory. The 80286 CPU still used 16bit pointers, but could address up to 16 megabytes of memory. The 80386 chips could process 32bit instructions and could access up to 4 gigabyte of memory. The most recent x86 chips can process 64bit instructions and access 16 exabytes of ram.<br />
<br />
During the evolution of the x86 CPUs from the 8086 to the 80386 the BIOS was extended to handle calls in the various modes that the CPU implemented.<br />
<br />
This section outlines the five different x86 CPU execution and memory access models that SeaBIOS supports.<br />
<br />
== 16bit real mode ==<br />
<br />
This mode is a [http://en.wikipedia.org/wiki/Memory_segmentation segmented] memory mode invoked by callers. The CPU defaults to executing 16bit instructions. Callers typically invoke the BIOS by issuing an &quot;int x&quot; instruction which causes a software [http://en.wikipedia.org/wiki/Interrupt interrupt] that is handled by the BIOS. The SeaBIOS code also handles hardware interrupts in this mode. SeaBIOS can only access the first 1 megabyte of memory in this mode, but it can access any part of that first megabyte.<br />
<br />
== 16bit bigreal mode ==<br />
<br />
This mode is a segmented memory mode that is used for [http://en.wikipedia.org/wiki/Option_ROM option roms]. The CPU defaults to executing 16bit instructions and segmented memory accesses are still used. However, the segment limits are increased so that the entire first 4 gigabytes of memory is fully accessible. Callers can invoke all the [[#16bit_real_mode|16bit real mode]] functions while in this mode and can also invoke the Post Memory Manager (PMM) functions that are available during option rom execution.<br />
<br />
== 16bit protected mode ==<br />
<br />
CPU execution in this mode is similar to [[#16bit_real_mode|16bit real mode]]. The CPU defaults to executing 16bit instructions. However, each segment register indexes a &quot;descriptor table&quot;, and it is difficult or impossible to know what the physical address of each segment is. Generally speaking, the BIOS can only access code and data in the f-segment. The PCIBIOS, APM BIOS, and PNP BIOS all have documented 16bit protected mode entry points.<br />
<br />
Some old code may attempt to invoke the standard [[#16bit_real_mode|16bit real mode]] entry points while in 16bit protected mode. The PCI BIOS specification explicitly requires that the legacy &quot;int 1a&quot; real mode entry point support 16bit protected mode calls if they are for the PCI BIOS. Callers of other legacy entry points in protected mode have not been observed and SeaBIOS does not support them.<br />
<br />
== 32bit segmented mode ==<br />
<br />
In this mode the processor runs in 32bit mode, but the segment registers may have a limit and may have a non-zero offset. In effect, this mode has all of the limitations of [[#16bit_protected_mode|16bit protected mode]] - the main difference between the modes is that the processor defaults to executing 32bit instructions. In addition to these limitations, callers may also run the SeaBIOS code at varying virtual addresses and so the code must support code relocation. The PCI BIOS specification and APM BIOS specification define 32bit segmented mode interfaces.<br />
<br />
== 32bit flat mode ==<br />
<br />
In this mode the processor defaults to executing 32bit instructions, and all segment registers have an offset of zero and allow access to the entire first 4 gigabytes of memory. This is the only &quot;sane&quot; mode for 32bit code - modern compilers and modern operating systems will generally only support this mode (when running 32bit code). Ironically, it's the only mode that is not strictly required for a BIOS to support. SeaBIOS uses this mode internally to support the POST and BOOT [[Execution%20and%20code%20flow|phases of execution]].<br />
<br />
= code16gcc =<br />
<br />
In order to produce code that can run when the processor is in a 16bit mode, SeaBIOS uses the [http://en.wikipedia.org/wiki/GNU_Binutils binutils] &quot;.code16gcc&quot; assembler flag. This instructs the assembler to emit extra prefix opcodes so that the 32bit code produced by [http://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc] will run even when the processor is in 16bit mode. Note that gcc always produces 32bit code - it does not know about the &quot;.code16gcc&quot; flag and does not know that the code will run in a 16bit mode.<br />
<br />
SeaBIOS uses the same code for all of the 16bit modes ([[#16bit_real_mode|16bit real mode]], [[#16bit_bigreal_mode|16bit bigreal mode]], and [[#16bit_protected_mode|16bit protected mode]]) and that code is assembled using &quot;.code16gcc&quot;. SeaBIOS is careful to use segment registers properly so that the same code can run in the different 16bit modes that it needs to support.<br />
<br />
= C code mode flags =<br />
<br />
Two compile time flags are available to determine the memory model the code is intended for: MODE16 and MODESEGMENT. When compiling for the 16 bit modes, MODE16 is true and MODESEGMENT is true. In 32bit segmented mode, MODE16 is false and MODESEGMENT is true. In 32bit flat mode both MODE16 and MODESEGMENT are false.<br />
<br />
= Common memory used at run-time =<br />
<br />
There are several memory areas that the SeaBIOS &quot;runtime&quot; [[Execution%20and%20code%20flow|phase]] makes use of:<br />
<br />
* 0x000000-0x000400: Interrupt descriptor table (IDT). This area defines 256 interrupt vectors as defined by the Intel CPU specification for 16bit irq handlers. This area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. SeaBIOS only uses this area to maintain compatibility with legacy systems.<br />
* 0x000400-0x000500: BIOS Data Area (BDA). This area contains various legacy flags and attributes. The area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. SeaBIOS only uses this area to maintain compatibility with legacy systems.<br />
* 0x09FC00-0x0A0000 (typical): Extended BIOS Data Area (EBDA). This area contains a few legacy flags and attributes. The area is typically located at 0x9FC00, but it can be moved by option roms, by legacy operating systems, and by SeaBIOS if CONFIG_MALLOC_UPPERMEMORY is not set. Its actual location is determined by a pointer in the BDA. The area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. SeaBIOS only uses this area to maintain compatibility with legacy systems.<br />
* 0x0E0000-0x0F0000 (typical): &quot;low&quot; memory. This area is used for custom read/writable storage internal to SeaBIOS. The area is read/writable at runtime and can be accessed from 16bit real mode and 16bit bigreal mode calls. The area is typically located at the end of the e-segment, but the build may position it anywhere in the 0x0C0000-0x0F0000 region. However, if CONFIG_MALLOC_UPPERMEMORY is not set, then this region is between 0x090000-0x0A0000. Space is allocated in this region by either marking a global variable with the &quot;VARLOW&quot; flag or by calling malloc_low() during initialization. The area can be grown dynamically (via malloc_low), but it will never exceed 64K.<br />
* 0x0F0000-0x100000: The BIOS segment. This area is used for both runtime code and static variables. Space is allocated in this region by either marking a global variable with VAR16, one of the VARFSEG flags, or by calling malloc_fseg() during initialization. The area is read-only at runtime and can be accessed from 16bit real mode, 16bit bigreal mode, 16bit protected mode, and 32bit segmented mode calls.<br />
<br />
All of the above areas are also read/writable during the SeaBIOS initialization phase and are accessible when in 32bit flat mode.<br />
<br />
= Segmented mode memory access =<br />
<br />
The assembler entry functions for segmented mode calls (all modes except [[#32bit_flat_mode|32bit flat mode]]) will arrange to set the data segment (%ds) to be the same as the stack segment (%ss) before calling any C code. This permits all C variables located on the stack and C pointers to data located on the stack to work as normal.<br />
<br />
However, all code running in segmented mode must wrap non-stack memory accesses in special macros. These macros ensure the correct segment register is used. Failure to use the correct macro will result in an incorrect memory access that will likely cause hard to find errors.<br />
<br />
There are three low-level memory access macros:<br />
<br />
* GET_VAR / SET_VAR : Accesses a variable using the specified segment register. This isn't typically used directly by C code.<br />
* GET_FARVAR / SET_FARVAR : Assigns the extra segment (%es) to the given segment id and then performs the given memory access via %es.<br />
* GET_FLATVAR / SET_FLATVAR : These macros take a 32bit pointer, construct a segment/offset pair valid in real mode, and then perform the given access. These macros must not be used in 16bit protected mode or 32bit segmented mode.<br />
<br />
Since most memory accesses are to [[#Common_memory_used_at_run-time|common memory used at run-time]], several helper macros are also available.<br />
<br />
* GET_IDT / SET_IDT : Access the interrupt descriptor table (IDT).<br />
* GET_BDA / SET_BDA : Access the BIOS Data Area (BDA).<br />
* GET_EBDA / SET_EBDA : Access the Extended BIOS Data Area (EBDA).<br />
* GET_LOW / SET_LOW : Access internal variables marked with VARLOW. (There are also related macros GET_LOWFLAT / SET_LOWFLAT for accessing storage allocated with malloc_low).<br />
* GET_GLOBAL : Access internal variables marked with the VAR16 or VARFSEG flags. (There is also the related macro GET_GLOBALFLAT for accessing storage allocated with malloc_fseg).<br />
<br />
= Memory available during initialization =<br />
<br />
During the POST [[Execution%20and%20code%20flow|phase]] the code can fully access the first 4 gigabytes of memory. However, memory accesses are generally limited to the [[#Common_memory_used_at_run-time|common memory used at run-time]] and areas allocated at runtime via one of the malloc calls:<br />
<br />
* malloc_high : Permanent high-memory zone. This area is used for custom read/writable storage internal to SeaBIOS. The area is located at the top of the first 4 gigabytes of ram. It is commonly used for storing standard tables accessed by the operating system at runtime (ACPI, SMBIOS, and MPTable) and for DMA buffers used by hardware drivers. The area is read/writable at runtime and an entry in the e820 memory map is used to reserve it. When running on an emulator that has only 1 megabyte of ram this zone will be empty.<br />
* malloc_tmphigh : Temporary high-memory zone. This area is used for custom read/writable storage during the SeaBIOS initialization phase. The area generally starts after the first 1 megabyte of ram (0x100000) and ends prior to the Permanent high-memory zone. When running on an emulator that has only 1 megabyte of ram this zone will be empty. The area is not reserved from the operating system, so it must not be accessed after the SeaBIOS initialization phase.<br />
* malloc_tmplow : Temporary low-memory zone. This area is used for custom read/writable storage during the SeaBIOS initialization phase. The area resides between 0x07000-0x90000. The area is not reserved from the operating system and by specification it is required to be zero'd at the end of the initialization phase.<br />
<br />
The &quot;tmplow&quot; and &quot;tmphigh&quot; regions are only available during the initialization phase. Any access (either read or write) after completion of the initialization phase can result in difficult to find errors.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=98Releases2017-03-02T14:28:12Z<p>Koconnor: Note release dates for 1.10.1 and 1.10.2</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.10.1 ==<br />
<br />
Available on 20161122. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.10.2 ==<br />
<br />
Available on 20170228. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=97Releases2016-10-26T16:18:09Z<p>Koconnor: Note v1.10.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.10.0 =<br />
<br />
Available on 20161026. Major changes in this release:<br />
<br />
* Initial support for Trusted Platform Module (TPM) version 2.0<br />
* Several USB XHCI timing fixes on real hardware<br />
* Support for &quot;LSI MPT Fusion&quot; scsi controllers on QEMU<br />
* Support for virtio devices mapped above 4GB<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Execution_and_code_flow&diff=96Execution and code flow2016-10-18T23:30:26Z<p>Koconnor: fix various typos and inconsistency</p>
<hr />
<div>This page provides a high-level description of some of the major code phases that SeaBIOS transitions through and general information on overall code flow.<br />
<br />
= SeaBIOS code phases =<br />
<br />
The SeaBIOS code goes through a few distinct code phases during its execution lifecycle. Understanding these code phases can help when reading and enhancing the code.<br />
<br />
== POST phase ==<br />
<br />
The Power On Self Test (POST) phase is the initialization phase of the BIOS. This phase is entered when SeaBIOS first starts execution. The goal of the phase is to initialize internal state, initialize external interfaces, detect and setup hardware, and to then start the boot phase.<br />
<br />
On emulators, this phase starts when the CPU starts execution in 16bit mode at 0xFFFF0000:FFF0. The emulators map the SeaBIOS binary to this address, and SeaBIOS arranges for romlayout.S:reset_vector() to be present there. This code calls romlayout.S:entry_post() which then calls post.c:handle_post() in 32bit mode.<br />
<br />
On coreboot, the build arranges for romlayout.S:entry_elf() to be called in 32bit mode. This then calls post.c:handle_post().<br />
<br />
On CSM, the build arranges for romlayout.S:entry_csm() to be called (in 16bit mode). This then calls csm.c:handle_csm() in 32bit mode. Unlike on the emulators and coreboot, the SeaBIOS CSM POST phase is orchestrated with UEFI and there are several calls back and forth between SeaBIOS and UEFI via handle_csm() throughout the POST process.<br />
<br />
The POST phase itself has several sub-phases.<br />
<br />
* The &quot;preinit&quot; sub-phase: code run prior to [[Linking%20overview#Code%20relocation|code relocation]].<br />
* The &quot;init&quot; sub-phase: code to initialize internal variables and interfaces.<br />
* The &quot;setup&quot; sub-phase: code to setup hardware and drivers.<br />
* The &quot;prepboot&quot; sub-phase: code to finalize interfaces and prepare for the boot phase.<br />
<br />
At completion of the POST phase, SeaBIOS invokes an &quot;int 0x19&quot; software interrupt in 16bit mode which begins the boot phase.<br />
<br />
== Boot phase ==<br />
<br />
The goal of the boot phase is to load the first portion of the operating system's boot loader into memory and start execution of that boot loader. This phase starts when a software interrupt (&quot;int 0x19&quot; or &quot;int 0x18&quot;) is invoked. The code flow starts in 16bit mode in romlayout.S:entry_19() or romlayout.S:entry_18() which then transition to 32bit mode and call boot.c:handle_19() or boot.c:handle_18().<br />
<br />
The boot phase is technically also part of the &quot;runtime&quot; phase of SeaBIOS. It is typically invoked immediately after the POST phase, but it can also be invoked by an operating system or be invoked multiple times in an attempt to find a valid boot media. Although the boot phase C code runs in 32bit mode it does not have write access to the 0x0f0000-0x100000 memory region and can not call the various malloc_X() calls. See [[Memory%20Model|Memory Model]] for more information.<br />
<br />
== Main runtime phase ==<br />
<br />
The main runtime phase occurs after the boot phase starts the operating system. Once in this phase, the SeaBIOS code may be invoked by the operating system using various 16bit and 32bit calls. The goal of this phase is to support these legacy calling interfaces and to provide compatibility with BIOS standards. There are multiple entry points for the BIOS - see the entry_XXX() assembler functions in romlayout.S.<br />
<br />
Callers use most of these legacy entry points by setting up a particular CPU register state, invoking the BIOS, and then inspecting the returned CPU register state. To handle this, SeaBIOS will backup the current register state into a &quot;struct bregs&quot; (see romlayout.S, entryfuncs.S, and bregs.h) on call entry and then pass this struct to the C code. The C code can then inspect the register state and modify it. The assembler entry functions will then restore the (possibly modified) register state from the &quot;struct bregs&quot; on return to the caller.<br />
<br />
== Resume and reboot ==<br />
<br />
As noted above, on emulators SeaBIOS handles the 0xFFFF0000:FFF0 machine startup execution vector. This vector is also called on machine faults and on some machine &quot;resume&quot; events. It can also be called (as 0xF0000:FFF0) by software as a request to reboot the machine (on emulators, coreboot, and CSM).<br />
<br />
The SeaBIOS &quot;resume and reboot&quot; code handles these calls and attempts to determine the desired action of the caller. Code flow starts in 16bit mode in romlayout.S:reset_vector() which calls romlayout.S:entry_post() which calls romlayout.S:entry_resume() which calls resume.c:handle_resume(). Depending on the request the handle_resume() code may transition to 32bit mode.<br />
<br />
Technically this code is part of the &quot;runtime&quot; phase, so even though parts of it run in 32bit mode it still has the same limitations of the runtime phase.<br />
<br />
= Threads =<br />
<br />
Internally SeaBIOS implements a simple cooperative multi-tasking system. The system works by giving each &quot;thread&quot; its own stack, and the system round-robins between these stacks whenever a thread issues a yield() call. This &quot;threading&quot; system may be more appropriately described as [http://en.wikipedia.org/wiki/Coroutine coroutines]. These &quot;threads&quot; do not run on multiple CPUs and are not preempted, so atomic memory accesses and complex locking is not required.<br />
<br />
The goal of these threads is to reduce overall boot time by parallelizing hardware delays. (For example, by allowing the wait for an ATA hard drive to spin-up and respond to commands to occur in parallel with the wait for a PS/2 keyboard to respond to a setup command.) These hardware setup threads are only available during the &quot;setup&quot; sub-phase of the [[#POST_phase|POST phase]].<br />
<br />
The code that implements threads is in stacks.c.<br />
<br />
= Hardware interrupts =<br />
<br />
The SeaBIOS C code always runs with hardware interrupts disabled. All of the C code entry points (see romlayout.S) are careful to explicitly disable hardware interrupts (via &quot;cli&quot;). Because running with interrupts disabled increases interrupt latency, any C code that could loop for a significant amount of time (more than about 1 ms) should periodically call yield(). The yield() call will briefly enable hardware interrupts to occur, then disable interrupts, and then resume execution of the C code.<br />
<br />
There are two main reasons why SeaBIOS always runs C code with interrupts disabled. The first reason is that external software may override the default SeaBIOS handlers that are called on a hardware interrupt event. Indeed, it is common for DOS based applications to do this. These legacy third party interrupt handlers may have undocumented expectations (such as stack location and stack size) and may attempt to call back into the various SeaBIOS software services. Greater compatibility and more reproducible results can be achieved by only permitting hardware interrupts at specific points (via yield() calls). The second reason is that much of SeaBIOS runs in 32bit mode. Attempting to handle interrupts in both 16bit mode and 32bit mode and switching between modes to delegate those interrupts is an unneeded complexity. Although disabling interrupts can increase interrupt latency, this only impacts legacy systems where the small increase in interrupt latency is unlikely to be noticeable.<br />
<br />
= Extra 16bit stack =<br />
<br />
SeaBIOS implements 16bit real mode handlers for both hardware interrupts and software request &quot;interrupts&quot;. In a traditional BIOS, these requests would use the caller's stack space. However, the minimum amount of space the caller must provide has not been standardized and very old DOS programs have been observed to allocate very small amounts of stack space (100 bytes or less).<br />
<br />
By default, SeaBIOS now switches to its own stack on most 16bit real mode entry points. This extra stack space is allocated in [[Memory%20Model|&quot;low memory&quot;]]. It ensures SeaBIOS uses a minimal amount of a callers stack (typically no more than 16 bytes) for these legacy calls. (More recently defined BIOS interfaces such as those that support 16bit protected and 32bit protected mode calls standardize a minimum stack size with adequate space, and SeaBIOS generally will not use its extra stack in these cases.)<br />
<br />
The code to implement this stack &quot;hopping&quot; is in romlayout.S and in stacks.c.</div>Koconnorhttps://www.seabios.org/index.php?title=Debugging&diff=95Debugging2016-10-18T23:19:44Z<p>Koconnor: fix various typos and inconsistency</p>
<hr />
<div>This page describes the process of obtaining diagnostic information from SeaBIOS and for reporting problems.<br />
<br />
= Diagnostic information =<br />
<br />
SeaBIOS has the ability to output diagnostic messages. This is implemented in the code via calls to the &quot;dprintf()&quot; C function.<br />
<br />
On QEMU these messages are written to a special debug port. One can view these messages by adding '-chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios' to the QEMU command line. Once this is done, one should see status messages on the console.<br />
<br />
On coreboot these messages are generally written to the &quot;cbmem&quot; console (CONFIG_DEBUG_COREBOOT). If SeaBIOS launches a Linux operating system, one can obtain the cbmem tool from the coreboot repository and run &quot;cbmem -c&quot; to view the SeaBIOS diagnostic messages.<br />
<br />
Additionally, if a serial port is available, one may compile SeaBIOS to send the diagnostic messages to the serial port. See the SeaBIOS CONFIG_DEBUG_SERIAL option.<br />
<br />
= Trouble reporting =<br />
<br />
If you are experiencing problems with SeaBIOS, it's useful to increase the debugging level. This is done by running &quot;make menuconfig&quot; and setting CONFIG_DEBUG_LEVEL to a higher value. A debug level of 8 will show a lot of diagnostic information without flooding the serial port (levels above 8 will frequently cause too much data).<br />
<br />
To report an issue, please collect the serial boot log with SeaBIOS set to a debug level of 8 and forward the full log along with a description of the problem to the SeaBIOS [[Mailinglist|mailing list]].<br />
<br />
= Timing debug messages =<br />
<br />
The SeaBIOS repository has a tool ('''scripts/readserial.py''') that can timestamp each diagnostic message produced. The timestamps can provide some additional information on how long internal processes take. It also provides a simple profiling mechanism.<br />
<br />
The tool can be used on coreboot builds that have diagnostic messages sent to a serial port. Make sure SeaBIOS is configured with CONFIG_DEBUG_SERIAL and run the following on the host receiving serial output:<br />
<br />
<code>/path/to/seabios/scripts/readserial.py /dev/ttyS0 115200</code><br />
<br />
Update the above command with the appropriate serial device and baud rate.<br />
<br />
The tool can also timestamp the messages from the QEMU debug port. To use with QEMU run the following:<br />
<br />
<pre>mkfifo qemudebugpipe<br />
qemu -chardev pipe,path=qemudebugpipe,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios ...</pre><br />
And then in another session:<br />
<br />
<code>/path/to/seabios/scripts/readserial.py -nf qemudebugpipe</code><br />
<br />
The mkfifo command only needs to be run once to create the pipe file.<br />
<br />
When readserial.py is running, it shows a timestamp with millisecond precision of the amount of time since the start of the log. If one presses the &quot;enter&quot; key in the readserial.py session it will add a blank line to the screen and also reset the time back to zero. The readserial.py program also keeps a log of all output in files that look like &quot;seriallog-YYYYMMDD_HHMMSS.log&quot;.<br />
<br />
= Debugging with gdb on QEMU =<br />
<br />
One can use gdb with QEMU to debug system images. To do this, add '-s -S' to the QEMU command line. For example:<br />
<br />
<code>qemu -bios out/bios.bin -fda myfdimage.img -s -S</code><br />
<br />
Then, in another session, run gdb with either out/rom16.o (to debug bios 16bit code) or out/rom.o (to debug bios 32bit code). For example:<br />
<br />
<code>gdb out/rom16.o</code><br />
<br />
Once in gdb, use the command <code>target remote localhost:1234</code> to have gdb connect to QEMU. See the QEMU documentation for more information on using gdb and QEMU in this mode.<br />
<br />
When debugging 16bit code it is necessary to load the 16bit symbols twice in order for gdb to properly handle break points. To do this, run the following command <code>objcopy --adjust-vma 0xf0000 out/rom16.o rom16offset.o</code> and then run the following in gdb:<br />
<br />
<pre>set architecture i8086<br />
add-symbol-file rom16offset.o 0</pre><br />
To debug a VGA BIOS image, run <code>gdb out/vgarom.o</code>, create a vgaromoffset.o file with offset 0xc0000, add use the gdb command <code>add-symbol-file out/vgaromoffset.o 0</code> to load the 16bit VGA BIOS symbols twice.<br />
<br />
If debugging the 32bit SeaBIOS initialization code with gdb, note that SeaBIOS does self relocation by default. This relocation will alter the location of initialization code symbols. Disable CONFIG_RELOCATE_INIT to prevent SeaBIOS from doing this.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=94Releases2016-07-13T14:33:24Z<p>Koconnor: Note release date of 1.9.3</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.3 ==<br />
<br />
Available on 20160701. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=93Releases2016-04-22T12:34:57Z<p>Koconnor: Note release date of 1.9.2</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.9.2 ==<br />
<br />
Available on 20160422. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Runtime_config&diff=92Runtime config2016-03-07T03:11:32Z<p>Koconnor: Allow configuration of sigatt time (in etc/usb-time-sigatt)</p>
<hr />
<div>SeaBIOS can read several configuration items at runtime. On coreboot the configuration comes from files located in CBFS. When SeaBIOS runs natively on QEMU the files are passed from QEMU via the fw_cfg interface.<br />
<br />
This page documents the user visible configuration and control features that SeaBIOS supports.<br />
<br />
= LZMA compression =<br />
<br />
On coreboot, when scanning files in CBFS, any filename that ends with a &quot;.lzma&quot; suffix will be treated as a raw file that is compressed with the lzma compression algorithm. This works for option ROMs, configuration files, floppy images, etc. . (This feature should not be used with embedded payloads - to compress payloads, use the standard section based compression algorithm that is built into the payload specification.)<br />
<br />
For example, the file '''pci1106,3344.rom.lzma''' would be treated the same as '''pci1106,3344.rom''', but will be automatically uncompressed when accessed.<br />
<br />
A file is typically compressed with the lzma compression command line tool. For example:<br />
<br />
<code>lzma -zc /path/to/somefile.bin &gt; somefile.bin.lzma</code><br />
<br />
However, some recent versions of lzma no longer supply an uncompressed file size in the lzma header. (They instead populate the field with zero.) Unfortunately, SeaBIOS requires the uncompressed file size, so it may be necessary to use a different version of the lzma tool.<br />
<br />
= File aliases =<br />
<br />
It is possible to create the equivalent of &quot;symbolic links&quot; so that one file's content appears under another name. To do this, create a '''links''' file with one line per link and each line having the format of &quot;linkname&quot; and &quot;destname&quot; separated by a space character. For example, the '''links''' file may look like:<br />
<br />
<pre>pci1234,1000.rom somerom.rom<br />
pci1234,1001.rom somerom.rom<br />
pci1234,1002.rom somerom.rom</pre><br />
The above example would cause SeaBIOS to treat &quot;pci1234,1000.rom&quot; or &quot;pci1234,1001.rom&quot; as files with the same content as the file &quot;somerom.rom&quot;.<br />
<br />
= Option ROMs =<br />
<br />
SeaBIOS will scan all of the PCI devices in the target machine for option ROMs on PCI devices. It recognizes option ROMs in files that have the form '''pciVVVV,DDDD.rom'''. The VVVV,DDDD should correspond to the PCI vendor and device id of a device in the machine. If a given file is found then SeaBIOS will deploy the file instead of attempting to extract an option ROM from the device. In addition to supplying option ROMs for on-board devices that do not store their own ROMs, this mechanism may be used to prevent a ROM on a specific device from running.<br />
<br />
SeaBIOS always deploys the VGA rom associated with the active VGA device before any other ROMs.<br />
<br />
In addition, SeaBIOS will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. The ROMS in '''vgaroms/''' are run immediately after running the option ROM associated with the primary VGA device (if any were found), and the '''genroms/''' ROMs are run after all other PCI ROMs are run.<br />
<br />
= Bootsplash images =<br />
<br />
SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''.<br />
<br />
The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.<br />
<br />
SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have &quot;Press ESC for boot menu&quot; embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other_Configuration_items|configuration parameter]].<br />
<br />
The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[Debugging|trouble reporting section]] if a valid image isn't displayed properly.<br />
<br />
= Payloads =<br />
<br />
On coreboot, SeaBIOS will treat all files found in the '''img/''' directory as a coreboot payload. Each payload file will be available for boot, and one can select from the available payloads in the bootmenu. SeaBIOS supports both uncompressed and lzma compressed payloads.<br />
<br />
= Floppy images =<br />
<br />
It is possible to embed an image of a floppy into a file. SeaBIOS can then boot from and redirect floppy BIOS calls to the image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the directory '''floppyimg/'''.<br />
<br />
Using LZMA file compression with the [[#LZMA_compression|.lzma file suffix]] is a useful way to reduce the file size. Several floppy formats are available: 360K, 1.2MB, 720K, 1.44MB, 2.88MB, 160K, 180K, 320K.<br />
<br />
The floppy image will appear as writable to the system, however all writes are discarded on reboot.<br />
<br />
When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.<br />
<br />
= Configuring boot order =<br />
<br />
The '''bootorder''' file may be used to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file - first line of the file first.<br />
<br />
The easiest way to find the available boot methods is to look for &quot;Searching bootorder for&quot; in the SeaBIOS debug output. For example, one may see lines similar to:<br />
<br />
<pre>Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0<br />
Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1<br />
Searching bootorder for: /pci@i0cf8/usb@10,4/*@2</pre><br />
The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:<br />
<br />
<pre>/pci@i0cf8/usb@10,4/*@2<br />
/pci@i0cf8/*@f/drive@1/disk@0</pre><br />
will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.<br />
<br />
SeaBIOS also supports a special &quot;HALT&quot; directive. If a line that contains &quot;HALT&quot; is found in the bootorder file then SeaBIOS will (by default) only attempt to boot from devices explicitly listed above HALT in the file.<br />
<br />
= Other Configuration items =<br />
<br />
There are several additional configuration options available in the '''etc/''' directory.<br />
<br />
{|border=1<br />
!Filename<br />
!Description<br />
|-<br />
|show-boot-menu<br />
|Controls the display of the boot menu. Set to 0 to disable the boot menu.<br />
|-<br />
|boot-menu-message<br />
|Customize the text boot menu message. Normally, when in text mode SeaBIOS will report the string &quot;\nPress ESC for boot menu.\n\n&quot;. This field allows the string to be changed. (This is a string field, and is added as a file containing the raw string.)<br />
|-<br />
|boot-menu-key<br />
|Controls which key activates the boot menu. The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this field is set, be sure to also customize the '''boot-menu-message''' field above.<br />
|-<br />
|boot-menu-wait<br />
|Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.<br />
|-<br />
|boot-fail-wait<br />
|If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found<br />
|-<br />
|extra-pci-roots<br />
|If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.<br />
|-<br />
|ps2-keyboard-spinup<br />
|Some laptops that emulate PS2 keyboards don't respond to keyboard commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive. When this field is set, SeaBIOS will repeatedly attempt to detect the keyboard until the keyboard is found or the specified timeout is reached.<br />
|-<br />
|optionroms-checksum<br />
|Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.<br />
|-<br />
|pci-optionrom-exec<br />
|Controls option ROM execution for roms found on PCI devices (as opposed to roms found in CBFS/fw_cfg). Valid values are 0: Execute no ROMs, 1: Execute only VGA ROMs, 2: Execute all ROMs. The default is 2 (execute all ROMs).<br />
|-<br />
|s3-resume-vga-init<br />
|Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.<br />
|-<br />
|screen-and-debug<br />
|Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.<br />
|-<br />
|advertise-serial-debug-port<br />
|If using a serial debug port, one can set this file to a zero value to prevent SeaBIOS from listing that serial port as available for operating system use. This can be useful when running old DOS programs that are known to reset the baud rate of all advertised serial ports.<br />
|-<br />
|floppy0<br />
|Set this to the type of the first floppy drive in the system (only type 4 for 3.5 inch drives is supported).<br />
|-<br />
|floppy1<br />
|The type of the second floppy drive in the system. See the description of '''floppy0''' for more info.<br />
|-<br />
|threads<br />
|By default, SeaBIOS will parallelize hardware initialization during bootup to reduce boot time. Multiple hardware devices can be initialized in parallel between vga initialization and option rom initialization. One can set this file to a value of zero to force hardware initialization to run serially. Alternatively, one can set this file to 2 to enable early hardware initialization that runs in parallel with vga, option rom initialization, and the boot menu.<br />
|-<br />
|sdcard*<br />
|One may create one or more files with an &quot;sdcard&quot; prefix (eg, &quot;etc/sdcard0&quot;) with the physical memory address of an SDHCI controller (one memory address per file). This may be useful for SDHCI controllers that do not appear as PCI devices, but are mapped to a consistent memory address.<br />
|-<br />
|usb-time-sigatt<br />
|The USB2 specification requires devices to signal that they are attached within 100ms of the USB port being powered on. Some USB devices are known to require more time. Prior to receiving an attachment signal there is no way to know if a USB port is empty or if it has a device attached. One may specify an amount of time here (in milliseconds, default 100) to wait for a USB device attachment signal. Increasing this value will also increase the overall machine bootup time.<br />
|}</div>Koconnorhttps://www.seabios.org/index.php?title=Runtime_config&diff=91Runtime config2016-03-07T03:10:05Z<p>Koconnor: Allow sdcard addresses to be specified in CBFS files</p>
<hr />
<div>SeaBIOS can read several configuration items at runtime. On coreboot the configuration comes from files located in CBFS. When SeaBIOS runs natively on QEMU the files are passed from QEMU via the fw_cfg interface.<br />
<br />
This page documents the user visible configuration and control features that SeaBIOS supports.<br />
<br />
= LZMA compression =<br />
<br />
On coreboot, when scanning files in CBFS, any filename that ends with a &quot;.lzma&quot; suffix will be treated as a raw file that is compressed with the lzma compression algorithm. This works for option ROMs, configuration files, floppy images, etc. . (This feature should not be used with embedded payloads - to compress payloads, use the standard section based compression algorithm that is built into the payload specification.)<br />
<br />
For example, the file '''pci1106,3344.rom.lzma''' would be treated the same as '''pci1106,3344.rom''', but will be automatically uncompressed when accessed.<br />
<br />
A file is typically compressed with the lzma compression command line tool. For example:<br />
<br />
<code>lzma -zc /path/to/somefile.bin &gt; somefile.bin.lzma</code><br />
<br />
However, some recent versions of lzma no longer supply an uncompressed file size in the lzma header. (They instead populate the field with zero.) Unfortunately, SeaBIOS requires the uncompressed file size, so it may be necessary to use a different version of the lzma tool.<br />
<br />
= File aliases =<br />
<br />
It is possible to create the equivalent of &quot;symbolic links&quot; so that one file's content appears under another name. To do this, create a '''links''' file with one line per link and each line having the format of &quot;linkname&quot; and &quot;destname&quot; separated by a space character. For example, the '''links''' file may look like:<br />
<br />
<pre>pci1234,1000.rom somerom.rom<br />
pci1234,1001.rom somerom.rom<br />
pci1234,1002.rom somerom.rom</pre><br />
The above example would cause SeaBIOS to treat &quot;pci1234,1000.rom&quot; or &quot;pci1234,1001.rom&quot; as files with the same content as the file &quot;somerom.rom&quot;.<br />
<br />
= Option ROMs =<br />
<br />
SeaBIOS will scan all of the PCI devices in the target machine for option ROMs on PCI devices. It recognizes option ROMs in files that have the form '''pciVVVV,DDDD.rom'''. The VVVV,DDDD should correspond to the PCI vendor and device id of a device in the machine. If a given file is found then SeaBIOS will deploy the file instead of attempting to extract an option ROM from the device. In addition to supplying option ROMs for on-board devices that do not store their own ROMs, this mechanism may be used to prevent a ROM on a specific device from running.<br />
<br />
SeaBIOS always deploys the VGA rom associated with the active VGA device before any other ROMs.<br />
<br />
In addition, SeaBIOS will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. The ROMS in '''vgaroms/''' are run immediately after running the option ROM associated with the primary VGA device (if any were found), and the '''genroms/''' ROMs are run after all other PCI ROMs are run.<br />
<br />
= Bootsplash images =<br />
<br />
SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''.<br />
<br />
The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.<br />
<br />
SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have &quot;Press ESC for boot menu&quot; embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other_Configuration_items|configuration parameter]].<br />
<br />
The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[Debugging|trouble reporting section]] if a valid image isn't displayed properly.<br />
<br />
= Payloads =<br />
<br />
On coreboot, SeaBIOS will treat all files found in the '''img/''' directory as a coreboot payload. Each payload file will be available for boot, and one can select from the available payloads in the bootmenu. SeaBIOS supports both uncompressed and lzma compressed payloads.<br />
<br />
= Floppy images =<br />
<br />
It is possible to embed an image of a floppy into a file. SeaBIOS can then boot from and redirect floppy BIOS calls to the image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the directory '''floppyimg/'''.<br />
<br />
Using LZMA file compression with the [[#LZMA_compression|.lzma file suffix]] is a useful way to reduce the file size. Several floppy formats are available: 360K, 1.2MB, 720K, 1.44MB, 2.88MB, 160K, 180K, 320K.<br />
<br />
The floppy image will appear as writable to the system, however all writes are discarded on reboot.<br />
<br />
When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.<br />
<br />
= Configuring boot order =<br />
<br />
The '''bootorder''' file may be used to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file - first line of the file first.<br />
<br />
The easiest way to find the available boot methods is to look for &quot;Searching bootorder for&quot; in the SeaBIOS debug output. For example, one may see lines similar to:<br />
<br />
<pre>Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0<br />
Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1<br />
Searching bootorder for: /pci@i0cf8/usb@10,4/*@2</pre><br />
The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:<br />
<br />
<pre>/pci@i0cf8/usb@10,4/*@2<br />
/pci@i0cf8/*@f/drive@1/disk@0</pre><br />
will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.<br />
<br />
SeaBIOS also supports a special &quot;HALT&quot; directive. If a line that contains &quot;HALT&quot; is found in the bootorder file then SeaBIOS will (by default) only attempt to boot from devices explicitly listed above HALT in the file.<br />
<br />
= Other Configuration items =<br />
<br />
There are several additional configuration options available in the '''etc/''' directory.<br />
<br />
{|border=1<br />
!Filename<br />
!Description<br />
|-<br />
|show-boot-menu<br />
|Controls the display of the boot menu. Set to 0 to disable the boot menu.<br />
|-<br />
|boot-menu-message<br />
|Customize the text boot menu message. Normally, when in text mode SeaBIOS will report the string &quot;\nPress ESC for boot menu.\n\n&quot;. This field allows the string to be changed. (This is a string field, and is added as a file containing the raw string.)<br />
|-<br />
|boot-menu-key<br />
|Controls which key activates the boot menu. The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this field is set, be sure to also customize the '''boot-menu-message''' field above.<br />
|-<br />
|boot-menu-wait<br />
|Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.<br />
|-<br />
|boot-fail-wait<br />
|If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found<br />
|-<br />
|extra-pci-roots<br />
|If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.<br />
|-<br />
|ps2-keyboard-spinup<br />
|Some laptops that emulate PS2 keyboards don't respond to keyboard commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive. When this field is set, SeaBIOS will repeatedly attempt to detect the keyboard until the keyboard is found or the specified timeout is reached.<br />
|-<br />
|optionroms-checksum<br />
|Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.<br />
|-<br />
|pci-optionrom-exec<br />
|Controls option ROM execution for roms found on PCI devices (as opposed to roms found in CBFS/fw_cfg). Valid values are 0: Execute no ROMs, 1: Execute only VGA ROMs, 2: Execute all ROMs. The default is 2 (execute all ROMs).<br />
|-<br />
|s3-resume-vga-init<br />
|Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.<br />
|-<br />
|screen-and-debug<br />
|Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.<br />
|-<br />
|advertise-serial-debug-port<br />
|If using a serial debug port, one can set this file to a zero value to prevent SeaBIOS from listing that serial port as available for operating system use. This can be useful when running old DOS programs that are known to reset the baud rate of all advertised serial ports.<br />
|-<br />
|floppy0<br />
|Set this to the type of the first floppy drive in the system (only type 4 for 3.5 inch drives is supported).<br />
|-<br />
|floppy1<br />
|The type of the second floppy drive in the system. See the description of '''floppy0''' for more info.<br />
|-<br />
|threads<br />
|By default, SeaBIOS will parallelize hardware initialization during bootup to reduce boot time. Multiple hardware devices can be initialized in parallel between vga initialization and option rom initialization. One can set this file to a value of zero to force hardware initialization to run serially. Alternatively, one can set this file to 2 to enable early hardware initialization that runs in parallel with vga, option rom initialization, and the boot menu.<br />
|-<br />
|sdcard*<br />
|One may create one or more files with an &quot;sdcard&quot; prefix (eg, &quot;etc/sdcard0&quot;) with the physical memory address of an SDHCI controller (one memory address per file). This may be useful for SDHCI controllers that do not appear as PCI devices, but are mapped to a consistent memory address.<br />
|}</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=90Releases2016-02-20T02:11:59Z<p>Koconnor: Note release date of 1.9.1</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.9.1 ==<br />
<br />
Available on 20160215. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=89Releases2015-11-17T16:33:33Z<p>Koconnor: Note v1.9.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.9.0 =<br />
<br />
Available on 20151117. Major changes in this release:<br />
<br />
* The default boot menu key is now the ESC key (instead of F12)<br />
* Initial support for Trusted Platform Module (TPM) hardware and BIOS calls<br />
* Initial support for chain loading SeaBIOS from Grub (via multiboot support)<br />
* Initial support for booting from SD cards on real hardware<br />
* virtio 1.0 device support<br />
* The build will no longer include the build hostname or build time on &quot;clean&quot; builds. This makes the build binaries more &quot;reproducible&quot;.<br />
* Basic support for running SeaBIOS on Baytrail Chromebooks<br />
* SeaVGABIOS improvements:<br />
** Improved support for old versions of x86emu (the &quot;leal&quot; instruction is now emulated)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Build_overview&diff=88Build overview2015-10-26T13:43:18Z<p>Koconnor: Minor - replace seavgabios text in Build_overview.md with link</p>
<hr />
<div>The SeaBIOS code can be built using standard GNU tools. A recent Linux distribution should be able to build SeaBIOS using the standard compiler tools.<br />
<br />
= Building SeaBIOS =<br />
<br />
First, [[Download|obtain the code]]. SeaBIOS can be compiled for several different build targets. It is also possible to configure additional compile time options - run '''make menuconfig''' to do this.<br />
<br />
== Build for QEMU (along with KVM, Xen, and Bochs) ==<br />
<br />
To build for QEMU (and similar), one should be able to run &quot;make&quot; in the main directory. The resulting file &quot;out/bios.bin&quot; contains the processed bios image.<br />
<br />
One can use the resulting binary with QEMU by using QEMU's &quot;-bios&quot; option. For example:<br />
<br />
<code>qemu -bios out/bios.bin -fda myfdimage.img</code><br />
<br />
One can also use the resulting binary with Bochs. For example:<br />
<br />
<code>bochs -q 'floppya: 1_44=myfdimage.img' 'romimage: file=out/bios.bin'</code><br />
<br />
== Build for coreboot ==<br />
<br />
To build for coreboot please see the coreboot build instructions at: http://www.coreboot.org/SeaBIOS<br />
<br />
== Build as a UEFI Compatibility Support Module (CSM) ==<br />
<br />
To build as a CSM, first run kconfig (make menuconfig) and enable CONFIG_CSM. Then build SeaBIOS (make) - the resulting binary will be in &quot;out/Csm16.bin&quot;.<br />
<br />
This binary may be used with the OMVF/EDK-II UEFI firmware. It will provide &quot;legacy&quot; BIOS services for booting non-EFI operating systems and will also allow OVMF to display on otherwise unsupported video hardware by using the traditional VGA BIOS. (Windows 2008r2 is known to use INT 10h BIOS calls even when booted via EFI, and the presence of a CSM makes this work as expected too.)<br />
<br />
Having built SeaBIOS with CONFIG_CSM, one should be able to drop the result (out/Csm16.bin) into an OVMF build tree at OvmfPkg/Csm/Csm16/Csm16.bin and then build OVMF with 'build -D CSM_ENABLE'. The SeaBIOS binary will be included as a discrete file within the 'Flash Volume' which is created, and there are tools which will extract it and allow it to be replaced.<br />
<br />
= Distribution builds =<br />
<br />
If one is building a binary version of SeaBIOS as part of a package (such as an rpm) or for wide distribution, please provide the EXTRAVERSION field during the build. For example:<br />
<br />
<code>make EXTRAVERSION=&quot;-${RPM_PACKAGE_RELEASE}&quot;</code><br />
<br />
The EXTRAVERSION field should provide the package version (if applicable) and the name of the distribution (if that's not already obvious from the package version). This string will be appended to the main SeaBIOS version. The above information helps SeaBIOS developers correlate defect reports to the source code and build environment.<br />
<br />
If one is building a binary in a build environment that does not have access to the git tool or does not have the full SeaBIOS git repo available, then please use an official SeaBIOS release tar file as source. If building from a snapshot (where there is no official SeaBIOS tar) then one should generate a snapshot tar file on a machine that does support git using the scripts/tarball.sh tool. For example:<br />
<br />
<code>scripts/tarball.sh</code><br />
<br />
The tarball.sh script encodes version information in the resulting tar file which the build can extract and include in the final binary. The above EXTRAVERSION field should still be set when building from a tar.<br />
<br />
= Overview of files in the repository =<br />
<br />
The '''src/''' directory contains the main bios source code. The '''src/hw/''' directory contains source code specific to hardware drivers. The '''src/fw/''' directory contains source code for platform firmware initialization. The '''src/std/''' directory contains header files describing standard bios, firmware, and hardware interfaces.<br />
<br />
The '''vgasrc/''' directory contains code for [[SeaVGABIOS|SeaVGABIOS]].<br />
<br />
The '''scripts/''' directory contains helper utilities for manipulating and building the final roms.<br />
<br />
The '''out/''' directory is created by the build process - it contains all intermediate and final files.<br />
<br />
When reading the C code be aware that code that runs in 16bit mode can not arbitrarily access non-stack memory - see [[Memory%20Model|Memory Model]] for more details. For information on the major C code functions and where code execution starts see [[Execution%20and%20code%20flow|Execution and code flow]].</div>Koconnorhttps://www.seabios.org/index.php?title=SeaVGABIOS&diff=87SeaVGABIOS2015-10-26T13:42:00Z<p>Koconnor: Minor - replace seavgabios text in Build_overview.md with link</p>
<hr />
<div>SeaVGABIOS is a sub-project of the SeaBIOS project - it is an open source implementation of a 16bit X86 [http://en.wikipedia.org/wiki/Video_BIOS VGA BIOS]. SeaVGABIOS is the default VGA BIOS on [http://www.qemu.org/ QEMU]. SeaVGABIOS can also run natively on some X86 VGA hardware with [http://www.coreboot.org/ coreboot].<br />
<br />
= Building SeaVGABIOS =<br />
<br />
To build SeaVGABIOS, obtain the [[Download|code]], run <code>make menuconfig</code> and select the type of VGA BIOS to build in the &quot;VGA ROM&quot; menu. Once selected, run <code>make</code> and the final VGA BIOS binary will be located in &quot;out/vgabios.bin&quot;.<br />
<br />
The choice of available VGA BIOSes within &quot;make menuconfig&quot; is dependent on whether CONFIG_QEMU, CONFIG_COREBOOT, or CONFIG_CSM is selected. Also, the debug options under the &quot;Debugging&quot; menu apply to SeaVGABIOS. All other options found in &quot;make menuconfig&quot; apply only to SeaBIOS and will not impact the SeaVGABIOS build.<br />
<br />
If SeaVGABIOS is needed for multiple different devices (eg, QEMU's cirrus emulation and QEMU's &quot;dispi&quot; emulation), then one must compile SeaVGABIOS multiple times with the appropriate config for each build.<br />
<br />
= SeaVGABIOS code =<br />
<br />
The source code for SeaVGABIOS is located in the SeaBIOS [[Download|git repository]]. The main VGA BIOS code is located in the &quot;vgasrc/&quot; directory. The VGA BIOS code is always compiled in 16bit mode.<br />
<br />
The SeaVGABIOS builds to a separate binary from the main SeaBIOS binary, and much of the VGA BIOS code is separate from the main BIOS code. However, much of the SeaBIOS [[Developer_Documentation|developer documentation]] applies to SeaVGABIOS. To contribute, please join the [[Mailinglist|SeaBIOS mailing list]].</div>Koconnorhttps://www.seabios.org/index.php?title=Build_overview&diff=86Build overview2015-10-26T13:27:36Z<p>Koconnor: Document 'make EXTRAVERSION=xyz' and scripts/tarball.sh</p>
<hr />
<div>The SeaBIOS code can be built using standard GNU tools. A recent Linux distribution should be able to build SeaBIOS using the standard compiler tools.<br />
<br />
= Building SeaBIOS =<br />
<br />
First, [[Download|obtain the code]]. SeaBIOS can be compiled for several different build targets. It is also possible to configure additional compile time options - run '''make menuconfig''' to do this.<br />
<br />
== Build for QEMU (along with KVM, Xen, and Bochs) ==<br />
<br />
To build for QEMU (and similar), one should be able to run &quot;make&quot; in the main directory. The resulting file &quot;out/bios.bin&quot; contains the processed bios image.<br />
<br />
One can use the resulting binary with QEMU by using QEMU's &quot;-bios&quot; option. For example:<br />
<br />
<code>qemu -bios out/bios.bin -fda myfdimage.img</code><br />
<br />
One can also use the resulting binary with Bochs. For example:<br />
<br />
<code>bochs -q 'floppya: 1_44=myfdimage.img' 'romimage: file=out/bios.bin'</code><br />
<br />
== Build for coreboot ==<br />
<br />
To build for coreboot please see the coreboot build instructions at: http://www.coreboot.org/SeaBIOS<br />
<br />
== Build as a UEFI Compatibility Support Module (CSM) ==<br />
<br />
To build as a CSM, first run kconfig (make menuconfig) and enable CONFIG_CSM. Then build SeaBIOS (make) - the resulting binary will be in &quot;out/Csm16.bin&quot;.<br />
<br />
This binary may be used with the OMVF/EDK-II UEFI firmware. It will provide &quot;legacy&quot; BIOS services for booting non-EFI operating systems and will also allow OVMF to display on otherwise unsupported video hardware by using the traditional VGA BIOS. (Windows 2008r2 is known to use INT 10h BIOS calls even when booted via EFI, and the presence of a CSM makes this work as expected too.)<br />
<br />
Having built SeaBIOS with CONFIG_CSM, one should be able to drop the result (out/Csm16.bin) into an OVMF build tree at OvmfPkg/Csm/Csm16/Csm16.bin and then build OVMF with 'build -D CSM_ENABLE'. The SeaBIOS binary will be included as a discrete file within the 'Flash Volume' which is created, and there are tools which will extract it and allow it to be replaced.<br />
<br />
= Distribution builds =<br />
<br />
If one is building a binary version of SeaBIOS as part of a package (such as an rpm) or for wide distribution, please provide the EXTRAVERSION field during the build. For example:<br />
<br />
<code>make EXTRAVERSION=&quot;-${RPM_PACKAGE_RELEASE}&quot;</code><br />
<br />
The EXTRAVERSION field should provide the package version (if applicable) and the name of the distribution (if that's not already obvious from the package version). This string will be appended to the main SeaBIOS version. The above information helps SeaBIOS developers correlate defect reports to the source code and build environment.<br />
<br />
If one is building a binary in a build environment that does not have access to the git tool or does not have the full SeaBIOS git repo available, then please use an official SeaBIOS release tar file as source. If building from a snapshot (where there is no official SeaBIOS tar) then one should generate a snapshot tar file on a machine that does support git using the scripts/tarball.sh tool. For example:<br />
<br />
<code>scripts/tarball.sh</code><br />
<br />
The tarball.sh script encodes version information in the resulting tar file which the build can extract and include in the final binary. The above EXTRAVERSION field should still be set when building from a tar.<br />
<br />
= Overview of files in the repository =<br />
<br />
The '''src/''' directory contains the main bios source code. The '''src/hw/''' directory contains source code specific to hardware drivers. The '''src/fw/''' directory contains source code for platform firmware initialization. The '''src/std/''' directory contains header files describing standard bios, firmware, and hardware interfaces.<br />
<br />
The '''vgasrc/''' directory contains code for VGA BIOS implementations. This code is separate from the main BIOS code in the src/ directory. When the build is configured to produce a VGA BIOS the resulting binary is found in out/vgabios.bin. The VGA BIOS code is always compiled in 16bit mode.<br />
<br />
The '''scripts/''' directory contains helper utilities for manipulating and building the final roms.<br />
<br />
The '''out/''' directory is created by the build process - it contains all intermediate and final files.<br />
<br />
When reading the C code be aware that code that runs in 16bit mode can not arbitrarily access non-stack memory - see [[Memory%20Model|Memory Model]] for more details. For information on the major C code functions and where code execution starts see [[Execution%20and%20code%20flow|Execution and code flow]].</div>Koconnorhttps://www.seabios.org/index.php?title=Build_overview&diff=85Build overview2015-10-22T17:33:00Z<p>Koconnor: Update to pandoc version (quote and space differences)</p>
<hr />
<div>The SeaBIOS code can be built using standard GNU tools. A recent Linux distribution should be able to build SeaBIOS using the standard compiler tools.<br />
<br />
= Building SeaBIOS =<br />
<br />
First, [[Download|obtain the code]]. SeaBIOS can be compiled for several different build targets. It is also possible to configure additional compile time options - run '''make menuconfig''' to do this.<br />
<br />
== Build for QEMU (along with KVM, Xen, and Bochs) ==<br />
<br />
To build for QEMU (and similar), one should be able to run &quot;make&quot; in the main directory. The resulting file &quot;out/bios.bin&quot; contains the processed bios image.<br />
<br />
One can use the resulting binary with QEMU by using QEMU's &quot;-bios&quot; option. For example:<br />
<br />
<code>qemu -bios out/bios.bin -fda myfdimage.img</code><br />
<br />
One can also use the resulting binary with Bochs. For example:<br />
<br />
<code>bochs -q 'floppya: 1_44=myfdimage.img' 'romimage: file=out/bios.bin'</code><br />
<br />
== Build for coreboot ==<br />
<br />
To build for coreboot please see the coreboot build instructions at: http://www.coreboot.org/SeaBIOS<br />
<br />
== Build as a UEFI Compatibility Support Module (CSM) ==<br />
<br />
To build as a CSM, first run kconfig (make menuconfig) and enable CONFIG_CSM. Then build SeaBIOS (make) - the resulting binary will be in &quot;out/Csm16.bin&quot;.<br />
<br />
This binary may be used with the OMVF/EDK-II UEFI firmware. It will provide &quot;legacy&quot; BIOS services for booting non-EFI operating systems and will also allow OVMF to display on otherwise unsupported video hardware by using the traditional VGA BIOS. (Windows 2008r2 is known to use INT 10h BIOS calls even when booted via EFI, and the presence of a CSM makes this work as expected too.)<br />
<br />
Having built SeaBIOS with CONFIG_CSM, one should be able to drop the result (out/Csm16.bin) into an OVMF build tree at OvmfPkg/Csm/Csm16/Csm16.bin and then build OVMF with 'build -D CSM_ENABLE'. The SeaBIOS binary will be included as a discrete file within the 'Flash Volume' which is created, and there are tools which will extract it and allow it to be replaced.<br />
<br />
= Overview of files in the repository =<br />
<br />
The '''src/''' directory contains the main bios source code. The '''src/hw/''' directory contains source code specific to hardware drivers. The '''src/fw/''' directory contains source code for platform firmware initialization. The '''src/std/''' directory contains header files describing standard bios, firmware, and hardware interfaces.<br />
<br />
The '''vgasrc/''' directory contains code for VGA BIOS implementations. This code is separate from the main BIOS code in the src/ directory. When the build is configured to produce a VGA BIOS the resulting binary is found in out/vgabios.bin. The VGA BIOS code is always compiled in 16bit mode.<br />
<br />
The '''scripts/''' directory contains helper utilities for manipulating and building the final roms.<br />
<br />
The '''out/''' directory is created by the build process - it contains all intermediate and final files.<br />
<br />
When reading the C code be aware that code that runs in 16bit mode can not arbitrarily access non-stack memory - see [[Memory%20Model|Memory Model]] for more details. For information on the major C code functions and where code execution starts see [[Execution%20and%20code%20flow|Execution and code flow]].</div>Koconnorhttps://www.seabios.org/index.php?title=Execution_and_code_flow&diff=84Execution and code flow2015-09-08T18:36:20Z<p>Koconnor: Minor - add "code relocation" link to "Execution and code flow" document</p>
<hr />
<div>This page provides a high-level description of some of the major code phases that SeaBIOS transitions through and general information on overall code flow.<br />
<br />
= SeaBIOS code phases =<br />
<br />
The SeaBIOS code goes through a few distinct code phases during its execution lifecycle. Understanding these code phases can help when reading and enhancing the code.<br />
<br />
== POST phase ==<br />
<br />
The Power On Self Test (POST) phase is the initialization phase of the BIOS. This phase is entered when SeaBIOS first starts execution. The goal of the phase is to initialize internal state, initialize external interfaces, detect and setup hardware, and to then start the boot phase.<br />
<br />
On emulators, this phase starts when the CPU starts execution in 16bit mode at 0xFFFF0000:FFF0. The emulators map the SeaBIOS binary to this address, and SeaBIOS arranges for romlayout.S:reset_vector() to be present there. This code calls romlayout.S:entry_post() which then calls post.c:handle_post() in 32bit mode.<br />
<br />
On coreboot, the build arranges for romlayout.S:entry_elf() to be called in 32bit mode. This then calls post.c:handle_post().<br />
<br />
On CSM, the build arranges for romlayout.S:entry_csm() to be called (in 16bit mode). This then calls csm.c:handle_csm() in 32bit mode. Unlike on the emulators and coreboot, the SeaBIOS CSM POST phase is orchastrated with UEFI and there are several calls back and forth between SeaBIOS and UEFI via handle_csm() throughout the POST process.<br />
<br />
The POST phase itself has several sub-phases.<br />
<br />
* The &quot;preinit&quot; sub-phase: code run prior to [[Linking%20overview#Code%20relocation|code relocation]].<br />
* The &quot;init&quot; sub-phase: code to initialize internal variables and interfaces.<br />
* The &quot;setup&quot; sub-phase: code to setup hardware and drivers.<br />
* The &quot;prepboot&quot; sub-phase: code to finalize interfaces and prepare for the boot phase.<br />
<br />
At completion of the POST phase, SeaBIOS invokes an &quot;int 0x19&quot; software interrupt in 16bit mode which begins the boot phase.<br />
<br />
== Boot phase ==<br />
<br />
The goal of the boot phase is to load the first portion of the operating system's boot loader into memory and start execution of that boot loader. This phase starts when a software interrupt (&quot;int 0x19&quot; or &quot;int 0x18&quot;) is invoked. The code flow starts in 16bit mode in romlayout.S:entry_19() or romlayout.S:entry_18() which then transition to 32bit mode and call boot.c:handle_19() or boot.c:handle_18().<br />
<br />
The boot phase is technically also part of the &quot;runtime&quot; phase of SeaBIOS. It is typically invoked immiediately after the POST phase, but it can also be invoked by an operating system or be invoked multiple times in an attempt to find a valid boot media. Although the boot phase C code runs in 32bit mode it does not have write access to the 0x0f0000-0x100000 memory region and can not call the various malloc_X() calls. See [[Memory%20Model|Memory Model]] for more information.<br />
<br />
== Main runtime phase ==<br />
<br />
The main runtime phase occurs after the boot phase starts the operating system. Once in this phase, the SeaBIOS code may be invoked by the operating system using various 16bit and 32bit calls. The goal of this phase is to support these legacy calling interfaces and to provide compatibility with BIOS standards. There are multiple entry points for the BIOS - see the entry_XXX() assembler functions in romlayout.S.<br />
<br />
Callers use most of these legacy entry points by setting up a particular CPU register state, invoking the BIOS, and then inspecting the returned CPU register state. To handle this, SeaBIOS will backup the current register state into a &quot;struct bregs&quot; (see romlayout.S, entryfuncs.S, and bregs.h) on call entry and then pass this struct to the C code. The C code can then inspect the register state and modify it. The assembler entry functions will then restore the (possibly modified) register state from the &quot;struct bregs&quot; on return to the caller.<br />
<br />
== Resume and reboot ==<br />
<br />
As noted above, on emulators SeaBIOS handles the 0xFFFF0000:FFF0 machine startup execution vector. This vector is also called on machine faults and on some machine &quot;resume&quot; events. It can also be called (as 0xF0000:FFF0) by software as a request to reboot the machine (on emulators, coreboot, and CSM).<br />
<br />
The SeaBIOS &quot;resume and reboot&quot; code handles these calls and attempts to determine the desired action of the caller. Code flow starts in 16bit mode in romlayout.S:reset_vector() which calls romlayout.S:entry_post() which calls romlayout.S:entry_resume() which calls resume.c:handle_resume(). Depending on the request the handle_resume() code may transition to 32bit mode.<br />
<br />
Technically this code is part of the &quot;runtime&quot; phase, so even though parts of it run in 32bit mode it still has the same limitations of the runtime phase.<br />
<br />
= Threads =<br />
<br />
Internally SeaBIOS implements a simple cooperative multi-tasking system. The system works by giving each &quot;thread&quot; its own stack, and the system round-robins between these stacks whenever a thread issues a yield() call. This &quot;threading&quot; system may be more appropriately described as [http://en.wikipedia.org/wiki/Coroutine coroutines]. These &quot;threads&quot; do not run on multiple CPUs and are not preempted, so atomic memory accesses and complex locking is not required.<br />
<br />
The goal of these threads is to reduce overall boot time by parallelizing hardware delays. (For example, by allowing the wait for an ATA harddrive to spinup and respond to commands to occur in parallel with the wait for a PS/2 keyboard to respond to a setup command.) These hardware setup threads are only available during the &quot;setup&quot; sub-phase of the [[#POST_phase|POST phase]].<br />
<br />
The code that implements threads is in stacks.c.<br />
<br />
= Hardware interrupts =<br />
<br />
The SeaBIOS C code always runs with hardware interrupts disabled. All of the C code entry points (see romlayout.S) are careful to explicitly disable hardware interrupts (via &quot;cli&quot;). Because running with interrupts disabled increases interrupt latency, any C code that could loop for a significant amount of time (more than about 1 ms) should periodically call yield(). The yield() call will briefly enable hardware interrupts to occur, then disable interrupts, and then resume execution of the C code.<br />
<br />
There are two main reasons why SeaBIOS always runs C code with interrupts disabled. The first reason is that external software may override the default SeaBIOS handlers that are called on a hardware interrupt event. Indeed, it is common for DOS based applications to do this. These legacy third party interrupt handlers may have undocumented expections (such as stack location and stack size) and may attempt to call back into the various SeaBIOS software services. Greater compatibility and more reproducible results can be achieved by only permitting hardware interrupts at specific points (via yield() calls). The second reason is that much of SeaBIOS runs in 32bit mode. Attempting to handle interrupts in both 16bit mode and 32bit mode and switching between modes to delegate those interrupts is an unneeded complexity. Although disabling interrupts can increase interrupt latency, this only impacts legacy systems where the small increase in interrupt latency is unlikely to be noticeable.<br />
<br />
= Extra 16bit stack =<br />
<br />
SeaBIOS implements 16bit real mode handlers for both hardware interrupts and software request &quot;interrupts&quot;. In a traditional BIOS, these requests would use the caller's stack space. However, the minimum amount of space the caller must provide has not been standardized and very old DOS programs have been observed to allocate very small amounts of stack space (100 bytes or less).<br />
<br />
By default, SeaBIOS now switches to its own stack on most 16bit real mode entry points. This extra stack space is allocated in [[Memory%20Model|&quot;low memory&quot;]]. It ensures SeaBIOS uses a minimal amount of a callers stack (typically no more than 16 bytes) for these legacy calls. (More recently defined BIOS interfaces such as those that support 16bit protected and 32bit protected mode calls standardize a minimum stack size with adequete space, and SeaBIOS generally will not use its extra stack in these cases.)<br />
<br />
The code to implement this stack &quot;hopping&quot; is in romlayout.S and in stacks.c.</div>Koconnorhttps://www.seabios.org/index.php?title=Execution_and_code_flow&diff=83Execution and code flow2015-09-08T18:32:43Z<p>Koconnor: Generate page from pandoc (changes quotes and removes some excess spaces)</p>
<hr />
<div>This page provides a high-level description of some of the major code phases that SeaBIOS transitions through and general information on overall code flow.<br />
<br />
= SeaBIOS code phases =<br />
<br />
The SeaBIOS code goes through a few distinct code phases during its execution lifecycle. Understanding these code phases can help when reading and enhancing the code.<br />
<br />
== POST phase ==<br />
<br />
The Power On Self Test (POST) phase is the initialization phase of the BIOS. This phase is entered when SeaBIOS first starts execution. The goal of the phase is to initialize internal state, initialize external interfaces, detect and setup hardware, and to then start the boot phase.<br />
<br />
On emulators, this phase starts when the CPU starts execution in 16bit mode at 0xFFFF0000:FFF0. The emulators map the SeaBIOS binary to this address, and SeaBIOS arranges for romlayout.S:reset_vector() to be present there. This code calls romlayout.S:entry_post() which then calls post.c:handle_post() in 32bit mode.<br />
<br />
On coreboot, the build arranges for romlayout.S:entry_elf() to be called in 32bit mode. This then calls post.c:handle_post().<br />
<br />
On CSM, the build arranges for romlayout.S:entry_csm() to be called (in 16bit mode). This then calls csm.c:handle_csm() in 32bit mode. Unlike on the emulators and coreboot, the SeaBIOS CSM POST phase is orchastrated with UEFI and there are several calls back and forth between SeaBIOS and UEFI via handle_csm() throughout the POST process.<br />
<br />
The POST phase itself has several sub-phases.<br />
<br />
* The &quot;preinit&quot; sub-phase: code run prior to code relocation.<br />
* The &quot;init&quot; sub-phase: code to initialize internal variables and interfaces.<br />
* The &quot;setup&quot; sub-phase: code to setup hardware and drivers.<br />
* The &quot;prepboot&quot; sub-phase: code to finalize interfaces and prepare for the boot phase.<br />
<br />
At completion of the POST phase, SeaBIOS invokes an &quot;int 0x19&quot; software interrupt in 16bit mode which begins the boot phase.<br />
<br />
== Boot phase ==<br />
<br />
The goal of the boot phase is to load the first portion of the operating system's boot loader into memory and start execution of that boot loader. This phase starts when a software interrupt (&quot;int 0x19&quot; or &quot;int 0x18&quot;) is invoked. The code flow starts in 16bit mode in romlayout.S:entry_19() or romlayout.S:entry_18() which then transition to 32bit mode and call boot.c:handle_19() or boot.c:handle_18().<br />
<br />
The boot phase is technically also part of the &quot;runtime&quot; phase of SeaBIOS. It is typically invoked immiediately after the POST phase, but it can also be invoked by an operating system or be invoked multiple times in an attempt to find a valid boot media. Although the boot phase C code runs in 32bit mode it does not have write access to the 0x0f0000-0x100000 memory region and can not call the various malloc_X() calls. See [[Memory%20Model|Memory Model]] for more information.<br />
<br />
== Main runtime phase ==<br />
<br />
The main runtime phase occurs after the boot phase starts the operating system. Once in this phase, the SeaBIOS code may be invoked by the operating system using various 16bit and 32bit calls. The goal of this phase is to support these legacy calling interfaces and to provide compatibility with BIOS standards. There are multiple entry points for the BIOS - see the entry_XXX() assembler functions in romlayout.S.<br />
<br />
Callers use most of these legacy entry points by setting up a particular CPU register state, invoking the BIOS, and then inspecting the returned CPU register state. To handle this, SeaBIOS will backup the current register state into a &quot;struct bregs&quot; (see romlayout.S, entryfuncs.S, and bregs.h) on call entry and then pass this struct to the C code. The C code can then inspect the register state and modify it. The assembler entry functions will then restore the (possibly modified) register state from the &quot;struct bregs&quot; on return to the caller.<br />
<br />
== Resume and reboot ==<br />
<br />
As noted above, on emulators SeaBIOS handles the 0xFFFF0000:FFF0 machine startup execution vector. This vector is also called on machine faults and on some machine &quot;resume&quot; events. It can also be called (as 0xF0000:FFF0) by software as a request to reboot the machine (on emulators, coreboot, and CSM).<br />
<br />
The SeaBIOS &quot;resume and reboot&quot; code handles these calls and attempts to determine the desired action of the caller. Code flow starts in 16bit mode in romlayout.S:reset_vector() which calls romlayout.S:entry_post() which calls romlayout.S:entry_resume() which calls resume.c:handle_resume(). Depending on the request the handle_resume() code may transition to 32bit mode.<br />
<br />
Technically this code is part of the &quot;runtime&quot; phase, so even though parts of it run in 32bit mode it still has the same limitations of the runtime phase.<br />
<br />
= Threads =<br />
<br />
Internally SeaBIOS implements a simple cooperative multi-tasking system. The system works by giving each &quot;thread&quot; its own stack, and the system round-robins between these stacks whenever a thread issues a yield() call. This &quot;threading&quot; system may be more appropriately described as [http://en.wikipedia.org/wiki/Coroutine coroutines]. These &quot;threads&quot; do not run on multiple CPUs and are not preempted, so atomic memory accesses and complex locking is not required.<br />
<br />
The goal of these threads is to reduce overall boot time by parallelizing hardware delays. (For example, by allowing the wait for an ATA harddrive to spinup and respond to commands to occur in parallel with the wait for a PS/2 keyboard to respond to a setup command.) These hardware setup threads are only available during the &quot;setup&quot; sub-phase of the [[#POST_phase|POST phase]].<br />
<br />
The code that implements threads is in stacks.c.<br />
<br />
= Hardware interrupts =<br />
<br />
The SeaBIOS C code always runs with hardware interrupts disabled. All of the C code entry points (see romlayout.S) are careful to explicitly disable hardware interrupts (via &quot;cli&quot;). Because running with interrupts disabled increases interrupt latency, any C code that could loop for a significant amount of time (more than about 1 ms) should periodically call yield(). The yield() call will briefly enable hardware interrupts to occur, then disable interrupts, and then resume execution of the C code.<br />
<br />
There are two main reasons why SeaBIOS always runs C code with interrupts disabled. The first reason is that external software may override the default SeaBIOS handlers that are called on a hardware interrupt event. Indeed, it is common for DOS based applications to do this. These legacy third party interrupt handlers may have undocumented expections (such as stack location and stack size) and may attempt to call back into the various SeaBIOS software services. Greater compatibility and more reproducible results can be achieved by only permitting hardware interrupts at specific points (via yield() calls). The second reason is that much of SeaBIOS runs in 32bit mode. Attempting to handle interrupts in both 16bit mode and 32bit mode and switching between modes to delegate those interrupts is an unneeded complexity. Although disabling interrupts can increase interrupt latency, this only impacts legacy systems where the small increase in interrupt latency is unlikely to be noticeable.<br />
<br />
= Extra 16bit stack =<br />
<br />
SeaBIOS implements 16bit real mode handlers for both hardware interrupts and software request &quot;interrupts&quot;. In a traditional BIOS, these requests would use the caller's stack space. However, the minimum amount of space the caller must provide has not been standardized and very old DOS programs have been observed to allocate very small amounts of stack space (100 bytes or less).<br />
<br />
By default, SeaBIOS now switches to its own stack on most 16bit real mode entry points. This extra stack space is allocated in [[Memory%20Model|&quot;low memory&quot;]]. It ensures SeaBIOS uses a minimal amount of a callers stack (typically no more than 16 bytes) for these legacy calls. (More recently defined BIOS interfaces such as those that support 16bit protected and 32bit protected mode calls standardize a minimum stack size with adequete space, and SeaBIOS generally will not use its extra stack in these cases.)<br />
<br />
The code to implement this stack &quot;hopping&quot; is in romlayout.S and in stacks.c.</div>Koconnorhttps://www.seabios.org/index.php?title=Debugging&diff=82Debugging2015-08-24T19:17:03Z<p>Koconnor: Don't use an add-symbol-file offset when describing gdb debugging</p>
<hr />
<div>This page describes the process of obtaining diagnostic information from SeaBIOS and for reporting problems.<br />
<br />
= Diagnostic information =<br />
<br />
SeaBIOS has the ability to output diagnostic messages. This is implemented in the code via calls to the &quot;dprintf()&quot; C function.<br />
<br />
On QEMU these messages are written to a special debug port. One can view these messages by adding '-chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios' to the QEMU command line. Once this is done, one should see status messages on the console.<br />
<br />
On coreboot these messages are generally written to the &quot;cbmem&quot; console (CONFIG_DEBUG_COREBOOT). If SeaBIOS launches a Linux operating system, one can obtain the cbmem tool from the coreboot repository and run &quot;cbmem -c&quot; to view the SeaBIOS diagnostic messages.<br />
<br />
Additionally, if a serial port is available, one may compile SeaBIOS to send the diagnostic messages to the serial port. See the SeaBIOS CONFIG_DEBUG_SERIAL option.<br />
<br />
= Trouble reporting =<br />
<br />
If you are experiencing problems with SeaBIOS, it's useful to increase the debugging level. This is done by running &quot;make menuconfig&quot; and setting CONFIG_DEBUG_LEVEL to a higher value. A debug level of 8 will show a lot of diagnostic information without flooding the serial port (levels above 8 will frequently cause too much data).<br />
<br />
To report an issue, please collect the serial boot log with SeaBIOS set to a debug level of 8 and forward the full log along with a description of the problem to the SeaBIOS [[Mailinglist|mailing list]].<br />
<br />
= Timing debug messages =<br />
<br />
The SeaBIOS repository has a tool ('''scripts/readserial.py''') that can timestamp each diagnostic message produced. The timestamps can provide some additional information on how long internal processes take. It also provides a simple profiling mechanism.<br />
<br />
The tool can be used on coreboot builds that have diagnostic messages sent to a serial port. Make sure SeaBIOS is configured with CONFIG_DEBUG_SERIAL and run the following on the host receiving serial output:<br />
<br />
<code>/path/to/seabios/scripts/readserial.py /dev/ttyS0 115200</code><br />
<br />
Update the above command with the appropriate serial device and baud rate.<br />
<br />
The tool can also timestamp the messages from the QEMU debug port. To use with QEMU run the following:<br />
<br />
<pre>mkfifo qemudebugpipe<br />
qemu -chardev pipe,path=qemudebugpipe,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios ...</pre><br />
and then in another session:<br />
<br />
<code>/path/to/seabios/scripts/readserial.py -nf qemudebugpipe</code><br />
<br />
The mkfifo command only needs to be run once to create the pipe file.<br />
<br />
When readserial.py is running, it shows a timestamp with millisecond precision of the amount of time since the start of the log. If one presses the &quot;enter&quot; key in the readserial.py session it will add a blank line to the screen and also reset the time back to zero. The readserial.py program also keeps a log of all output in files that look like &quot;seriallog-YYYYMMDD_HHMMSS.log&quot;.<br />
<br />
= Debugging with gdb on QEMU =<br />
<br />
One can use gdb with QEMU to debug system images. To do this, add '-s -S' to the qemu command line. For example:<br />
<br />
<code>qemu -bios out/bios.bin -fda myfdimage.img -s -S</code><br />
<br />
Then, in another session, run gdb with either out/rom16.o (to debug bios 16bit code) or out/rom.o (to debug bios 32bit code). For example:<br />
<br />
<code>gdb out/rom16.o</code><br />
<br />
Once in gdb, use the command <code>target remote localhost:1234</code> to have gdb connect to QEMU. See the QEMU documentation for more information on using gdb and QEMU in this mode.<br />
<br />
When debugging 16bit code it is necessary to load the 16bit symbols twice in order for gdb to properly handle break points. To do this, run the following command <code>objcopy --adjust-vma 0xf0000 out/rom16.o rom16offset.o</code> and then run the following in gdb:<br />
<br />
<pre>set architecture i8086<br />
add-symbol-file rom16offset.o 0</pre><br />
To debug a VGA BIOS image, run <code>gdb out/vgarom.o</code>, create a vgaromoffset.o file with offset 0xc0000, add use the gdb command <code>add-symbol-file out/vgaromoffset.o 0</code> to load the 16bit VGA BIOS symbols twice.<br />
<br />
If debugging the 32bit SeaBIOS initialization code with gdb, note that SeaBIOS does self relocation by default. This relocation will alter the location of initialization code symbols. Disable CONFIG_RELOCATE_INIT to prevent SeaBIOS from doing this.</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=81Releases2015-07-06T17:48:09Z<p>Koconnor: Note release date of 1.8.2</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.8.2 ==<br />
<br />
Available on 20150617. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Runtime_config&diff=80Runtime config2015-03-18T16:17:48Z<p>Koconnor: switch default menu key to ESC</p>
<hr />
<div>SeaBIOS can read several configuration items at runtime. On coreboot the configuration comes from files located in CBFS. When SeaBIOS runs natively on QEMU the files are passed from QEMU via the fw_cfg interface.<br />
<br />
This page documents the user visible configuration and control features that SeaBIOS supports.<br />
<br />
= LZMA compression =<br />
<br />
On coreboot, when scanning files in CBFS, any filename that ends with a &quot;.lzma&quot; suffix will be treated as a raw file that is compressed with the lzma compression algorithm. This works for option ROMs, configuration files, floppy images, etc. . (This feature should not be used with embedded payloads - to compress payloads, use the standard section based compression algorithm that is built into the payload specification.)<br />
<br />
For example, the file '''pci1106,3344.rom.lzma''' would be treated the same as '''pci1106,3344.rom''', but will be automatically uncompressed when accessed.<br />
<br />
A file is typically compressed with the lzma compression command line tool. For example:<br />
<br />
<code>lzma -zc /path/to/somefile.bin &gt; somefile.bin.lzma</code><br />
<br />
However, some recent versions of lzma no longer supply an uncompressed file size in the lzma header. (They instead populate the field with zero.) Unfortunately, SeaBIOS requires the uncompressed file size, so it may be necessary to use a different version of the lzma tool.<br />
<br />
= File aliases =<br />
<br />
It is possible to create the equivalent of &quot;symbolic links&quot; so that one file's content appears under another name. To do this, create a '''links''' file with one line per link and each line having the format of &quot;linkname&quot; and &quot;destname&quot; separated by a space character. For example, the '''links''' file may look like:<br />
<br />
<pre>pci1234,1000.rom somerom.rom<br />
pci1234,1001.rom somerom.rom<br />
pci1234,1002.rom somerom.rom</pre><br />
The above example would cause SeaBIOS to treat &quot;pci1234,1000.rom&quot; or &quot;pci1234,1001.rom&quot; as files with the same content as the file &quot;somerom.rom&quot;.<br />
<br />
= Option ROMs =<br />
<br />
SeaBIOS will scan all of the PCI devices in the target machine for option ROMs on PCI devices. It recognizes option ROMs in files that have the form '''pciVVVV,DDDD.rom'''. The VVVV,DDDD should correspond to the PCI vendor and device id of a device in the machine. If a given file is found then SeaBIOS will deploy the file instead of attempting to extract an option ROM from the device. In addition to supplying option ROMs for on-board devices that do not store their own ROMs, this mechanism may be used to prevent a ROM on a specific device from running.<br />
<br />
SeaBIOS always deploys the VGA rom associated with the active VGA device before any other ROMs.<br />
<br />
In addition, SeaBIOS will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. The ROMS in '''vgaroms/''' are run immediately after running the option ROM associated with the primary VGA device (if any were found), and the '''genroms/''' ROMs are run after all other PCI ROMs are run.<br />
<br />
= Bootsplash images =<br />
<br />
SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''.<br />
<br />
The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.<br />
<br />
SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have &quot;Press ESC for boot menu&quot; embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other_Configuration_items|configuration parameter]].<br />
<br />
The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[Debugging|trouble reporting section]] if a valid image isn't displayed properly.<br />
<br />
= Payloads =<br />
<br />
On coreboot, SeaBIOS will treat all files found in the '''img/''' directory as a coreboot payload. Each payload file will be available for boot, and one can select from the available payloads in the bootmenu. SeaBIOS supports both uncompressed and lzma compressed payloads.<br />
<br />
= Floppy images =<br />
<br />
It is possible to embed an image of a floppy into a file. SeaBIOS can then boot from and redirect floppy BIOS calls to the image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the directory '''floppyimg/'''.<br />
<br />
Using LZMA file compression with the [[#LZMA_compression|.lzma file suffix]] is a useful way to reduce the file size. Several floppy formats are available: 360K, 1.2MB, 720K, 1.44MB, 2.88MB, 160K, 180K, 320K.<br />
<br />
The floppy image will appear as writable to the system, however all writes are discarded on reboot.<br />
<br />
When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.<br />
<br />
= Configuring boot order =<br />
<br />
The '''bootorder''' file may be used to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file - first line of the file first.<br />
<br />
The easiest way to find the available boot methods is to look for &quot;Searching bootorder for&quot; in the SeaBIOS debug output. For example, one may see lines similar to:<br />
<br />
<pre>Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0<br />
Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1<br />
Searching bootorder for: /pci@i0cf8/usb@10,4/*@2</pre><br />
The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:<br />
<br />
<pre>/pci@i0cf8/usb@10,4/*@2<br />
/pci@i0cf8/*@f/drive@1/disk@0</pre><br />
will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.<br />
<br />
SeaBIOS also supports a special &quot;HALT&quot; directive. If a line that contains &quot;HALT&quot; is found in the bootorder file then SeaBIOS will (by default) only attempt to boot from devices explicitly listed above HALT in the file.<br />
<br />
= Other Configuration items =<br />
<br />
There are several additional configuration options available in the '''etc/''' directory.<br />
<br />
{|border=1<br />
!Filename<br />
!Description<br />
|-<br />
|show-boot-menu<br />
|Controls the display of the boot menu. Set to 0 to disable the boot menu.<br />
|-<br />
|boot-menu-message<br />
|Customize the text boot menu message. Normally, when in text mode SeaBIOS will report the string &quot;\nPress ESC for boot menu.\n\n&quot;. This field allows the string to be changed. (This is a string field, and is added as a file containing the raw string.)<br />
|-<br />
|boot-menu-key<br />
|Controls which key activates the boot menu. The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this field is set, be sure to also customize the '''boot-menu-message''' field above.<br />
|-<br />
|boot-menu-wait<br />
|Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.<br />
|-<br />
|boot-fail-wait<br />
|If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found<br />
|-<br />
|extra-pci-roots<br />
|If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.<br />
|-<br />
|ps2-keyboard-spinup<br />
|Some laptops that emulate PS2 keyboards don't respond to keyboard commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive. When this field is set, SeaBIOS will repeatedly attempt to detect the keyboard until the keyboard is found or the specified timeout is reached.<br />
|-<br />
|optionroms-checksum<br />
|Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.<br />
|-<br />
|pci-optionrom-exec<br />
|Controls option ROM execution for roms found on PCI devices (as opposed to roms found in CBFS/fw_cfg). Valid values are 0: Execute no ROMs, 1: Execute only VGA ROMs, 2: Execute all ROMs. The default is 2 (execute all ROMs).<br />
|-<br />
|s3-resume-vga-init<br />
|Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.<br />
|-<br />
|screen-and-debug<br />
|Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.<br />
|-<br />
|advertise-serial-debug-port<br />
|If using a serial debug port, one can set this file to a zero value to prevent SeaBIOS from listing that serial port as available for operating system use. This can be useful when running old DOS programs that are known to reset the baud rate of all advertised serial ports.<br />
|-<br />
|floppy0<br />
|Set this to the type of the first floppy drive in the system (only type 4 for 3.5 inch drives is supported).<br />
|-<br />
|floppy1<br />
|The type of the second floppy drive in the system. See the description of '''floppy0''' for more info.<br />
|-<br />
|threads<br />
|By default, SeaBIOS will parallelize hardware initialization during bootup to reduce boot time. Multiple hardware devices can be initialized in parallel between vga initialization and option rom initialization. One can set this file to a value of zero to force hardware initialization to run serially. Alternatively, one can set this file to 2 to enable early hardware initialization that runs in parallel with vga, option rom initialization, and the boot menu.<br />
|}</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=79Releases2015-03-18T16:09:16Z<p>Koconnor: Note release date of 1.8.1</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
== SeaBIOS 1.8.1 ==<br />
<br />
Available on 20150316. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnorhttps://www.seabios.org/index.php?title=Runtime_config&diff=78Runtime config2015-02-24T17:10:31Z<p>Koconnor: Add an option to only execute option ROMs contained in CBFS</p>
<hr />
<div>SeaBIOS can read several configuration items at runtime. On coreboot the configuration comes from files located in CBFS. When SeaBIOS runs natively on QEMU the files are passed from QEMU via the fw_cfg interface.<br />
<br />
This page documents the user visible configuration and control features that SeaBIOS supports.<br />
<br />
= LZMA compression =<br />
<br />
On coreboot, when scanning files in CBFS, any filename that ends with a &quot;.lzma&quot; suffix will be treated as a raw file that is compressed with the lzma compression algorithm. This works for option ROMs, configuration files, floppy images, etc. . (This feature should not be used with embedded payloads - to compress payloads, use the standard section based compression algorithm that is built into the payload specification.)<br />
<br />
For example, the file '''pci1106,3344.rom.lzma''' would be treated the same as '''pci1106,3344.rom''', but will be automatically uncompressed when accessed.<br />
<br />
A file is typically compressed with the lzma compression command line tool. For example:<br />
<br />
<code>lzma -zc /path/to/somefile.bin &gt; somefile.bin.lzma</code><br />
<br />
However, some recent versions of lzma no longer supply an uncompressed file size in the lzma header. (They instead populate the field with zero.) Unfortunately, SeaBIOS requires the uncompressed file size, so it may be necessary to use a different version of the lzma tool.<br />
<br />
= File aliases =<br />
<br />
It is possible to create the equivalent of &quot;symbolic links&quot; so that one file's content appears under another name. To do this, create a '''links''' file with one line per link and each line having the format of &quot;linkname&quot; and &quot;destname&quot; separated by a space character. For example, the '''links''' file may look like:<br />
<br />
<pre>pci1234,1000.rom somerom.rom<br />
pci1234,1001.rom somerom.rom<br />
pci1234,1002.rom somerom.rom</pre><br />
The above example would cause SeaBIOS to treat &quot;pci1234,1000.rom&quot; or &quot;pci1234,1001.rom&quot; as files with the same content as the file &quot;somerom.rom&quot;.<br />
<br />
= Option ROMs =<br />
<br />
SeaBIOS will scan all of the PCI devices in the target machine for option ROMs on PCI devices. It recognizes option ROMs in files that have the form '''pciVVVV,DDDD.rom'''. The VVVV,DDDD should correspond to the PCI vendor and device id of a device in the machine. If a given file is found then SeaBIOS will deploy the file instead of attempting to extract an option ROM from the device. In addition to supplying option ROMs for on-board devices that do not store their own ROMs, this mechanism may be used to prevent a ROM on a specific device from running.<br />
<br />
SeaBIOS always deploys the VGA rom associated with the active VGA device before any other ROMs.<br />
<br />
In addition, SeaBIOS will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. The ROMS in '''vgaroms/''' are run immediately after running the option ROM associated with the primary VGA device (if any were found), and the '''genroms/''' ROMs are run after all other PCI ROMs are run.<br />
<br />
= Bootsplash images =<br />
<br />
SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''.<br />
<br />
The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.<br />
<br />
SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have &quot;Press F12 for boot menu&quot; embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other_Configuration_items|configuration parameter]].<br />
<br />
The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[Debugging|trouble reporting section]] if a valid image isn't displayed properly.<br />
<br />
= Payloads =<br />
<br />
On coreboot, SeaBIOS will treat all files found in the '''img/''' directory as a coreboot payload. Each payload file will be available for boot, and one can select from the available payloads in the bootmenu. SeaBIOS supports both uncompressed and lzma compressed payloads.<br />
<br />
= Floppy images =<br />
<br />
It is possible to embed an image of a floppy into a file. SeaBIOS can then boot from and redirect floppy BIOS calls to the image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the directory '''floppyimg/'''.<br />
<br />
Using LZMA file compression with the [[#LZMA_compression|.lzma file suffix]] is a useful way to reduce the file size. Several floppy formats are available: 360K, 1.2MB, 720K, 1.44MB, 2.88MB, 160K, 180K, 320K.<br />
<br />
The floppy image will appear as writable to the system, however all writes are discarded on reboot.<br />
<br />
When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.<br />
<br />
= Configuring boot order =<br />
<br />
The '''bootorder''' file may be used to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file - first line of the file first.<br />
<br />
The easiest way to find the available boot methods is to look for &quot;Searching bootorder for&quot; in the SeaBIOS debug output. For example, one may see lines similar to:<br />
<br />
<pre>Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0<br />
Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1<br />
Searching bootorder for: /pci@i0cf8/usb@10,4/*@2</pre><br />
The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:<br />
<br />
<pre>/pci@i0cf8/usb@10,4/*@2<br />
/pci@i0cf8/*@f/drive@1/disk@0</pre><br />
will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.<br />
<br />
SeaBIOS also supports a special &quot;HALT&quot; directive. If a line that contains &quot;HALT&quot; is found in the bootorder file then SeaBIOS will (by default) only attempt to boot from devices explicitly listed above HALT in the file.<br />
<br />
= Other Configuration items =<br />
<br />
There are several additional configuration options available in the '''etc/''' directory.<br />
<br />
{|border=1<br />
!Filename<br />
!Description<br />
|-<br />
|show-boot-menu<br />
|Controls the display of the boot menu. Set to 0 to disable the boot menu.<br />
|-<br />
|boot-menu-message<br />
|Customize the text boot menu message. Normally, when in text mode SeaBIOS will report the string &quot;\nPress F12 for boot menu.\n\n&quot;. This field allows the string to be changed. (This is a string field, and is added as a file containing the raw string.)<br />
|-<br />
|boot-menu-key<br />
|Controls which key activates the boot menu. The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this field is set, be sure to also customize the '''boot-menu-message''' field above.<br />
|-<br />
|boot-menu-wait<br />
|Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.<br />
|-<br />
|boot-fail-wait<br />
|If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found<br />
|-<br />
|extra-pci-roots<br />
|If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.<br />
|-<br />
|ps2-keyboard-spinup<br />
|Some laptops that emulate PS2 keyboards don't respond to keyboard commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive. When this field is set, SeaBIOS will repeatedly attempt to detect the keyboard until the keyboard is found or the specified timeout is reached.<br />
|-<br />
|optionroms-checksum<br />
|Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.<br />
|-<br />
|pci-optionrom-exec<br />
|Controls option ROM execution for roms found on PCI devices (as opposed to roms found in CBFS/fw_cfg). Valid values are 0: Execute no ROMs, 1: Execute only VGA ROMs, 2: Execute all ROMs. The default is 2 (execute all ROMs).<br />
|-<br />
|s3-resume-vga-init<br />
|Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.<br />
|-<br />
|screen-and-debug<br />
|Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.<br />
|-<br />
|advertise-serial-debug-port<br />
|If using a serial debug port, one can set this file to a zero value to prevent SeaBIOS from listing that serial port as available for operating system use. This can be useful when running old DOS programs that are known to reset the baud rate of all advertised serial ports.<br />
|-<br />
|floppy0<br />
|Set this to the type of the first floppy drive in the system (only type 4 for 3.5 inch drives is supported).<br />
|-<br />
|floppy1<br />
|The type of the second floppy drive in the system. See the description of '''floppy0''' for more info.<br />
|-<br />
|threads<br />
|By default, SeaBIOS will parallelize hardware initialization during bootup to reduce boot time. Multiple hardware devices can be initialized in parallel between vga initialization and option rom initialization. One can set this file to a value of zero to force hardware initialization to run serially. Alternatively, one can set this file to 2 to enable early hardware initialization that runs in parallel with vga, option rom initialization, and the boot menu.<br />
|}</div>Koconnorhttps://www.seabios.org/index.php?title=SeaBIOS&diff=77SeaBIOS2015-02-24T16:52:37Z<p>Koconnor: Fix pandoc error causing SeaVGABIOS link to not be shown</p>
<hr />
<div>SeaBIOS is an open source implementation of a 16bit X86 BIOS. SeaBIOS can run in an emulator or it can run natively on X86 hardware with the use of [http://www.coreboot.org/ coreboot].<br />
<br />
SeaBIOS is the default BIOS for [http://www.qemu.org/ qemu] and [http://www.linux-kvm.org/ kvm].<br />
<br />
The [http://www.coreboot.org/SeaBIOS coreboot SeaBIOS] page has information on using SeaBIOS in coreboot. Please see the [[Releases|releases]] page for information on recent releases. See the [[Download|download]] page to obtain SeaBIOS.<br />
<br />
[[SeaVGABIOS]] is a sub-project of SeaBIOS.<br />
<br />
Please join the [[Mailinglist|mailing list]] to contribute to SeaBIOS. Information on the internals of SeaBIOS is available on the [[Developer%20Documentation|Developer Documentation]] page.</div>Koconnorhttps://www.seabios.org/index.php?title=Linking_overview&diff=76Linking overview2015-02-24T16:29:58Z<p>Koconnor: Prefer triple backticks to multiple lines with single backticks</p>
<hr />
<div>This page describes the process that the SeaBIOS build uses to link the compiled code into the final binary objects.<br />
<br />
Unfortunately, the SeaBIOS linking phase is complex. This complexity is due to several unusual requirements:<br />
<br />
* Some BIOS entry points must reside at specific hardcoded memory locations. The build must support positioning code and variables at specific locations.<br />
* In order to support multiple [[Memory%20Model|memory models]] the same C code can be complied in three modes (16bit mode, 32bit segmented mode, and 32bit &quot;flat&quot; mode). Binary code from these three modes must be able to co-exist and on occasion reference each other.<br />
* There is a finite amount of memory available to the BIOS. The build will attempt to weed out unused code and variables from the final binary. It also supports self-relocation of one-time initialization code.<br />
<br />
= Code layout =<br />
<br />
To support the unusual build requirements, several [http://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc] compiler options are used. The &quot;-ffunction-sections&quot; and &quot;-fdata-sections&quot; flags instruct the compiler to place each variable and function into its own [http://en.wikipedia.org/wiki/Executable_and_Linkable_Format ELF] section.<br />
<br />
The C code is compiled three times into three separate objects for each of the major supported [[Memory%20Model|memory models]]: '''code16.o''', '''code32seg.o''', and '''code32flat.o'''. Information on the sections and symbols of these three objects are extracted (using '''objdump''') and passed in to the '''scripts/layoutrom.py''' python script. This script analyzes this information and produces gnu [http://en.wikipedia.org/wiki/GNU_linker ld] &quot;linker scripts&quot; which provide precise location information to the linker. These linker scripts are then used during the link phase which produces a '''rom.o''' object containing all the code.<br />
<br />
== Fixed location entry points ==<br />
<br />
The build supports placing code entry points and variables at fixed memory locations. This support is required in order to support the legacy BIOS standards. For example, a program might execute an &quot;int 0x15&quot; to request system information from the BIOS, but another old program might use &quot;ljmpw $0xf000, $0xf859&quot; instead. Both must provide the same results and so the build must position the 0x15 interrupt entry point in physical memory at 0xff859.<br />
<br />
This support is accomplished by placing the given code/variables into ELF sections that have a name containing the substring &quot;.fixedaddr.0x1234&quot; (where 0x1234 is the desired address). For variables in C code this is accomplished by marking the variables with the VARFSEGFIXED(0x1234) macro. For assembler entry points the ORG macro is used (see '''romlayout.S''').<br />
<br />
During the build, the '''layoutrom.py''' script will detect sections that contain the &quot;.fixedaddr.&quot; substring and will arrange for the final linker scripts to specify the desired address for the given section.<br />
<br />
Due to the sparse nature of these fixed address sections, the layoutrom.py script will also arrange to pack in other unrelated 16bit code into the free space between fixed address sections (see layoutrom.py:fitSections()). This maximizes the space available and reduces the overall size of the final binary.<br />
<br />
== C code in three modes ==<br />
<br />
SeaBIOS must support multiple [[Memory%20Model|memory models]]. This is accomplished by compiling the C code three separate times into three separate objects.<br />
<br />
The C code within a mode must not accidentally call a C function in another mode, but multiple modes must all access the same single copy of global variables. Further, it is occasionally necessary for the C code in one mode to obtain the address of C code in another mode.<br />
<br />
In order to use the same global variables between all modes, the layoutrom.py script will detect references to global variables and emit specific symbol definitions for those global variables in the linker scripts so that all references use the same physical memory address (see layoutrom.py:outXRefs()).<br />
<br />
To ensure C code does not accidentally call C code compiled in a different mode, the build will ensure the symbols for C code in each mode are isolated from each other during the linking stage. To support those situations where an address of a C function in another mode is required the build supports symbols with a special &quot;_cfuncX_&quot; prefix. The layoutrom.py script detects these references and will emit a corresponding symbol definitions in the linker script that points to the C code of the specified mode. This is typically seen with code like:<br />
<br />
<pre>extern void _cfunc32flat_process_op(void);<br />
return call32(_cfunc32flat_process_op, 0, 0);</pre><br />
In the above example, when the build finds the symbol &quot;_cfunc32flat_process_op&quot; it will emit that symbol with the physical address of the 32bit &quot;flat&quot; version of the process_op() C function.<br />
<br />
== Build garbage collection ==<br />
<br />
To reduce the overall size of the final SeaBIOS binary the build supports automatically weeding out of unused code and variables. This is done with two separate processes: when supported the gcc &quot;-fwhole-program&quot; compilation flag is used, and the layoutrom.py script checks for unreferenced ELF sections. The layoutrom.py script builds the final linker scripts with only referenced ELF sections, and thus unreferenced sections are weeded out from the final objects.<br />
<br />
When writing C code, it is necessary to mark C functions with the VISIBLE16, VISIBLE32SEG, or VISIBLE32FLAT macros if the functions are ever referenced from assembler code. These macros ensure the corresponding C function is emitted by the C compiler when compiling for the given memory mode. These macros, however, do not affect the layoutrom.py reference check, so even a function decorated with one of the above macros can be weeded out from the final object if it is never referenced.<br />
<br />
== Code relocation ==<br />
<br />
To further reduce the runtime memory size of the BIOS, the build supports runtime self-relocation. Normally SeaBIOS is loaded into memory in the memory region at 0xC0000-0x100000. This is convenient for initial binary deployment, but the space competes with memory requirements for Option ROMs, BIOS tables, and runtime storage. By default, SeaBIOS will self-relocate its one-time initialization code to free up space in this region.<br />
<br />
To support this feature, the build attempts to automatically detect which C code is exclusively initialization phase code (see layoutrom.py:checkRuntime()). It does this by finding all functions decorated with the VISIBLE32INIT macro and all functions only reachable via functions with that macro. These &quot;init only&quot; functions are then grouped together and their location and size is stored in the binary for the runtime code to relocate (see post.c:reloc_preinit()).<br />
<br />
The build also locates all cross section code references along with all absolute memory addresses in the &quot;init only&quot; code. These addresses need to be modified with the new run-time address in order for the code to successfully run at a new address. The build finds the location of the addresses (see layoutrom.py:getRelocs()) and stores the information in the final binary.<br />
<br />
= Final binary checks =<br />
<br />
At the conclusion of the main linking stage, the code is contained in the file '''rom.o'''. This object file contains all of the assembler code, variables, and the C code from all three memory model modes.<br />
<br />
At this point the '''scripts/checkrom.py''' script is run to perform final checks on the code. The script performs some sanity checks, it may update some tables in the binary, and it reports some size information.<br />
<br />
After the checkrom.py script is run the final user visible binary is produced. The name of the final binary is either '''bios.bin''', '''Csm16.bin''', or '''bios.bin.elf''' depending on the SeaBIOS build requested.</div>Koconnorhttps://www.seabios.org/index.php?title=Download&diff=75Download2015-02-24T16:28:10Z<p>Koconnor: Prefer triple backticks to multiple lines with single backticks</p>
<hr />
<div>SeaBIOS may be distributed under the terms of the [http://www.gnu.org/licenses/lgpl-3.0-standalone.html GNU LGPLv3] license. Both source code and binaries are available.<br />
<br />
= Latest source code =<br />
<br />
The SeaBIOS project uses the [http://git-scm.com/ git] revision control system. To download the latest source from revision control, run:<br />
<br />
<pre>$ git clone git://git.seabios.org/seabios.git seabios<br />
$ cd seabios</pre><br />
There's also a [http://git.seabios.org/ website] to browse the latest source code online.<br />
<br />
= Released versions =<br />
<br />
Released versions of the source code are available at:<br />
<br />
http://code.coreboot.org/p/seabios/downloads/<br />
<br />
Please see [[Releases|releases]] for information on each release.</div>Koconnorhttps://www.seabios.org/index.php?title=Download&diff=74Download2015-02-24T16:27:22Z<p>Koconnor: Update to pandoc version (quote and space differences)</p>
<hr />
<div>SeaBIOS may be distributed under the terms of the [http://www.gnu.org/licenses/lgpl-3.0-standalone.html GNU LGPLv3] license. Both source code and binaries are available.<br />
<br />
= Latest source code =<br />
<br />
The SeaBIOS project uses the [http://git-scm.com/ git] revision control system. To download the latest source from revision control, run:<br />
<br />
<code>$ git clone git://git.seabios.org/seabios.git seabios</code><br /><code>$ cd seabios</code><br />
<br />
There's also a [http://git.seabios.org/ website] to browse the latest source code online.<br />
<br />
= Released versions =<br />
<br />
Released versions of the source code are available at:<br />
<br />
http://code.coreboot.org/p/seabios/downloads/<br />
<br />
Please see [[Releases|releases]] for information on each release.</div>Koconnorhttps://www.seabios.org/index.php?title=Debugging&diff=73Debugging2015-02-24T16:24:36Z<p>Koconnor: Prefer tripple backticks to multiple lines with single backticks</p>
<hr />
<div>This page describes the process of obtaining diagnostic information from SeaBIOS and for reporting problems.<br />
<br />
= Diagnostic information =<br />
<br />
SeaBIOS has the ability to output diagnostic messages. This is implemented in the code via calls to the &quot;dprintf()&quot; C function.<br />
<br />
On QEMU these messages are written to a special debug port. One can view these messages by adding '-chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios' to the QEMU command line. Once this is done, one should see status messages on the console.<br />
<br />
On coreboot these messages are generally written to the &quot;cbmem&quot; console (CONFIG_DEBUG_COREBOOT). If SeaBIOS launches a Linux operating system, one can obtain the cbmem tool from the coreboot repository and run &quot;cbmem -c&quot; to view the SeaBIOS diagnostic messages.<br />
<br />
Additionally, if a serial port is available, one may compile SeaBIOS to send the diagnostic messages to the serial port. See the SeaBIOS CONFIG_DEBUG_SERIAL option.<br />
<br />
= Trouble reporting =<br />
<br />
If you are experiencing problems with SeaBIOS, it's useful to increase the debugging level. This is done by running &quot;make menuconfig&quot; and setting CONFIG_DEBUG_LEVEL to a higher value. A debug level of 8 will show a lot of diagnostic information without flooding the serial port (levels above 8 will frequently cause too much data).<br />
<br />
To report an issue, please collect the serial boot log with SeaBIOS set to a debug level of 8 and forward the full log along with a description of the problem to the SeaBIOS [[Mailinglist|mailing list]].<br />
<br />
= Timing debug messages =<br />
<br />
The SeaBIOS repository has a tool ('''scripts/readserial.py''') that can timestamp each diagnostic message produced. The timestamps can provide some additional information on how long internal processes take. It also provides a simple profiling mechanism.<br />
<br />
The tool can be used on coreboot builds that have diagnostic messages sent to a serial port. Make sure SeaBIOS is configured with CONFIG_DEBUG_SERIAL and run the following on the host receiving serial output:<br />
<br />
<code>/path/to/seabios/scripts/readserial.py /dev/ttyS0 115200</code><br />
<br />
Update the above command with the appropriate serial device and baud rate.<br />
<br />
The tool can also timestamp the messages from the QEMU debug port. To use with QEMU run the following:<br />
<br />
<pre>mkfifo qemudebugpipe<br />
qemu -chardev pipe,path=qemudebugpipe,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios ...</pre><br />
and then in another session:<br />
<br />
<code>/path/to/seabios/scripts/readserial.py -nf qemudebugpipe</code><br />
<br />
The mkfifo command only needs to be run once to create the pipe file.<br />
<br />
When readserial.py is running, it shows a timestamp with millisecond precision of the amount of time since the start of the log. If one presses the &quot;enter&quot; key in the readserial.py session it will add a blank line to the screen and also reset the time back to zero. The readserial.py program also keeps a log of all output in files that look like &quot;seriallog-YYYYMMDD_HHMMSS.log&quot;.<br />
<br />
= Debugging with gdb on QEMU =<br />
<br />
One can use gdb with QEMU to debug system images. To do this, add '-s -S' to the qemu command line. For example:<br />
<br />
<code>qemu -bios out/bios.bin -fda myfdimage.img -s -S</code><br />
<br />
Then, in another session, run gdb with either out/rom16.o (to debug bios 16bit code) or out/rom.o (to debug bios 32bit code). For example:<br />
<br />
<code>gdb out/rom16.o</code><br />
<br />
Once in gdb, use the command &quot;target remote localhost:1234&quot; to have gdb connect to QEMU. See the QEMU documentation for more information on using gdb and QEMU in this mode.<br />
<br />
When debugging 16bit code, also run the following commands in gdb:<br />
<br />
<pre>set architecture i8086<br />
add-symbol-file out/rom16.o 0xf0000</pre><br />
The second command loads the 16bit symbols a second time at an offset of 0xf0000, which helps gdb set and catch breakpoints correctly.<br />
<br />
To debug a VGA BIOS image, run &quot;gdb out/vgarom.o&quot; add use the gdb command &quot;add-symbol-file out/vgarom.o 0xc0000&quot; to load the 16bit VGA BIOS symbols twice.<br />
<br />
If debugging the 32bit SeaBIOS initialization code with gdb, note that SeaBIOS does self relocation by default. This relocation will alter the location of initialization code symbols. Disable CONFIG_RELOCATE_INIT to prevent SeaBIOS from doing this.</div>Koconnorhttps://www.seabios.org/index.php?title=Developer_Documentation&diff=72Developer Documentation2015-02-24T16:22:42Z<p>Koconnor: Add page on available CBFS/fw_cfg runtime config files</p>
<hr />
<div>This page is intended for developers interested in understanding and enhancing SeaBIOS. Please also consider joining the [[Mailinglist|mailing list]].<br />
<br />
The SeaBIOS code can be obtained via the [[Download|download]] page. For specific information on building SeaBIOS for coreboot, please see the [http://www.coreboot.org/SeaBIOS coreboot SeaBIOS] page.<br />
<br />
See details on [[Build%20overview|building SeaBIOS]].<br />
<br />
There is also information on the SeaBIOS [[Memory%20Model|Memory Model]]. Along with information on SeaBIOS [[Execution%20and%20code%20flow|Execution and code flow]]. A description of the process of linking the final SeaBIOS binary is available at [[Linking%20overview|Linking overview]].<br />
<br />
The list of available runtime configuration items is at [[Runtime_config|runtime config]].<br />
<br />
To debug SeaBIOS and report problems see SeaBIOS [[Debugging|debugging]]. To contribute changes to SeaBIOS see [[Contributing|contributing]].<br />
<br />
Useful links to specifications is available at [[Developer%20links|Developer links]].</div>Koconnorhttps://www.seabios.org/index.php?title=Runtime_config&diff=71Runtime config2015-02-24T16:21:07Z<p>Koconnor: Add page on available CBFS/fw_cfg runtime config files</p>
<hr />
<div>SeaBIOS can read several configuration items at runtime. On coreboot the configuration comes from files located in CBFS. When SeaBIOS runs natively on QEMU the files are passed from QEMU via the fw_cfg interface.<br />
<br />
This page documents the user visible configuration and control features that SeaBIOS supports.<br />
<br />
= LZMA compression =<br />
<br />
On coreboot, when scanning files in CBFS, any filename that ends with a &quot;.lzma&quot; suffix will be treated as a raw file that is compressed with the lzma compression algorithm. This works for option ROMs, configuration files, floppy images, etc. . (This feature should not be used with embedded payloads - to compress payloads, use the standard section based compression algorithm that is built into the payload specification.)<br />
<br />
For example, the file '''pci1106,3344.rom.lzma''' would be treated the same as '''pci1106,3344.rom''', but will be automatically uncompressed when accessed.<br />
<br />
A file is typically compressed with the lzma compression command line tool. For example:<br />
<br />
<code>lzma -zc /path/to/somefile.bin &gt; somefile.bin.lzma</code><br />
<br />
However, some recent versions of lzma no longer supply an uncompressed file size in the lzma header. (They instead populate the field with zero.) Unfortunately, SeaBIOS requires the uncompressed file size, so it may be necessary to use a different version of the lzma tool.<br />
<br />
= File aliases =<br />
<br />
It is possible to create the equivalent of &quot;symbolic links&quot; so that one file's content appears under another name. To do this, create a '''links''' file with one line per link and each line having the format of &quot;linkname&quot; and &quot;destname&quot; separated by a space character. For example, the '''links''' file may look like:<br />
<br />
<pre>pci1234,1000.rom somerom.rom<br />
pci1234,1001.rom somerom.rom<br />
pci1234,1002.rom somerom.rom</pre><br />
The above example would cause SeaBIOS to treat &quot;pci1234,1000.rom&quot; or &quot;pci1234,1001.rom&quot; as files with the same content as the file &quot;somerom.rom&quot;.<br />
<br />
= Option ROMs =<br />
<br />
SeaBIOS will scan all of the PCI devices in the target machine for option ROMs on PCI devices. It recognizes option ROMs in files that have the form '''pciVVVV,DDDD.rom'''. The VVVV,DDDD should correspond to the PCI vendor and device id of a device in the machine. If a given file is found then SeaBIOS will deploy the file instead of attempting to extract an option ROM from the device. In addition to supplying option ROMs for on-board devices that do not store their own ROMs, this mechanism may be used to prevent a ROM on a specific device from running.<br />
<br />
SeaBIOS always deploys the VGA rom associated with the active VGA device before any other ROMs.<br />
<br />
In addition, SeaBIOS will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. The ROMS in '''vgaroms/''' are run immediately after running the option ROM associated with the primary VGA device (if any were found), and the '''genroms/''' ROMs are run after all other PCI ROMs are run.<br />
<br />
= Bootsplash images =<br />
<br />
SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''.<br />
<br />
The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.<br />
<br />
SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have &quot;Press F12 for boot menu&quot; embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other_Configuration_items|configuration parameter]].<br />
<br />
The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[Debugging|trouble reporting section]] if a valid image isn't displayed properly.<br />
<br />
= Payloads =<br />
<br />
On coreboot, SeaBIOS will treat all files found in the '''img/''' directory as a coreboot payload. Each payload file will be available for boot, and one can select from the available payloads in the bootmenu. SeaBIOS supports both uncompressed and lzma compressed payloads.<br />
<br />
= Floppy images =<br />
<br />
It is possible to embed an image of a floppy into a file. SeaBIOS can then boot from and redirect floppy BIOS calls to the image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the directory '''floppyimg/'''.<br />
<br />
Using LZMA file compression with the [[#LZMA_compression|.lzma file suffix]] is a useful way to reduce the file size. Several floppy formats are available: 360K, 1.2MB, 720K, 1.44MB, 2.88MB, 160K, 180K, 320K.<br />
<br />
The floppy image will appear as writable to the system, however all writes are discarded on reboot.<br />
<br />
When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.<br />
<br />
= Configuring boot order =<br />
<br />
The '''bootorder''' file may be used to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file - first line of the file first.<br />
<br />
The easiest way to find the available boot methods is to look for &quot;Searching bootorder for&quot; in the SeaBIOS debug output. For example, one may see lines similar to:<br />
<br />
<pre>Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0<br />
Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1<br />
Searching bootorder for: /pci@i0cf8/usb@10,4/*@2</pre><br />
The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:<br />
<br />
<pre>/pci@i0cf8/usb@10,4/*@2<br />
/pci@i0cf8/*@f/drive@1/disk@0</pre><br />
will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.<br />
<br />
SeaBIOS also supports a special &quot;HALT&quot; directive. If a line that contains &quot;HALT&quot; is found in the bootorder file then SeaBIOS will (by default) only attempt to boot from devices explicitly listed above HALT in the file.<br />
<br />
= Other Configuration items =<br />
<br />
There are several additional configuration options available in the '''etc/''' directory.<br />
<br />
{|border=1<br />
!Filename<br />
!Description<br />
|-<br />
|show-boot-menu<br />
|Controls the display of the boot menu. Set to 0 to disable the boot menu.<br />
|-<br />
|boot-menu-message<br />
|Customize the text boot menu message. Normally, when in text mode SeaBIOS will report the string &quot;\nPress F12 for boot menu.\n\n&quot;. This field allows the string to be changed. (This is a string field, and is added as a file containing the raw string.)<br />
|-<br />
|boot-menu-key<br />
|Controls which key activates the boot menu. The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this field is set, be sure to also customize the '''boot-menu-message''' field above.<br />
|-<br />
|boot-menu-wait<br />
|Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.<br />
|-<br />
|boot-fail-wait<br />
|If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found<br />
|-<br />
|extra-pci-roots<br />
|If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.<br />
|-<br />
|ps2-keyboard-spinup<br />
|Some laptops that emulate PS2 keyboards don't respond to keyboard commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive. When this field is set, SeaBIOS will repeatedly attempt to detect the keyboard until the keyboard is found or the specified timeout is reached.<br />
|-<br />
|optionroms-checksum<br />
|Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.<br />
|-<br />
|s3-resume-vga-init<br />
|Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.<br />
|-<br />
|screen-and-debug<br />
|Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.<br />
|-<br />
|advertise-serial-debug-port<br />
|If using a serial debug port, one can set this file to a zero value to prevent SeaBIOS from listing that serial port as available for operating system use. This can be useful when running old DOS programs that are known to reset the baud rate of all advertised serial ports.<br />
|-<br />
|floppy0<br />
|Set this to the type of the first floppy drive in the system (only type 4 for 3.5 inch drives is supported).<br />
|-<br />
|floppy1<br />
|The type of the second floppy drive in the system. See the description of '''floppy0''' for more info.<br />
|-<br />
|threads<br />
|By default, SeaBIOS will parallelize hardware initialization during bootup to reduce boot time. Multiple hardware devices can be initialized in parallel between vga initialization and option rom initialization. One can set this file to a value of zero to force hardware initialization to run serially. Alternatively, one can set this file to 2 to enable early hardware initialization that runs in parallel with vga, option rom initialization, and the boot menu.<br />
|}</div>Koconnorhttps://www.seabios.org/index.php?title=Contributing&diff=70Contributing2015-02-24T16:18:37Z<p>Koconnor: Add page describing the patch contribution process</p>
<hr />
<div>SeaBIOS welcomes contributions of code (either fixing bugs or adding new functionality). At a high level, the process to contribute a change is:<br />
<br />
# [[Download|Obtain]] the current code and documentation<br />
# Enhance and test the code locally<br />
# Submit changes to the SeaBIOS [[Mailinglist|mailing list]] as a patch<br />
# Receive feedback, answer questions, and possibly provide updated patches<br />
# When accepted, a maintainer (Kevin O'Connor or Gerd Hoffman) will commit the change to the master SeaBIOS repository<br />
<br />
The SeaBIOS patch submission process is similar to the [http://wiki.qemu.org/Contribute/SubmitAPatch QEMU process]. Please review the QEMU process for more details and tips on the best way to submit patches. The SeaBIOS C code does follow a slightly different coding style from QEMU (eg, mixed code and C99 style variable declarations are encouraged, braces are not required around single statement blocks), however patches in the QEMU style are acceptable.</div>Koconnorhttps://www.seabios.org/index.php?title=SeaBIOS&diff=69SeaBIOS2015-02-24T16:16:43Z<p>Koconnor: add page for SeaVGABIOS</p>
<hr />
<div>SeaBIOS is an open source implementation of a 16bit X86 BIOS. SeaBIOS can run in an emulator or it can run natively on X86 hardware with the use of [http://www.coreboot.org/ coreboot].<br />
<br />
SeaBIOS is the default BIOS for [http://www.qemu.org/ qemu] and [http://www.linux-kvm.org/ kvm].<br />
<br />
The [http://www.coreboot.org/SeaBIOS coreboot SeaBIOS] page has information on using SeaBIOS in coreboot. Please see the [[Releases|releases]] page for information on recent releases. See the [[Download|download]] page to obtain SeaBIOS.<br />
<br />
SeaVGABIOS is a sub-project of SeaBIOS.<br />
<br />
Please join the [[Mailinglist|mailing list]] to contribute to SeaBIOS. Information on the internals of SeaBIOS is available on the [[Developer%20Documentation|Developer Documentation]] page.</div>Koconnorhttps://www.seabios.org/index.php?title=SeaBIOS&diff=68SeaBIOS2015-02-24T16:15:37Z<p>Koconnor: Update to pandoc version (quote and space differences)</p>
<hr />
<div>SeaBIOS is an open source implementation of a 16bit X86 BIOS. SeaBIOS can run in an emulator or it can run natively on X86 hardware with the use of [http://www.coreboot.org/ coreboot].<br />
<br />
SeaBIOS is the default BIOS for [http://www.qemu.org/ qemu] and [http://www.linux-kvm.org/ kvm].<br />
<br />
The [http://www.coreboot.org/SeaBIOS coreboot SeaBIOS] page has information on using SeaBIOS in coreboot. Please see the [[Releases|releases]] page for information on recent releases. See the [[Download|download]] page to obtain SeaBIOS.<br />
<br />
Please join the [[Mailinglist|mailing list]] to contribute to SeaBIOS. Information on the internals of SeaBIOS is available on the [[Developer%20Documentation|Developer Documentation]] page.</div>Koconnorhttps://www.seabios.org/index.php?title=SeaVGABIOS&diff=67SeaVGABIOS2015-02-24T16:13:36Z<p>Koconnor: add page for SeaVGABIOS</p>
<hr />
<div>SeaVGABIOS is a sub-project of the SeaBIOS project - it is an open source implementation of a 16bit X86 [http://en.wikipedia.org/wiki/Video_BIOS VGA BIOS]. SeaVGABIOS is the default VGA BIOS on [http://www.qemu.org/ QEMU]. SeaVGABIOS can also run natively on some X86 VGA hardware with [http://www.coreboot.org/ coreboot].<br />
<br />
= Building SeaVGABIOS =<br />
<br />
To build SeaVGABIOS, obtain the [[Download|code]], run <code>make menuconfig</code> and select the type of VGA BIOS to build in the &quot;VGA ROM&quot; menu. Once selected, run <code>make</code> and the final VGA BIOS binary will be located in &quot;out/vgabios.bin&quot;.<br />
<br />
The choice of available VGA BIOSes within &quot;make menuconfig&quot; is dependent on whether CONFIG_QEMU, CONFIG_COREBOOT, or CONFIG_CSM is selected. Also, the debug options under the &quot;Debugging&quot; menu apply to SeaVGABIOS. All other options found in &quot;make menuconfig&quot; apply only to SeaBIOS and will not impact the SeaVGABIOS build.<br />
<br />
If SeaVGABIOS is needed for multiple different devices (eg, QEMU's cirrus emulation and QEMU's &quot;dispi&quot; emulation), then one must compile SeaVGABIOS multiple times with the appropriate config for each build.<br />
<br />
= SeaVGABIOS code =<br />
<br />
The source code for SeaVGABIOS is located in the SeaBIOS [[Download|git repository]]. The main VGA BIOS code is located in the &quot;vgasrc/&quot; directory.<br />
<br />
The SeaVGABIOS builds to a separate binary from the main SeaBIOS binary, and much of the VGA BIOS code is separate from the main BIOS code. However, much of the SeaBIOS [[Developer_Documentation|developer documentation]] applies to SeaVGABIOS. To contribute, please join the [[Mailinglist|SeaBIOS mailing list]].</div>Koconnorhttps://www.seabios.org/index.php?title=Releases&diff=66Releases2015-02-18T19:18:31Z<p>Koconnor: Note v1.8.0 release</p>
<hr />
<div>History of SeaBIOS releases. Please see [[Download|download]] for information on obtaining these releases.<br />
<br />
= SeaBIOS 1.8.0 =<br />
<br />
Available on 20150218. Major changes in this release:<br />
<br />
* Several USB timing fixes for USB controllers on real hardware<br />
* Initial support for USB3 hubs<br />
* Initial support for SD cards (on QEMU only)<br />
* Initial support for transitioning to 32bit mode using SMIs (on QEMU TCG only)<br />
* SeaVGABIOS improvements<br />
** Added cursor emulation to coreboot native init vgabios (cbvga)<br />
** Added support for read character calls when in graphics mode<br />
* Developer documentation added to &quot;docs/&quot; directory in the code repository and several documentation updates<br />
* Several bug fixes and code cleanups<br />
<br />
As of the 1.8.0 release, new feature releases will modify the first two release numbers (eg, 1.8) and stable releases will use three numbers (eg, 1.8.1). The prior behavior of using a forth number (eg, 1.7.5.1) for stable releases will no longer be used.<br />
<br />
= SeaBIOS 1.7.5 =<br />
<br />
Available on 20140528. Major changes in this release:<br />
<br />
* Support for obtaining SMBIOS tables directly from QEMU.<br />
* XHCI USB controller fixes for real hardware (now tested on several boards)<br />
* SeaVGABIOS improvements<br />
** New driver for &quot;coreboot native vga&quot; support<br />
** Improved detection of older x86emu versions with incorrect emulation.<br />
* Several bug fixes and code cleanups<br />
<br />
== SeaBIOS 1.7.5.1 ==<br />
<br />
Available on 20141113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.5.2 ==<br />
<br />
Available on 20150112. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.4 =<br />
<br />
Available on 20131223. Major changes in this release:<br />
<br />
* Support for obtaining ACPI tables directly from QEMU.<br />
* Initial support for XHCI USB controllers (initially for QEMU only).<br />
* Support for booting from &quot;pvscsi&quot; devices on QEMU.<br />
* Enhanced floppy driver - improved support for real hardware.<br />
* coreboot cbmem console support.<br />
* Optional support for using the 9-segment instead of the e-segment for local variables.<br />
* Improved internal timer code and accuracy.<br />
* SeaVGABIOS improvements<br />
** Better support for legacy X.org releases with incomplete x86emu emulation.<br />
** Support for using an internal stack to reduce caller's stack usage.<br />
** Back port of new &quot;bochs dispi&quot; interface video modes.<br />
* Several bug fixes and code cleanups<br />
** Source code separated out into additional hardware and firmware directories.<br />
** Update to latest version of Kconfig<br />
<br />
= SeaBIOS 1.7.3 =<br />
<br />
Available on 20130707. Major changes in this release:<br />
<br />
* Initial support for using SeaBIOS as a UEFI Compatibility Support Module (CSM)<br />
* Support for detecting and using ACPI reboot ports.<br />
* By default, all 16bit entry points now use an internal stack to reduce stack footprint.<br />
* Floppy controller code has been rewritten to improve compatibility. Non-standard floppy sizes now work again with recent QEMU versions.<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 1.7.2 =<br />
<br />
Available on 20130118. Major changes in this release:<br />
<br />
* Support for ICH9 host chipset (&quot;q35&quot;) on emulators<br />
* Support for booting from LSI MegaRAID SAS controllers<br />
* Support for using the ACPI PM timer on emulators<br />
* Improved Geode VGA BIOS support.<br />
* Several bug fixes<br />
<br />
== SeaBIOS 1.7.2.1 ==<br />
<br />
Available on 20130227. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.7.2.2 ==<br />
<br />
Available on 20130527. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 1.7.1 =<br />
<br />
Available on 20120831. Major changes in this release:<br />
<br />
* Initial support for booting from USB attached scsi (USB UAS) drives<br />
* USB EHCI 64bit controller support<br />
* USB MSC multi-LUN device support<br />
* Support for booting from LSI SCSI controllers on emulators<br />
* Support for booting from AMD PCscsi controllers on emulators<br />
* New PCI allocation code on emulators. Support 64bit PCI bars and mapping them above 4G.<br />
* Support for non-linear APIC ids on emulators.<br />
* Stack switching for 16bit real mode irq handlers to reduce stack footprint.<br />
* Support for custom storage in the memory at 0xc0000-0xf0000. No longer reserve memory for custom storage in first 640k.<br />
* Improved code generation for 16bit segment register loads<br />
* Boot code will now (by default) reboot after 60 seconds if no boot device found<br />
* CBFS and FWCFG &quot;files&quot; are now only scanned one time<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.7.0 =<br />
<br />
Available on 20120414. Major changes in this release:<br />
<br />
* Many enhancements to VGA BIOS code - it should now be feature complete with LGPL vgabios.<br />
* Support for virtio-scsi.<br />
* Improved USB drive (usb-msc) support.<br />
* Several USB controller bug fixes and improvements.<br />
* Runtime ACPI AML PCI hotplug construction.<br />
* Support for running on i386 and i486 CPUs.<br />
* Enhancements to PCI init when running on emulators.<br />
* Several bug fixes<br />
<br />
= SeaBIOS 1.6.3 =<br />
<br />
Available on 20111004. Major changes in this release:<br />
<br />
* Initial support for Xen<br />
* PCI init (on emulators) uses a two-phase initialization<br />
* Fixes for AHCI so it can work on real hardware. AHCI is now enabled by default.<br />
* Bootsplash support for BMP files<br />
* Several configuration options can now be configured at runtime via CBFS files (eg, &quot;etc/boot-menu-wait&quot;)<br />
* PCI device scan is cached during POST phase<br />
* Several bug fixes<br />
<br />
The SeaBIOS 1.6.3 release was an incremental feature release. The first release number (1) was incremented as the project was no longer in a beta stage, and the third release number (3) was also incremented to indicate the release was a regular feature release.<br />
<br />
== SeaBIOS 1.6.3.1 ==<br />
<br />
Available on 20111124. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 1.6.3.2 ==<br />
<br />
Available on 20120311. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.2 =<br />
<br />
Available on 20110228. Major changes in this release:<br />
<br />
* Setup code can relocate to high-memory to save space in c-f segments<br />
* Build now configured via Kconfig<br />
* Experimental support for AHCI controllers<br />
* Support for run-time configuration of the boot order (via CBFS/fw_cfg &quot;bootorder&quot; file)<br />
* Support T13 EDD3.0 spec<br />
* Improved bounds checking on PCI memory allocation<br />
* Several bug fixes<br />
<br />
= SeaBIOS 0.6.1 =<br />
<br />
Available on 20100913. Major changes in this release:<br />
<br />
* Support for virtio drives<br />
* Add ACPI definitions for cpu hotplug support<br />
* Support for a graphical bootsplash screen<br />
* USB mouse support<br />
* The PCI support for emulators is less dependent on i440 chipset<br />
* New malloc implementation which improves memalign and free<br />
* The build system no longer double links objects<br />
* Several bug fixes<br />
<br />
== SeaBIOS 0.6.1.1 ==<br />
<br />
Available on 20101031. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.2 ==<br />
<br />
Available on 20101113. Stable release containing only bug fixes.<br />
<br />
== SeaBIOS 0.6.1.3 ==<br />
<br />
Available on 20101226. Stable release containing only bug fixes.<br />
<br />
= SeaBIOS 0.6.0 =<br />
<br />
Available on 20100326. Major changes in this release:<br />
<br />
* USB hub support<br />
* USB drive booting support<br />
* USB keyboard auto-repeat support<br />
* USB EHCI controller support<br />
* Several improvements to compatibility of PS2 port handlers for old code<br />
* Support for qemu e820 interface<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.1 =<br />
<br />
Available on 20100108. Major changes in this release:<br />
<br />
* Support for 32bit PCI BIOS calls<br />
* Support for int1589 calls<br />
* MPTable fixes for OpenBSD<br />
* ATA DMA and bus-mastering support<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.5.0 =<br />
<br />
Available on 20091218. Major changes in this release:<br />
<br />
* Several enhancements ported from the Bochs BIOS derived code in qemu and kvm<br />
* Support for parallel hardware initialization to reduce bootup times<br />
* Enable PCI option rom support by default (Bochs users must now enable CONFIG_OPTIONROMS_DEPLOYED in src/config.h). Support added for extracting option roms from qemu &quot;fw_cfg&quot;.<br />
* Support USB UHCI and OHCI controllers<br />
* Initial support for USB keyboards<br />
* SeaBIOS can now be greater than 64K<br />
* Support for permanent low memory allocations<br />
* APIC &quot;local interrupts&quot; now enabled in SeaBIOS (on emulators)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.2 =<br />
<br />
Available on 20090909. Major changes in this release:<br />
<br />
* Implement Post Memory Manager (PMM) support. Use equivalent &quot;malloc&quot; functions for internal allocations as well.<br />
* Refactor disk &quot;block&quot; interface for greater expandability<br />
* Support CBFS based floppy images<br />
* Allow boot menu to select either floppy to boot from<br />
* Increase ebda size to store a CDROM harddrive/floppy emulation buffer<br />
* Support systems with multiple vga cards (only the card with the legacy IO ranges mapped will have its option rom executed)<br />
* Make option rom memory be writable during option rom execution (on emulators)<br />
* Compile version number into code and report on each boot<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.1 =<br />
<br />
Available on 20090714. Major changes in this release:<br />
<br />
* Support older versions of gcc that predate &quot;-fwhole-program&quot; (eg, v3.x)<br />
* Add initial port of &quot;LGPL vga bios&quot; code into tree in &quot;vgasrc/&quot; directory<br />
* Handle ATA drives still &quot;spinning up&quot; during SeaBIOS drive detect<br />
* Add support for option rom Boot Connection Vectors (BCV)<br />
* Enhance boot menu to support booting from any drive or any cdrom<br />
* Support flash based Coreboot File System (CBFS)<br />
* Support booting from a CBFS &quot;payload&quot;<br />
* Support coreboot table forwarder<br />
* Support compile time definitions for multiple root PCI buses<br />
* New tools/readserial.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.4.0 =<br />
<br />
Available on 20090206. Major changes in this release:<br />
<br />
* Add Bios Boot Specification (BBS) calls; add PnP call stubs<br />
* Support option roms stored in PCI rom BAR<br />
* Support rebooting on ctrl+alt+delete key press<br />
* Scan PCI devices for ATA adapters (don't assume legacy ISA ATA ports are valid)<br />
* Attempt to automatically determine gcc capabilities/bugs during build<br />
* Add script to layout 16bit sections at fixed offsets and in compacted space<br />
* Introduce timestamp counter based delays<br />
* Support POST calls that are really a resume<br />
* Use new stack in EBDA for int13 disk calls to reduce stack usage<br />
* Support the EBDA being relocated by option roms<br />
* Move many variables from EBDA to global variables (stored in f-segment)<br />
* Support for PCI bridges when iterating through PCI device list<br />
* Initial port of several KVM specific features from their Bochs BIOS derived code<br />
* Access BDA using segment 0x40 and IVT using segment 0x00 (which could be important for 16bit protected mode callers)<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.3.0 =<br />
<br />
Available on 20080817. Major changes in this release:<br />
<br />
* Run boot code (int18/19) in 32bit mode<br />
* Rewrite of PS2 port handling - new code is more compatible with real hardware<br />
* Initial support for int155f VGA option rom calls<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.3 =<br />
<br />
Available on 20080702. Major changes in this release:<br />
<br />
* Initial support for running on real hardware with coreboot<br />
* Support parsing coreboot tables<br />
* Support relocating bios tables from high memory when running under coreboot<br />
* Dynamic e820 map generation<br />
* Serial debug support<br />
* New tools/checkstack.py tool<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.2 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080501. Major changes in this release:<br />
<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.1 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080406. Major changes in this release:<br />
<br />
* Port of boot menu code from Bochs BIOS<br />
* Several bug fixes and code cleanups<br />
<br />
= SeaBIOS 0.2.0 =<br />
<br />
Formerly known as &quot;legacybios&quot;. Available on 20080330. Major changes in this release:<br />
<br />
* Completion of initial port of Bochs BIOS code to gcc.</div>Koconnor