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

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



>>> Jeremy Fitzhardinge <jeremy@xxxxxxxx> 14.03.07 17:45 >>>
>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.

Hmm, that doesn't seem to fit all cases. There are hypercalls that
return non-errno-like values, and you shouldn't make any
assumptions about these.

Jan

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