From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 2/3] xen: arm: correctly handle continuations for 64-bit guests Date: Wed, 25 Mar 2015 22:39:25 +0000 Message-ID: <5513391D.9040002@linaro.org> References: <1427297660-26447-2-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1427297660-26447-2-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell , xen-devel@lists.xen.org Cc: tim@xen.org, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org Hi Ian, On 25/03/2015 15:34, Ian Campbell wrote: > The 64-bit ABI is different to 32-bit: > > - uses x16 as the op register rather than r12. > - arguments in x0..x5 and not r0..r5. Using rN here potentially > truncates. > - return value goes in x0, not r0. > > Hypercalls can only be made directly from kernel space, so checking > the domain's size is sufficient. > > The update of regs->pc is duplicated in both halves because the 32-bit > case is going to need fixing to handle Thumb mode (next patch). > > Spotted due to spurious -EFAULT when destroying a domain, due to the > hypercall's pointer argument being truncated. I'm unclear why I am > only seeing this now. Good catch! x16 would still contain the valid operation, because we are (most of the time?) continuing on the same hypercall. So the only issue would be argument truncation. I guess that we don't have big value (i.e > 32 bits) to store. > Signed-off-by: Ian Campbell > --- > I imagine this needs backporting everywhere... Agree for Xen 4.4 and Xen 4.5. Reviewed-by: Julien Grall Regards, -- Julien Grall