aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware/README
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-06-08 09:04:58 +0000
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-06-08 09:04:58 +0000
commit13e63314c410f3d52ae9c94c88c4c7603f9a672a (patch)
treed4fa116ee6244dd90774f3603475501c4672b5e2 /tools/firmware/README
parent40eafaacb1ede52670b2efc9c9a28fd53f07382f (diff)
downloadxen-13e63314c410f3d52ae9c94c88c4c7603f9a672a.tar.gz
xen-13e63314c410f3d52ae9c94c88c4c7603f9a672a.tar.bz2
xen-13e63314c410f3d52ae9c94c88c4c7603f9a672a.zip
bitkeeper revision 1.1691.1.5 (42a6b4baIjkVZx9lVWvoA9RqgAGLMQ)
The following allows you to run unmodified guest operating systems under Xen on VMX (VT) enabled processors. The tree lives under <ROOT>/tools/dfw. Instead of booting a guest kernel, boot vmxloader and specify the disk image in qemurc. Leendert Signed-Off-By: Leendert van Doorn <leendert@watson.ibm.com>
Diffstat (limited to 'tools/firmware/README')
-rw-r--r--tools/firmware/README88
1 files changed, 88 insertions, 0 deletions
diff --git a/tools/firmware/README b/tools/firmware/README
new file mode 100644
index 0000000000..0339fa679f
--- /dev/null
+++ b/tools/firmware/README
@@ -0,0 +1,88 @@
+Domain FirmWare support
+-----------------------
+
+One of the key advantages of full virtualization hardware support (such
+as Intel's VT or AMD's Pacifica) is the ability to run unmodified guest
+operating systems. However, since most OSes rely on BIOS support during
+their early bringup, we need to provide a surrogate ROMBIOS and VGABIOS
+firmware layer.
+
+What's more, we need to support real-mode which is required by
+the firmware and bootstrap loaders. Real-mode support is especially
+challenging for Intel's VMX (VT) enabled CPUs where there is no real-mode
+support for VMX guest partitions. In this case you either have to do full
+emulation (full real-mode emulator; more complete but potentially slower)
+or partial emulation (use the VM8086 extensions, emulate only those
+instructions that are missing; faster, but potentially incomplete). The
+vmxassist code in this subdirectory uses the later approach because it
+is smaller and faster.
+
+The approach is relatively straight forward. Vmxloader contains three
+payloads (rombios, vgabios and vmxassist) and it is bootstrapped as any
+other 32-bit OS. Vmxloader copies its payloads to the addresses below
+and transfers control to vmxassist.
+
+ vgabios VGABIOS (standard and Cirrus).
+ Resides at C000:0000.
+
+ vmxassist VMXAssist VM86 realmode emulator for VMX.
+ Resides at D000:0000.
+
+ rombios ROMBIOS code. Derived from Bochs.
+ Resides at F000:0000
+
+Vmxassist first sets up it own world (GDT, IDT, TR, etc), enables
+VM8086 and then transfers control to F000:FFF0 and executes 16-bit
+code. Unsupported instructions cause a general protection failure at
+which point vmxassist kicks in and emulates the offending instruction.
+Whever the emulated code transitions to 32-bit protected mode, vmxassist
+will go away. Whenever 32-bit protected code transitions to real-mode,
+Xen/VMX will detect this and transfer control to vmxassist.
+
+Most of the vmxassist complexity comes from properly handling the
+real to protected mode and protected to real mode transitions and
+the proper emulation of the segment registers. Even though the Intel
+manual clearly states that you should immediately perform a jmp far
+after a mode transition, many operating systems execute additional
+instructions and some even refer to segment selectors and pop data
+from the stack. Vmxassist contains a number of work arounds for these
+OSes.
+
+
+Acknowledgements
+----------------
+
+The rombios was taken (largely unmodified) from Bochs, which was written
+by Kevin Lawton. The VGABIOS was written by Christophe Bothamy. Arun Sharma,
+Asit Mallick and Nitin Kamble (Intel) provided the E820 patches and lots
+of useful feedback.
+
+
+Contact
+-------
+
+Leendert van Doorn
+IBM T.J. Watson Research Center
+19 Skyline Drive
+Hawthorne, NY 10532
+leendert@watson.ibm.com
+
+
+Tested Operating Systems
+------------------------
+
+Since vmxassist uses partial emulation, it may always miss opcodes
+that are required by a particular OS. The table below lists the OSes
+I have tried. The Install column indicates a full CD/DVD install into
+a VMX partition. The Disk column indicates booting from prefabricated
+disk image.
+
+Operating System Install Disk
+------------------------------------------------------------
+RedHat Enterprise Linux (RHEL3_U5) Yes Yes
+Fedora Code (FC3) (-) Yes
+FreeBSD 5.3 (-) Yes
+MS-DOS 5.0 (-) Yes
+
+(-) not tried yet
+