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