Hi, I''m trying to communicate some information from an HVM guest to Xen. Passing a pointer to a buffer would suffice and the communication will be single sided. What is the best way to do this? I''ve looked into making a hypercall from an HVM guest and came across this post on this mailing list by Steve Ofsthun: http://lists.xensource.com/archives/html/xen-devel/2006-04/msg00526.html However, I''m unable to get this code to work. I''m running a 64-bit system with the linux-2.6.26 kernel downloaded from kernel.org on top of xen-3.2.2. When I compile, I get compilation errors resulting from hypercall.h. I believe this code is intended for 32 bit guests only as the structure definitions are different fot the pte_t type. The error was: In file included from include/asm/xen/hypervisor.h:53, from /home/ecsezer/kernels/vmcall/./features.c:11: include/asm/xen/hypercall.h: In function ''HYPERVISOR_update_va_mapping'': include/asm/xen/hypercall.h:230: error: ''pte_t'' has no member named ''pte_low'' I tried to modify this code to get rid of compilation errors but a final warning still persists and loading the module causes a seg fault. The warning I get is: CC [M] /home/ecsezer/kernels/hyper/./hypercall.o {standard input}: Assembler messages: {standard input}:149: Warning: indirect call without `*'' So I tried to compile with mercurial repository version linux-2.6.18-xen and that compiles fine. However, due to being a different version, I can''t use the resulting module. I would appreciate any insight as to how to proceed. What could be the problem? Perhaps there is an easier way of passing the information I want without a full blown hypercall interface? Thanks, John _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
> Hi, > > I''m trying to communicate some information from an HVM guest to Xen. > Passing a pointer to a buffer would suffice and the communication will be > single sided. What is the best way to do this? > > I''ve looked into making a hypercall from an HVM guest and came across this > post on this mailing list by Steve Ofsthun: > > http://lists.xensource.com/archives/html/xen-devel/2006-04/msg00526.html > > However, I''m unable to get this code to work. I''m running a 64-bit system > with the linux-2.6.26 kernel downloaded from kernel.org on top of > xen-3.2.2. When I compile, I get compilation errors resulting from > hypercall.h. I believe this code is intended for 32 bit guests only as > the structure definitions are different fot the pte_t type. > > The error was: > In file included from include/asm/xen/hypervisor.h:53, > from /home/ecsezer/kernels/vmcall/./features.c:11: > include/asm/xen/hypercall.h: In function ''HYPERVISOR_update_va_mapping'': > include/asm/xen/hypercall.h:230: error: ''pte_t'' has no member named > ''pte_low'' > > I tried to modify this code to get rid of compilation errors but a final > warning still persists and loading the module causes a seg fault. The > warning I get is: > CC [M] /home/ecsezer/kernels/hyper/./hypercall.o > {standard input}: Assembler messages: > {standard input}:149: Warning: indirect call without `*'' > > So I tried to compile with mercurial repository version linux-2.6.18-xen > and that compiles fine. However, due to being a different version, I > can''t use the resulting module. > > I would appreciate any insight as to how to proceed. What could be the > problem? Perhaps there is an easier way of passing the information I want > without a full blown hypercall interface? > > Thanks, > > John > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >As a side note, when I compile and load the module, I get a seg fault but the module appears when I lsmod. When I try to remove I get the error: ERROR: Module test is in use Regards, John _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Emre Can Sezer wrote:> Hi, > > I''m trying to communicate some information from an HVM guest to Xen. > Passing a pointer to a buffer would suffice and the communication will be > single sided. What is the best way to do this? > > I''ve looked into making a hypercall from an HVM guest and came across this > post on this mailing list by Steve Ofsthun: > > http://lists.xensource.com/archives/html/xen-devel/2006-04/msg00526.htmlThis code is quite old and much has changed since then. You should probably use the pv on hvm driver code as an example these days (xen/unmodified_drivers/linux-2.6/platform-pci). What hypercalls are you trying to use? Note that HVM guests are restricted to a subset of the normal PV guest hypercalls. Steve> > However, I''m unable to get this code to work. I''m running a 64-bit system > with the linux-2.6.26 kernel downloaded from kernel.org on top of > xen-3.2.2. When I compile, I get compilation errors resulting from > hypercall.h. I believe this code is intended for 32 bit guests only as > the structure definitions are different fot the pte_t type. > > The error was: > In file included from include/asm/xen/hypervisor.h:53, > from /home/ecsezer/kernels/vmcall/./features.c:11: > include/asm/xen/hypercall.h: In function ''HYPERVISOR_update_va_mapping'': > include/asm/xen/hypercall.h:230: error: ''pte_t'' has no member named ''pte_low'' > > I tried to modify this code to get rid of compilation errors but a final > warning still persists and loading the module causes a seg fault. The > warning I get is: > CC [M] /home/ecsezer/kernels/hyper/./hypercall.o > {standard input}: Assembler messages: > {standard input}:149: Warning: indirect call without `*'' > > So I tried to compile with mercurial repository version linux-2.6.18-xen > and that compiles fine. However, due to being a different version, I > can''t use the resulting module. > > I would appreciate any insight as to how to proceed. What could be the > problem? Perhaps there is an easier way of passing the information I want > without a full blown hypercall interface? > > Thanks, > > John > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
> Emre Can Sezer wrote: >> Hi, >> >> I''m trying to communicate some information from an HVM guest to Xen.Passing a pointer to a buffer would suffice and the communication will be>> single sided. What is the best way to do this? >> >> I''ve looked into making a hypercall from an HVM guest and came across this >> post on this mailing list by Steve Ofsthun: >> >> http://lists.xensource.com/archives/html/xen-devel/2006-04/msg00526.html > > This code is quite old and much has changed since then. You shouldprobably use the pv on hvm driver code as an example these days> (xen/unmodified_drivers/linux-2.6/platform-pci). > > What hypercalls are you trying to use? Note that HVM guests arerestricted to a subset of the normal PV guest hypercalls.> > Steve >I''m trying to pass some information about the guest kernel to the VMM and thought that passing a single pointer to a buffer would suffice. I plan on introducing a new hypercall for my purposes and update vmx.c in Xen. If there is a better way of doing it please let me know. I put together some code, mainly from platform-pci.c and your previous posts and I was able to capture the hypercall from Xen. I''ve attached the code below. My problem was the xen related header files in the new linux distributions from kernel.org. So instead of including them, I copied the relevant information to the source. I''ve attached the code below. I wonder if this is a bug or if 64-bit systems aren''t supported or if they don''t support xen anymore. The __HYPERCALL_ definitions for example are lacking what you have in xen.h in linux-2.6.18-xen. Although they''ve come up with 2.6.26-5, the changelogs don''t mention anything about xen header files. It would be great if there was a skeleton code that people could use. Perhaps someone would like to take this code and pretty it up? :) Cheers, John>> >> However, I''m unable to get this code to work. I''m running a 64-bit system >> with the linux-2.6.26 kernel downloaded from kernel.org on top ofxen-3.2.2. When I compile, I get compilation errors resulting from hypercall.h. I believe this code is intended for 32 bit guests only as the structure definitions are different fot the pte_t type.>> >> The error was: >> In file included from include/asm/xen/hypervisor.h:53, >> from /home/ecsezer/kernels/vmcall/./features.c:11: >> include/asm/xen/hypercall.h: In function''HYPERVISOR_update_va_mapping'': include/asm/xen/hypercall.h:230: error: ''pte_t'' has no member named ''pte_low''>> >> I tried to modify this code to get rid of compilation errors but afinal warning still persists and loading the module causes a seg fault. The warning I get is:>> CC [M] /home/ecsezer/kernels/hyper/./hypercall.o >> {standard input}: Assembler messages: >> {standard input}:149: Warning: indirect call without `*'' >> >> So I tried to compile with mercurial repository versionlinux-2.6.18-xen and that compiles fine. However, due to being a different version, I can''t use the resulting module.>> >> I would appreciate any insight as to how to proceed. What could be theproblem? Perhaps there is an easier way of passing the information I want>> without a full blown hypercall interface? >> >> Thanks, >> >> John >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel