diff options
Diffstat (limited to 'virt/kvm/arm/mmio.c')
| -rw-r--r-- | virt/kvm/arm/mmio.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/virt/kvm/arm/mmio.c b/virt/kvm/arm/mmio.c index 6af5c91337f2..70d3b449692c 100644 --- a/virt/kvm/arm/mmio.c +++ b/virt/kvm/arm/mmio.c @@ -167,7 +167,14 @@ int io_mem_abort(struct kvm_vcpu *vcpu, struct kvm_run *run,  		if (ret)  			return ret;  	} else { -		kvm_err("load/store instruction decoding not implemented\n"); +		if (vcpu->kvm->arch.return_nisv_io_abort_to_user) { +			run->exit_reason = KVM_EXIT_ARM_NISV; +			run->arm_nisv.esr_iss = kvm_vcpu_dabt_iss_nisv_sanitized(vcpu); +			run->arm_nisv.fault_ipa = fault_ipa; +			return 0; +		} + +		kvm_pr_unimpl("Data abort outside memslots with no valid syndrome info\n");  		return -ENOSYS;  	}  |