From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750925AbdE3PNH (ORCPT ); Tue, 30 May 2017 11:13:07 -0400 Received: from mail-wm0-f52.google.com ([74.125.82.52]:37112 "EHLO mail-wm0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750720AbdE3PNF (ORCPT ); Tue, 30 May 2017 11:13:05 -0400 Subject: Re: [RFC] KVM: SVM: do not drop VMCB CPL to 0 if SS is not present To: Roman Penyaev , Mikhail Sennikovskii , Gleb Natapov , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Andy Lutomirski References: From: Paolo Bonzini Message-ID: Date: Tue, 30 May 2017 17:13:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 19/05/2017 18:14, Roman Penyaev wrote: > > 1. Simple one, KVM SVM side, which makes sure that CPL is not updated > if segment is unusable: > > --- a/arch/x86/kvm/svm.c > +++ b/arch/x86/kvm/svm.c > @@ -1549,7 +1549,7 @@ static void svm_set_segment(struct kvm_vcpu *vcpu, > * forces SS.DPL to 3 on sysret, so we ignore that case; fixing it > * would entail passing the CPL to userspace and back. > */ > - if (seg == VCPU_SREG_SS) > + if (seg == VCPU_SREG_SS && !var->unusable) > svm->vmcb->save.cpl = (s->attrib >> > SVM_SELECTOR_DPL_SHIFT) & 3; Based on the discussion between you and Andy, my understanding is that it would not be enough to ensure that the attributes are preserved across a roundtrip through KVM_GET_SEGMENT and KVM_SET_SEGMENT. We need a workaround in the hypervisor if we don't want to pass the CPL to userspace and back. Maybe if 1) in 64-bit mode 2) SS.P=0 3) SS selector != 0, then the CPL can be taken from SS.RPL? Thanks, Paolo