On 03/22/2012 08:31 PM, Stefan Hajnoczi wrote: > An Ubuntu 9.10 Karmic Koala guest is unable to boot or install due to > missing movdqa emulation: > > kvm_exit: reason EXCEPTION_NMI rip 0x7fef3e025a7b info 7fef3e799000 80000b0e > kvm_page_fault: address 7fef3e799000 error_code f > kvm_emulate_insn: 0:7fef3e025a7b: 66 0f 7f 07 (prot64) > > movdqa %xmm0,(%rdi) > > This patch adds movdqa to the emulator but does not implement #GP when > the memory operand is unaligned to 16 bytes. Alignment checking is > performed in guest mode, so it works most of the time except for corner > cases where the emulator sees the instruction but the guest never > executed it (guest code modified by another vcpu while the emulator is > executing). > > Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxxxxxxxxxx> > --- > This is the patch I tested against the movdqa kvm-unit-test that I submitted. > It still doesn't include #GP on unaligned memory. I'm not sure of the > appropriate place in the emulator where the alignment check should be added. > Perhaps __linearize()? __linearize() is too deep, we've lost track of our 'struct operand' and whether we need to check or not. On the other hand, all other places don't have any knowledge of the segment base. Perhaps we should linearize into a new field of struct operand, instead of on the fly. Patch itself is fine, will soon see mmx movq to complement it. -- error compiling committee.c: too many arguments to function -- 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