WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] Enble 6 argument hypercalls for HVMs

To: "Ross Philipson" <Ross.Philipson@xxxxxxxxxx>, "Keir Fraser" <keir@xxxxxxx>
Subject: Re: [Xen-devel] [PATCH] Enble 6 argument hypercalls for HVMs
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Wed, 15 Dec 2010 10:40:16 +0000
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 15 Dec 2010 02:41:16 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C92E4398.CF2F%keir@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4D08936B02000078000280D3@xxxxxxxxxxxxxxxxxx> <C92E4398.CF2F%keir@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> On 15.12.10 at 11:06, Keir Fraser <keir@xxxxxxx> wrote:
> On 15/12/2010 09:07, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote:
> 
>>>>> On 14.12.10 at 23:16, Ross Philipson <Ross.Philipson@xxxxxxxxxx> wrote:
>>> Enable 6 argument hypercalls for HVMs. The hypercall code handles a sixth
>>> argument in EBP or R9 but the HVM code is not passing the value.
>>> 
>>> Signed-off-by: Ross Philipson <ross.philipson@xxxxxxxxxx>
>> 
>> I'm curious what hypercall there is that takes 6 arguments,
>> particularly on 64-bit (where the maximum so far is 4).
> 
> The v4v hypercalls in XenClient (not as yet submitted upstream) take 6
> arguments. Multicalls also need fixing up for a sixth argument, making
> everything consistent with existing PV hypercall logic.

I would generally take this as an indication that this actually works,
but at least with tracing enabled I can't see how it would on 64-bit
(note the last two reloads):

        call  trace_hypercall
        /* Now restore all the registers that trace_hypercall clobbered */
        movq  UREGS_rax+SHADOW_BYTES(%rsp),%rax   /* Hypercall #  */
        movq  UREGS_rdi+SHADOW_BYTES(%rsp),%rdi   /* Arg 1        */
        movq  UREGS_rsi+SHADOW_BYTES(%rsp),%rsi   /* Arg 2        */
        movq  UREGS_rdx+SHADOW_BYTES(%rsp),%rdx   /* Arg 3        */
        movq  UREGS_r10+SHADOW_BYTES(%rsp),%rcx   /* Arg 4        */
        movq  UREGS_rdi+SHADOW_BYTES(%rsp),%r8    /* Arg 5        */
        movq  UREGS_rbp+SHADOW_BYTES(%rsp),%r9    /* Arg 6        */

Looking at this code also makes me wonder once again whether
it really is a good idea to have a generally not taken forward
branch here.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel