[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Fwd: Re: [Xen-devel] Hypercall from HVM guest]
Forgot to cc the list ... -------- Original Message -------- Subject: Re: [Xen-devel] Hypercall from HVM guest Date: Thu, 25 Sep 2008 17:37:22 -0400 From: Steve Ofsthun <sofsthun@xxxxxxxxxxxxxxx> To: Emre Can Sezer <ecsezer@xxxxxxxx> References: <2895.152.14.92.134.1222354516.squirrel@xxxxxxxxxxxxxxxx> <48DBDB0C.1050001@xxxxxxxxxxxxxxx> <3243.152.14.92.134.1222372947.squirrel@xxxxxxxxxxxxxxxx> Emre Can Sezer wrote: >> 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 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 >> > > 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. You could probably just add an HVM_PARAM_ for use by get/set_hvm_param interfaces (see for example, set_callback_via() in platform-pci.c). You could avoid adding a brand new hypercall and making it available to HVM guests. This would be handled in the generic HVM code do_hvm_op() in xen/xen/arch/x86/hvm/hvm.c (not the intel specific vmx.c). > 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. The initial Xen support pushed upstream did only support 32-bit. I'm not sure, off the top of my head, what version incorporates the 64-bit stuff. You might want to check the last Xen summit presentations. > 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? :) Perhaps ... Steve > 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 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@xxxxxxxxxxxxxxxxxxx >>> http://lists.xensource.com/xen-devel >> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |