1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2012 - Virtual Open Systems and Columbia University 4 * Author: Christoffer Dall <c.dall@virtualopensystems.com> 5 */ 6 7 #ifndef __ARM64_KVM_MMIO_H__ 8 #define __ARM64_KVM_MMIO_H__ 9 10 #include <linux/kvm_host.h> 11 #include <asm/kvm_arm.h> 12 13 /* 14 * This is annoying. The mmio code requires this, even if we don't 15 * need any decoding. To be fixed. 16 */ 17 struct kvm_decode { 18 unsigned long rt; 19 bool sign_extend; 20 }; 21 22 void kvm_mmio_write_buf(void *buf, unsigned int len, unsigned long data); 23 unsigned long kvm_mmio_read_buf(const void *buf, unsigned int len); 24 25 int kvm_handle_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run); 26 int io_mem_abort(struct kvm_vcpu *vcpu, struct kvm_run *run, 27 phys_addr_t fault_ipa); 28 29 #endif /* __ARM64_KVM_MMIO_H__ */ 30