xref: /kvmtool/x86/include/kvm/kvm-cpu-arch.h (revision 4b1c6f6e947ba8c35c0dc49346916817e943786f)
1af7b0868SMatt Evans #ifndef KVM__KVM_CPU_ARCH_H
2af7b0868SMatt Evans #define KVM__KVM_CPU_ARCH_H
3af7b0868SMatt Evans 
4af7b0868SMatt Evans /* Architecture-specific kvm_cpu definitions. */
5af7b0868SMatt Evans 
6af7b0868SMatt Evans #include <linux/kvm.h>	/* for struct kvm_regs */
7af7b0868SMatt Evans 
8af7b0868SMatt Evans #include <pthread.h>
9af7b0868SMatt Evans 
10af7b0868SMatt Evans struct kvm;
11af7b0868SMatt Evans 
12af7b0868SMatt Evans struct kvm_cpu {
13af7b0868SMatt Evans 	pthread_t		thread;		/* VCPU thread */
14af7b0868SMatt Evans 
15af7b0868SMatt Evans 	unsigned long		cpu_id;
16af7b0868SMatt Evans 
17af7b0868SMatt Evans 	struct kvm		*kvm;		/* parent KVM */
18af7b0868SMatt Evans 	int			vcpu_fd;	/* For VCPU ioctls() */
19af7b0868SMatt Evans 	struct kvm_run		*kvm_run;
20af7b0868SMatt Evans 
21af7b0868SMatt Evans 	struct kvm_regs		regs;
22af7b0868SMatt Evans 	struct kvm_sregs	sregs;
23af7b0868SMatt Evans 	struct kvm_fpu		fpu;
24af7b0868SMatt Evans 
25af7b0868SMatt Evans 	struct kvm_msrs		*msrs;		/* dynamically allocated */
26af7b0868SMatt Evans 
27af7b0868SMatt Evans 	u8			is_running;
28af7b0868SMatt Evans 	u8			paused;
29*4b1c6f6eSSasha Levin 	u8			needs_nmi;
30af7b0868SMatt Evans 
31af7b0868SMatt Evans 	struct kvm_coalesced_mmio_ring	*ring;
32af7b0868SMatt Evans };
33af7b0868SMatt Evans 
34af7b0868SMatt Evans #endif /* KVM__KVM_CPU_ARCH_H */
35