Hi Alex ! After a bit of digging as to why the karmic installer dies, I found out that you don't set the right SRR1 bits when forwarding a program check exception to the guest. I also did a couple of minor fixups (though the s/mtmsr/mtmsrd may not be necessary, I think the clearing of HID5 is). Patch below, haven't had a chance to clean it up into a proper submission yet. I didn't go very much further yet with the karmic graphical installer, but that isn't a surprise. I'll try the text one as soon as I get to d/l the alternate ISO. Cheers, Ben. diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 42037d4..a094ca9 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c @@ -627,6 +627,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, #endif if ((vcpu->arch.last_inst & 0xff0007ff) != (INS_DCBZ & 0xfffffff7)) { + vcpu->arch.msr |= (vcpu->arch.shadow_msr & 0x1f0000ull); kvmppc_book3s_queue_irqprio(vcpu, exit_nr); r = RESUME_GUEST; break; @@ -642,6 +643,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, case EMULATE_FAIL: printk(KERN_CRIT "%s: emulation at %lx failed (%08x)\n", __func__, vcpu->arch.pc, vcpu->arch.last_inst); + vcpu->arch.msr |= (vcpu->arch.shadow_msr & 0x1f0000ull); kvmppc_book3s_queue_irqprio(vcpu, exit_nr); r = RESUME_GUEST; break; diff --git a/arch/powerpc/kvm/book3s_64_interrupts.S b/arch/powerpc/kvm/book3s_64_interrupts.S index 7b55d80..22f2962 100644 --- a/arch/powerpc/kvm/book3s_64_interrupts.S +++ b/arch/powerpc/kvm/book3s_64_interrupts.S @@ -241,8 +241,9 @@ kvmppc_handler_highmem: rldicl. r5, r5, 0, 63 /* CR = ((r5 & 1) == 0) */ beq no_dcbz32_off + li r4,0 mfspr r5,SPRN_HID5 - rldimi r5,r5,6,56 + rldimi r5,r4,6,56 mtspr SPRN_HID5,r5 no_dcbz32_off: diff --git a/arch/powerpc/kvm/book3s_64_slb.S b/arch/powerpc/kvm/book3s_64_slb.S index ecd237a..c574cf7 100644 --- a/arch/powerpc/kvm/book3s_64_slb.S +++ b/arch/powerpc/kvm/book3s_64_slb.S @@ -205,11 +205,11 @@ ld_last_inst: /* 1) enable paging for data */ mfmsr r9 ori r11, r9, MSR_DR /* Enable paging for data */ - mtmsr r11 + mtmsrd r11 /* 2) fetch the instruction */ lwz r0, 0(r10) /* 3) disable paging again */ - mtmsr r9 + mtmsrd r9 no_ld_last_inst: -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html