SeaBIOS

SeaBIOS Git Change Log

Age Message
7 days 3 hours QEMU fw_cfg: Write fw_cfg back on S3 resume

Any pointers to BIOS-allocated memory that were written back to QEMU
fw_cfg files are replayed when resuming from S3 sleep.

Signed-off-by: Ben Warren <ben@skyportsystems.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
7 days 3 hours QEMU fw_cfg: Add functions for accessing files by key

Due to memory contraints, when resuming from S3 the fw_cfg "files" API
isn't available. This adds a simple API to get a file 'key', and to
write to the file using the key as a reference.

Signed-off-by: Ben Warren <ben@skyportsystems.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
7 days 3 hours QEMU fw_cfg: Add command to write back address of file

This command is similar to ADD_POINTER, but instead of patching
memory, it writes the pointer back to QEMU over the DMA interface.

Signed-off-by: Ben Warren <ben@skyportsystems.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
7 days 3 hours romfile-loader: Switch to using named structs

This is a little cleaner and matches how the command structures are
defined in QEMU.

Signed-off-by: Ben Warren <ben@skyportsystems.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
7 days 3 hours QEMU DMA: Add DMA write capability

This allows BIOS to write data back to QEMU using the DMA interface and
provides a higher-level abstraction to write to a fw_cfg file

Signed-off-by: Ben Warren <ben@skyportsystems.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
14 days 22 hours block: add NVMe boot support

This patch enables SeaBIOS to boot from NVMe. Finding namespaces and
basic I/O works. Testing has been done in qemu and so far it works with
Grub, syslinux, and the FreeBSD loader. You need a recent Qemu (>=
2.7.0), because older versions have buggy NVMe support.

The NVMe code is currently only enabled on Qemu due to lack of testing
on real hardware.

Signed-off-by: Julian Stecklina <jsteckli@amazon.de>
Commit c83e15b60b7c59552a44d71d0582f2d62a6084a7, by Julian Stecklina
16 days 14 hours ps2port: Disable keyboard/mouse prior to resetting ps2 controller

If one of the ps2 ports is enabled prior to the ps2 controller reset
then it is possible a device event (eg, key press or mouse move) could
be mistaken for the controller reset response code. This would result
in a failure and the keyboard would be disabled during the boot.
Always disabling the keyboard and mouse prior to reset ensures that
the controller reset return code can be read properly.

Tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 7 days vgasrc: Increase debug level

You only want this information for debugging. As it also slows down the
boot considerably, as, for example, for every character of the GRUB
menu, something is sent over the serial console.

Therefore, increase the debugging level to 9.

Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
1 month 14 days ahci: Set upper 32-bit registers to zero

If the HBA supports 64-bit addressing, the registers may contain
non-zero values, for example after reboot as a leftover from the
OS driving the adapter.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
2 months 7 days serialio: Support for mmap serial ports

Some chipsets have memory mapped serial ports. The protocol is the same
as an standard uart, but with memory read/write instead of inb/outb.

Tested-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Commit 9332965e1c46ddf4e19d7050f1e957a195c703fa, by Ricardo Ribalda Delgado
3 months 4 days tpm: Log TPM 2 digest structure in little endian format

The parameters for extending the PCRs of a TPM 2 are written in
big endian format when sent to the TPM. However, the log needs
to be written in little endian format, so we cannot just copy
the structure into the log as-is. To support the little endian
format in the log, we extend the function writing the TPM 2
digest structure with a parameter that allows us to choose the
endianess of a few parameters. We then rewrite the digest structure
in little endian format for the log.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Commit 7b7b49e2898613dd6cf82473fa9b702541f218d6, by Stefan Berger
6 months 17 days tpm: Rework tpm_build_and_send_cmd() into tpm_simple_cmd()

Instead of passing an arbitrary buffer as a parameter to
tpm_build_and_send_cmd(), just support the simpler case of a parameter
that is only 0, 1, or 2 bytes in length. This allows the callers to
pass the parameter directly and not worry about the big-endian
encoding. Rename the function to tpm_simple_cmd().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
6 months 17 days tpm: Don't call tpm_build_and_send_cmd() from tpm20_stirrandom()

Instead call tpmhw_transmit() directly.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 year 1 month acpi: Generalize find_fadt() and find_tcpa_by_rsdp() into find_acpi_table()

The find_fadt() and find_tcpa_by_rsdp() functions are very similar.
Create a new find_acpi_table() function and replace the two functions
with this new function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
6 months 17 days tpm: Move code around in tcgbios.c to keep like code together

No code changes; just code movement.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
6 months 17 days tpm: Don't call tpm_set_failure() from tpm12_get_capability()

In the event of a failure in the low-level tpm12_get_capability()
code, just return an error code. The caller can shutdown the TPM if
needed - the only place where that is needed is during a failure in
tpm12_determine_timeouts().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
6 months 17 days tpm: Add comment banners to tcg.c separating major parts of spec

No code changes; just code movement.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
3 months 16 days drop "etc/boot-cpus" fw_cfg file and reuse legacy QEMU_CFG_NB_CPUS

since QEMU_CFG_NB_CPUS not going away anytime soon
and serves the same purpose as just added "etc/boot-cpus" fw_cfg
drop support for "etc/boot-cpus" while this code is not
in use yet (i.e. QEMU with "etc/boot-cpus" hasn't been released)
and reuse QEMU_CFG_NB_CPUS instead of it.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Commit b98c6586c0c3d519359d6e751ecb3e637e82dbcb, by Igor Mammedov
4 months 1 day usb: Make usb_time_sigatt variable static

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
4 months 1 day docs: Note v1.10.0 release

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
4 months 2 days build: Add -fno-pie to the gcc flags when available

Reported-by: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
4 months 14 days support booting with more than 255 CPUs

SDM[*1] says that if there are CPUs with APIC ID
greater than 254, BIOS is to pass control to OS
in x2APIC mode. Use the fact that QEMU passes in
"etc/max-cpus" max possible "APIC ID + 1" to
detect need for x2APIC mode. Also instead of
CMOS_BIOS_SMP_COUNT which is limited to 256 CPUs
use a new rom file "etc/boot-cpus" that QEMU
supporting more than 256 CPUs will provide.

*1) SDM: Volume 3: EXTENDED XAPIC (X2APIC):
Initialization by System Software

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Commit cb75c910a2c380e29099a0ae90b03de1689236c5, by Igor Mammedov
4 months 14 days add helpers to read etc/boot-cpus at resume time

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Commit 023b1d0d6a59a2555fd9b1c4d25e687a5844cf2c, by Igor Mammedov
4 months 14 days smp: consolidate CPU APIC ID detection and accounting

Signed-off-by: "Kevin O'Connor" <kevin@koconnor.net>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
4 months 14 days paravirt: disable legacy bios tables in case of more than 255 CPUs

MPTable doesn't support more than 255 CPUs and
QEMU supplies an alternative MADT table which
guest will use instead of it. So do not install
legacy tables if more than 254 CPUs are provided

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Commit f769589877b606d2c1b9b218b54b6ccef9440230, by Igor Mammedov