Nowatzki, Thomas L
2006-Nov-09 14:03 UTC
[Xen-devel] Building unmodified_drivers fails in unstable x64 XEN
Per the instructions in the README I am trying to build the paravirtualized drivers from unmodified_drivers. However, it doesn''t seem to work in the latest unstable XEN version. I am running SLES10 x64 version. Quite possibly I am doing the build incorrectly although it seems quite straight forward: SLESx64:/xen-unstable.hg/unmodified_drivers/linux-2.6 # ./mkbuildtree x86_64 SLESx64:/xen-unstable.hg/unmodified_drivers/linux-2.6 # make -C /usr/src/linux M=$PWD modules make: Entering directory `/usr/src/linux-2.6.16.21-0.8'' Makefile:450: .config: No such file or directory WARNING: Symbol version dump /usr/src/linux-2.6.16.21-0.8/Module.symvers is missing; modules will have no dependencies and modversions. CC [M] /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.o In file included from include/xen/interface/xen.h:439, from include/asm-i386/mach-xen/asm/hypervisor.h:41, from /xen-unstable.hg/unmodified_drivers/linux-2.6/include/asm/hypervisor.h:2 , from /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/block.h:51, from /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:39: include/xen/interface/xen-compat.h:23:2: error: #error "These header files do not support the requested interface version." In file included from /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:44: include/xen/evtchn.h: In function ''notify_remote_via_evtchn'': include/xen/evtchn.h:107: warning: passing argument 1 of ''HYPERVISOR_event_channel_op'' makes integer from pointer without a cast include/xen/evtchn.h:107: error: too few arguments to function ''HYPERVISOR_event_channel_op'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''blkfront_probe'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:91: error: ''XBT_NIL'' undeclared (first use in this function) /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:91: error: (Each undeclared identifier is reported only once /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:91: error: for each function it appears in.) /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''talk_to_backend'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:156: error: storage size of ''xbt'' isn''t known /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:156: warning: unused variable ''xbt'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: At top level: /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:255: warning: ''enum xenbus_state'' declared inside parameter list /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:255: warning: its scope is only this definition or declaration, which is probably not what you want /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:255: error: parameter 2 (''backend_state'') has incomplete type /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''connect'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:311: error: ''XBT_NIL'' undeclared (first use in this function) /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''blkfront_closing'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:369: error: implicit declaration of function ''xenbus_frontend_closed'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''blkif_release'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:457: error: variable ''state'' has initializer but incomplete type /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:457: error: storage size of ''state'' isn''t known /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:457: warning: unused variable ''state'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''xlblk_init'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:857: error: implicit declaration of function ''is_running_on_xen'' make[2]: *** [/xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.o] Error 1 make[1]: *** [/xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront] Error 2 make: *** [_module_/xen-unstable.hg/unmodified_drivers/linux-2.6] Error 2 make: Leaving directory `/usr/src/linux-2.6.16.21-0.8'' SLESx64:/xen-unstable.hg/unmodified_drivers/linux-2.6 # Regards, Tom _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Nowatzki, Thomas L
2006-Nov-09 16:16 UTC
[Xen-devel] Building unmodified_drivers fails in unstable x64 XEN
Per the instructions in the README I am trying to build the paravirtualized drivers from unmodified_drivers. However, it doesn''t seem to work in the latest unstable XEN version. I am running SLES10 x64 version. Quite possibly I am doing the build incorrectly although it seems quite straight forward: SLESx64:/xen-unstable.hg/unmodified_drivers/linux-2.6 # ./mkbuildtree x86_64 SLESx64:/xen-unstable.hg/unmodified_drivers/linux-2.6 # make -C /usr/src/linux M=$PWD modules make: Entering directory `/usr/src/linux-2.6.16.21-0.8'' Makefile:450: .config: No such file or directory WARNING: Symbol version dump /usr/src/linux-2.6.16.21-0.8/Module.symvers is missing; modules will have no dependencies and modversions. CC [M] /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.o In file included from include/xen/interface/xen.h:439, from include/asm-i386/mach-xen/asm/hypervisor.h:41, from /xen-unstable.hg/unmodified_drivers/linux-2.6/include/asm/hypervisor.h:2 , from /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/block.h:51, from /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:39: include/xen/interface/xen-compat.h:23:2: error: #error "These header files do not support the requested interface version." In file included from /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:44: include/xen/evtchn.h: In function ''notify_remote_via_evtchn'': include/xen/evtchn.h:107: warning: passing argument 1 of ''HYPERVISOR_event_channel_op'' makes integer from pointer without a cast include/xen/evtchn.h:107: error: too few arguments to function ''HYPERVISOR_event_channel_op'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''blkfront_probe'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:91: error: ''XBT_NIL'' undeclared (first use in this function) /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:91: error: (Each undeclared identifier is reported only once /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:91: error: for each function it appears in.) /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''talk_to_backend'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:156: error: storage size of ''xbt'' isn''t known /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:156: warning: unused variable ''xbt'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: At top level: /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:255: warning: ''enum xenbus_state'' declared inside parameter list /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:255: warning: its scope is only this definition or declaration, which is probably not what you want /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:255: error: parameter 2 (''backend_state'') has incomplete type /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''connect'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:311: error: ''XBT_NIL'' undeclared (first use in this function) /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''blkfront_closing'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:369: error: implicit declaration of function ''xenbus_frontend_closed'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''blkif_release'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:457: error: variable ''state'' has initializer but incomplete type /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:457: error: storage size of ''state'' isn''t known /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:457: warning: unused variable ''state'' /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c: In function ''xlblk_init'': /xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.c:857: error: implicit declaration of function ''is_running_on_xen'' make[2]: *** [/xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront/blkfront.o] Error 1 make[1]: *** [/xen-unstable.hg/unmodified_drivers/linux-2.6/blkfront] Error 2 make: *** [_module_/xen-unstable.hg/unmodified_drivers/linux-2.6] Error 2 make: Leaving directory `/usr/src/linux-2.6.16.21-0.8'' SLESx64:/xen-unstable.hg/unmodified_drivers/linux-2.6 # Regards, Tom _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Campbell
2006-Nov-13 15:10 UTC
Re: [Xen-devel] Building unmodified_drivers fails in unstable x64 XEN
On Thu, 2006-11-09 at 08:03 -0600, Nowatzki, Thomas L wrote:> Per the instructions in the README I am trying to build the > paravirtualized drivers from unmodified_drivers. However, it doesn''t > seem to work in the latest unstable XEN version. I am running SLES10 > x64 version. Quite possibly I am doing the build incorrectly although > it seems quite straight forward:> include/xen/interface/xen-compat.h:23:2: error: #error "These header > files do not support the requested interface version."I think the problem is that the SLES10 kernel already includes Xen headers (the 3.0.2 version I guess) which are getting mixed up with the headers supplied in the unmodified drivers tree. The drivers want to build against their own versions. Can you run the build with V=1 to check that this is what is happening, i.e. I expect -I/usr/src/foo is before -Iunmodified/.../include Can you also have a look in /usr/src/linux/include/xen/interface/xen-compat.h to see what __XEN_LATEST_INTERFACE_VERSION__ is. I''m not sure what the best solution is, as a work around you could try renaming the include/xen subtree of the kernel source in /usr/src/linux out of the way. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Nowatzki, Thomas L
2006-Nov-14 22:45 UTC
RE: [Xen-devel] Building unmodified_drivers fails in unstable x64XEN
Ian, Thanks. That was basically the issue. I renamed the /usr/src/linux/include/xen subdirectory and I was able to then compile the unmodified drivers. (The filename of the PCI .ko file was different than the one identified in the README file.) I assumed the README was a bit out of date. I then copied the four files over to my Linux VM. And did an insmod on the four .ko files. They installed seemingly OK. But when I did my I/O test I got no performance difference whatsoever. Did I miss something or are my expectations incorrect. Tom -----Original Message----- From: Ian Campbell [mailto:Ian.Campbell@XenSource.com] Sent: Monday, November 13, 2006 9:10 AM To: Nowatzki, Thomas L Cc: xen-devel@lists.xensource.com Subject: Re: [Xen-devel] Building unmodified_drivers fails in unstable x64XEN On Thu, 2006-11-09 at 08:03 -0600, Nowatzki, Thomas L wrote:> Per the instructions in the README I am trying to build the > paravirtualized drivers from unmodified_drivers. However, it doesn''t > seem to work in the latest unstable XEN version. I am running SLES10 > x64 version. Quite possibly I am doing the build incorrectly although > it seems quite straight forward:> include/xen/interface/xen-compat.h:23:2: error: #error "These header > files do not support the requested interface version."I think the problem is that the SLES10 kernel already includes Xen headers (the 3.0.2 version I guess) which are getting mixed up with the headers supplied in the unmodified drivers tree. The drivers want to build against their own versions. Can you run the build with V=1 to check that this is what is happening, i.e. I expect -I/usr/src/foo is before -Iunmodified/.../include Can you also have a look in /usr/src/linux/include/xen/interface/xen-compat.h to see what __XEN_LATEST_INTERFACE_VERSION__ is. I''m not sure what the best solution is, as a work around you could try renaming the include/xen subtree of the kernel source in /usr/src/linux out of the way. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Steven Smith
2006-Nov-15 09:08 UTC
Re: [Xen-devel] Building unmodified_drivers fails in unstable x64XEN
> I renamed the /usr/src/linux/include/xen subdirectory and I was able to > then compile the unmodified drivers. (The filename of the PCI .ko file > was different than the one identified in the README file.) I assumed > the README was a bit out of date.It was, and it''s now fixed, thanks.> I then copied the four files over to my Linux VM. And did an insmod on > the four .ko files. They installed seemingly OK. But when I did my I/O > test I got no performance difference whatsoever. Did I miss something > or are my expectations incorrect.You should certainly notice something! One thing which commonly catches people out here is that the PV drivers show up as separate devices to the ioemu ones, and it''s easy to end up accidentally testing the old ioemu devices by mistake. In the case of network devices, switching over is fairly easy. You need to create a new entry in the vifs section of your xm configuration which doesn''t have type=ioemu, restart the domain, and load the PV drivers. You should find you have an extra eth device, and that should perform a lot better than the old one. Block devices are a little more tricky, since they''re configured to appear as specific devices (e.g. hda) and the Linux IDE driver doesn''t like letting go. If you''re just testing, you can create a new block device called, say xvda, in your xm configuration file and use that. The IDE driver won''t see it, and so the PV driver can claim it. Moving your root filesystem to PV devices is a little more involved, and requires you to put the driver in an initrd and set something like hda=noprobe on the kernel command line. Hope that helps, Steven. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Nowatzki, Thomas L
2006-Nov-16 08:16 UTC
RE: [Xen-devel] Building unmodified_drivers fails in unstable x64XEN
Steve, First of all, thank you. I did as you suggested and created a new block device and the PV driver did claim it. However, I am having a lot of trouble with it. Everything I do with the drive is sluggish. For example, making a file system on it is slow. I am using Iometer to test I/O performance with sequential reads. Iometer (dynamo) will eventually recognize the drive but it takes a very long time. It just doesn''t seem right. Maybe I got a debug version??? Regards, Tom -----Original Message----- From: Steven Smith [mailto:sos22@hermes.cam.ac.uk] On Behalf Of Steven Smith Sent: Wednesday, November 15, 2006 3:09 AM To: Nowatzki, Thomas L Cc: Ian Campbell; xen-devel@lists.xensource.com; sos22@srcf.ucam.org Subject: Re: [Xen-devel] Building unmodified_drivers fails in unstable x64XEN> I renamed the /usr/src/linux/include/xen subdirectory and I was ableto> then compile the unmodified drivers. (The filename of the PCI .kofile> was different than the one identified in the README file.) I assumed > the README was a bit out of date.It was, and it''s now fixed, thanks.> I then copied the four files over to my Linux VM. And did an insmod on > the four .ko files. They installed seemingly OK. But when I did myI/O> test I got no performance difference whatsoever. Did I miss something > or are my expectations incorrect.You should certainly notice something! One thing which commonly catches people out here is that the PV drivers show up as separate devices to the ioemu ones, and it''s easy to end up accidentally testing the old ioemu devices by mistake. In the case of network devices, switching over is fairly easy. You need to create a new entry in the vifs section of your xm configuration which doesn''t have type=ioemu, restart the domain, and load the PV drivers. You should find you have an extra eth device, and that should perform a lot better than the old one. Block devices are a little more tricky, since they''re configured to appear as specific devices (e.g. hda) and the Linux IDE driver doesn''t like letting go. If you''re just testing, you can create a new block device called, say xvda, in your xm configuration file and use that. The IDE driver won''t see it, and so the PV driver can claim it. Moving your root filesystem to PV devices is a little more involved, and requires you to put the driver in an initrd and set something like hda=noprobe on the kernel command line. Hope that helps, Steven. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel