WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Is it possible to make hypercall from user application d

To: "Daniel Stodden" <stodden@xxxxxxxxxx>
Subject: Re: [Xen-devel] Is it possible to make hypercall from user application directly?
From: weiming <zephyr.zhao@xxxxxxxxx>
Date: Tue, 11 Mar 2008 21:42:23 -0500
Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Thu, 13 Mar 2008 06:23:00 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <1205265056.6230.6.camel@xxxxxxxxxxxxxxxxxxxx>
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/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <add59a3f0803111013n754c2e86v24eefd6b9042acc3@xxxxxxxxxxxxxx> <1205265056.6230.6.camel@xxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
After some study, I got the following understanding. Please correct me if I'm wrong; otherwise, you can just say "correct".

1. In x86_64 mode, xen sets the LSTAR (the EIP of syscall target), and this value keeps constant. This value is code of "syscall_enter" defined in xen/arch/x86/x86_64/entry.S

2.
In ENTRY(syscall_enter)
...
...
testb $TF_kernel_mode, VCPU_thread_flag(%rbx)
jz switch_to_kernel

/*hypercall*/
...

so whenever a syscall is issued, "syscall_enter" checks the context. If it decides that the context is "kernel mode", it will treat the syscall as a  plain "system call" from user applications. So it goes to "jz switch_to_kernel". Otherwise, it will think it's a hypercall issued from guest domains.

3. So an application can't make "hypercalls" directly because it's context is "kernel mode", so it will always be treated as a system call to the guest OS.

Am I right?

Thanks,
Weiming

On Tue, Mar 11, 2008 at 2:50 PM, Daniel Stodden <stodden@xxxxxxxxxx> wrote:
On Tue, 2008-03-11 at 12:13 -0500, weiming wrote:
> Hi,
>
> I implemented my own Hypercall in xen.
>
> Now I wish my application under dom0 could talk to Xen via my
> hypercall.
> Currently, I make a stub in dom0's kernel, which works as a proxy to
> forward the request. So, my application first makes a system call to
> dom0, which then makes hypercall to xen.
>
> Is this design necessary? May I call hypercalls from user application
> under dom0 directly?

No, not directly (didn't we have that syscall conversation recently? ;).

But for dom0-only privileged operations there's /proc/xen/privcmd to
rule them all. See e.g. do_xen_hypercall() in tools/libxc/.

regards,
Daniel

--
Daniel Stodden
LRR     -      Lehrstuhl für Rechnertechnik und Rechnerorganisation
Institut für Informatik der TU München             D-85748 Garching
http://www.lrr.in.tum.de/~stodden         mailto:stodden@xxxxxxxxxx
PGP Fingerprint: F5A4 1575 4C56 E26A 0B33  3D80 457E 82AE B0D8 735B



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel