Unlike full virtualization in which the virtual machine provides the same platform interface as running natively on the hardware,paravirtualization requires modification to the guest operating systemto work with the platform interface provided by the hypervisor.

Xen was designed with performance in mind. Calls to the hypervisorare minimized, batched if necessary, and non-critical codepaths are leftunmodified in the case where the privileged instruction can be trapped andemulated by the hypervisor. The Xen API is designed to be OS agnostic andhas had Linux, NetBSD, FreeBSD, Solaris, Plan9 and Netware ported to it.Xen also provides support for running directly on native hardware.

The following patch series provides the minimal support required tolaunch Xen paravirtual guests on standard x86 hardware running the Xenhypervisor. These patches effectively port the Linux kernel to run on theplatform interface provided by Xen. This port is done as an i386 subarch.In the future, we will break this patchset up to place the generalinfrastrcture and subarch bits that may have common users at thebeginning of the series, ripe for picking off and pushing upstream.

With these patches you will be able to launch an unprivileged guestrunning the modified Linux kernel and unmodified userspace. This guestis x86, UP only, runs in shadow translated mode, and has no direct accessto hardware. This simplifies the patchset to the minimum functionalityneeded to support a paravirtualized guest. It's worth noting thata fair amount of this patchset deals with paravirtualizing I/O, notjust CPU-only. The additional missing functionality is primarily aboutfull SMP support, optimizations such as direct writable page tables,and the management interface.

At a high-level, the patches provide the following:

- Kconfig and Makefile changes required to support Xen- subarch changes to allow more platform functionality to be implemented by an i386 subarch- Xen subarch implementation- start of day code for running in the hypervisor provided environment (paging enabled)- basic Xen drivers to provide a fully functional guest

The Xen platform API encapsulates the following types of requirements: