[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [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). That sounds very promising, I'll look into that. Thanks for your help. John > >> 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 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |