booke/bookehv: Add host crit-watchdog exception support
[platform/adaptation/renesas_rcar/renesas_kernel.git] / arch / powerpc / kvm / booke.c
index 86681ee..d25a097 100644 (file)
@@ -612,6 +612,12 @@ static void kvmppc_fill_pt_regs(struct pt_regs *regs)
        regs->link = lr;
 }
 
+/*
+ * For interrupts needed to be handled by host interrupt handlers,
+ * corresponding host handler are called from here in similar way
+ * (but not exact) as they are called from low level handler
+ * (such as from arch/powerpc/kernel/head_fsl_booke.S).
+ */
 static void kvmppc_restart_interrupt(struct kvm_vcpu *vcpu,
                                     unsigned int exit_nr)
 {
@@ -639,6 +645,17 @@ static void kvmppc_restart_interrupt(struct kvm_vcpu *vcpu,
                kvmppc_fill_pt_regs(&regs);
                performance_monitor_exception(&regs);
                break;
+       case BOOKE_INTERRUPT_WATCHDOG:
+               kvmppc_fill_pt_regs(&regs);
+#ifdef CONFIG_BOOKE_WDT
+               WatchdogException(&regs);
+#else
+               unknown_exception(&regs);
+#endif
+               break;
+       case BOOKE_INTERRUPT_CRITICAL:
+               unknown_exception(&regs);
+               break;
        }
 }
 
@@ -683,6 +700,10 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
                r = RESUME_GUEST;
                break;
 
+       case BOOKE_INTERRUPT_WATCHDOG:
+               r = RESUME_GUEST;
+               break;
+
        case BOOKE_INTERRUPT_DOORBELL:
                kvmppc_account_exit(vcpu, DBELL_EXITS);
                r = RESUME_GUEST;