Xen and the Art of Linux/ia64 Virtualization

From: Magenheimer, Dan (HP Labs Fort Collins) <dan.magenheimer_at_hp.com>
Date: 2005-06-30 06:16:34
Most of you probably have already heard of Xen because it
was mentioned prominently (and often incorrectly) in many
of the press releases for Fedora Core 4 and Linux 2.6.12.
In short, Xen is a virtualization technology that allows
a single machine to simultaneously and efficiently run
multiple fully-isolated operating systems -- even different
distributions, different Linux kernel versions, or even
non-Linux operating systems (e.g. FreeBSD).  It can also do
other cool tricks such as live migration from one machine
to another, efficient virtual I/O to hide underlying storage
implementations, and varying how many CPUs are assigned to
the multiple running kernels.  Xen runs today on i386,
is nearing completin on x86_64, and is being ported to
ia64 and ppc.  For more information, see
the Xen web page (google it) or I can try to answer some
general questions in this thread if you prefer.

One principal concept of Xen, called "paravirtualization"
is that a few relatively minor changes to the kernel
can make it perform much more efficiently, in fact
near native performance.  There has already been some
discussion on lkml about how these changes might find their
way into Linux/x86, e.g. with a config option.

I am the principal developer and maintainer of the Xen port
to ia64, which is currently approaching its Beta release, and
currently has contributors from Intel, SGI, CERN, and Bull.
I have also been co-developing "xenlinux" for ia64, the
paravirtualized version of Linux/ia64.  Like Xen/x86, the
required linux changes are small but -- unlike Xen/x86 --
the required changes for Linux/ia64 are entirely archdep;
no common files need to be changed.  Also unlike Xen/x86,
Linux/ia64 with CONFIG_XEN enabled runs successfully on Xen,
but also run natively on hardware (called "transparent
paravirtualization").  This should be appealing to Linux/ia64
distributors as different kernels need not be shipped for
running on Xen or running native.

I would like to submit a series of CONFIG_XEN patches to
this list for review over the next few weeks.  The first
patch will be a few syntactic changes that will make
subsequent patches easier.  For example, there are a number of
places where ia64_getreg(REG_X) is used where abstracting
at a slightly higher level, e.g. with ia64_get_regX() would
make CONFIG_XEN easier.

For preliminary discussion, I have attached the current
patch for existing files for 2.6.11.  There are many other
files required (in arch/ia64/xen, include/asm-ia64/xen, and
drivers/xen) for everything to work, but I'd like to
initiate discussion and review on existing Linux/ia64 files
that would change.  Note that the patch contains many ifdef's;
with a more intrusive patch, most of the ifdef's could/should
be eliminated.  But for now, the ifdef's serve to more clearly
identify what the required changes are.

Having never submitted patches to Linux/ia64 (except a few
minor ones indirectly via David Mosberger), I thought it might
be a good idea to start by soliciting discussion.
So comments please!  After collecting and absorbing input,
I will work on a 2.6.12 patch.

For those who can't wait, a pre-beta version of Xen/ia64 and
the transparently paravirtualized 2.6.11 xenlinux/ia64 can be
found at xen-ia64.bkbits.net (and soon in a repository for
a different SCM).

Dan Magenheimer
HP Labs

To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Received on Wed Jun 29 16:17:16 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:40 EST