diff options
Diffstat (limited to 'arch/arm/kvm/handle_exit.c')
| -rw-r--r-- | arch/arm/kvm/handle_exit.c | 19 | 
1 files changed, 12 insertions, 7 deletions
diff --git a/arch/arm/kvm/handle_exit.c b/arch/arm/kvm/handle_exit.c index 4e40d1955e35..96af65a30d78 100644 --- a/arch/arm/kvm/handle_exit.c +++ b/arch/arm/kvm/handle_exit.c @@ -79,7 +79,19 @@ static int kvm_handle_wfx(struct kvm_vcpu *vcpu, struct kvm_run *run)  	return 1;  } +static int kvm_handle_unknown_ec(struct kvm_vcpu *vcpu, struct kvm_run *run) +{ +	u32 hsr = kvm_vcpu_get_hsr(vcpu); + +	kvm_pr_unimpl("Unknown exception class: hsr: %#08x\n", +		      hsr); + +	kvm_inject_undefined(vcpu); +	return 1; +} +  static exit_handle_fn arm_exit_handlers[] = { +	[0 ... HSR_EC_MAX]	= kvm_handle_unknown_ec,  	[HSR_EC_WFI]		= kvm_handle_wfx,  	[HSR_EC_CP15_32]	= kvm_handle_cp15_32,  	[HSR_EC_CP15_64]	= kvm_handle_cp15_64, @@ -98,13 +110,6 @@ static exit_handle_fn kvm_get_exit_handler(struct kvm_vcpu *vcpu)  {  	u8 hsr_ec = kvm_vcpu_trap_get_class(vcpu); -	if (hsr_ec >= ARRAY_SIZE(arm_exit_handlers) || -	    !arm_exit_handlers[hsr_ec]) { -		kvm_err("Unknown exception class: hsr: %#08x\n", -			(unsigned int)kvm_vcpu_get_hsr(vcpu)); -		BUG(); -	} -  	return arm_exit_handlers[hsr_ec];  }  | 
