]> xenbits.xensource.com Git - seabios.git/log
seabios.git
10 years agoxhci: Call usb_desc2pipe() on xhci_update_pipe().
Kevin O'Connor [Tue, 9 Sep 2014 23:31:45 +0000 (19:31 -0400)]
xhci: Call usb_desc2pipe() on xhci_update_pipe().

Make sure to call usb_desc2pipe() when updating a pipe settings.  This
ensures that pipe->devaddr is properly updated.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agousb: Fix usb_xfer_time() to work when called in 16bit mode.
Kevin O'Connor [Tue, 9 Sep 2014 22:24:00 +0000 (18:24 -0400)]
usb: Fix usb_xfer_time() to work when called in 16bit mode.

Make sure to wrap accesses to the usb_pipe struct with GET_LOWFLAT so
that it works in 16bit mode.  This bug impacts both ehci and uhci usb
controllers (it should not impact ohci and xhci as those never call
the function in 16bit mode).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Update kconfig to version in Linux 3.16.
Kevin O'Connor [Sun, 24 Aug 2014 02:06:21 +0000 (22:06 -0400)]
build: Update kconfig to version in Linux 3.16.

Update kconfig (from Linux v3.13) to the latest version (Linux v3.16).

This copies kconfig from Linux with only the changes necessary to work
with the SeaBIOS build (the equivalent of the earlier SeaBIOS 0da7bfdf
commit) and the changes necessary to always emit symbols (SeaBIOS
b623e7c5 commit).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoMinor - remove stray tab from src/fw/smm.c.
Kevin O'Connor [Sat, 23 Aug 2014 16:10:29 +0000 (12:10 -0400)]
Minor - remove stray tab from src/fw/smm.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoacpi: use specified macro instead of magic-number
zhanghailiang [Thu, 21 Aug 2014 09:23:40 +0000 (17:23 +0800)]
acpi: use specified macro instead of magic-number

Instead of magic numbers, use specified macros for FADT Fixed Feature Flags.

Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
10 years agoboot: Change ":rom%d" boot order rom instance to ":rom%x"
Kevin O'Connor [Fri, 15 Aug 2014 13:52:43 +0000 (09:52 -0400)]
boot: Change ":rom%d" boot order rom instance to ":rom%x"

Use hex numbers for the rom instance count in boot order open firmware
device naming.  The ":rom" suffix isn't part of a standard and it's
highly unlikely any rom would have 10 or more drives on it, but this
change makes the code more similar to the numbering of other boot
order devices.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
10 years agoboot: Fix boot order for SCSI target, lun > 9
Markus Armbruster [Fri, 15 Aug 2014 06:58:17 +0000 (08:58 +0200)]
boot: Fix boot order for SCSI target, lun > 9

We identify devices by their Open Firmware device paths.  The path
component for the logical unit on a bus is incorrect:
bootprio_find_scsi_device() and bootprio_find_usb() format target
(a.k.a. SCSI ID) and lun in decimal, while QEMU uses hexadecimal.
Bootorder list entries with target, lun > 9 aren't found (lucky case),
or attributed to the wrong logical unit (unlucky case).

The relevant spec[*] agrees with QEMU (and OVMF, for that matter).
Change %d to %x.

No actual impact on USB, because QEMU only uses LUN 0 there.

RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1096560

[*] Open Firmware Recommended Practice: SCSI-3 Parallel Interface,
Version 1, Section 3.1 Physical Address Formats and Representations
http://www.openfirmware.org/1275/practice/spi/spi1_0.ps
IEEE Standard for Boot (Initialization Configuration) Firmware: Core
Requirements and Practices, IEEE Std 1275-1994, Annex E SCSI host
adapter package class, section E.2.1 Physical address formats and
representations

Signed-off-by: Markus Armbruster <armbru@redhat.com>
10 years agohw/pci: reserve IO and mem for pci express downstream ports with no devices attached
Marcel Apfelbaum [Mon, 23 Jun 2014 15:29:51 +0000 (18:29 +0300)]
hw/pci: reserve IO and mem for pci express downstream ports with no devices attached

Commit c6e298e1f12e0f4ca02b6da5e42919ae055f6830
    hw/pci: reserve IO and mem for pci-2-pci bridges with no devices attached

introduced support for hot-plugging devices behind pci-2-pci bridges.
Extend hotplug support also for pci express downstream ports.

Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
10 years agovgabios: Fix broken build resulting from e5749978.
Kevin O'Connor [Tue, 1 Jul 2014 13:50:04 +0000 (09:50 -0400)]
vgabios: Fix broken build resulting from e5749978.

The e5749978 commit added -fno-merge-constants to the compile flag.
That option changes the names of ".rodata" sections.  Update
vgalayout.lds.S so that the vgabios can continue to build.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoromlayout: Use "rep ; nop" not "rep nop".
Ian Campbell [Mon, 30 Jun 2014 13:10:02 +0000 (14:10 +0100)]
romlayout: Use "rep ; nop" not "rep nop".

Fixes:
  Compiling (16bit) out/romlayout.o
src/romlayout.S: Assembler messages:
src/romlayout.S:285: Error: expecting string instruction after `rep'
make: *** [out/romlayout.o] Error 1

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
10 years agoohci: Update usb command timeouts to use usb_xfer_time()
Kevin O'Connor [Sat, 14 Jun 2014 16:50:38 +0000 (12:50 -0400)]
ohci: Update usb command timeouts to use usb_xfer_time()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agouhci: Update usb command timeouts to use usb_xfer_time()
Kevin O'Connor [Sat, 14 Jun 2014 16:50:20 +0000 (12:50 -0400)]
uhci: Update usb command timeouts to use usb_xfer_time()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoehci: Update usb command timeouts to use usb_xfer_time()
Kevin O'Connor [Sat, 14 Jun 2014 16:48:35 +0000 (12:48 -0400)]
ehci: Update usb command timeouts to use usb_xfer_time()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoxhci: Update the times for usb command timeouts.
Kevin O'Connor [Sat, 14 Jun 2014 16:25:17 +0000 (12:25 -0400)]
xhci: Update the times for usb command timeouts.

The xhci controller had a hardcoded 1 second timeout for both bulk and
control transfers.  The 1 second bulk timeout is too small for some
real devices.

Increase both times to 5.1 seconds - according to the USB spec, the
maximum time a command should take is 5 seconds.  However, have the
set_address command only wait for 150ms (spec says set_address should
take no more than 50ms).

Introduce usb_xfer_time() to calculate maximum command time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Minor - fix comments referring to old tools/ directory.
Kevin O'Connor [Wed, 11 Jun 2014 19:40:04 +0000 (15:40 -0400)]
build: Minor - fix comments referring to old tools/ directory.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Get fixed address variables from 32bit compile pass (not 16bit)
Kevin O'Connor [Wed, 11 Jun 2014 18:00:21 +0000 (14:00 -0400)]
build: Get fixed address variables from 32bit compile pass (not 16bit)

Update the layoutrom.py build script so that fixed address sections
can come from the 32bit compiled C code.  Update the C code so that
all VAR16FIXED variables instead use the new VARFSEGFIXED which is
defined in 32bit mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Only export needed fields in LayoutInfo in layoutrom.py.
Kevin O'Connor [Wed, 11 Jun 2014 17:39:02 +0000 (13:39 -0400)]
build: Only export needed fields in LayoutInfo in layoutrom.py.

A number of fields were exported from the layout info that weren't
used.  Don't bother exporting them.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Use fileid instead of category to write sections in layoutrom.py.
Kevin O'Connor [Tue, 10 Jun 2014 21:59:53 +0000 (17:59 -0400)]
build: Use fileid instead of category to write sections in layoutrom.py.

The 'category' really determines the memory location while the
'fileid' determines which link stage the section is in.  So, use
'fileid' when writing the linker scripts.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Keep segmented sections separate until final link step.
Kevin O'Connor [Sat, 7 Jun 2014 19:55:00 +0000 (15:55 -0400)]
build: Keep segmented sections separate until final link step.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Rework getRelocs() to use a hash instead of categories in layoutrom.py
Kevin O'Connor [Wed, 11 Jun 2014 18:40:45 +0000 (14:40 -0400)]
build: Rework getRelocs() to use a hash instead of categories in layoutrom.py

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Refactor findInit() function.
Kevin O'Connor [Tue, 10 Jun 2014 04:00:20 +0000 (00:00 -0400)]
build: Refactor findInit() function.

Push findInit() into main() and unify the category setting code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Use customized entry point for each type of build.
Kevin O'Connor [Mon, 9 Jun 2014 18:37:23 +0000 (14:37 -0400)]
build: Use customized entry point for each type of build.

Set an appropriate elf entry point (entry_elf, entry_csm,
reset_vector) for each type of build (coreboot, csm, qemu).  Use that
entry point when determining which sections to keep.

Also, remove the '.export.' mechanism to keep a section in the final
binary - it is no longer used.

This allows the build to slightly reduce the overall size as entry_elf
is no longer needed on non-coreboot builds and entry_csm is no longer
needed on non-csm builds.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Refactor layoutrom.py gc() function.
Kevin O'Connor [Mon, 9 Jun 2014 18:59:25 +0000 (14:59 -0400)]
build: Refactor layoutrom.py gc() function.

Eliminate the per-section 'keep' variable - the list of sections that
will be emitted is sufficient to track that state.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Extract section visiting logic in layoutrom.py.
Kevin O'Connor [Mon, 9 Jun 2014 16:48:13 +0000 (12:48 -0400)]
build: Extract section visiting logic in layoutrom.py.

Extract out the logic that visits all reachable sections into new
function findReachable().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agobuild: Remove unused function getSectionsStart() from layoutrom.py.
Kevin O'Connor [Tue, 10 Jun 2014 06:01:56 +0000 (02:01 -0400)]
build: Remove unused function getSectionsStart() from layoutrom.py.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoAbstract reset call (and possible 16bit mode switch) into reset() function.
Kevin O'Connor [Fri, 6 Jun 2014 17:49:33 +0000 (13:49 -0400)]
Abstract reset call (and possible 16bit mode switch) into reset() function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoRemove the TODO file.
Kevin O'Connor [Thu, 5 Jun 2014 17:51:49 +0000 (13:51 -0400)]
Remove the TODO file.

The TODO file hasn't been updated in years and the info in it is stale.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoMake sure handle_smi() and handle_smp() are compiled out if not enabled.
Kevin O'Connor [Thu, 5 Jun 2014 15:08:44 +0000 (11:08 -0400)]
Make sure handle_smi() and handle_smp() are compiled out if not enabled.

Add CONFIG_ checks around the handle_smi/handle_smp functions.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agovgabios: Use .code16 not .code16gcc
David Woodhouse [Tue, 3 Jun 2014 16:28:58 +0000 (17:28 +0100)]
vgabios: Use .code16 not .code16gcc

There's no need to use .code16gcc where we are writing assembler code
explicitly. It only affects word-size-ambiguous instructions, and we
should just be explicit. And we are.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
10 years agoromlayout: Use .code16 not .code16gcc
David Woodhouse [Tue, 3 Jun 2014 16:28:49 +0000 (17:28 +0100)]
romlayout: Use .code16 not .code16gcc

There's no need to use .code16gcc where we are writing assembler code
explicitly. It only affects word-size-ambiguous instructions, and we
should just be explicit. And we are.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
10 years agobuild: use -m16 where available instead of asm(".code16gcc")
David Woodhouse [Tue, 3 Jun 2014 16:28:22 +0000 (17:28 +0100)]
build: use -m16 where available instead of asm(".code16gcc")

GCC 4.9 and clang 3.5 support the -m16 option on the command line which
supersedes the hackish ".code16gcc" assembler directive. Use it where
possible.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
10 years agobuild: Avoid absolute paths during "whole-program" compiling.
Kevin O'Connor [Tue, 3 Jun 2014 19:22:31 +0000 (15:22 -0400)]
build: Avoid absolute paths during "whole-program" compiling.

The build currently does a textual include of all files in order to
use the -fwhole-compile optimization.  Update it to use relative file
paths instead of absolute file paths.  This makes the section names in
the resulting binary more readable.  It also makes the build easier on
some Windows hosts.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoMove most of the VAR16FIXED() defs to misc.c.
Kevin O'Connor [Sat, 24 May 2014 14:40:35 +0000 (10:40 -0400)]
Move most of the VAR16FIXED() defs to misc.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoRemove old Bochs bios fixed address string at 0xfff00.
Kevin O'Connor [Sat, 24 May 2014 14:36:42 +0000 (10:36 -0400)]
Remove old Bochs bios fixed address string at 0xfff00.

There is no indication that the address 0xff00 is a BIOS standard, so
don't emit the old Bochs copyright string at that fixed address.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoDon't enable thread preemption during S3 resume vga option rom execution.
Kevin O'Connor [Sat, 24 May 2014 13:37:57 +0000 (09:37 -0400)]
Don't enable thread preemption during S3 resume vga option rom execution.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agosmp: Replace QEMU SMP init assembler code with C; run only in 32bit mode.
Kevin O'Connor [Sat, 24 May 2014 14:49:50 +0000 (10:49 -0400)]
smp: Replace QEMU SMP init assembler code with C; run only in 32bit mode.

Change the multi-processor init code to trampoline into 32bit mode on
each of the additional processors.  Implement an atomic lock so that
each processor performs its initialization serially.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agosmm: Use a C struct to define the layout of the SMM area.
Kevin O'Connor [Wed, 28 May 2014 17:33:50 +0000 (13:33 -0400)]
smm: Use a C struct to define the layout of the SMM area.

Describe the memory layout using a struct instead of hard coded
offsets.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agosmm: Replace SMI assembler code with C code.
Kevin O'Connor [Mon, 7 Apr 2014 23:49:12 +0000 (19:49 -0400)]
smm: Replace SMI assembler code with C code.

Convert the SMI handler from assembly to C.  This makes the handler
easier to understand and enhance.

The new handler will use references to the reserved memory at
0xf0000-0x100000.  If the physical memory in that range is modified at
runtime, then the SMI handler will cease to function properly (and may
allow unintended code to run in SMM mode).  However, that area is
marked as reserved and is normally made read-only at runtime, so there
is little risk in relying on it.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agosmm: unify SMM handlers
Paolo Bonzini [Thu, 15 May 2014 11:22:29 +0000 (13:22 +0200)]
smm: unify SMM handlers

The next patch will add shared code between the initial handler for
SMBASE relocation and the actual SMI handler.  Combine the code of
the two handlers for simplicity.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
10 years agosmm: complete SMM setup
Paolo Bonzini [Thu, 15 May 2014 11:22:28 +0000 (13:22 +0200)]
smm: complete SMM setup

SMI generation requires two bits to be set in PIIX4, one for APMC
interrupts specifically and a general one.

For Q35 it is the same, plus it is a good thing to lock SMIs after
enabling them.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
10 years agopiix: add and use dev-piix.h
Paolo Bonzini [Thu, 15 May 2014 11:22:26 +0000 (13:22 +0200)]
piix: add and use dev-piix.h

Move all definitions for PIIX registers to a single header file,
like there is one already for Q35, and make the naming more
consistent.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
10 years agoMove cdemu call interface and disk_ret helper code to disk.c.
Kevin O'Connor [Sat, 10 May 2014 19:51:40 +0000 (15:51 -0400)]
Move cdemu call interface and disk_ret helper code to disk.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agocdemu: store internal cdemu fields in standard "el-torito" spec format.
Kevin O'Connor [Sat, 10 May 2014 05:20:46 +0000 (01:20 -0400)]
cdemu: store internal cdemu fields in standard "el-torito" spec format.

Store the fields necessary to export the "el-torito" spec information
directly in an internal copy of the "el-torito" struct.  This
simplifies the interface and obviates the need for an internal home
grown struct with the same info.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoedd: Separate out ATA and virtio specific parts of fill_edd().
Kevin O'Connor [Sat, 10 May 2014 16:46:57 +0000 (12:46 -0400)]
edd: Separate out ATA and virtio specific parts of fill_edd().

This also changes DTYPE_VIRTIO_SCSI drives to report that they are
using a "SCSI" bus instead of an "ATA" bus - it was obviously
incorrect before.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoedd: Use sectors==-1 to detect removable media.
Kevin O'Connor [Sat, 10 May 2014 15:54:48 +0000 (11:54 -0400)]
edd: Use sectors==-1 to detect removable media.

Don't look for DTYPE_ATA_ATAPI to determine if a removable media (such
as a cdrom) is present, instead look for a -1 in the sector count.
This improves the results for cdroms on controllers other than ATA
ATAPI.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoedd: Move EDD get drive parameters (int 1348) logic from disk.c to block.c.
Kevin O'Connor [Sat, 10 May 2014 15:42:22 +0000 (11:42 -0400)]
edd: Move EDD get drive parameters (int 1348) logic from disk.c to block.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoUpdate EFI_COMPATIBILITY16_TABLE to match 0.98 spec update
David Woodhouse [Mon, 2 Jun 2014 13:00:14 +0000 (14:00 +0100)]
Update EFI_COMPATIBILITY16_TABLE to match 0.98 spec update

Unless CONFIG_MALLOC_UPPERMEMORY is turned off, we expect to use the
space between the top of option ROMs and the bottom of our own BIOS code
as a stack. OVMF was previously marking the whole region from 0xC0000 to
0xFFFFF read-only before invoking our Legacy16Boot method. Read-only
stack considered harmful.

Version 0.98 of the CSM spec adds the UmaAddress and UmaSize fields which
allow the CSM to specify a memory region that needs to be writeable, so
provide that information.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
10 years agovgabios: Return from handle_1011() if handler found.
Kevin O'Connor [Wed, 28 May 2014 13:09:05 +0000 (09:09 -0400)]
vgabios: Return from handle_1011() if handler found.

Fix cut-and-paste error in handle_1011() causing spurious debug_stub()
calls when CONFIG_VGA_STDVGA_PORTS is enabled.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agopython3 fixes for vgabios and csm builds. rel-1.7.5
Kevin O'Connor [Thu, 22 May 2014 20:59:16 +0000 (16:59 -0400)]
python3 fixes for vgabios and csm builds.

Avoid using chr() as this produces unicode strings on python3.  Make
sure to only use ord() on slices as the python3 bytearray type returns
an integer on a non-slice array access.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
10 years agoAllow using full io region on q35.
Gerd Hoffmann [Tue, 13 May 2014 12:09:00 +0000 (14:09 +0200)]
Allow using full io region on q35.

If qemu is new enough to support acpi table loading,
then go move pmbase out of the way.  This allows to
use the whole 0x1000 -> 0xffff io address space on q35.
piix has hotplug ports in the 0xa000 -> 0xafff area,
so we can't do the same there.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
10 years agoacpi: remove PORT_ACPI_PM_BASE constant
Gerd Hoffmann [Tue, 13 May 2014 12:01:22 +0000 (14:01 +0200)]
acpi: remove PORT_ACPI_PM_BASE constant

Use the new acpi_pm_base variable instead.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
10 years agosmm: remove code to handle ACPI disable/enable
Paolo Bonzini [Thu, 15 May 2014 11:22:27 +0000 (13:22 +0200)]
smm: remove code to handle ACPI disable/enable

This is handled already in QEMU, no need to do it in SMM.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
10 years agovgabios: Add debug message if x86emu leal check triggers.
Kevin O'Connor [Mon, 12 May 2014 05:26:26 +0000 (01:26 -0400)]
vgabios: Add debug message if x86emu leal check triggers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoacpi: Fix acpi dsdt compile warning. rel-1.7.5-rc1
Kevin O'Connor [Fri, 9 May 2014 13:18:31 +0000 (09:18 -0400)]
acpi: Fix acpi dsdt compile warning.

The _EJ0 method should not return a value.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoFix int 1589 calls when CONFIG_ENTRY_EXTRASTACK is enabled.
Kevin O'Connor [Thu, 8 May 2014 22:32:32 +0000 (18:32 -0400)]
Fix int 1589 calls when CONFIG_ENTRY_EXTRASTACK is enabled.

The int 1589 call is entered in real mode and returns in protected
mode.  However, the code to use the "extra stack" does not support
that.  Fix this by never using the "extra stack" on int 1589 calls.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agobuild: Make sure romlayout.o is recompiled on Kconfig change.
Kevin O'Connor [Thu, 8 May 2014 22:24:17 +0000 (18:24 -0400)]
build: Make sure romlayout.o is recompiled on Kconfig change.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoxhci: Use msleep() instead of mdelay() for port status delay.
Kevin O'Connor [Thu, 8 May 2014 21:59:55 +0000 (17:59 -0400)]
xhci: Use msleep() instead of mdelay() for port status delay.

Use msleep() so that interrupts and other threads can occur during the
delay.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agold: don't hardcode "-melf_i386"
Roger Pau Monne [Wed, 16 Apr 2014 07:14:16 +0000 (09:14 +0200)]
ld: don't hardcode "-melf_i386"

On FreeBSD, the name of the emulation is "-melf_i386_fbsd", so allow
SeaBIOS to fetch the emulation to use from the environment variables.

This allows SeaBIOS to compile on FreeBSD with gcc.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
11 years agoIf an int 1587 call is made from an option rom, stay in bigreal mode.
Kevin O'Connor [Sat, 19 Apr 2014 16:22:22 +0000 (12:22 -0400)]
If an int 1587 call is made from an option rom, stay in bigreal mode.

Modify the int 1587 handler to check if the POST phase is still
running.  If it is, use bigreal mode segment limits so that the caller
remains in bigreal mode when the 1587 handler completes.  This helps
with SeaVGABIOS' use of "direct" framebuffer accesses (an option rom
may attempt to display text during its option rom execution which can
cause SeaVGABIOS to make the int 1587 calls).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoSMBIOS: Check for aggregate tables & entry point in fw_cfg
Gabriel L. Somlo [Wed, 23 Apr 2014 19:04:49 +0000 (15:04 -0400)]
SMBIOS: Check for aggregate tables & entry point in fw_cfg

Check fw_cfg for the presence of an aggregate set of smbios
tables (etc/smbios/smbios-tables) and an entry point structure
(etc/smbios/smbios-anchor), and, if found, use them instead of
generating entries locally.

We ensure the presence of a type 0 (bios information) structure
by generating it locally if necessary, which is expected to be
the common case.

Signed-off-by: Gabriel L. Somlo <somlo@cmu.edu>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
11 years agohw/pci: check if pci2pci bridges implement optional limit registers
Marcel Apfelbaum [Thu, 10 Apr 2014 18:55:22 +0000 (21:55 +0300)]
hw/pci: check if pci2pci bridges implement optional limit registers

<I/O Base Register, I/O Limit Register> pair and
<Prefetchable Memory Base Register, Prefetchable Memory Limit Register> pair
are both optional.
Do not reserve ranges if the above registers are not implemented.

Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
11 years agohw/pci: reserve IO and mem for pci-2-pci bridges with no devices attached
Marcel Apfelbaum [Thu, 10 Apr 2014 18:55:21 +0000 (21:55 +0300)]
hw/pci: reserve IO and mem for pci-2-pci bridges with no devices attached

If a pci-2-pci bridge supports hot-plug functionality but there are no devices
connected to it, reserve IO/mem in order to be able to attach devices
later. Do not waste space, use minimum allowed.

Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
11 years agovgabios: Define PlatformRunningOn to make compile happy.
Kevin O'Connor [Mon, 14 Apr 2014 14:46:34 +0000 (10:46 -0400)]
vgabios: Define PlatformRunningOn to make compile happy.

With CONFIG_COREBOOT=y, CONFIG_QEMU_HARDWARE=y, CONFIG_VGA_COREBOOT=y,
CONFIG_DEBUG_IO=y the compile would break because this variable was
missing.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoFactor out smbios table walking from display_uuid to smbios_next().
Kevin O'Connor [Sat, 12 Apr 2014 15:56:21 +0000 (11:56 -0400)]
Factor out smbios table walking from display_uuid to smbios_next().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoMinor - replace some tab characters that slipped into the code.
Kevin O'Connor [Fri, 11 Apr 2014 16:08:33 +0000 (12:08 -0400)]
Minor - replace some tab characters that slipped into the code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Initial support for coreboot native vga vgabios.
Kevin O'Connor [Tue, 11 Feb 2014 20:34:58 +0000 (15:34 -0500)]
vgabios: Initial support for coreboot native vga vgabios.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agocoreboot: Make coreboot table searching available to other code.
Kevin O'Connor [Tue, 11 Feb 2014 20:33:42 +0000 (15:33 -0500)]
coreboot: Make coreboot table searching available to other code.

Make the coreboot table searching code available to code outside
coreboot.c, and make it runnable from 16bit mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: PMM scan was incorrectly depending on a zero %ds segment.
Kevin O'Connor [Sun, 6 Apr 2014 22:48:39 +0000 (18:48 -0400)]
vgabios: PMM scan was incorrectly depending on a zero %ds segment.

Make sure the PMM scanning code uses the GET_FARVAR macro.  (The
existing code only worked because SeaBIOS happens to call the vgabios
in bigreal mode with %ds == %ss = 0.)  Also, the scan doesn't require
bigreal mode - use accesses relative to the SEG_BIOS segment so that
the scan can work in regular real mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoSet the color attribute when calling vgabios print character.
Kevin O'Connor [Sun, 6 Apr 2014 01:45:27 +0000 (21:45 -0400)]
Set the color attribute when calling vgabios print character.

Set the color attribute in case the SeaBIOS console code is used while
the vgabios is in a graphics mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Add support for manipulating framebuffers in high memory.
Kevin O'Connor [Sat, 5 Apr 2014 21:11:06 +0000 (17:11 -0400)]
vgabios: Add support for manipulating framebuffers in high memory.

Add code for manipulating "direct" style linear RGB framebuffers that
may be in high memory.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Introduce text_address().
Kevin O'Connor [Sun, 6 Apr 2014 02:48:05 +0000 (22:48 -0400)]
vgabios: Introduce text_address().

Factor out code that calculates the text mode address of a given
character.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Rewrite vgafb.c graphics operations to set of 4 standard operators.
Kevin O'Connor [Mon, 24 Mar 2014 16:49:44 +0000 (12:49 -0400)]
vgabios: Rewrite vgafb.c graphics operations to set of 4 standard operators.

The vgabios graphics manipulations can all be implemented on top of 4
basic primitives: read 8 pixels, write 8 pixels, move pixels, and
clear pixels.  Implement these four operators for all the graphics
modes and rewrite the graphics functions in vgafb.c to use them.  This
simplifies the graphics code as the high level logic no longer needs
to be implemented for each graphical framebuffer type.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Split vgafb_scroll() into separate move and clear functions.
Kevin O'Connor [Fri, 21 Mar 2014 01:16:28 +0000 (21:16 -0400)]
vgabios: Split vgafb_scroll() into separate move and clear functions.

Rewrite the low-level scroll code so that it is implemented using two
basic operations: move text and clear text.  This simplifies the
low-level code as it no longer needs to handle up scrolling vs down
scrolling.  Determining the direction of the scroll is now done in the
higher level (vgabios.c) code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Add option to control use of standard VGA IO ports.
Kevin O'Connor [Sun, 9 Feb 2014 16:50:21 +0000 (11:50 -0500)]
vgabios: Add option to control use of standard VGA IO ports.

Add option CONFIG_VGA_STDVGA_PORTS.  When this option is disabled, the
main BIOS code will not attempt to access any of the legacy VGA IO
ports.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoMinor - remove unused includes from pci.c.
Kevin O'Connor [Tue, 8 Apr 2014 00:36:02 +0000 (20:36 -0400)]
Minor - remove unused includes from pci.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoapm: Remove old Bochs mechanism for shutdown/suspend/standby.
Kevin O'Connor [Mon, 7 Apr 2014 21:31:43 +0000 (17:31 -0400)]
apm: Remove old Bochs mechanism for shutdown/suspend/standby.

Remove the old mechanism that used port 0x8900 to send apm signals.
Recent versions of QEMU no longer support this port.  Bochs and QEMU
only ever supported shutdown anyway, and shutdown is already available
via an ACPI mechanism.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoDocument no new changes to pirtable.c, mptable.c, acpi.c, and smbios.c.
Kevin O'Connor [Mon, 7 Apr 2014 20:02:22 +0000 (16:02 -0400)]
Document no new changes to pirtable.c, mptable.c, acpi.c, and smbios.c.

Add a note to the code that generates the pir, mptable, smbios, and
smbios tables that no new changes are expected.  Going forward, it is
expected that if any changes are needed to these bios tables that
SeaBIOS will get the tables passed in from upstream.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoUse biostables.c for copying bios tables even when generating them.
Kevin O'Connor [Mon, 7 Apr 2014 20:35:18 +0000 (16:35 -0400)]
Use biostables.c for copying bios tables even when generating them.

Use the biostables.c copy_pir(), copy_smbios(), copy_acpi_rsdp(), and
copy_mptable() code even when using the legacy bios table generation
code.  This unifies the final bios table deployment code between qemu,
coreboot, and csm.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoMove PirAddr definition from pirtable.c to biostables.c.
Kevin O'Connor [Mon, 7 Apr 2014 19:55:23 +0000 (15:55 -0400)]
Move PirAddr definition from pirtable.c to biostables.c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agosmbios: Move smbios parsing logic from smbios.c to biostables.c.
Kevin O'Connor [Mon, 7 Apr 2014 19:48:12 +0000 (15:48 -0400)]
smbios: Move smbios parsing logic from smbios.c to biostables.c.

After this change, src/fw/smbios.c only contains the legacy code for
generating SMBIOS tables.  This change only contains code movement -
no logic is changed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoacpi: Move acpi parsing logic from acpi.c to biostables.c / paravirt.c.
Kevin O'Connor [Mon, 7 Apr 2014 19:42:04 +0000 (15:42 -0400)]
acpi: Move acpi parsing logic from acpi.c to biostables.c / paravirt.c.

After this change, src/fw/acpi.c only contains the legacy code for
generating ACPI tables.  This change only contains code movement - no
logic is changed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoReplace CONFIG_THREAD_OPTIONROMS with a runtime config setting.
Kevin O'Connor [Mon, 7 Apr 2014 16:15:34 +0000 (12:15 -0400)]
Replace CONFIG_THREAD_OPTIONROMS with a runtime config setting.

Replace the CONFIG_THREAD_OPTIONROMS option with the CBFS (or fw_cfg)
file "etc/threads".  This allows for the "threads during optionrom"
capability to be enabled/disabled without requiring SeaBIOS to be
recompiled.  A value of "2" in this file will enable threads to run
during option rom execution.

This change also allows for all threads to be disabled via the same
runtime config file.  Setting the file to a value of "0" will cause
SeaBIOS to perform all hardware initialization serially.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoMinor - fix some typos in comments.
Kevin O'Connor [Sat, 5 Apr 2014 13:11:45 +0000 (09:11 -0400)]
Minor - fix some typos in comments.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agousb: Only disable HID devices if both USB_MOUSE and USB_KEYBOARD are off.
Kevin O'Connor [Tue, 1 Apr 2014 03:50:42 +0000 (23:50 -0400)]
usb: Only disable HID devices if both USB_MOUSE and USB_KEYBOARD are off.

Fix typo in code causing both CONFIG_USB_MOUSE and CONFIG_USB_KEYBOARD
to be effectively disabled if either is disabled.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovp_init_simple: enable PCI bus-mastering before relying on DMA.
Eric Northup [Wed, 12 Mar 2014 20:42:36 +0000 (13:42 -0700)]
vp_init_simple: enable PCI bus-mastering before relying on DMA.

An analogous change was made in the LSI scsi driver, commit
7d052575258ad2fc487ca3f9a6b62eff1b767900. Qemu works around guests that don't
correctly enable PCI bus mastering before using virtio queues' DMA (search for
VIRTIO_PCI_BUG_BUS_MASTER / VIRTIO_PCI_FLAG_BUS_MASTER_BUG ), but it'd be
better to be correct.

Signed-off-by: Eric Northup <digitaleric@google.com>
11 years agoinit_virtio_blk, init_virtio_scsi: reset HBA on error
Eric Northup [Wed, 12 Mar 2014 20:42:35 +0000 (13:42 -0700)]
init_virtio_blk, init_virtio_scsi: reset HBA on error

Extend commit 5f2d17d35b2339526f3b3d580b279ea78e406a25: reset on all error
paths, and also for virtio_blk not just virtio_scsi.

Signed-off-by: Eric Northup <digitaleric@google.com>
11 years agosmbios: Default all values to zero.
Kevin O'Connor [Tue, 11 Mar 2014 15:46:42 +0000 (11:46 -0400)]
smbios: Default all values to zero.

Make sure to initialize the entire smbios area to zero so that any
field not explicitly initialized does not have random values.  (It was
found that the memory_error_information_handle field in smbios_type_17
was not being set.)

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovga: rework bar detection, add virtio-vga
Gerd Hoffmann [Thu, 12 Dec 2013 13:55:14 +0000 (14:55 +0100)]
vga: rework bar detection, add virtio-vga

Replace the heuristic which checks the bar 0 attributes to
figure whenever bar 0 or bar 1 has the linear framebuffer
with a vendor id check.

Add support for virtio-vga which uses bar 2 for the linear
framebuffer.

Cc: Dave Airlie <airlied@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
11 years agovgabios: Fix PMM allocation request size.
Kevin O'Connor [Tue, 18 Feb 2014 18:48:09 +0000 (13:48 -0500)]
vgabios: Fix PMM allocation request size.

The size of a PMM memory request is in "paragraphs" so the size needs
to be divided by 16.  Fix the request so only the desired 512 bytes is
allocated instead of 8K.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agocoreboot: Move links file processing to its own function.
Kevin O'Connor [Sun, 16 Feb 2014 20:25:38 +0000 (15:25 -0500)]
coreboot: Move links file processing to its own function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoEnhance nullTrailingSpace() so that it can also skip leading spaces.
Kevin O'Connor [Sat, 1 Feb 2014 00:38:36 +0000 (19:38 -0500)]
Enhance nullTrailingSpace() so that it can also skip leading spaces.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agocoreboot: Add support for a "links" file to have aliases in CBFS.
Kevin O'Connor [Fri, 17 Jan 2014 17:11:49 +0000 (12:11 -0500)]
coreboot: Add support for a "links" file to have aliases in CBFS.

The "links" file is a newline separated list where each line is a
"link name" followed by a "destination name" separated by a space
character.  For each line, SeaBIOS will consider each "link name" to
be a CBFS file that has the contents found in the CBFS file with
"destination name".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Make sure stdvga_list_modes() doesn't overrun the buffer.
Kevin O'Connor [Tue, 11 Feb 2014 22:36:56 +0000 (17:36 -0500)]
vgabios: Make sure stdvga_list_modes() doesn't overrun the buffer.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Refactor write_teletype and write_chars.
Kevin O'Connor [Sat, 8 Feb 2014 21:43:30 +0000 (16:43 -0500)]
vgabios: Refactor write_teletype and write_chars.

Factor out the common code of writing to the screen and advancing the
cursor position to a new function write_char().  Eliminate
write_chars() and then simplify write_teletype().  Also, eliminate the
separate scroll_one() function as it no longer reduces stack space.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Don't interpret TAB character.
Kevin O'Connor [Sat, 8 Feb 2014 17:29:20 +0000 (12:29 -0500)]
vgabios: Don't interpret TAB character.

Several sources document that the Bell, Backspace, newline, and
carriage return characters are interpreted by int 10/0e.  There does
not seem to be any references to that function interpreting tab.  The
original "lgpl vgabios" has code for interpreting tab, but the code is
incorrect.  Finally, tests on an ATI vgabios indicate that tab is not
interpreted.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Attempt to detect old x86emu and force a fault.
Kevin O'Connor [Thu, 6 Feb 2014 03:47:29 +0000 (22:47 -0500)]
vgabios: Attempt to detect old x86emu and force a fault.

Check for cases where the leal instruction does not work.  This
instruction is known to not be emulated properly on old versions of
x86emu.  If a broken version of x86emu is found, force a fault that
x86emu will easily detect.  This should help prevent soft failures
when running old software.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Simplify save/restore mechanism.
Kevin O'Connor [Thu, 6 Feb 2014 01:52:25 +0000 (20:52 -0500)]
vgabios: Simplify save/restore mechanism.

Reorganize the save/restore functions to eliminate some boilerplate
code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Simplify the bios save state area.
Kevin O'Connor [Thu, 6 Feb 2014 00:29:08 +0000 (19:29 -0500)]
vgabios: Simplify the bios save state area.

The structure of the "bios save state area" as returned by
handle_101c() and vbe_104f04() does not follow any particular order.
(And there does not appear to be any documentation that would require
it to follow a particular order.)

So, rearrange the layout of the struct to make save and restore
simpler.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agovgabios: Make sure exported structs use PACKED.
Kevin O'Connor [Wed, 5 Feb 2014 23:49:44 +0000 (18:49 -0500)]
vgabios: Make sure exported structs use PACKED.

Commit ca668640 introduced structs for data returned from the
handle_101b and handle_101c calls.  However, the structs were not
declared as packed and that caused incorrect behavior for
handle_101b.  This was seen to break some old DOS programs (Win3 setup
and DISPLAY.SYS).  This patch adds in the necessary PACKED declaration
to the structs.

The 'struct saveBDAstate' remains un-packed, as it does not appear
that its contents are documented.  (And, its format already differs
from what was in the previous "lgpl vgabios".)

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
11 years agoxhci: Add copyright notice to usb-xhci.c
Kevin O'Connor [Mon, 27 Jan 2014 17:25:35 +0000 (12:25 -0500)]
xhci: Add copyright notice to usb-xhci.c

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>