From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH 1/1] KVM: SVM: do not zero out segment attributes if segment is unusable or not present Date: Thu, 1 Jun 2017 11:22:00 +0200 Message-ID: <16c1d0ed-2c05-d5e1-4540-b862aed660ab@redhat.com> References: <20170601085503.12852-1-roman.penyaev@profitbricks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: Mikhail Sennikovskii , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , kvm@vger.kernel.org, linux-kernel@vger.kernel.org To: Roman Pen Return-path: In-Reply-To: <20170601085503.12852-1-roman.penyaev@profitbricks.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 01/06/2017 10:55, Roman Pen wrote: > This is a fix for the problem [1], where VMCB.CPL was set to 0 and interrupt > was taken on userspace stack. The root cause lies in the specific AMD CPU > behaviour which manifests itself as unusable segment attributes on SYSRET. > The corresponding work around for the kernel is the following: > > 61f01dd941ba ("x86_64, asm: Work around AMD SYSRET SS descriptor attribute issue") > > In other turn virtualization side treated unusable segment incorrectly and > restored CPL from SS attributes, which were zeroed out few lines above. > > In current patch it is assured only that P bit is cleared in VMCB.save state > and segment attributes are not zeroed out if segment is not presented or is > unusable, therefore CPL can be safely restored from DPL field. > > This is only one part of the fix, since QEMU side should be fixed accordingly > not to zero out attributes on its side. Corresponding patch will follow. > > [1] Message id: CAJrWOzD6Xq==b-zYCDdFLgSRMPM-NkNuTSDFEtX=7MreT45i7Q@mail.gmail.com > > Signed-off-by: Roman Pen > Signed-off-by: Mikhail Sennikovskii > Cc: Paolo Bonzini > Cc: Radim Krčmář > Cc: kvm@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > --- > arch/x86/kvm/svm.c | 24 +++++++++++------------- > 1 file changed, 11 insertions(+), 13 deletions(-) Queued, thanks! Paolo