On 06.09.2013, at 05:54, Paul Mackerras <paulus@xxxxxxxxx> wrote: > From: Michael Ellerman <michael@xxxxxxxxxxxxxx> > > At present this should never happen, since the host kernel sets > HFSCR to allow access to all facilities. It's better to be prepared > to handle it cleanly if it does ever happen, though. > > Signed-off-by: Michael Ellerman <michael@xxxxxxxxxxxxxx> > Signed-off-by: Paul Mackerras <paulus@xxxxxxxxx> > --- > arch/powerpc/include/asm/kvm_asm.h | 1 + > arch/powerpc/kvm/book3s_hv.c | 9 +++++++++ > 2 files changed, 10 insertions(+) > > diff --git a/arch/powerpc/include/asm/kvm_asm.h b/arch/powerpc/include/asm/kvm_asm.h > index 851bac7..f6401eb 100644 > --- a/arch/powerpc/include/asm/kvm_asm.h > +++ b/arch/powerpc/include/asm/kvm_asm.h > @@ -99,6 +99,7 @@ > #define BOOK3S_INTERRUPT_PERFMON 0xf00 > #define BOOK3S_INTERRUPT_ALTIVEC 0xf20 > #define BOOK3S_INTERRUPT_VSX 0xf40 > +#define BOOK3S_INTERRUPT_H_FAC_UNAVAIL 0xf80 > > #define BOOK3S_IRQPRIO_SYSTEM_RESET 0 > #define BOOK3S_IRQPRIO_DATA_SEGMENT 1 > diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c > index 724daa5..da8619e 100644 > --- a/arch/powerpc/kvm/book3s_hv.c > +++ b/arch/powerpc/kvm/book3s_hv.c > @@ -704,6 +704,15 @@ static int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu, > kvmppc_core_queue_program(vcpu, 0x80000); > r = RESUME_GUEST; > break; > + /* > + * This occurs if the guest (kernel or userspace), does something that > + * is prohibited by HFSCR. We just generate a program interrupt to > + * the guest. > + */ > + case BOOK3S_INTERRUPT_H_FAC_UNAVAIL: > + kvmppc_core_queue_program(vcpu, 0x80000); Would be nice to have a name for that bit. Alex > + r = RESUME_GUEST; > + break; > default: > kvmppc_dump_regs(vcpu); > printk(KERN_EMERG "trap=0x%x | pc=0x%lx | msr=0x%llx\n", > -- > 1.8.4.rc3 > -- 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