* [Fwd: Re: Hypercall from HVM guest]
@ 2008-09-25 21:49 Steve Ofsthun
2008-09-26 12:34 ` Emre Can Sezer
0 siblings, 1 reply; 2+ messages in thread
From: Steve Ofsthun @ 2008-09-25 21:49 UTC (permalink / raw)
To: xen-devel
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@virtualiron.com>
To: Emre Can Sezer <ecsezer@ncsu.edu>
References: <2895.152.14.92.134.1222354516.squirrel@webmail.ncsu.edu> <48DBDB0C.1050001@virtualiron.com> <3243.152.14.92.134.1222372947.squirrel@webmail.ncsu.edu>
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@lists.xensource.com
>>> http://lists.xensource.com/xen-devel
>>
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [Fwd: Re: Hypercall from HVM guest]
2008-09-25 21:49 [Fwd: Re: Hypercall from HVM guest] Steve Ofsthun
@ 2008-09-26 12:34 ` Emre Can Sezer
0 siblings, 0 replies; 2+ messages in thread
From: Emre Can Sezer @ 2008-09-26 12:34 UTC (permalink / raw)
To: Steve Ofsthun; +Cc: xen-devel
> 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@virtualiron.com>
> To: Emre Can Sezer <ecsezer@ncsu.edu>
> References: <2895.152.14.92.134.1222354516.squirrel@webmail.ncsu.edu>
> <48DBDB0C.1050001@virtualiron.com>
> <3243.152.14.92.134.1222372947.squirrel@webmail.ncsu.edu>
>
> 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@lists.xensource.com
>>>> http://lists.xensource.com/xen-devel
>>>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-09-26 12:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-25 21:49 [Fwd: Re: Hypercall from HVM guest] Steve Ofsthun
2008-09-26 12:34 ` Emre Can Sezer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.