From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Raj, Ashok" Subject: Re: [PATCH v3 0/4] KVM: Expose speculation control feature to guests Date: Tue, 30 Jan 2018 15:48:22 -0800 Message-ID: <20180130234822.GA62797@otc-nc-03> References: <1517271028-15916-1-git-send-email-karahmed@amazon.de> <1517302830.18619.78.camel@infradead.org> <6b7db789-9cc1-1b4d-9209-8d082e0d8def@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: David Woodhouse , KarimAllah Ahmed , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org, Andi Kleen , Andrea Arcangeli , Andy Lutomirski , Arjan van de Ven , Asit Mallick , Borislav Petkov , Dan Williams , Dave Hansen , Greg Kroah-Hartman , "H . Peter Anvin" , Ingo Molnar , Janakarajan Natarajan , Joerg Roedel , Jun Nakajima , Laura Abbott , Linus Torvalds Return-path: Content-Disposition: inline In-Reply-To: <6b7db789-9cc1-1b4d-9209-8d082e0d8def@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Tue, Jan 30, 2018 at 06:36:20PM -0500, Paolo Bonzini wrote: > On 30/01/2018 04:00, David Woodhouse wrote: > > I believe Ashok sent you a change which made us do IBPB on *every* > > vmexit; I don't think we need that. It's currently done in vcpu_load() > > which means we'll definitely have done it between running one vCPU and > > the next, and when vCPUs are pinned we basically never need to do it. > > > > We know that VMM (e.g. qemu) userspace could be vulnerable to attacks > > from guest ring 3, because there is no flush between the vmexit and the > > host kernel "returning" to the userspace thread. Doing a full IBPB on > > *every* vmexit would protect from that, but it's overkill. If that's > > the reason, let's come up with something better. > > Certainly not every vmexit! But doing it on every userspace vmexit and > every sched_out would not be *that* bad. Right.. agreed. We discussed the different scenarios that doing IBPB on VMexit would help, and decided its really not required on every exit. One obvious case is when there is a VMexit and return back to Qemu process (witout a real context switch) do we need that to be protected from any poisoned BTB from guest? If Qemu is protected by !dumpable/retpoline that should give that gaurantee. We do VM->VM IBPB at vmload() time that should provide that gaurantee. Cheers, Ashok > > We try really hard to avoid userspace vmexits for everything remotely > critical to performance (the main exception that's left is the PMTIMER > I/O port, that Windows likes to access quite a lot), so they shouldn't > happen that often.