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: Tue, 17 Nov 2015 11:36:53 -0800 Message-ID: References: <1447456706-24347-1-git-send-email-boris.ostrovsky@oracle.com> <56468D24.8030801@oracle.com> <564A0371.2040104@oracle.com> <20151116195906.GB20137@pd.tnic> <20151116202232.GC20137@pd.tnic> <564A50C3.1000200@zytor.com> <564B3C57.5000002@oracle.com> <564B7C2B.5030901@citrix.com> <564B800B.1060006@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <564B800B.1060006@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: Andrew Cooper Cc: "linux-kernel@vger.kernel.org" , xen-devel , Borislav Petkov , David Vrabel , "H. Peter Anvin" , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org On Tue, Nov 17, 2015 at 11:29 AM, Andrew Cooper wrote: > On 17/11/15 19:16, Andy Lutomirski wrote: >> On Tue, Nov 17, 2015 at 11:12 AM, Andrew Cooper >> wrote: >>> On 17/11/15 18:49, Andy Lutomirski wrote: >>>> On Nov 17, 2015 6:40 AM, "Boris Ostrovsky" wrote: >>>>> On 11/16/2015 04:55 PM, H. Peter Anvin wrote: >>>>>> On 11/16/15 12:22, Borislav Petkov wrote: >>>>>>> Huh, so what's wrong with a jump: >>>>>>> >>>>>>> jmp 1f >>>>>>> swapgs >>>>>>> 1: >>>>>>> >>>>>> What is the point of that jump? >>>>>> >>>>>>>> If it would make you feel better, it could be X86_BUG_XENPV :-p >>>>>>> That doesn't matter - I just don't want to open the flood gates on >>>>>>> pseudo feature bits. >>>>>>> >>>>>>> hpa, what do you think? >>>>>> Pseudo feature bits are fine, we already have plenty of them. They make >>>>>> sense as they let us reuse a lot of infrastructure. >>>>> >>>>> So how about something like this? And then I think we can remove usergs_sysret32 and irq_enable_sysexit pv ops completely as noone will use them (lguest doesn't set them) >>>>> >>>> Looks good to me. Does Xen have any sysexit/sysret32 equivalent to >>>> return to 32-bit user mode? If so, it could be worth trying to wire >>>> it up by patching the jz instead of the test instruction. >>> From the guests point of view, there is only hypercall_iret. >> Doesn't hypercall_iret have flags that ask for different behavior, >> though? (VG_syscall or whatever for the 64-bit case?) > > The one and only flag is VGCF_in_syscall > > Xen has its own logic for choosing between sysretq/sysretl if > VGCF_in_syscall, but will end up on an iret path in all other > circumstances. In that case, a nicer version of this patch could preserve the new sysret-or-iret decision (on 64-bit kernels in the compat path) and use it to set VGCF_in_syscall. This might work considerably better now than it ever would have, since Linux now tries to use sysret32 on *all* 64-bit CPUs, and the way it's structured for compat is just a flag (the testl %eax,%eax thing) that indicates that sysret32 is okay. Anyway, that can be a followup patch. --Andy