[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



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

 


Rackspace

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