diff options
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/kvm_asm.h | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/kvm_host.h | 18 | ||||
-rw-r--r-- | arch/arm/include/asm/kvm_mmu.h | 9 |
3 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/include/asm/kvm_asm.h b/arch/arm/include/asm/kvm_asm.h index 81324e2eb3f9..f6652f6c5d84 100644 --- a/arch/arm/include/asm/kvm_asm.h +++ b/arch/arm/include/asm/kvm_asm.h | |||
@@ -57,6 +57,7 @@ | |||
57 | #define ARM_EXCEPTION_HVC 7 | 57 | #define ARM_EXCEPTION_HVC 7 |
58 | 58 | ||
59 | #ifndef __ASSEMBLY__ | 59 | #ifndef __ASSEMBLY__ |
60 | struct kvm; | ||
60 | struct kvm_vcpu; | 61 | struct kvm_vcpu; |
61 | 62 | ||
62 | extern char __kvm_hyp_init[]; | 63 | extern char __kvm_hyp_init[]; |
@@ -71,6 +72,7 @@ extern char __kvm_hyp_code_start[]; | |||
71 | extern char __kvm_hyp_code_end[]; | 72 | extern char __kvm_hyp_code_end[]; |
72 | 73 | ||
73 | extern void __kvm_flush_vm_context(void); | 74 | extern void __kvm_flush_vm_context(void); |
75 | extern void __kvm_tlb_flush_vmid(struct kvm *kvm); | ||
74 | 76 | ||
75 | extern int __kvm_vcpu_run(struct kvm_vcpu *vcpu); | 77 | extern int __kvm_vcpu_run(struct kvm_vcpu *vcpu); |
76 | #endif | 78 | #endif |
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h index 067ef2898c26..3636c7ea4eb2 100644 --- a/arch/arm/include/asm/kvm_host.h +++ b/arch/arm/include/asm/kvm_host.h | |||
@@ -112,4 +112,22 @@ struct kvm_one_reg; | |||
112 | int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); | 112 | int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); |
113 | int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); | 113 | int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); |
114 | u64 kvm_call_hyp(void *hypfn, ...); | 114 | u64 kvm_call_hyp(void *hypfn, ...); |
115 | |||
116 | #define KVM_ARCH_WANT_MMU_NOTIFIER | ||
117 | struct kvm; | ||
118 | int kvm_unmap_hva(struct kvm *kvm, unsigned long hva); | ||
119 | int kvm_unmap_hva_range(struct kvm *kvm, | ||
120 | unsigned long start, unsigned long end); | ||
121 | void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); | ||
122 | |||
123 | /* We do not have shadow page tables, hence the empty hooks */ | ||
124 | static inline int kvm_age_hva(struct kvm *kvm, unsigned long hva) | ||
125 | { | ||
126 | return 0; | ||
127 | } | ||
128 | |||
129 | static inline int kvm_test_age_hva(struct kvm *kvm, unsigned long hva) | ||
130 | { | ||
131 | return 0; | ||
132 | } | ||
115 | #endif /* __ARM_KVM_HOST_H__ */ | 133 | #endif /* __ARM_KVM_HOST_H__ */ |
diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h index e8679b317b0f..499e7b0925ff 100644 --- a/arch/arm/include/asm/kvm_mmu.h +++ b/arch/arm/include/asm/kvm_mmu.h | |||
@@ -23,6 +23,15 @@ int create_hyp_mappings(void *from, void *to); | |||
23 | int create_hyp_io_mappings(void *from, void *to, phys_addr_t); | 23 | int create_hyp_io_mappings(void *from, void *to, phys_addr_t); |
24 | void free_hyp_pmds(void); | 24 | void free_hyp_pmds(void); |
25 | 25 | ||
26 | int kvm_alloc_stage2_pgd(struct kvm *kvm); | ||
27 | void kvm_free_stage2_pgd(struct kvm *kvm); | ||
28 | int kvm_phys_addr_ioremap(struct kvm *kvm, phys_addr_t guest_ipa, | ||
29 | phys_addr_t pa, unsigned long size); | ||
30 | |||
31 | int kvm_handle_guest_abort(struct kvm_vcpu *vcpu, struct kvm_run *run); | ||
32 | |||
33 | void kvm_mmu_free_memory_caches(struct kvm_vcpu *vcpu); | ||
34 | |||
26 | phys_addr_t kvm_mmu_get_httbr(void); | 35 | phys_addr_t kvm_mmu_get_httbr(void); |
27 | int kvm_mmu_init(void); | 36 | int kvm_mmu_init(void); |
28 | void kvm_clear_hyp_idmap(void); | 37 | void kvm_clear_hyp_idmap(void); |