|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Problems calling HVMOP_flush_tlbs
Hello xen-devel,
I am using xen 4.2.1 and have tried the following with kernel 3.0.0 and
3.2.1.
I am trying to invoke the HVMOP_flush_tlbs hypercall but have been
unsuccessful. I am basing my call on the functions in in xc_misc.c,
trying to guess what is meant by "@arg must be null" in the comment
where HVMOP_flush_tlbs is defined. What is the correct way to invoke
this hypercall?
If I call it like this, I receive an invalid parameter (EINVAL) error:
struct privcmd_hypercall
{
uint64_t op;
uint64_t arg[5];
} hypercall;
hypercall.op = __HYPERVISOR_hvm_op;
hypercall.arg[0] = HVMOP_flush_tlbs;
hypercall.arg[1] = 0;
ret = do_xen_hypercall(xch, (void*)&hypercall);
If I call it like this, I get function not implemented (ENOSYS), where 3
is a valid domain id:
hypercall.op = __HYPERVISOR_hvm_op;
hypercall.arg[0] = HVMOP_flush_tlbs;
hypercall.arg[1] = 3; /* 3 is the domain whose tlbs should be
flushed */
hypercall.arg[2] = 0;
I have also tried this, mimicking the arg struct for the other HVMOP
calls, which also returns ENOSYS:
typedef struct _arg_t {
domid_t domid;
uint64_t ptr;
} arg_t;
struct privcmd_hypercall {
uint64_t op;
uint64_t arg[5];
} hypercall;
DECLARE_HYPERCALL_BUFFER(arg_t, arg);
arg = xc_hypercall_buffer_alloc(xch, arg, sizeof(*arg));
hypercall.op = __HYPERVISOR_hvm_op;
hypercall.arg[0] = HVMOP_flush_tlbs;
hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(arg);
hypercall.arg[2]= 0;
arg->ptr = 0;
arg->domid = 0; /* or a valid dom id, the results are the same */
Any help is appreciated.
-Tony
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |