diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-x86/kvm_host.h | 4 | ||||
| -rw-r--r-- | include/asm-x86/kvm_para.h | 29 | ||||
| -rw-r--r-- | include/linux/kvm.h | 1 | ||||
| -rw-r--r-- | include/linux/kvm_para.h | 5 |
4 files changed, 38 insertions, 1 deletions
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h index 99d31f5ed9ff..772ba95f0a0e 100644 --- a/include/asm-x86/kvm_host.h +++ b/include/asm-x86/kvm_host.h | |||
| @@ -434,6 +434,10 @@ int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3); | |||
| 434 | 434 | ||
| 435 | int __emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa, | 435 | int __emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa, |
| 436 | const void *val, int bytes); | 436 | const void *val, int bytes); |
| 437 | int kvm_pv_mmu_op(struct kvm_vcpu *vcpu, unsigned long bytes, | ||
| 438 | gpa_t addr, unsigned long *ret); | ||
| 439 | |||
| 440 | extern bool tdp_enabled; | ||
| 437 | 441 | ||
| 438 | enum emulation_result { | 442 | enum emulation_result { |
| 439 | EMULATE_DONE, /* no further processing */ | 443 | EMULATE_DONE, /* no further processing */ |
diff --git a/include/asm-x86/kvm_para.h b/include/asm-x86/kvm_para.h index ed5df3a54aab..509845942070 100644 --- a/include/asm-x86/kvm_para.h +++ b/include/asm-x86/kvm_para.h | |||
| @@ -12,10 +12,39 @@ | |||
| 12 | #define KVM_CPUID_FEATURES 0x40000001 | 12 | #define KVM_CPUID_FEATURES 0x40000001 |
| 13 | #define KVM_FEATURE_CLOCKSOURCE 0 | 13 | #define KVM_FEATURE_CLOCKSOURCE 0 |
| 14 | #define KVM_FEATURE_NOP_IO_DELAY 1 | 14 | #define KVM_FEATURE_NOP_IO_DELAY 1 |
| 15 | #define KVM_FEATURE_MMU_OP 2 | ||
| 15 | 16 | ||
| 16 | #define MSR_KVM_WALL_CLOCK 0x11 | 17 | #define MSR_KVM_WALL_CLOCK 0x11 |
| 17 | #define MSR_KVM_SYSTEM_TIME 0x12 | 18 | #define MSR_KVM_SYSTEM_TIME 0x12 |
| 18 | 19 | ||
| 20 | #define KVM_MAX_MMU_OP_BATCH 32 | ||
| 21 | |||
| 22 | /* Operations for KVM_HC_MMU_OP */ | ||
| 23 | #define KVM_MMU_OP_WRITE_PTE 1 | ||
| 24 | #define KVM_MMU_OP_FLUSH_TLB 2 | ||
| 25 | #define KVM_MMU_OP_RELEASE_PT 3 | ||
| 26 | |||
| 27 | /* Payload for KVM_HC_MMU_OP */ | ||
| 28 | struct kvm_mmu_op_header { | ||
| 29 | __u32 op; | ||
| 30 | __u32 pad; | ||
| 31 | }; | ||
| 32 | |||
| 33 | struct kvm_mmu_op_write_pte { | ||
| 34 | struct kvm_mmu_op_header header; | ||
| 35 | __u64 pte_phys; | ||
| 36 | __u64 pte_val; | ||
| 37 | }; | ||
| 38 | |||
| 39 | struct kvm_mmu_op_flush_tlb { | ||
| 40 | struct kvm_mmu_op_header header; | ||
| 41 | }; | ||
| 42 | |||
| 43 | struct kvm_mmu_op_release_pt { | ||
| 44 | struct kvm_mmu_op_header header; | ||
| 45 | __u64 pt_phys; | ||
| 46 | }; | ||
| 47 | |||
| 19 | #ifdef __KERNEL__ | 48 | #ifdef __KERNEL__ |
| 20 | #include <asm/processor.h> | 49 | #include <asm/processor.h> |
| 21 | 50 | ||
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 76f09474be98..c1b502a50a01 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
| @@ -238,6 +238,7 @@ struct kvm_vapic_addr { | |||
| 238 | #define KVM_CAP_NR_MEMSLOTS 10 /* returns max memory slots per vm */ | 238 | #define KVM_CAP_NR_MEMSLOTS 10 /* returns max memory slots per vm */ |
| 239 | #define KVM_CAP_PIT 11 | 239 | #define KVM_CAP_PIT 11 |
| 240 | #define KVM_CAP_NOP_IO_DELAY 12 | 240 | #define KVM_CAP_NOP_IO_DELAY 12 |
| 241 | #define KVM_CAP_PV_MMU 13 | ||
| 241 | 242 | ||
| 242 | /* | 243 | /* |
| 243 | * ioctls for VM fds | 244 | * ioctls for VM fds |
diff --git a/include/linux/kvm_para.h b/include/linux/kvm_para.h index 9c462c91a6b1..3ddce03766ca 100644 --- a/include/linux/kvm_para.h +++ b/include/linux/kvm_para.h | |||
| @@ -11,8 +11,11 @@ | |||
| 11 | 11 | ||
| 12 | /* Return values for hypercalls */ | 12 | /* Return values for hypercalls */ |
| 13 | #define KVM_ENOSYS 1000 | 13 | #define KVM_ENOSYS 1000 |
| 14 | #define KVM_EFAULT EFAULT | ||
| 15 | #define KVM_E2BIG E2BIG | ||
| 14 | 16 | ||
| 15 | #define KVM_HC_VAPIC_POLL_IRQ 1 | 17 | #define KVM_HC_VAPIC_POLL_IRQ 1 |
| 18 | #define KVM_HC_MMU_OP 2 | ||
| 16 | 19 | ||
| 17 | /* | 20 | /* |
| 18 | * hypercalls use architecture specific | 21 | * hypercalls use architecture specific |
