diff options
Diffstat (limited to 'arch/arm/kvm/reset.c')
| -rw-r--r-- | arch/arm/kvm/reset.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/kvm/reset.c b/arch/arm/kvm/reset.c index b80256b554cd..b7840e7aa452 100644 --- a/arch/arm/kvm/reset.c +++ b/arch/arm/kvm/reset.c @@ -27,6 +27,8 @@  #include <asm/kvm_arm.h>  #include <asm/kvm_coproc.h> +#include <kvm/arm_arch_timer.h> +  /******************************************************************************   * Cortex-A15 Reset Values   */ @@ -37,6 +39,11 @@ static struct kvm_regs a15_regs_reset = {  	.usr_regs.ARM_cpsr = SVC_MODE | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT,  }; +static const struct kvm_irq_level a15_vtimer_irq = { +	.irq = 27, +	.level = 1, +}; +  /*******************************************************************************   * Exported reset function @@ -52,6 +59,7 @@ static struct kvm_regs a15_regs_reset = {  int kvm_reset_vcpu(struct kvm_vcpu *vcpu)  {  	struct kvm_regs *cpu_reset; +	const struct kvm_irq_level *cpu_vtimer_irq;  	switch (vcpu->arch.target) {  	case KVM_ARM_TARGET_CORTEX_A15: @@ -59,6 +67,7 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)  			return -EINVAL;  		cpu_reset = &a15_regs_reset;  		vcpu->arch.midr = read_cpuid_id(); +		cpu_vtimer_irq = &a15_vtimer_irq;  		break;  	default:  		return -ENODEV; @@ -70,5 +79,8 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)  	/* Reset CP15 registers */  	kvm_reset_coprocs(vcpu); +	/* Reset arch_timer context */ +	kvm_timer_vcpu_reset(vcpu, cpu_vtimer_irq); +  	return 0;  }  | 
