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

Re: [Xen-devel] return value checking on multicalls



Jan Beulich wrote:
> Many places currently don't even check HYPERVISOR_multicall()'s return
> value, not to speak of checking the individual status codes. Would it be
> acceptable to add an argument to this function to request to either fold
> all status values into a global success code, or to force BUG_ON() each
> individual status. Or should I rather add a new function with described
> behavior? Or are there other suggestions?
>   

In the xen-pvops tree I made a general-purpose hypercall batching
mechanism, so that there's only one place which needs to check the
multicall return.  Its interface is:

/* Multicalls */
struct multicall_space
{
        struct multicall_entry *mc;
        void *args;
};

/* Allocate room for a multicall and its args */
struct multicall_space xen_mc_entry(size_t args);

/* Flush all pending multicalls */
void xen_mc_flush(void);

/* Issue a multicall if we're not in lazy mode */
static inline void xen_mc_issue(void)
{
        if (xen_get_lazy_mode() == PARAVIRT_LAZY_NONE)
                xen_mc_flush();
}


xen_mc_flush() just BUGs if either the multicall hypercall itself fails,
or any of the constituent hypercalls.

    J

_______________________________________________
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®.