On Mon, Apr 12, 2010 at 05:05:37PM +0100, Andrew Lyon wrote:
> >
> >> The unmodified_drivers build process is designed to work with a
> >> separate kernel "objects" folder, so instead of configuring and
> >> compiling your kernel in-place you need to do something like this,
> >> note that while this step uses a xenified kernel you should not enable
> >> Xen in the processor type options, configure the kernel as you would
> >> for the hvm guest.
> >>
> >> cd /usr/src/linux-2.6.31-xen-r14
> >> mkdir ../linux-2.6.31-xen-r14-obj
> >> mv .config ../linux-2.6.31-xen-r14-obj/ (or copy in your usual default
> >> config file)
> >> make mrproper
> >> cd ../linux-2.6.31-xen-r14-obj/
> >> make -C /usr/src/linux-2.6.31-xen-r14 menuconfig
> >> O=/usr/src/linux-2.6.31-xen-r14-obj/
> >> make -C /usr/src/linux-2.6.31-xen-r14 bzImage (or vmlinuz) modules
> >> modules_install O=/usr/src/linux-2.6.31-xen-r14-obj/
> >>
> >> Now change to wherever you put the unmodified_drivers/linux-2.6/:
> >>
> >> export XL=/usr/src/linux-2.6.31-xen-r14
> >> export XEN=/usr/src/linux-2.6.31-xen-r14/include/xen/
> >>
> >> Notice how XEN is set to linux/include/xen ? the Xen documentation
> >> states that it should be set to a folder containing the Xen sources,
> >> I've tried that and it does not work, I think the folder is only used
> >> for header files so they could in theory come from Xen or from a
> >> Xenified kernel, but on openSUSE the kernel include files are used
> >> instead of the Xen ones, and that is the only way that seems to work.
> >>
> >> ./mkbuildtree
> >> Defaulting to this machine's architecture, x86_64, for linking.
> >> This may be overridden on the command line (i386,x86_64,ia64).
> >> Xen tree: /usr/src/linux-2.6.31-xen-r14/include/xen
> >> Linux tree: /usr/src/linux-2.6.31-xen-r14
> >>
> >> You can now compile the drivers:
> >>
> >> make -C /usr/src/linux-2.6.31-xen-r14-obj/ modules M=$PWD
> >>
> >> If you attempt to do the same process without putting the kernel
> >> object files into a separate folder the build will fail, I believe
> >> this is because declarations in the kernel override those in the
> >> unmodified_drivers.
> >>
> >> Likewise the process fails if you try to use a generic kernel source
> >> tree which has not been patched for Xen dom0, in which case the header
> >> files are missing various Xen declarations required for successful
> >> compilation.
> >>
> >> And here is a final proof, Xenified 2.6.31 with all XEN options
> >> disabled, with pv-on-hvm drivers:
> >>
> >> localhost ~ # uname -a
> >> Linux localhost 2.6.31-xen-r14 #2 SMP Mon Apr 12 13:34:27 GMT 2010
> >> x86_64 Intel(R) Xeon(R) CPU E5420 @ 2.50GHz GenuineIntel GNU/Linux
> >> localhost ~ # zgrep XEN /proc/config.gz
> >> # CONFIG_X86_64_XEN is not set
> >> localhost ~ # lsmod
> >> Module Size Used by
> >> xen_vnif 28288 0
> >> xen_balloon 14496 1 xen_vnif
> >> xen_vbd 19084 3
> >> xen_platform_pci 78808 3 xen_vnif,xen_balloon,xen_vbd,[permanent]
> >>
> >> I'm not sure where to go next with this but I hope this info is useful.
> >>
> >
> > Congratulations!
> >
> > This is valuable information, thanks for going through that.
> >
> > Can you reproduce this with Xen 4.0.0 ? ie. does opensuse xen have
> > some patches related to pv-on-hvm drivers?
>
> I believe SLES11SP1 will have Xen 4.0 but I have been unable to find
> anywhere to download srpms, apparently they are on dvd2 but as it is
> still in beta there are no iso images either, however opensuse factory
> does have a Xen 4.0 srpm:
>
> http://download.opensuse.org/factory/repo/src-oss/suse/src/xen-4.0.0_20978_01-1.4.src.rpm
>
> So the same process could be followed using that, I'm going to give it
> a try tomorrow.
>
Ok.
> >
> > If there are some patches, those should be upstreamed to Xen.
>
> Hmm, the patches may simply be there to allow building using the
> /usr/src/linux/include/xen headers instead of /usr/src/xen/ , and as
> xensource does not have a newer "classic" kernel than 2.6.18 why would
> they upsteam them.
>
Actually there is nowadays.. :)
http://xenbits.xen.org/XCP/linux-2.6.27.pq.hg
(The kernel tree used by XCP/XenServer/XCI.)
-- Pasi
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|