Commit Graph
20 Commits
Author SHA1 Message Date
Jan Beulich 5f2875739b hvmloader: fix SeaBIOS interface
The SeaBIOS ROM image may validly exceed 128k in size, it's only our
interface code that so far assumed that it wouldn't. Remove that
restriction by setting the base address depending on image size.

Add a check to HVM loader so that too big images won't result in silent
guest failure anymore.

Uncomment the intended build-time size check for rombios, moving it
into a function so that it would actually compile.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2013-09-05 11:47:03 +02:00
David Vrabel 82639998a5 Fix emacs local variable block to use correct C style variable.
The emacs variable to set the C style from a local variable block is
c-file-style, not c-set-style.

Signed-off-by: David Vrabel <david.vrabel@citrix.com
2013-02-21 16:12:46 +00:00
Julian Pidancet cf3ee71e8b hvmloader: Move option ROM loading into a separate optionnal file
Make load_rom field in struct bios_config an optionnal callback rather
than a boolean value. It allow BIOS specific code to implement it's
own option ROM loading methods.

Facilities to scan PCI devices, extract an deploy ROMs are moved into
a separate file that can be compiled optionnaly.

Signed-off-by: Julian Pidancet <julian.pidancet@gmail.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2012-02-13 12:50:04 +00:00
Anthony PERARD 3582f58f1d hvmloader: Load DSDT table from parameter
In order to have two different DSDT tables for rombios and SeaBIOS,
this patch introduce a new parameter to acpi_build_tables() which
contain the DSDT table to load.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
2011-10-28 17:17:47 +01:00
Keir Fraser ab6e985fae hvmloader: Move init_vm86_tss() back into common code.
It is not BIOS specific.

Signed-off-by: Keir Fraser <keir@xen.org>
2011-08-09 11:33:40 +01:00
Keir Fraser d31b9a4e40 hvmloader: Formatting cleanups.
Signed-off-by: Keir Fraser <keir@xen.org>
2011-07-25 14:09:41 +01:00
Keir Fraser 62d1e95e70 hvmloader: Replace bios_relocate hook with bios_load hook
Used by OVMF BIOS handler.

Signed-off-by: Bei Guan <gbtju85@gmail.com>
Signed-off-by: Keir Fraser <keir@xen.org>
2011-07-25 13:57:49 +01:00
Keir Fraser 30191ad44f hvmloader: Remove hard tabs from source files.
Signed-off-by: Keir Fraser <keir@xen.org>
2011-07-20 14:52:16 +01:00
Ian Campbell d021c77cb4 hvmloader: reduce unnecessary e820 reservations for SeaBIOS
SeaBIOS will reserve memory in the e820 as necessary, including BIOS
data structures such as the EBDA, any tables it creates or copies into
pleace etc.  Therefore arrange that the memory map provided by
hvmloader to SeaBIOS reserves only things which HVMloader has created.

Since ROMBIOS is more tightly coupled with hvmloader we retain the
ability to reserve BIOS regions in the hvmloader produced e820 and use
that from the ROMBIOS backend.

The code for this could probably have been simpler but the existing
code avoids overlapping e820 areas and so the new code does the same
(many guest OSes sanitize the e820 map to handle this, but I wouldn't
trust that all do, so I didn't take the risk)

For ROMBIOS the resulting e820 map as seen by the guest is the same
except the reserved regions at 0x9e000-0x9fc00,0x9fc00-0xa0000 are
merged into a single region 0x9e000-0xa0000 (Linux guests sanitize the
e820 to look like this anyway).

For SeaBIOS the result is that the lowmem reserved region is from
0x9f000-0xa0000 rather than 0x9e000-0xa0000 which correctly reflects
SeaBIOS's actual usage.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-08 13:40:23 +01:00
Ian Campbell e894fe2367 hvmloader: add code to generate a $PIR table.
Does not replace the table hardcoded in ROMBIOS (it ain't broke) but
is used for SeaBIOS.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:50:16 +01:00
Ian Campbell 0f165d2645 hvmloader: allow the possibility to allocate the size of smbios table
we actually need.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:49:23 +01:00
Ian Campbell c95ba9ebe1 hvmloader: further support for SeaBIOS
Build the various BIOS tables and arrange for them to be passed to
SeaBIOS. We define a simple data structure structure at a known
physical address for this purpose.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:49:03 +01:00
Ian Campbell c25fb1ae7b hvmloader: refactor BIOS info setup
Currently we have ->bios_high_setup, which is called relatively early
and returns a cookie which is passed to ->bios_info_setup which runs
towards the end and creates the BIOS info, incorporating the cookie
which (in the case of ROMBIOS) happens to be the BIOS's high load
address . This is rather ROMBIOS specific.

Refactor to have ->bios_info_setup which is called early and prepares
the bios_info, ->bios_relocate which does any necessary relocation
(updating the BIOS info as necessary) and ->bios_info_finish which
finalises the info (e.g.  by calculating the checksum).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:47:04 +01:00
Ian Campbell 20f9f76007 hvmloader: make SMBIOS initialisation more general.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:45:05 +01:00
Ian Campbell 946863b141 hvmloader: make ACPI initialisation hook more general.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:44:31 +01:00
Ian Campbell 0ea8826c2e hvmloader: call SMP setup from common code again.
Previous refactoring was premature.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:43:52 +01:00
Ian Campbell 2e65685119 hvmloader: setup APICs in a common function again.
Previous refactoring was premature.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:43:29 +01:00
Ian Campbell b39d3fa428 hvmloader: setup PCI bus in a common function again.
Previous refactoring was premature.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:41:42 +01:00
Ian Campbell 1be247c03c hvmloader: allow per-BIOS decision on loading option ROMS
SeaBIOS has functionality to load ROMs from the PCI device directly,
it makes sense to use this when it is available.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2011-06-01 16:39:55 +01:00
Ian Campbell 5f82d0858d tools: support SeaBIOS. Use by default when upstream qemu is configured.
The SeaBIOS integration here is only semi-complete and is targetted at
developers and very early adopters who can be expected to cope with
some rough edges. In particular the user must clone, patch as
necessary and compile SeaBIOS themselves since this patchset does not
cover any of that (in the same way we currently do not integrate
upstream qemu clone+build). Include a big comment to that effect next
to the Config.mk option.

Many of the bios_config callback functions are not yet used by
SeaBIOS.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
2011-04-20 17:13:06 +01:00