SeaBIOS

SeaBIOS Git Change Log

Age Message
27 days 3 hours src: Minor - remove tab characters that slipped into SeaBIOS C code

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 3 days lsi-scsi: try to enumerate luns with REPORT LUNS

Enumerate active luns with REPORT LUNS and, if that fails[*], fall back
to sequentially enumerating them up to (arbitrarily chosen) #8 [**].

[*] in current QEMU, REPORT LUNS does fail in lsi53c895a because the
returned data is smaller than the allocation length which is (wrongly)
considered an underflow

[**] in current QEMU, luns above 0 are not supported in lsi53c895a, so
this patch is here only for completeness.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days lsi-scsi: reset in case of a serious problem

When the device reports a serious problem via SIST[01] registers, it
needs to be reset, otherwise the following requests will most likely
fail, too.

In particular, REPORT LUNS which fails (wrongly) with underflow in QEMU
makes all the following requests fail, too, rendering the device
unusable.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days mpt-scsi: try to enumerate luns with REPORT LUNS

Enumerate active luns with REPORT LUNS and, if that fails[*], fall back
to sequentially enumerating them up to (arbitrarily chosen) #8.

Note that this patch also makes mpt_scsi_cmd accept luns other than 0;
I've no idea what was the original motivation not to, and what can break
due to this change (nothing broke in my basic tests with QEMU).

[*] in current QEMU, REPORT LUNS does fail in mptsas1068 because the
returned data is smaller than the allocation length which is (wrongly)
considered an underflow.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days pvscsi: fix the comment about lun enumeration

The comment in pvscsi_scan_target (presumably c&p-ed from another
driver) reads that REPORTS LUNS should better be used to enumerate the
luns on the target.

However, according to the Linux driver, the device supports no more than
a single lun per target.

So adjust the comment to tell exactly that.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days usb-uas: enumerate luns with REPORT LUNS

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days esp-scsi: enumerate luns with REPORT LUNS

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days virtio-scsi: enumerate luns with REPORT LUNS

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days blockcmd: generic SCSI luns enumeration

Add two generic functions to discover active LUNs on a SCSI target.

The functions take a temporary drive descriptor on the target, and a
callback to create a new drive descriptor with a new LUN using the
temporary one as a template.

One of the functions performs REPORT LUNS on the temporary drive to
obtain the list of candidate luns; the other sequentially iterates the
lun numbers up to the given maximum, and is meant as a fallback. Both
functions return the number of successfully created drive descriptors,
or a negative number if an error occured.

This will allow to lift the limitation of most of the SCSI drivers that
support booting off the LUN #0 only.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 3 days blockcmd: accept only disks and CD-ROMs

Luns that report to INQUIRY with a type other than CD-ROM are considered
disks. This isn't necessarily the case; working with such luns as disks
may lead to unpredictable results.

So bail out if the lun is neither CD-ROM nor disk.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
1 month 4 days boot: Increase description size in boot menu

Increase the boot menu description size so that menu items up to 80
characters display without truncation.

Reported-by: Rene Shuster <rene.shuster@bcsemail.org>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
1 month 10 days coreboot: Adapt to upstream CBMEM console changes

coreboot's CBMEM console format changed with
https://review.coreboot.org/#/c/18301. This patch adapts the SeaBIOS
implementation to support the new format. (SeaBIOS versions with this
patch will continue to work fine with older version of coreboot. SeaBIOS
versions without this patch may fail to log messages to the CBMEM
console if run with newer versions of coreboot, but should not
experience any more serious issues than that.)

Signed-off-by: Julius Werner <jwerner@chromium.org>
Commit 19fdcca467ad3436d68ef88899b4dcd78154a9c6, by Julius Werner
2 months 1 day config: Add function to check if fw_cfg exists

It was found qemu_get_present_cpus_count may return impossible
number of cpus because of not checking if fw_cfg exists before
using it. That may lead to undefined behavior of emulator,
in particular Bochs that freezes.

Signed-off-by: Petr Berky <petr.berky@email.cz>
2 months 26 days resume: Don't attempt to use generic reboot mechanisms on QEMU

On QEMU it's necessary to manually reset the BIOS memory region
between 0xc0000-0x100000 on a reboot. After this manual memory reset
is completed, it's not valid to use the generic reset mechanisms.
Rename qemu_prep_reset() to qemu_reboot() and change the function to
immediately reboot after the code memcpy.

This fixes a bug that could cause code corruption on reboots - calling
the udelay() function (as invoked by i8042_reboot and/or pci_reboot)
was not valid after the BIOS was memcpy'd.

Reported-by: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Tested-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
3 months 5 days nvme: fix copy-paste mistake in comment

Signed-off-by: Daniel Verkamp <daniel@drv.nu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Commit 1415d46dc87fd8bf1d6acd97c1ad60e893f62523, by Daniel Verkamp
3 months 5 days nvme: fix extraction of status code bits

The status code field is 8 bits wide starting at bit 1; the previous
code would truncate the top bit.

Signed-off-by: Daniel Verkamp <daniel@drv.nu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Commit d8a6c846924df07af2e48796af8b0a0f03e94f9a, by Daniel Verkamp
3 months 5 days nvme: fix reversed loop condition in cmd_readwrite

It looks like the intent was to exit the loop if a command failed, but
the current code would actually continue looping in that case.

Signed-off-by: Daniel Verkamp <daniel@drv.nu>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Commit 2e82b465fbdb46efdc2ebb638aef17fa7f665dc5, by Daniel Verkamp
3 months 5 days nvme: extend command timeout to 5 seconds

500 ms is not sufficient for the admin commands used during
initialization on some real hardware.

Signed-off-by: Daniel Verkamp <daniel@drv.nu>
Commit 21de72ffe8dcddf126c136918951c441edf85929, by Daniel Verkamp
3 months 5 days nvme: support NVMe 1.0 controllers

Rather than using the Identify command with CNS 01b (GET_NS_LIST), which
was added in NVMe 1.1, we can just enumerate all of the possible
namespace IDs.

The relevant part of the NVMe spec reads:

Namespaces shall be allocated in order (starting with 1) and packed
sequentially.

Since the previously-used GET_NS_LIST only returns active namespaces, we
also need a check in nvme_probe_ns() to ensure that inactive namespaces
are not reported as boot devices. This can be accomplished by checking
for non-zero block count - the spec indicates that Identify Namespace
for an inactive namespace ID will return all zeroes.

This should have no impact on the QEMU NVMe device model, since it
always reports exactly one namespace (NSID 1).

Signed-off-by: Daniel Verkamp <daniel@drv.nu>
Commit f21e3044a6b8c2195fb243aeb20b3511569e120a, by Daniel Verkamp
2 months 27 days docs: Note release dates for 1.10.1 and 1.10.2

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
3 months 9 days 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>
3 months 9 days 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>
3 months 9 days 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>
3 months 9 days 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>
3 months 9 days 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>