From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Lutomirski Subject: Re: [PATCH] xen/x86: Adjust stack pointer in xen_sysexit Date: Fri, 13 Nov 2015 15:26:04 -0800 Message-ID: References: <1447456706-24347-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1447456706-24347-1-git-send-email-boris.ostrovsky@oracle.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: Boris Ostrovsky Cc: "linux-kernel@vger.kernel.org" , xen-devel , David Vrabel , Andrew Lutomirski List-Id: xen-devel@lists.xenproject.org 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. --Andy