aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-10-18Add additional resolutions for 16:9 displays: 1600x900 and 2560x1440Uwe Kleine-König1-0/+8
This allows to have qemu run at the native screen resolution of my (physical) monitor. This is inspired by a patch created by Andreas Dangel that I found on https://adangel.org/2015/09/11/qemu-kvm-custom-resolutions/ . Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> Message-Id: <20191017203353.18898-2-uwe@kleine-koenig.org> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-10-18cbvga: reuse svga modes definitions from svgamodes.cUwe Kleine-König1-71/+9
For cbvga only modes with MM_DIRECT are usable, so skip the other ones. This effectively adds the following modes: { 0x10D, { MM_DIRECT, 320, 200, 15, 8, 16, SEG_GRAPH } }, { 0x10E, { MM_DIRECT, 320, 200, 16, 8, 16, SEG_GRAPH } }, { 0x10F, { MM_DIRECT, 320, 200, 24, 8, 16, SEG_GRAPH } }, { 0x140, { MM_DIRECT, 320, 200, 32, 8, 16, SEG_GRAPH } }, Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org> Message-Id: <20191017203353.18898-1-uwe@kleine-koenig.org> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-10-18virtio: extend virtio queue size to 256Denis Plotnikov1-1/+1
The goal of the patch is to work around a performance bug in guest linux kernels. Old linux kernels has a performance flaw in virtio block device access: on some frequent disk access patterns, e.g. 1M read, the kernel produces more block requests than needed. This happens because of virtio seg_max parameter set to 126 (virtqueue_size - 2) which limits the maximum block request to 516096 (126 * 4096_PAGE_SIZE) bytes. Setting seg_max > 126 fixes the issue, however, not all linux kernels allow that without increasing virtio virtqueue size. The old kernels have a restriction: virtqueue_size >= seg_max. In case of the restriction violation the old kernels crash. The restriction is relaxed in the recent linux kernels (ver >= 4.13) with: commit 44ed8089e991a60d614abe0ee4b9057a28b364e4 Author: Richard W.M. Jones Date: Thu Aug 10 17:56:51 2017 +0100 scsi: virtio: Reduce BUG if total_sg > virtqueue size to WARN. and the recent linux kernels don't crash if total_sg > virtqueue size allowing to set seg_max to the needed value without virtqueue size increasing. To fix the performance flaw in the old linux kernels, it's needed to increse seg_max to 254, and comply the restriction by setting virtqueue_size to 256. This is achievable if seabios can support virtqueue size > 128 which this patch actually does. Windows kernels don't have virtqueue_size >= seg_max restriction and isn't affected with this kind of the performance bug. Signed-off-by: Denis Plotnikov <dplotnikov@virtuozzo.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-08-23Makefile: Build with -Wno-address-of-packed-memberKevin O'Connor1-0/+1
Building with gcc v9 causes lots of warnings about pointers to packed variables. However, SeaBIOS is limited to x86 where unaligned reads/writes are supported by the cpu. So, disable that warning. Signed-off-by: Kevin O'Connor <kevin@koconnor.net> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
2019-06-28csm: Fix boot priority translationDavid Woodhouse1-3/+20
Explicitly handle the BBS_DO_NOT_BOOT_FROM and BBS_IGNORE_ENTRY values. Also add one to the other priority values, as find_prio() does for entries from bootorder. SeaBIOS uses zero for an item explicitly selected in interactive_bootmenu(). Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2019-06-24ati-vga: add rage128 edid supportGerd Hoffmann1-0/+25
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-06-24ati-vga: try vga ddc firstGerd Hoffmann1-0/+9
Try vga ddc bus before dvi ddc bus. Return early in case we got valid data. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-06-24ati-vga: make i2c register and bits configurableGerd Hoffmann1-7/+27
Prepare to support other ati cards. Also log access mode and whenever we got a valid edid block. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-06-24ati-vga: fix ati_read()Gerd Hoffmann1-1/+1
Cut & paste bug probably. Had no bad effect so far because the code doesn't read registers larger than 0x100. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-06-24ati-vga: make less verboseGerd Hoffmann1-1/+1
Reduce loglevel for mode line removals from 1 to 3. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-06-18csm: Sanitise alignment constraint in Legacy16GetTableAddressDavid Woodhouse1-2/+12
The alignment constraint is defined in the CSM specifications as "Bit mapped. First non-zero bit from the right is the alignment." Use __fls() to sanitise the alignment given that definition, since passing a non-power-of-two alignment to _malloc() isn't going to work well. And cope with being passed zero, which was happening for the E820 table allocation from EDK2. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2019-05-23virtio-pci: Use %pP format in dprintf() callsKevin O'Connor1-6/+4
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-05-23pciinit: Use %pP shorthand for printing device ids in intel_igd_setup()Kevin O'Connor1-12/+9
The hardcoded device names can cause false-positives on Windows bios version checks. Use the %pP format to avoid that. Reported-by: Sam Eiderman <shmuel.eiderman@oracle.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-05-22optionrom: disallow int19 redirect for pnp roms.Gerd Hoffmann1-0/+24
Check whenever pnp roms attempt to redirect int19, and in case it does log a message and undo the redirect. A pnp rom should not need this, we have BEVs and BCVs for that. Nevertheless there are roms in the wild which are redirecting int19. At least some BIOS implementations for physical hardware have a config option in the setup to allow/disallow int19 redirections, so just not allowing this seems to be the way to deal with this situation. Buglink: https://bugzilla.redhat.com//show_bug.cgi?id=1642135 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Tested-by: Matt DeVillier <matt.devillier@gmail.com>
2019-05-17bootmenu: add support for more than 9 entriesGerd Hoffmann1-18/+42
10th and following entries can be selected using letters. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-17add get_keystroke_full() helperGerd Hoffmann2-2/+15
Switch get_raw_keystroke() to return ax instead of ah, so it returns both scan code and ascii code of the key pressed. Add get_keystroke_full() function which passes up ax to the caller. The get_keystroke() function continues to return the scancode only like it did before. It is a thin wrapper around get_keystroke_full() now though. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-15bochsdisplay: parse resolution from edid.Gerd Hoffmann1-8/+16
Then use the resolution for the framebuffer. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-15bochsdisplay: add edid support.Gerd Hoffmann1-1/+7
Read EDID blob from mmio bar, store in VBE_edid. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-15bochsvga: add edid support.Gerd Hoffmann1-3/+16
Read EDID blob from mmio bar, store in VBE_edid. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-15ati: add edid support.Gerd Hoffmann1-0/+114
Read EDID blob via i2c, store in VBE_edid. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-15vbe: add edid support.Gerd Hoffmann2-0/+31
VBE subfunction 0x15, read ddc data. Add VBE_edid where drivers can fill in a EDID data blob. If we find valid data there (checking the first two header bytes), then report the function as supported and hand out the data. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-05-07smbios: Add missing zero byte to Type 0Sam Eiderman1-0/+4
According to SMBIOS Specification, section 6.1.3 Text Strings: "Text strings associated with a given SMBIOS structure are returned in the dmiStructBuffer, appended directly after the formatted portion of the structure. This method of returning string information eliminates the need for application software to deal with pointers embedded in the SMBIOS structure. Each string is terminated with a null (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE” Furthermore: "If the formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string references), the formatted section of the structure is followed by two null (00h) BYTES" From the above it can be seen that any SMBIOS type which contains string references should end with an additional zero byte. This is currently handled in all SMBIOS types which use load_str_field_with_default() besides type0. Therefore, add the missing zero byte to SMBIOS Type 0. Running QEMU with: -machine pc-i440fx-2.0 (for legacy smbios) -smbios type=0,vendor=,version=,date= (for zero str_index) Will cause SMBIOS type0 entry to overrun type1 entry. Reviewed-by: Mark Kanda <mark.kanda@oracle.com> Reviewed-by: Ross Philipson <ross.philipson@oracle.com> Reviewed-By: Liran Alon <liran.alon@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com>
2019-03-15vga: add ati bios tablesGerd Hoffmann2-0/+46
Needed to make drivers happy which try to gather informations from these tables. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-03-15vga: add atiext driverGerd Hoffmann5-1/+271
Supports qemu emulated ati cards. They have been added in qemu 4.0. Acceleration support (in qemu) is pretty rough still. A simple framebuffer works fine though. Available models: * ati rage 128 pro * ati rv100 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-03-14vga: make memcpy_high() publicGerd Hoffmann2-2/+2
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-03-14vga: move modelist from bochsvga.c to new svgamodes.cGerd Hoffmann4-87/+109
So other drivers can simply use the same list too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2019-02-04tcgbios: Implement TPM 2.0 menu item to activate and deactivate PCR banksStefan Berger2-0/+240
Implement a TPM 2.0 menu item that allows a user to toggle the activation of PCR banks of the TPM 2.0. After successful activation we shut down the TPM 2.0 and reset the machine. Background: A TPM 2.0 may have multiple PCR banks, such as for SHA1, SHA256, SHA384, SHA512, and SM3-256. One or multiple of those banks may be active (by factory for example) and modifying the set of active PCR banks is only possible while in the firmware since it requires platform authorization. Platform authorization is not possible for a user when in the OS since the firmware generates a random password for the platform authorization before booting the system and it throws that password away. Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
2019-02-04tcgbios: Use table to convert hash to buffer sizeStefan Berger1-13/+28
Use a table to convert the hash to the buffer size it needs. Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
2019-02-04usb-ehci: Clear pipe token on pipe reallocateKevin O'Connor1-0/+1
Make sure to clear the token before reuse as it may otherwise have an incorrect toggle setting. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-02-04bootsplash: Added support for 16/24/32bpp in one functionJoseph Pacheco-Corwin3-14/+13
Specifically added support for 16 and 32bpp files, in addition to 24bpp. The function bmp_show() in bmp.c has had the hardcoded check for 24bpp replaced with a general bpp check that uses a % to check for remainder, and returns 1 if the remainder is >0. The previous method for adjusting the BMP data (raw_data_format_adjust_24bpp) relied on a preset 3*bytes_per_line_src, this has been changed and the multiplication is now performed in the function's arguments. This change still allows someone else to reuse the same function for 1/2/4bpp support if necessary. The file util.h has been modified to reflect this decision. The changes to raw_data_format_adjust() is based on an abandoned patch by Gert Menke (submitted March 14, 2017), credit to them for that change and the addition of *bpp to bmp_get_info(). Signed-off-by: Joseph S. Pacheco-Corwin <hammersamatom@gmail.com>
2019-01-21docs: Fix cut-and-paste error in Mailinglist.md archive linkKevin O'Connor1-1/+1
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2019-01-20docs: Update mailing list archive linksKevin O'Connor1-6/+12
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-12-17output: Avoid thunking to 16bit mode in printf() if no vgabiosKevin O'Connor1-0/+3
It is not necessary to call the vgabios if no vgabios has been installed. This reduces the amount of hardware accesses on qemu when the bios is not initializing the display hardware, and it can reduce the boot time by a couple of milliseconds. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-12-10qemu: avoid debug prints if debugcon is not enabledStefano Garzarella4-2/+21
In order to speed up the boot phase, we can check the QEMU debugcon device, and disable the writes if it is not recognized. This patch allow us to save around 10 msec (time measured between SeaBIOS entry point and "linuxboot" entry point) when CONFIG_DEBUG_LEVEL=1 and debugcon is not enabled. Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-11-27pvscsi: ring_desc do not have to be page alignedLiran Alon1-1/+1
In contrast to other allocations made by pvscsi_init_rings(), ring_desc is only used internally by SeaBIOS (not passed to device-controller) and there is not restriction which force it to be page aligned. Reviewed-by: Mark Kanda <mark.kanda@oracle.com> Signed-off-by: Liran Alon <liran.alon@oracle.com>
2018-11-27tpm: Check for TPM related ACPI tables before attempting hw probeStephen Douthit1-7/+7
Signed-off-by: Stephen Douthit <stephend@silicom-usa.com>
2018-11-17docs: Note v1.12.0 releaseKevin O'Connor1-0/+21
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-11-10shadow: Rework bios copy code to prevent gcc array-bounds warningKevin O'Connor1-5/+6
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-11-10pvscsi: Scan all 64 possible targetsShmuel Eiderman1-1/+1
The max number of targets per PVSCSI controller is 64, not 7. This can easily be seen in QEMU PVSCSI emulation code (hw/scsi/vmw_pvscsi.c) as PVSCSI_MAX_DEVS, which defines the number of targets, have value of 64. Fixes: 83d60b3c474b ("Add pvscsi boot support") Reviewed-by: Liran Alon <liran.alon@oracle.com> Reviewed-by: Mark Kanda <mark.kanda@oracle.com> Signed-off-by: Shmuel Eiderman <shmuel.eiderman@oracle.com>
2018-10-05pretty boot menu entry for cdrom drivesGerd Hoffmann3-0/+57
Show the volume label of bootable cdroms. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-09-18SeaVGABios/cbvga: Fix bpp for coreboot framebufferMatt DeVillier1-2/+8
Commit 4b42cc4 [SeaVGABios/cbvga: Advertise correct pixel format] neglected to wrap the cbfb mask size components in GET_FARVAR(), which resulted in a bogus value for bpp, breaking output on most/all devices. Fix this by adding GET_FARVAR() as appropriate. Additionally, some newer ChromeOS devices still fail even with this fix, so fall back to using the coreboot reported bit depth if the calculated valid is invalid. TEST: build/boot a variety of devices (google/[reef,eve], purism/librem_skl) using coreboot framebuffer init, verify SeaBIOS boot menu prompt visible. Signed-off-by: Matt DeVillier <matt.devillier@puri.sm>
2018-09-05pci: recognize RH PCI legacy bridge resource reservation capabilityJing Liu2-21/+30
Enable the firmware recognizing RedHat legacy PCI bridge device ID, so QEMU can reserve additional PCI bridge resource capability. Change the debug level lower to 3 when it is non-QEMU bridge. Signed-off-by: Jing Liu <jing2.liu@linux.intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com> Message-id: 1535100781-3910-4-git-send-email-jing2.liu@linux.intel.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-09-05pci: clean up the debug message for pci capability foundJing Liu1-1/+3
Improve the debug message when QEMU resource reserve cap is not found and when the vendor-id or device-id does't match REDHAT special ones. Signed-off-by: Jing Liu <jing2.liu@linux.intel.com> Message-id: 1535100781-3910-3-git-send-email-jing2.liu@linux.intel.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-09-05pci: fix the return value for truncated capabilityJing Liu1-0/+1
Return zero when finding truncated capability. Signed-off-by: Jing Liu <jing2.liu@linux.intel.com> Message-id: 1535100781-3910-2-git-send-email-jing2.liu@linux.intel.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-09-03sdcard: Increase SDHCI_POWER_ON_TIME to 5msKevin O'Connor1-1/+1
It appears some sd cards need additional time to initialize after power on. Reported-by: Chris <coderight@gmail.com>. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-08-23nvme: fix I/O queue length calculation overflowMatt DeVillier1-2/+2
Commit cd47172 changed the I/O queue length calculation to use the Maximum Queue Entries Supported (MQES) value from the capabilities register, plus one, with a maximum value of NVME_PAGE_SIZE. An unintended effect from this is that due to length being an unsigned 16-bit int, a MQES value of 0xFFFF yields a length of zero, resulting in the queue allocation failing. Fix this by changing length to a u32. TEST: build/boot on a Purism Librem13v2 with a MyDigitalSSD BPX NVMe drive, which reports a MQES of 0xFFFF. Verify NVMe drive present in boot menu and OS boots successfully. Signed-off-by: Matt DeVillier <matt.devillier@puri.sm>
2018-08-09docs: Update download file linkKevin O'Connor1-1/+1
Released versions are now at: https://www.seabios.org/downloads/ Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-07-15ssdt: Fix building of legacy acpi tables on current iasl compilerKevin O'Connor2-2/+2
Recent versions of the iasl compiler raise an error if the table id is longer than 8 characters. Older versions of iasl would silently truncate the table id to 8 characters. Change the ssdt-misc and ssdt-pcihp files to use an 8 character id - this should not directly impact the generated aml code as the table id was already being truncated - but may help those wishing to manually compile the tables. Reported by Michael Tokarev, Vivia Nikolaidou, and several others. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2018-06-26cbvga_set_mode: refine clear display logicGerd Hoffmann1-8/+10
There is no need to skip text mode clearing. Clearing the framebuffer should be safe on legacy calls too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-06-22qemu: add qemu ramfb supportGerd Hoffmann5-14/+189
Add support for qemu ramfb. This is a simple boot framebuffer device, with normal ram being used to back the framebuffer and fw_cfg being used to configure the device. Use case (on x86): boot display for vgpu devices (which neither emulate vga nor have a vgabios). Sharing fw_cfg code with seabios turned out to be difficuilt due to various dependencies the code has on infrastructure which only seabios has. So include a copy of the code here, with those dependencies removed and also stripped down because we don't need a non-dma fallback here. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>