Commit Graph
62 Commits
Author SHA1 Message Date
Keir Fraser da43e50cb3 hvm rombios: Move function calls out of 'post' function section
Through recent additions to the rombios the code section of the post
function has filled up considerably. When I enable the BX_TCGBIOS
compile time option the BIOS crashes since the post section code
(starts at $e05b) spills over into the nmi entry point (starts at
$e2c3). as86 doesn't cause an error when building.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2008-06-27 14:43:29 +01:00
Keir Fraser 9efd150651 rombios: S3 resume fixes.
On AMD cpus, HVM S3 resume was hanging in the bios when trying
to load the x_firmware_waking_vector from absolute
address 0xEA01C (that is, a segment offset greater than 64kB).

This change also now uses 20-bits (instead of 16) from the FACS
standard firmware_waking_vector.

Signed-off-by: Juergen Keil <jk@tools.de>
2008-06-02 16:05:07 +01:00
Keir Fraser 67ea9d3b8c rombios: Remove annoying 3-second boot delay waiting for user to hit
F10 to select boot device. This will be rarely used, and it is
possible to hit F10 before the message is displayed and the keypress
will still register. So in practice it is quite possibel to use this
boot feature reliably without needing a multi-second delay.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-05-23 11:58:08 +01:00
Keir Fraser 232cae0f1c hvm: rombios interface for HVM S3
- add S3 package in ACPI DSDT table. Guest OS will get S3 value from
   this package and write the value to PM1A control register to
   trigger S3 suspend.
 - Add S3 resume logic in rombios post code. the CMOS shutdown register
   is used to indicate if this is a S3 resume.
 - if it is s3 resume, rombios will get wakeup vector from ACPI FACS
   table and jump to wakeup vector. Per ACPI spec, the wakeup vector
   jumping must be the forms CS:IP, in which CS=3D(wakeup vector>>4)
   IP=3D(wakeup vector)&0xF, for example, for vector=3D0x12345,
   CS:IP=3D0x1234:0x5

Note: clobber_entry_point will clobber the post entry, which make S3
resume not work. We will directly jmp to POST Entry if it in S3
Resume path.

Signed-off-by: Yu Ke <ke.yu@intel.com>
Signed-off-by: Ke Liping <liping.ke@intel.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-05-20 14:36:05 +01:00
Keir Fraser 656217ee9c hvmloader: Build with -Werror.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-04-09 13:52:52 +01:00
Keir Fraser 0080a146fc x86 firmware: Consolidate firmware common build rules.
Also avoid overriding global optimisation default (-O1, -O2, etc.)

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-04-02 10:42:27 +01:00
Keir Fraser 6ab58a7ed9 tools build: Fix build after subdir rules cleanups.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-03-25 10:17:22 +00:00
Keir Fraser c3e57fa148 tools/firmware: Use generic subdirs rules.
Signed-off-by: Bastian Blank <waldi@debian.org>
2008-03-25 09:51:03 +00:00
Keir Fraser 79e5898480 hvm bios: Fix EDD pointer in int 13h, fn 48h BIOS call return buffer
I ran into this when I was reviewing what was outstanding to get
NetWare to run fully virtualized.

The BIOS emulator code has the segment and offset backward in the
returned buffer for the int 13h, fn 48h BIOS call.

Signed-off-by: Bruce Rogers <brogers@novell.com>
2008-03-17 11:16:08 +00:00
Keir Fraser 136beff178 hvm, x86: Add QEMU BIOS menu for choosing boot device.
The attached patch implements a mini BIOS menu for choosing a
non-default
boot device. When a guest starts it'll display

   'Press F10 to select boot device'

And wait 3 seconds, before continuing with the normal boot device. If
they press the F10 key, a menu is shown allowing a choice between
floppy, harddisk, cdrom and network (PXE).

I can't take credit for this originally - Jeremy Katz wrote it for
KVM, I merely re-diffed the patch to work against Xen's QEMU/BIOS code
tree. It has been tested in Fedora successfully against 3.1.x and 3.2.x

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
CC: Jeremy Katz <katzj@redhat.com>

If more than one boot device has been selected, the currently selected
number displayed in the menu is wrong.

Signed-off-by: Stefano Stabellini <stefano.stabellini@citrix.com>
2008-01-15 14:22:50 +00:00
Keir Fraser f8dc2a2051 x86, hvm, rombios: INT13 LBA48 support for disks bigger than 128GB.
The new limit should be 2TB.

Signed-off-by: Samuel Thibault <samuel.thibault@citrix.com>
2007-12-27 13:00:40 +00:00
Keir Fraser 53f48ca221 Fix some build system error handling.
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2007-12-20 13:16:21 +00:00
Keir Fraser 3192c29b6a Fix non-portable grep usage. Solaris doesn't have -q option.
Signed-off-by: John Levon <john.levon@sun.com>
2007-11-13 19:26:55 +00:00
Keir Fraser e451db15ef hvm: Clean up firmware compilation warnings.
Signed-off-by: Atsushi SAKAI <sakaia@jp.fujitsu.com>
2007-10-26 09:58:43 +01:00
Keir Fraser d62f502aaa hvm: TCGBIOS fixes
Fix IPL measurement of El Torito CD boot and some eventlog formats.

The TCG BIOS extensions are described here:
https://www.trustedcomputinggroup.org/specs/PCClient/TCG_PCClientImplementationforBIOS_1-20_1-00.pdf

- fix cdrom (El Torito) boot (8.2.5.6 El Torito, p63)
   tcpa_ipl() is modified to support various boot devices.
   move some measurement code into cdrom_boot() function.
- fix EV_IPL (0Dh) event (10.4.1 Event Types, p76)
   eventfield size should be zero
- fix EV_SEPARATOR event (3.2.2 Integrity Collection and Reporting,
   p32)
   change eventfield to -1 (0xFFFFFFFF)  from  "---------------"
- add "Returned INT 19h" event (8.2.3 Logging of Boot Events, p59)
   actually, tcgbios does not call int19h, but we extend this
   tentatively

Signed-off-by: Seiji Munetoh <seiji.munetoh@gmail.com>
2007-10-17 10:00:27 +01:00
Keir Fraser ebe41ed23d hvm: Improve tcgbios code for finding ACPI RSDP.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-09-26 09:14:33 +01:00
Keir Fraser f3f2e4ef69 firmware: fix romimage generation for *bsd
- portability fix in Makefile: mkhex is not bash specific
 - GNU od separates column with one blank, BSD od uses eight blanks.
   Change sed to deal with this.
 - Add a fourth sed to fix a build error on NetBSD

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
2007-09-26 09:10:41 +01:00
kfraser@localhost.localdomain 357caf631c hvm: Add rombios decoding of F11/F12 scancodes in support for
Microsoft's Remote Installation Services, which require F11/F12 keys

Signed-off-by: Ben Guthro <bguthro@virtualron.com>
Signed-off-by: Steve Ofsthun <sofsthun@virtualiron.com>
2007-08-29 15:02:41 +01:00
kfraser@localhost.localdomain ffc3f3c3db hvm: Re-introduce LPT1 device in ACPI tables.
Once the presence of LPT1 is baked into a Windows guest, it gets upset
if it is subsequently removed. Hence we add the 'LTP1' device object
back into the ACPI DSDT, and remove IRQ 7 from the list of IRQs usable
by the PCI-ISA links.

Signed-off-by: Keir Fraser <keir@xensource.com>
2007-07-11 13:49:11 +01:00
Tim Deegan 27cd0dbc62 [HVM] ROMBIOS: reboot when we see Ctrl+Alt+Del
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2007-07-06 11:17:01 +01:00
kfraser@localhost.localdomain ea511d357e tools: Clean up usage of const type qualifier.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-06-12 11:26:51 +01:00
kfraser@localhost.localdomain 56d126ace6 hvmloader: Place SMBIOS tables at 0xE9000. Previous location was lower
than nay native system would place them.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-26 16:45:06 +01:00
kfraser@localhost.localdomain 9d93b013ce hvm rombios: No need for SS prefix when EA base is %bp.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-24 13:49:11 +01:00
kfraser@localhost.localdomain 14b75336fa hvm rombios: Do not screw around with the PIT in the BIOS 32-bit
extensions. mdelay() can more easily be implemented by polling the
DRAM refresh bit in port 0x61. And this does not mess with state that
a guest may be relying on.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-24 12:14:57 +01:00
kfraser@localhost.localdomain 25ae564134 hvm rombios: Fix int15, func 0x86 (udelay).
Was reading argument from wrong stack location with recent versions of
bcc. Doing the access from [bp] rather than [sp] is safer as the
former does not change all the time.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-24 12:13:58 +01:00
Keir Fraser f7ffac81ac hvmloader: Fix ROMBIOS highmem relocation. Only SHF_ALLOC sections
should be relocated. SHT_NOBITS must be handled properly (space
explicitly allocated and zeroed).
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-19 21:06:29 +01:00
Keir Fraser e5baa1aa0c hvmloader: Simplify e820_malloc() interface and improve
implementation. Strip unnecessary sections from the highmem bios
extension elf image.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-19 19:22:12 +01:00
kfraser@localhost.localdomain cdc48dd842 rombios: Simplify memory-size bios calls and derive all results from
the e820 map.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-03-16 18:59:55 +00:00
kfraser@localhost.localdomain e18371883e TCGBIOS fixes and cleanups.
- Add a missing break into the switch statement
- Simplify the code that switches from protected mode into real mode
  by letting it spill eax; this also fixes the case where the stack is
  above 0xffff.
- reformat the source for 80 columns
- remove some comments that were relevant when the TCG extensions were
  direct part of the real-mode Bochs BIOS

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-03-15 10:36:10 +00:00
Tim Deegan a63bbc175b [HVM] Remove debugging printout of BIOS boot vector
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2007-03-12 10:10:42 +00:00
Tim Deegan b67783e2f4 [HVM] Disallow soft resets in the BIOS.
They aren't safe if the guest has brought up PV device drivers.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2007-03-07 13:07:12 +00:00
kfraser@localhost.localdomain 2765521399 Remap PCI-ISA IRQ 6 to IRQ 7. Disable LPT1 by default and remove its
definition from the ACPI DSDT. This avoids conflict with FDC on IRQ6
(it is a bit more likely that someone will want to connect a floppy
image to a guest than it is that anyone will ever care about
parallel-port functionality).
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-02-26 11:53:35 +00:00
kfraser@localhost.localdomain a917e6d478 Disable GCC stack protector for ROMBIOS.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2007-02-15 14:17:00 +00:00
kfraser@localhost.localdomain 09a4bf86cf [TPM] Set tcpa calls in the rombios and other fixes.
This patch places some tcpa calls into the rombios that had previously
not applied anymore or were not set.
Force the reads from MMIO memory locations that the compiler otherwise
optimizes away (-O2) if there was an immediate write to the same
memory location before.
Use #define'd constants wherever possible.
Fix all remaining compiler warnings.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-02-06 23:01:35 +00:00
kaf24@localhost.localdomain 64559068e4 Older versions of as86 (<=0.16.0) require macro arguments to be bracketed.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-01-30 14:20:00 +00:00
kaf24@localhost.localdomain 6696b4ae89 Fix firmware compile on Solaris.
Use $(LD) not ld. Include right headers for x86 ELF bits.

Signed-off-by: John Levon <john.levon@sun.com>
2007-01-28 18:45:04 +00:00
kaf24@localhost.localdomain 23791a54c2 [HVM] Fix some BIOS build warnings.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-01-26 16:56:26 +00:00
kaf24@localhost.localdomain 539c6224a5 [TCGBIOS] Fix some makefile issues.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-01-26 16:46:00 +00:00
kaf24@localhost.localdomain d8a689313b Remove the test functions from HVM highmem 32-bit BIOS.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-01-26 16:39:38 +00:00
kaf24@localhost.localdomain 2d52e184e5 [HVM] Add TCG BIOS extensions to the high memory area along with
some often-used libc utility functions. The TCG extensions are
described here:

https://www.trustedcomputinggroup.org/specs/PCClient/TCG_PCClientImplementationforBIOS_1-20_1-00.pdf

I have tried to keep the patching with rombios.c to a minimum, but
some amount of code needs to be inserted at various locations.

The code is currently deactivated, but can be activated by setting
BX_TCGBIOS to '1'.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-01-26 16:38:32 +00:00
kaf24@localhost.localdomain dd59dfdfb1 This patch adds a 32bit gateway to the Bochs BIOS. The 32 bit code is
compiled with gcc and linked into the hvmloader as a byte-array.
Hvmloader allocates memory (rounded up to next 64kb) from the e820
table
below 4GB, copies and relocates the 32bit code in the allocated area
and
copies a jumptable (located in a section '.biosjumptable') pointing to
the 'exported' functions into the Bochs BIOS's memory area to link the
two code sections. The memory area has been reserved and can be
identified with the signature '___JMPT'.

In the Bochs BIOS only stub functions are provided. These load the
index
of a particular function in the jump table, switch to protected mode
and
call the function in the high memory area.  The stack is prepared such
that functions compiled by gcc can just pick the parameters from the
stack as usual - this means that the 16bit real-mode return address is
taken off the stack. The stub functions should have the same signature
as those in 32bit space. For ABI compatibility reasons parameters
inside
the Bochs BIOS stubs should all be 32bit wide.

This patch includes a test function that calls three gcc-compiled
functions in the high memory area and displays their success status.
Simple tests are done doing multiplication and addition of 32-bit
numbers and reading and modification of a static variable. These
functions test the interface and the relocation code. The test code is
removed in patch part 3.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2007-01-26 16:30:48 +00:00
Tim Deegan ba0f039582 [HVM] Add expansion-ROM boot support again.
Boot info now stored at 0x9ff00; registers saved in HDD load code.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2007-01-08 14:24:30 +00:00
Tim Deegan 5c6059a43d [HVM] Sync the base memory reported by ROMBIOS with the e820 map.
This stops Etherboot relocating itself onto the SMBIOS tables.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2007-01-05 16:28:42 +00:00
Tim Deegan a20cd2c5ce [HVM] Revert cset 13103 for now, as it is causing boot errors.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2006-12-22 22:57:47 +00:00
Tim Deegan 15fbe9ca52 [HVM] Add expansion-ROM boot support to the ROMBIOS
This is rudimentary support for parts of the BIOS Boot Specification,
just enough to use Etherboot ROM images.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
2006-12-20 11:57:53 +00:00
kfraser@localhost.localdomain bbfa22f8c9 [HVM] Move PCI and PCI-ISA bridge setup to hvmloader.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-11-22 17:50:20 +00:00
kfraser@localhost.localdomain d46c9ce0d7 [HVM] Reworked interrupt distribution logic.
TODO:
 1. Fix IO-APIC ID to not conflict with LAPIC IDS.
 2. Fix i8259 device model (seems to work already though!).
 3. Add INTSRC overrides in MPBIOS and ACPI tables so
    that PCI legacy IRQ routing always ends up at an
    IO-APIC input with level trigger. Restricting link
    routing to {5,6,10,11} and setting overrides for all
    four of those would work.

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-11-21 19:22:25 +00:00
kaf24@localhost.localdomain cd93eaf1c7 [HVM] Fix SMBIOS entry point copy destination.
Spotted by Xiaowei Yang <xiaowei.yang@intel.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-19 12:06:36 +01:00
kfraser@localhost.localdomain c724d70275 [HVM] Fix the APM BIOS to ensure that interrupts are enabled when it
executes an idling HLT. This allow us to re-enable the 'shutdown on
HLT-with-interrupts-disabled' heuristic.

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-18 16:20:45 +01:00
kfraser@localhost.localdomain 8919329ca7 Pick up SMBIOS entry point in the ROMBIOS.
Signed-off-by: Andrew D. Ball <aball@us.ibm.com>
2006-08-14 17:38:23 +01:00