From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pasi =?iso-8859-1?Q?K=E4rkk=E4inen?= Subject: Re: status of PV drivers in Xen 4.0 Date: Mon, 12 Apr 2010 19:51:32 +0300 Message-ID: <20100412165132.GC1878@reaktio.net> References: <4BB11551.5010707@inria.fr> <20100330060411.GT1878@reaktio.net> <4BBA14E6.70208@inria.fr> <20100410125850.GH1878@reaktio.net> <4BC3039C.8090602@inria.fr> <20100412155035.GZ1878@reaktio.net> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Andrew Lyon Cc: Guillaume Rousse , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org 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 enab= le > >> 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 defau= lt > >> config file) > >> make mrproper > >> cd ../linux-2.6.31-xen-r14-obj/ > >> make -C /usr/src/linux-2.6.31-xen-r14 menuconfig > >> O=3D/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=3D/usr/src/linux-2.6.31-xen-r14-obj/ > >> > >> Now change to wherever you put the unmodified_drivers/linux-2.6/: > >> > >> export XL=3D/usr/src/linux-2.6.31-xen-r14 > >> export XEN=3D/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 use= d > >> 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=3D$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 head= er > >> 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 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0Size =A0Used by > >> xen_vnif =A0 =A0 =A0 =A0 =A0 =A0 =A0 28288 =A00 > >> xen_balloon =A0 =A0 =A0 =A0 =A0 =A014496 =A01 xen_vnif > >> xen_vbd =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A019084 =A03 > >> xen_platform_pci =A0 =A0 =A0 78808 =A03 xen_vnif,xen_balloon,xen_vbd= ,[permanent] > >> > >> I'm not sure where to go next with this but I hope this info is usef= ul. > >> > > > > 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? >=20 > 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: >=20 > http://download.opensuse.org/factory/repo/src-oss/suse/src/xen-4.0.0_20= 978_01-1.4.src.rpm >=20 > So the same process could be followed using that, I'm going to give it > a try tomorrow. >=20 Ok. > > > > If there are some patches, those should be upstreamed to Xen. >=20 > 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. >=20 Actually there is nowadays.. :) http://xenbits.xen.org/XCP/linux-2.6.27.pq.hg (The kernel tree used by XCP/XenServer/XCI.) -- Pasi