This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Fwd: Re: [Xen-devel] Hypercall from HVM guest]

To: "Steve Ofsthun" <sofsthun@xxxxxxxxxxxxxxx>
Subject: Re: [Fwd: Re: [Xen-devel] Hypercall from HVM guest]
From: "Emre Can Sezer" <ecsezer@xxxxxxxx>
Date: Fri, 26 Sep 2008 08:34:34 -0400 (EDT)
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 26 Sep 2008 05:35:05 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
Importance: Normal
In-reply-to: <48DC0778.5050409@xxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <48DC0778.5050409@xxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: SquirrelMail/1.4.10a
> 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.>
> <48DBDB0C.1050001@xxxxxxxxxxxxxxx>
> <3243.>
> 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.


>> 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

<Prev in Thread] Current Thread [Next in Thread>