@@ -161,6 +161,7 @@ struct kvm_pit_config {
#define KVM_EXIT_NMI 16
#define KVM_EXIT_INTERNAL_ERROR 17
#define KVM_EXIT_OSI 18
+#define KVM_EXIT_X86_MSR_OP 19
/* For KVM_EXIT_INTERNAL_ERROR */
#define KVM_INTERNAL_ERROR_EMULATION 1
@@ -264,6 +265,10 @@ struct kvm_run {
struct {
__u64 gprs[32];
} osi;
+ /* KVM_EXIT_X86_MSR_OP */
+ struct {
+ __u64 msr_data;
+ } msr;
/* Fix the size of the union. */
char padding[256];
};
@@ -422,6 +427,11 @@ struct kvm_ppc_pvinfo {
__u8 pad[108];
};
+struct kvm_area_info {
+ __u8 enabled;
+ __u8 pad[3];
+};
+
#define KVMIO 0xAE
/*
@@ -541,6 +551,7 @@ struct kvm_ppc_pvinfo {
#define KVM_CAP_PPC_GET_PVINFO 57
#define KVM_CAP_PPC_IRQ_LEVEL 58
#define KVM_CAP_ASYNC_PF 59
+#define KVM_CAP_REGISTER_MEM_AREA 60
#ifdef KVM_CAP_IRQ_ROUTING
@@ -677,7 +688,8 @@ struct kvm_clock_data {
#define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2)
/* Available with KVM_CAP_PPC_GET_PVINFO */
#define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo)
-
+#define KVM_USERSPACE_REGISTER_MEM_AREA \
+ _IOW(KVMIO, 0xa8, struct kvm_area_info)
/*
* ioctls for vcpu fds
*/
@@ -258,6 +258,7 @@ struct kvm {
long mmu_notifier_count;
#endif
long tlbs_dirty;
+ int register_mem_area_uspace;
};
/* The guest did something we don't support. */