From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joel Schopp Subject: Re: [PATCH] x86: svm: don't intercept CR0 TS or MP bit write Date: Tue, 24 Feb 2015 15:25:03 -0600 Message-ID: <54ECEC2F.1090700@amd.com> References: <20150220224445.2875.66846.stgit@joelvmguard2.amd.com> <20150223191729.GA2186@potion.brq.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: Gleb Natapov , Paolo Bonzini , , Joerg Roedel , Borislav Petkov , , David Kaplan To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= Return-path: In-Reply-To: <20150223191729.GA2186@potion.brq.redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org >> - clr_cr_intercept(svm, INTERCEPT_CR0_WRITE); >> } else { >> set_cr_intercept(svm, INTERCEPT_CR0_READ); > (There is no point in checking fpu_active if cr0s are equal.) > >> - set_cr_intercept(svm, INTERCEPT_CR0_WRITE); > KVM uses lazy FPU and the state is undefined before the first access. > We set cr0.ts when !svm->vcpu.fpu_active to detect the first access, but > if we allow the guest to clear cr0.ts without exiting, it can access FPU > with undefined state. Thanks for the valuable feedback. It's apparent I hadn't thought through the interaction with lazy FPU and will need to go back and rethink my approach here.