106
106
struct kvm_interrupt *irq);
107
107
extern void kvmppc_core_dequeue_external(struct kvm_vcpu *vcpu);
108
108
extern void kvmppc_core_flush_tlb(struct kvm_vcpu *vcpu);
110
extern int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
111
unsigned int op, int *advance);
112
extern int kvmppc_core_emulate_mtspr(struct kvm_vcpu *vcpu, int sprn,
114
extern int kvmppc_core_emulate_mfspr(struct kvm_vcpu *vcpu, int sprn,
116
109
extern int kvmppc_core_check_requests(struct kvm_vcpu *vcpu);
118
111
extern int kvmppc_booke_init(void);
135
128
struct kvm_create_spapr_tce *args);
136
129
extern long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
137
130
unsigned long ioba, unsigned long tce);
138
extern long kvm_vm_ioctl_allocate_rma(struct kvm *kvm,
139
struct kvm_allocate_rma *rma);
140
131
extern struct kvm_rma_info *kvm_alloc_rma(void);
141
132
extern void kvm_release_rma(struct kvm_rma_info *ri);
142
133
extern struct page *kvm_alloc_hpt(unsigned long nr_pages);
143
134
extern void kvm_release_hpt(struct page *page, unsigned long nr_pages);
144
135
extern int kvmppc_core_init_vm(struct kvm *kvm);
145
136
extern void kvmppc_core_destroy_vm(struct kvm *kvm);
146
extern void kvmppc_core_free_memslot(struct kvm_memory_slot *free,
137
extern void kvmppc_core_free_memslot(struct kvm *kvm,
138
struct kvm_memory_slot *free,
147
139
struct kvm_memory_slot *dont);
148
extern int kvmppc_core_create_memslot(struct kvm_memory_slot *slot,
140
extern int kvmppc_core_create_memslot(struct kvm *kvm,
141
struct kvm_memory_slot *slot,
149
142
unsigned long npages);
150
143
extern int kvmppc_core_prepare_memory_region(struct kvm *kvm,
151
144
struct kvm_memory_slot *memslot,
177
170
extern int kvmppc_xics_int_on(struct kvm *kvm, u32 irq);
178
171
extern int kvmppc_xics_int_off(struct kvm *kvm, u32 irq);
173
union kvmppc_one_reg {
185
struct module *owner;
186
int (*get_sregs)(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
187
int (*set_sregs)(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
188
int (*get_one_reg)(struct kvm_vcpu *vcpu, u64 id,
189
union kvmppc_one_reg *val);
190
int (*set_one_reg)(struct kvm_vcpu *vcpu, u64 id,
191
union kvmppc_one_reg *val);
192
void (*vcpu_load)(struct kvm_vcpu *vcpu, int cpu);
193
void (*vcpu_put)(struct kvm_vcpu *vcpu);
194
void (*set_msr)(struct kvm_vcpu *vcpu, u64 msr);
195
int (*vcpu_run)(struct kvm_run *run, struct kvm_vcpu *vcpu);
196
struct kvm_vcpu *(*vcpu_create)(struct kvm *kvm, unsigned int id);
197
void (*vcpu_free)(struct kvm_vcpu *vcpu);
198
int (*check_requests)(struct kvm_vcpu *vcpu);
199
int (*get_dirty_log)(struct kvm *kvm, struct kvm_dirty_log *log);
200
void (*flush_memslot)(struct kvm *kvm, struct kvm_memory_slot *memslot);
201
int (*prepare_memory_region)(struct kvm *kvm,
202
struct kvm_memory_slot *memslot,
203
struct kvm_userspace_memory_region *mem);
204
void (*commit_memory_region)(struct kvm *kvm,
205
struct kvm_userspace_memory_region *mem,
206
const struct kvm_memory_slot *old);
207
int (*unmap_hva)(struct kvm *kvm, unsigned long hva);
208
int (*unmap_hva_range)(struct kvm *kvm, unsigned long start,
210
int (*age_hva)(struct kvm *kvm, unsigned long hva);
211
int (*test_age_hva)(struct kvm *kvm, unsigned long hva);
212
void (*set_spte_hva)(struct kvm *kvm, unsigned long hva, pte_t pte);
213
void (*mmu_destroy)(struct kvm_vcpu *vcpu);
214
void (*free_memslot)(struct kvm_memory_slot *free,
215
struct kvm_memory_slot *dont);
216
int (*create_memslot)(struct kvm_memory_slot *slot,
217
unsigned long npages);
218
int (*init_vm)(struct kvm *kvm);
219
void (*destroy_vm)(struct kvm *kvm);
220
int (*get_smmu_info)(struct kvm *kvm, struct kvm_ppc_smmu_info *info);
221
int (*emulate_op)(struct kvm_run *run, struct kvm_vcpu *vcpu,
222
unsigned int inst, int *advance);
223
int (*emulate_mtspr)(struct kvm_vcpu *vcpu, int sprn, ulong spr_val);
224
int (*emulate_mfspr)(struct kvm_vcpu *vcpu, int sprn, ulong *spr_val);
225
void (*fast_vcpu_kick)(struct kvm_vcpu *vcpu);
226
long (*arch_vm_ioctl)(struct file *filp, unsigned int ioctl,
231
extern struct kvmppc_ops *kvmppc_hv_ops;
232
extern struct kvmppc_ops *kvmppc_pr_ops;
234
static inline bool is_kvmppc_hv_enabled(struct kvm *kvm)
236
return kvm->arch.kvm_ops == kvmppc_hv_ops;
181
240
* Cuts out inst bits with ordering according to spec.
182
241
* That means the leftmost bit is zero. All given bits are included.
248
void kvmppc_core_get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
296
int kvmppc_core_get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
249
297
int kvmppc_core_set_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
251
void kvmppc_get_sregs_ivor(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
299
int kvmppc_get_sregs_ivor(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
252
300
int kvmppc_set_sregs_ivor(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs);
254
302
int kvm_vcpu_ioctl_get_one_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg *reg);