Re: [RFC] KVM: x86: emulate movdqa

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 08, 2012 at 04:21:56PM +0000, Stefan Hajnoczi wrote:
> On Sun, Jan 8, 2012 at 10:32 AM, Avi Kivity <avi@xxxxxxxxxx> wrote:
> > On 01/07/2012 12:26 PM, Stefan Hajnoczi wrote:
> >>
> >> movdqa %xmm0,(%rdi)
> >>
> >> This patch adds movdqa to the emulator but does not implement #GP when
> >> the memory operand is unaligned to 16 bytes.  I'm not sure whether
> >> alignment checking can be implemented as an opcode .flag or if it needs
> >> to be done in em_movdqa().
> >
> > It should actually be automatic when the Sse flag is present, since it's
> > the norm for almost all SSE instructions.  There should be a .flag to
> > override it for movdqu.
> 
> When writing a kvm-unit-test for movdqa I found that alignment
> checking happens before the page fault (makes sense).  That means
> misalignment is detected by the CPU while still in guest mode.  The
> emulator never sees the instruction because #GP is raised and handled
> in the guest.
> 
> I also didn't see other instances of alignment checking in the
> emulator (e.g. eflags AC).  I guess the same situation applies there.
> 
> Can you think of a case where we need to perform alignment checking in
> the emulator?
> 
Any instruction can be fed to emulator on smp guest. Make one vcpu
enter emulator by some instruction that does io and replace it by
another instruction on a second vcpu. If replacing will happen before
first vcpu emulates fetch, instruction written by the second vcpu will be
emulated. This is why emulator has to perform all security checks even
if cpu does them before exit. Alignment checking is probably not
security sensitive though.

--
			Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux