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

Re: [Xen-devel] [PATCH 1/9] x86/hypercall: Move some of the hvm hypercall infrastructure into hypercall.h



Hi Jan,

On 03/08/16 09:53, Jan Beulich wrote:
On 02.08.16 at 20:43, <sstabellini@xxxxxxxxxx> wrote:
On Tue, 2 Aug 2016, Jan Beulich wrote:
On 02.08.16 at 16:59, <andrew.cooper3@xxxxxxxxxx> wrote:
On 02/08/16 15:54, Jan Beulich wrote:
On 02.08.16 at 16:26, <julien.grall@xxxxxxx> wrote:
On 02/08/16 15:17, Jan Beulich wrote:
Well, I find it quite odd for hypercall argument counts to differ
between arches. I.e. I'd conclude the ABI was mis-specified.
Is it documented somewhere for the x86 code? Looking at Linux, the
privcmd call is only passing 5 arguments on both ARM and x86.
arch-x86/xen-x86_32.h has

 * Hypercall interface:
 *  Input:  %ebx, %ecx, %edx, %esi, %edi, %ebp (arguments 1-6)
 *  Output: %eax

while arch-x86/xen-x86_64.h has

 * Hypercall interface:
 *  Input:  %rdi, %rsi, %rdx, %r10, %r8, %r9 (arguments 1-6)
 *  Output: %rax

The only actual 6 argument hypercall is the v4v hypercall, better known
as __HYPERVISOR_xc_reserved_op at index 39, but that isn't implemented
anywhere upstream.

But it serves as an example what now wouldn't work on ARM.

At the time the arm hypercall ABI was published, it matched the x86
hypercall ABI, which had only 5 hypercall arguments.

The issue is that the x86 hypercall ABI changed, and now is out of sync
with ARM. The faulty commit being:

That's one way of viewing it, but I don't think an appropriate one.
6-argument hypercalls had always been possible on x86, just that
they might not have been documented in the public headers (but
instead only in the actual hypercall implementation).

I would tend to say that anything not documented in the public header is not part of the ABI regardless how it has been implemented before hand.

Anyway, I looked at the hypercall implementation on ARM and it seems that we half support the 6th argument. For instance hypercall_create_continuation is clobbering r5/x5 which is not part of the ABI.

However do_trap_hypercall is only supporting up to 5 argument.

I don't think it would be an issue to support 6 arguments on ARM. Stefano, what do you think?

Regards,

--
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.