Message ID | cover.1600972918.git.thomas.lendacky@amd.com (mailing list archive) |
---|---|
Headers | show |
Series | INVD intercept change to skip instruction | expand |
On Thu, Sep 24, 2020 at 11:42 AM Tom Lendacky <thomas.lendacky@amd.com> wrote: > > From: Tom Lendacky <thomas.lendacky@amd.com> > > This series updates the INVD intercept support for both SVM and VMX to > skip the instruction rather than emulating it, since emulation of this > instruction is just a NOP. Isn't INVD a serializing instruction, whereas NOP isn't? IIRC, Intel doesn't architect VM-entry or VM-exit as serializing, though they probably are in practice. I'm not sure what AMD's stance on this is.
On 24/09/20 23:20, Jim Mattson wrote: > On Thu, Sep 24, 2020 at 11:42 AM Tom Lendacky <thomas.lendacky@amd.com> wrote: >> >> From: Tom Lendacky <thomas.lendacky@amd.com> >> >> This series updates the INVD intercept support for both SVM and VMX to >> skip the instruction rather than emulating it, since emulation of this >> instruction is just a NOP. > > Isn't INVD a serializing instruction, whereas NOP isn't? IIRC, Intel > doesn't architect VM-entry or VM-exit as serializing, though they > probably are in practice. I'm not sure what AMD's stance on this is. Of course that isn't changed by this patch, though. Queuing both, but a clarification would be useful. The same applies even to CPUID. Paolo
From: Tom Lendacky <thomas.lendacky@amd.com> This series updates the INVD intercept support for both SVM and VMX to skip the instruction rather than emulating it, since emulation of this instruction is just a NOP. For SVM, it requires creating a dedicated INVD intercept routine that invokes kvm_skip_emulated_instruction(). The current support uses the common emulate_on_interception() routine, which does not work for SEV guests, and so a Fixes: tag is added. For VMX, which already has a dedicated INVD intercept routine, it changes kvm_emulate_instruction() into a call to kvm_skip_emulated_instruction(). Tom Lendacky (2): KVM: SVM: Add a dedicated INVD intercept routine KVM: VMX: Do not perform emulation for INVD intercept arch/x86/kvm/svm/svm.c | 8 +++++++- arch/x86/kvm/vmx/vmx.c | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-)