|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 6/9] xen/multicall: Rework arch multicall handling
On 03/08/16 16:02, Jan Beulich wrote:
>>>> On 18.07.16 at 11:51, <andrew.cooper3@xxxxxxxxxx> wrote:
>> --- a/xen/arch/x86/hypercall.c
>> +++ b/xen/arch/x86/hypercall.c
>> @@ -338,6 +338,34 @@ long pv_hypercall(struct cpu_user_regs *regs)
>> return ret;
>> }
>>
>> +void arch_do_multicall_call(struct mc_state *state)
>> +{
>> + if ( !is_pv_32bit_vcpu(current) )
>> + {
>> + struct multicall_entry *call = &state->call;
>> +
>> + if ( (call->op < NR_hypercalls) && hypercall_table[call->op] )
>> + call->result = hypercall_table[call->op](
>> + call->args[0], call->args[1], call->args[2],
>> + call->args[3], call->args[4], call->args[5]);
>> + else
>> + call->result = -ENOSYS;
>> + }
>> +#ifdef CONFIG_COMPAT
>> + else
>> + {
>> + struct compat_multicall_entry *call = &state->compat_call;
>> +
>> + if ( (call->op < NR_hypercalls) && compat_hypercall_table[call->op]
>> )
> Why two distinct checks here when pv_hypercall() does just one
> outside the if/else? With them folded (or if there is a good reason),
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
> with one more remark:
multicall_entry and compat_multicall_entry are different. call->op
lives at the same point in the union, but the field is a different width.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |