xref: /kvmtool/include/kvm/kvm-cpu.h (revision e300a5eef43ed25dc415b47d67cdf8d8987a9bf8)
15c3d55faSPekka Enberg #ifndef KVM__KVM_CPU_H
25c3d55faSPekka Enberg #define KVM__KVM_CPU_H
35c3d55faSPekka Enberg 
4af7b0868SMatt Evans #include "kvm/kvm-cpu-arch.h"
5341ee0d4SMatt Evans #include <stdbool.h>
65c3d55faSPekka Enberg 
7*e300a5eeSMichael Ellerman struct kvm_cpu_task {
8*e300a5eeSMichael Ellerman 	void (*func)(struct kvm_cpu *vcpu, void *data);
9*e300a5eeSMichael Ellerman 	void *data;
10*e300a5eeSMichael Ellerman };
11*e300a5eeSMichael Ellerman 
12df4239fbSSasha Levin int kvm_cpu__init(struct kvm *kvm);
13df4239fbSSasha Levin int kvm_cpu__exit(struct kvm *kvm);
14df4239fbSSasha Levin struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id);
1543835ac9SSasha Levin void kvm_cpu__delete(struct kvm_cpu *vcpu);
1643835ac9SSasha Levin void kvm_cpu__reset_vcpu(struct kvm_cpu *vcpu);
1743835ac9SSasha Levin void kvm_cpu__setup_cpuid(struct kvm_cpu *vcpu);
1843835ac9SSasha Levin void kvm_cpu__enable_singlestep(struct kvm_cpu *vcpu);
1943835ac9SSasha Levin void kvm_cpu__run(struct kvm_cpu *vcpu);
2065bab644SPekka Enberg int kvm_cpu__start(struct kvm_cpu *cpu);
21341ee0d4SMatt Evans bool kvm_cpu__handle_exit(struct kvm_cpu *vcpu);
2219d98215SMarc Zyngier int kvm_cpu__get_endianness(struct kvm_cpu *vcpu);
235c3d55faSPekka Enberg 
24b7d2f013SSasha Levin int kvm_cpu__get_debug_fd(void);
25b7d2f013SSasha Levin void kvm_cpu__set_debug_fd(int fd);
2643835ac9SSasha Levin void kvm_cpu__show_code(struct kvm_cpu *vcpu);
2743835ac9SSasha Levin void kvm_cpu__show_registers(struct kvm_cpu *vcpu);
2843835ac9SSasha Levin void kvm_cpu__show_page_tables(struct kvm_cpu *vcpu);
294b1c6f6eSSasha Levin void kvm_cpu__arch_nmi(struct kvm_cpu *cpu);
30*e300a5eeSMichael Ellerman void kvm_cpu__run_on_all_cpus(struct kvm *kvm, struct kvm_cpu_task *task);
315c3d55faSPekka Enberg 
325c3d55faSPekka Enberg #endif /* KVM__KVM_CPU_H */
33