On 05.04.2011, at 10:59, Dushyant Bansal wrote: > Hi all, > > I understand that in order to improve performance by reducing vm exits, > kvm uses one shared page between kvm and guest. Now, guest tells the host to > map the magic page to '-4096'. > > How does kvm make sure that guest will not use this address ( -4096) for > other purpose? > > Then, guest itself patches its kernel. > I am trying to patch guest from host. So far, I have tried to patch MFMSR > instruction. Patching is done when kvm tries to emulate MFMSR. Mechanism used > to generate new instruction is same as used by guest in > "arch/powerpc/kernel/kvm.c" > > --- a/arch/powerpc/kvm/book3s_emulate.c > +++ b/arch/powerpc/kvm/book3s_emulate.c > @@ -88,6 +88,23 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct > kvm_vcpu *vcpu, > case OP_31_XOP_MFMSR: > kvmppc_set_gpr(vcpu, get_rt(inst), > vcpu->arch.shared->msr); > + > + pc = kvmppc_get_pc(vcpu); > + > + //if pte.may_write==false then, kvmppc_st will not > work > + kvmppc_xlate(vcpu,pc,false, &pte); > + pte.may_write=true;
The pte struct here is write-only from xlate's point of view. Any modification to it doesn't get reflected to the real translation layer. But your guess is good, I'd also assume that you're hitting a read-only page. Alex -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
