mirror of https://gitee.com/openkylin/linux.git
booke/bookehv: Add host crit-watchdog exception support
Signed-off-by: Bharat Bhushan <bharat.bhushan@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
5cfc2aabcb
commit
6328e593c3
|
@ -34,6 +34,8 @@ extern void __replay_interrupt(unsigned int vector);
|
|||
|
||||
extern void timer_interrupt(struct pt_regs *);
|
||||
extern void performance_monitor_exception(struct pt_regs *regs);
|
||||
extern void WatchdogException(struct pt_regs *regs);
|
||||
extern void unknown_exception(struct pt_regs *regs);
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#include <asm/paca.h>
|
||||
|
|
|
@ -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(®s);
|
||||
performance_monitor_exception(®s);
|
||||
break;
|
||||
case BOOKE_INTERRUPT_WATCHDOG:
|
||||
kvmppc_fill_pt_regs(®s);
|
||||
#ifdef CONFIG_BOOKE_WDT
|
||||
WatchdogException(®s);
|
||||
#else
|
||||
unknown_exception(®s);
|
||||
#endif
|
||||
break;
|
||||
case BOOKE_INTERRUPT_CRITICAL:
|
||||
unknown_exception(®s);
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue