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@xxxxxxxxxxxxxx > > Signed-off-by: Roman Pen <roman.penyaev@xxxxxxxxxxxxxxxx> > Signed-off-by: Mikhail Sennikovskii <mikhail.sennikovskii@xxxxxxxxxxxxxxxx> > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Cc: Radim Krčmář <rkrcmar@xxxxxxxxxx> > Cc: kvm@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > --- > arch/x86/kvm/svm.c | 24 +++++++++++------------- > 1 file changed, 11 insertions(+), 13 deletions(-) Queued, thanks! Paolo