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] PRIVCMD in HVM DomU

On Tue, 2011-06-21 at 16:53 +0100, Srujan Kotikela wrote:
> Hi,
> 
> I am using 2.6.18 kernel. I am going to try with a newer kernel (>=
> 2.6.36.7). 

I'm not sure, but I don't think the privcmd stuff works from HVM domU in
that kernel. Or at least I'd be very surprised if it did.

> 
> Meanwhile I was looking at the following code in
> tools/firmware/hvmloader/hypercall.h
> 
> 44 #define _hypercall0(type, name)                                         \
> 
>  45 ({                                                                      \
>  46         long __res;                                                     \
> 
>  47         asm volatile (                                                  \
>  48                 "call "hypercall_pa" + " STR(__HYPERVISOR_##name * 32)  \
> 
>  49                 : "=a" (__res)                                          \
> 
>  50                 :                                                       \
>  51                 : "memory" );                                           \
> 
>  52         (type)__res;                                                    \
> 
>  53 })
> 
> I have few doubts in the code. 
> 
> 
> The name argument in the above macro referes to the name(string type) of the 
> hypercall like: do_vcpu_op, is it correct?

It is pasted onto "__HYPERVISOR_" (line 48) see
include/xen/interface/xen.h for the definitions of these hypercall
numbers. So it would be just vcpu_op in the example you give.
> 
> What does the type argument refering to? 

Line 52 makes it pretty obvious it is the return type of the hypercall.

Note you should never really be using these macros directly -- they are
used internally as part of the implementation the actual
hypercall-specific functions.

> Should this code be invoked from kernel-space or user-space (if CONFIG_XENFS 
> is enabled).

Only the kernel can make a hypercall. Userspace requires a driver
(privcmd) to allow it to make hypercalls.

Ian.

> 
> --
> Srujan D. Kotikela
> 
> 
> On Tue, Jun 21, 2011 at 9:12 AM, Stefano Stabellini
> <stefano.stabellini@xxxxxxxxxxxxx> wrote:
>         
>         On Mon, 20 Jun 2011, Srujan Kotikela wrote:
>         > Hi,
>         >
>         > I am trying to make a hypercall from a HVM guest. I tried by
>         copying all the xen-libs from Dom0 to DomU. I am getting an
>         > error PRIV_CMD not found (obviously). I have searched online
>         and found installing PV on HVM drivers is a way to go about
>         > it. However, this won't guarantee that I can make all the
>         hypercalls (correct me if I am wrong).
>         >
>         > I am trying to invoke a custom hypercall (done by modifying
>         xen_source in dom0). So, is it not possible to have just the
>         > priv cmd interface in the DomU and invoke a hypercall with
>         xen libraries copied from Dom0 (these libs have my custom
>         > hypercall included)?
>         
>         
>         What kernel version are you using?
>         If you make sure CONFIG_XEN_PVHVM is enabled in your kernel
>         config, you
>         should have all the mechanisms in place in the kernel to issue
>         hypercalls.
>         At that point if you also make sure CONFIG_XENFS is enabled,
>         you should
>         also be able to issue hypercalls from userland.
> 



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

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