Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752783AbbKNBYA (ORCPT ); Fri, 13 Nov 2015 20:24:00 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:34756 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752174AbbKNBX7 (ORCPT ); Fri, 13 Nov 2015 20:23:59 -0500 Subject: Re: [PATCH] xen/x86: Adjust stack pointer in xen_sysexit To: Andy Lutomirski References: <1447456706-24347-1-git-send-email-boris.ostrovsky@oracle.com> Cc: Konrad Rzeszutek Wilk , David Vrabel , xen-devel , "linux-kernel@vger.kernel.org" , Andrew Lutomirski From: Boris Ostrovsky Message-ID: <56468D24.8030801@oracle.com> Date: Fri, 13 Nov 2015 20:23:48 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: userv0022.oracle.com [156.151.31.74] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1471 Lines: 39 On 11/13/2015 06:26 PM, Andy Lutomirski wrote: > On Fri, Nov 13, 2015 at 3:18 PM, Boris Ostrovsky > wrote: >> After 32-bit syscall rewrite, and specifically after commit 5f310f739b4c >> ("x86/entry/32: Re-implement SYSENTER using the new C path"), the stack >> frame that is passed to xen_sysexit is no longer a "standard" one (i.e. >> it's not pt_regs). >> >> We need to adjust it so that subsequent xen_iret can use it. > I'm wondering if this should be more straightforward: > > movq %rsp, %rdi > call do_fast_syscall_32 > testl %eax, %eax > jz .Lsyscall_32_done > > /* Opportunistic SYSRET */ > sysret32_from_system_call: > XEN_DO_SYSRET32 > > where XEN_DO_SYSRET32 is a simple pv op that, on Xen, jumps to a > variant of Xen's iret path that knows that the fast path is okay. This patch is for 32-bit kernel. I actually haven't looked at compat code (probably because our tests don't try that), I need to do that too. As for XEN_DO_SYSRET32 --- we'd presumably need to have a nop for baremetal otherwise current paravirt op will use native_usergs_sysret32 (for compat code). Which means a new pv_op, I think. -boris -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/