All of lore.kernel.org
 help / color / mirror / Atom feed
* Regarding domctl hypercall from dom0 kernel...
@ 2012-06-21 21:09 Tapdiya, Ashish
  2012-06-22  8:20 ` Ian Campbell
  0 siblings, 1 reply; 2+ messages in thread
From: Tapdiya, Ashish @ 2012-06-21 21:09 UTC (permalink / raw)
  To: xen-devel

Hi,

I am trying to invoke domctl hypercall (XEN_DOMCTL_SCHEDOP_putinfo) from dom0 kernel. For my research i need to dynamically change the credits for guest domains. Following are my code additions,  

Kernel modifications: 
In /source/arch/x86/include/asm/xen/hypercall.h added

static inline int
HYPERVISOR_domctl(unsigned long arg)
{
        return _hypercall1(int, domctl, arg);
}


In source/include/xen/interface/xen.h added 

#define __HYPERVISOR_domctl               36


added a system call to invoke hypercall from dom0 user space, system call code is as follows

#include <linux/linkage.h>
#include <linux/kernel.h>
#include <asm/xen/hypervisor.h>
#include <asm/xen/hypercall.h>

#ifndef uint64_aligned_t
#define uint64_aligned_t uint64_t
#endif

#define XEN_DOMCTL_INTERFACE_VERSION 0x00000007

/* XEN_DOMCTL_scheduler_op */
/* Scheduler types. */
#define XEN_SCHEDULER_SEDF     4
#define XEN_SCHEDULER_CREDIT   5
#define XEN_SCHEDULER_CREDIT2  6
#define XEN_SCHEDULER_ARINC653 7

/* Set or get info? */
#define XEN_DOMCTL_SCHEDOP_putinfo 0
#define XEN_DOMCTL_SCHEDOP_getinfo 1
struct xen_domctl_scheduler_op {
    uint32_t sched_id;  /* XEN_SCHEDULER_* */
    uint32_t cmd;       /* XEN_DOMCTL_SCHEDOP_* */
    union {
        struct xen_domctl_sched_sedf {
            uint64_aligned_t period;
            uint64_aligned_t slice;
            uint64_aligned_t latency;
            uint32_t extratime;
            uint32_t weight;
        } sedf;
        struct xen_domctl_sched_credit {
            uint16_t weight;
            uint16_t cap;
        } credit;
        struct xen_domctl_sched_credit2 {
            uint16_t weight;
        } credit2;
    } u;
};
typedef struct xen_domctl_scheduler_op xen_domctl_scheduler_op_t;


struct xen_domctl_synced {
    char is_synchronized;
    int sync_done;
    char sync_currently_running;
};
typedef struct xen_domctl_synced xen_domctl_synced_t;

 struct xen_domctl {
        uint32_t cmd;
        #define XEN_DOMCTL_scheduler_op                  16
        #define XEN_DOMCTL_set_synced                    68
        #define XEN_DOMCTL_get_synced                    69
        uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
        domid_t  domain;
        union {
                struct xen_domctl_scheduler_op      scheduler_op;
                struct xen_domctl_synced            synced;

                uint8_t                             pad[128];
        } u;
};
typedef struct xen_domctl xen_domctl_t;

asmlinkage long sys_mycall(int i)
{
        int retval;
        xen_domctl_t dom;

        dom.domain = i;
        dom.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
        dom.cmd = XEN_DOMCTL_scheduler_op;
        dom.u.scheduler_op.sched_id = XEN_SCHEDULER_CREDIT;
        dom.u.scheduler_op.cmd = XEN_DOMCTL_SCHEDOP_putinfo;
        dom.u.scheduler_op.u.credit.weight=128;
        dom.u.scheduler_op.u.credit.cap = 1;
  
        retval = HYPERVISOR_domctl((unsigned long)&dom);
        printk(KERN_DEBUG "XEN_DOMCTL_SCHEDOP_putinfo hypercall returned %d\n", retval);

        return retval;
}



Hypercall returns a -22 (EINVAL) error code.

Any help would be appreciated.

Thanks

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Regarding domctl hypercall from dom0 kernel...
  2012-06-21 21:09 Regarding domctl hypercall from dom0 kernel Tapdiya, Ashish
@ 2012-06-22  8:20 ` Ian Campbell
  0 siblings, 0 replies; 2+ messages in thread
From: Ian Campbell @ 2012-06-22  8:20 UTC (permalink / raw)
  To: Tapdiya, Ashish; +Cc: xen-devel

On Thu, 2012-06-21 at 22:09 +0100, Tapdiya, Ashish wrote:
> added a system call to invoke hypercall from dom0 user space, system
> call code is as follows

Why not just make the hypercall from userspace (via libxenctrl)
directly? All the necessary infrastructure is in place and is known to
work because the toolstack uses it extensively.

domctls are not really supposed to be used from the kernel since they
are not stable across Xen releases.

Ian.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-06-22  8:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-21 21:09 Regarding domctl hypercall from dom0 kernel Tapdiya, Ashish
2012-06-22  8:20 ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.