Subject: Re: Xen 3.0
To: None <port-xen@NetBSD.org>
From: Jed Davis <jdev@panix.com>
List: port-xen
Date: 10/24/2005 18:13:42
Daniel Carosone <dan@geek.com.au> writes:

> On Sat, Oct 22, 2005 at 11:05:59PM +0100, Matthias Scheler wrote:
>> BTW: what's Xen's status regarding SMP? IIRC Xen 2.0 can manage several
>> CPUs but a single domain can only use one CPU. What about Xen 3.0?
>
> SMP domains is one of the new features in 3.0, yes.
>
> This and several of the others clearly involve some changes for the OS
> port running within the domain.  Has anyone looked into what changes
> are involved updating the port to the Xen 3 'machine' ?

1) More of the hardware initialization and management has been pushed
   onto the Dom0.

2) XenBus/XenStore, which replaces the existing domain control
   interface, as well as a few other things.  See
   http://wiki.xensource.com/xenwiki/XenStoreReference and
   http://wiki.xensource.com/xenwiki/XenBus

3) Adjusting the userland management tools as needed to work with
   NetBSD.

While we're at it (and this "we" will, with any luck, mean "me"), we
might want to replace the kernfs-ioctl thing with [more]
machine-dependent devices, or perhaps some other more stylistically
appropriate interface -- for example, XenStore looks somewhat like
sysctl.

> Right now, because all the Gentoo Xen packages are for Xen 3.0_pre, I
> can't easily run NetBSD and Gentoo domains on the same box - manually
> futzing with linux kernels and patches requires rather more
> nose-holding than I can be bothered with.

It's the same with Fedora, as I found out the hard way (i.e., trying
to boot a Xen 3 domU on a Xen 2 hypervisor).

For what it's worth: Precompiled kernels are available, and the Xen
source distribution has a target for automatically fetching,
unrolling, patching, and building a kernel.  There's not much manual
to it, provided you don't want to change the default configuration or
apply other patches.  If you do, then it gets annoying.

-- 
(let ((C call-with-current-continuation)) (apply (lambda (x y) (x y)) (map
((lambda (r) ((C C) (lambda (s) (r (lambda l (apply (s s) l))))))  (lambda
(f) (lambda (l) (if (null? l) C (lambda (k) (display (car l)) ((f (cdr l))
(C k)))))))    '((#\J #\d #\D #\v #\s) (#\e #\space #\a #\i #\newline)))))