Rename HYPERVISOR_multicall (which performs the multicall hypercall) to
_HYPERVISOR_multicall, and create a new HYPERVISOR_multicall function which invokes _HYPERVISOR_multicall and checks that the individual hypercalls all succeeded.
This commit is contained in:
parent
6324ca614d
commit
1a3b2b87de
@ -234,8 +234,9 @@ HYPERVISOR_memory_op(
|
||||
return _hypercall2(int, memory_op, cmd, arg);
|
||||
}
|
||||
|
||||
int HYPERVISOR_multicall(multicall_entry_t *, int);
|
||||
static inline int
|
||||
HYPERVISOR_multicall(
|
||||
_HYPERVISOR_multicall(
|
||||
void *call_list, int nr_calls)
|
||||
{
|
||||
return _hypercall2(int, multicall, call_list, nr_calls);
|
||||
|
@ -1177,6 +1177,27 @@ trap_info_t trap_table[] = {
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
/* Perform a multicall and check that individual calls succeeded. */
|
||||
int
|
||||
HYPERVISOR_multicall(struct multicall_entry * call_list, int nr_calls)
|
||||
{
|
||||
int ret = 0;
|
||||
int i;
|
||||
|
||||
/* Perform the multicall. */
|
||||
PANIC_IF(_HYPERVISOR_multicall(call_list, nr_calls));
|
||||
|
||||
/* Check the results of individual hypercalls. */
|
||||
for (i = 0; i < nr_calls; i++)
|
||||
if (unlikely(call_list[i].result < 0))
|
||||
ret++;
|
||||
if (unlikely(ret > 0))
|
||||
panic("%d multicall(s) failed: cpu %d\n",
|
||||
ret, smp_processor_id());
|
||||
|
||||
/* If we didn't panic already, everything succeeded. */
|
||||
return (0);
|
||||
}
|
||||
|
||||
/********** CODE WORTH KEEPING ABOVE HERE *****************/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user