On 12.01.2012, at 07:44, Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> wrote: > On Tue, 2012-01-10 at 04:11 +0100, Alexander Graf wrote: >> This is what book3s does: >> >> case EMULATE_FAIL: >> printk(KERN_CRIT "%s: emulation at %lx failed >> (%08x)\n", >> __func__, kvmppc_get_pc(vcpu), >> kvmppc_get_last_inst(vcpu)); >> kvmppc_core_queue_program(vcpu, flags); >> r = RESUME_GUEST; >> >> which also doesn't throttle the printk, but I think injecting a >> program fault into the guest is the most sensible thing to do if we >> don't know what the instruction is supposed to do. Best case we get an >> oops inside the guest telling us what broke :). > > You can also fallback to a slow path that reads the guest TLB, > translates then reads the instruction. Of course you have to be careful > as such a manual translate + read + execute needs to be somewhat > synchronized with a possible TLB invalidation :-) Well we do want to be fast on the default path though. So yes, what you're saying is what book3s does, but as a fallback in case the fast path didn't work. The problem here however is that we don't know if the fast path failed; we oops. > > (MMIO emulation is broken in this regard too btw) Huh? Alex > > Cheers, > Ben. > > -- 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