[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.