SeaBIOS Git Change Log

Age Message
15 days 16 hours vgabios: Simplify scroll logic

Introduce a new function vgafb_scroll() to scroll a window on the
screen and update vgabios.c to use only that function for scrolling.
This makes the low-level vgafb_move_chars() and vgafb_clear_chars()
local to vgafb.c, and it simplifies the callers.

Signed-off-by: Kevin O'Connor <>
17 days 16 hours docs: Note release date of 1.9.3

Signed-off-by: Kevin O'Connor <>
23 days 17 hours smp: restore MSRs on S3 resume

Currently the MTRRs and MSR_IA32_FEATURE_CONTROL are not restored on S3
resume. Because these have to be applied to all processors, SMP setup
has to be added to S3 resume.

There are two differences between the boot and resume paths. First,
romfile_* is not usable in the resume paths so we separate out the
remaining common code to a new smp_scan function. Second, smp_msr has
to be walked on the BSP as well, so we extract that out of handle_smp
and into a new function smp_write_msrs. Then, resume can call
smp_write_msrs on the BSP followed by smp_scan to initialize the APs.

Reported-by: Laszlo Ersek <>
Signed-off-by: Paolo Bonzini <>
Signed-off-by: Kevin O'Connor <>
Commit 54e3a88609da074aaae2f04e592026ebf82169dc, by Paolo Bonzini
26 days 14 hours vgabios: Simplify set_cursor_pos()

Rework set_cursor_pos() to be slightly simpler.

Signed-off-by: Kevin O'Connor <>
26 days 14 hours vgabios: Don't check for special case of page==0xff on external calls

The original "lgpl vgabios" internally used page=0xff as a mechanism
for specifying the current page. It also would allow int1013 calls to
externally specify bh==0xff for the current page. However, there is
no documentation supporting this as an externally available feature.
SeaVGABIOS does not need the internal shortcut; this patch removes the

Signed-off-by: Kevin O'Connor <>
26 days 14 hours vgabios: Remove special case of dh==0xff in handle_1013()

The original "lgpl vgabios" had a special case for dh==0xff in its
int1013 (write string) code. There does not appear to be any VGABIOS
documentation supporting this as an externally available feature. It
appears this was for its own internal use when writing its strings to
the screen. SeaVGABIOS doesn't use this hack; this patch removes it
from the code.

Signed-off-by: Kevin O'Connor <>
1 month 9 days fw/msr_feature_control: add support to set MSR_IA32_FEATURE_CONTROL

OS usually expects BIOS to set certain bits in MSR_IA32_FEATURE_CONTROL
for some features (e.g. VMX and LMCE). QEMU provides a fw_cfg file
"etc/msr_feature_control" to advise bits that should be set in
MSR_IA32_FEATURE_CONTROL. If this file exists, SeaBIOS will set the
advised bits in that MSR.

Signed-off-by: Haozhong Zhang <>
Reviewed-by: Paolo Bonzini <>
Signed-off-by: Gerd Hoffmann <>
Commit 20f83d5c7c0f9ae5f775b6701c205349abe003fb, by Haozhong Zhang
1 year 27 days virtio: pci cfg access

virtio regions can also be accessed using a window in pci cfg space.
Add support for it. Enable it in case the virtio regions are mapped
high (above 4g), so direct mmio access doesn't work for us even in
32bit mode.

Signed-off-by: Gerd Hoffmann <>
1 month 13 days virtio: uninline _vp_{read,write}

Next patch makes it larger, and I don't think it makes sense to
continue inlining it. Uninline and move from header to c file.

Signed-off-by: Gerd Hoffmann <>
2 months 10 days splash: Skip the RGB555 mode

Current JPEG decoding uses the RGB888 or RGB565. So we need to skip
RGB555 mode.

Signed-off-by: Zheng Bao <>
Signed-off-by: Kevin O'Connor <>
2 months 13 days fw/pci: Add support for mapping Intel IGD via QEMU

QEMU provides two fw_cfg files to support IGD. The first holds the
OpRegion data which holds the Video BIOS Table (VBT). This needs to
be copied into reserved memory and the address stored in the ASL
Storage register of the device at 0xFC offset in PCI config space.
The OpRegion is generally 8KB. This file is named "etc/igd-opregion".

The second file tells us the required size of the stolen memory space
for the device. This space requires 1MB alignment and is generally
either 1MB to 8MB depending on hardware config, but may be hundreds of
MB for user specified stolen memory. The base address of the reserved
memory allocated for this is written back to the Base Data of Stolen
Memory register (BDSM) at PCI config offset 0x5C on the device. This
file is named "etc/igd-bdsm-size".

QEMU documents these fw_cfg entries in docs/igd-assign.txt.

Signed-off-by: Alex Williamson <>
Message-id: 20160517203151.6996.95545.stgit@gimli.home
Signed-off-by: Gerd Hoffmann <>
Commit 04259c5817edc6d23f0aed76fd20ab220efcddc6, by Alex Williamson
2 months 14 days tcgbios: Remove unused const variable

Remove the unused array `PhysicalPresence_CMD_DISABLE` to fix GCC 6

Signed-off-by: Paul Menzel <>
Signed-off-by: Kevin O'Connor <>
2 months 14 days usb-xhci: Remove unused const variables

Remove the unused arrays `eptype_to_xhci_in` and `eptype_to_xhci_out` to
fix GCC 6 warnings.

Signed-off-by: Paul Menzel <>
Signed-off-by: Kevin O'Connor <>
3 months 8 days docs: Note release date of 1.9.2

Signed-off-by: Kevin O'Connor <>
3 months 25 days scsi: Launch a thread when scanning for drives in the scsi drivers

Signed-off-by: Kevin O'Connor <>
3 months 29 days virtio: Use threads when scanning for virtio devices

Signed-off-by: Kevin O'Connor <>
3 months 29 days shadow: Batch PCI config writes

Enabling and disabling shadow ram on QEMU is slow. Batch the PCI
writes to reduce the number of memory changes QEMU must implement.

Signed-off-by: Kevin O'Connor <>
3 months 29 days optionroms: Drop support for CONFIG_OPTIONROMS_DEPLOYED

No modern software uses this option and it complicates the code.

Signed-off-by: Kevin O'Connor <>
3 months 29 days disk: Avoid stack_hop() path if already on the extra stack

If CONFIG_ENTRY_EXTRASTACK is set (enabled by default) then the 16bit
disk interface code is already running on the extra stack and it is
not necessary to support stack switching on each disk request.

Signed-off-by: Kevin O'Connor <>
3 months 29 days block: Move send_disk_op() from block.c to disk.c

The send_disk_op() function is only called from the 16bit handlers
found in disk.c.

Signed-off-by: Kevin O'Connor <>
4 months 5 hours mpt-scsi: Declare 'int i' outside of for loop for older compilers

Signed-off-by: Kevin O'Connor <>
4 months 5 days Support for booting from LSI Logic LSI53C1030, SAS1068, SAS1068e

Also known as Fusion MPT disk; this controller model is supported
by VirtualBox and VMware, and QEMU support patches have been

Signed-off-by: Don Slutz <>
Signed-off-by: Paolo Bonzini <>
Signed-off-by: Kevin O'Connor <>
4 months 14 days sdcard: skip detection of PCI sdhci controllers if etc/sdcard used

Some BayTrail ChromeOS devices have the eMMC controller hidden (thus
requiring the use of etc/sdcard), while others do not, making it
problematic to have a single payload which serves all devices
properly. Therefore, if the CBFS contains etc/sdcard entries, skip
detection of any visible PCI sdhci controllers in order to avoid
duplicate entries in the boot menu.

Signed-off-by: Matt DeVillier <>
Signed-off-by: Kevin O'Connor <>
Commit fc0878926bfe644f07fba27228432cada68ec3ba, by Matt DeVillier
4 months 29 days fw/pci: add Q35 S3 support

Following the i440fx example, save the LPC, SMBUS and PCIEXBAR bdfs
between OS sleeps and use them to re-configure the
corresponding registers.

Tested-by: Gal Hammer <>
Reviewed-by: Laszlo Ersek <>
Signed-off-by: Marcel Apfelbaum <>
Commit dce99e01b6bfc51175bdf32612fd4f2738e5c3c8, by Marcel Apfelbaum
5 months 10 days ahci: set transfer mode according to the capabilities of connected drive

Use case: cf cards behind sata-ide bridge, which might not support
the default transfer mode.

Based on a patch by Werner Zeh <>,
with some minor tweaks applied.

Signed-off-by: Gerd Hoffmann <>