diff options
Diffstat (limited to 'arch/x86/include/asm/kvm_host.h')
-rw-r--r-- | arch/x86/include/asm/kvm_host.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 009a4a1b370e..3fde5b322534 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h | |||
@@ -239,9 +239,7 @@ struct kvm_mmu { | |||
239 | void (*set_cr3)(struct kvm_vcpu *vcpu, unsigned long root); | 239 | void (*set_cr3)(struct kvm_vcpu *vcpu, unsigned long root); |
240 | unsigned long (*get_cr3)(struct kvm_vcpu *vcpu); | 240 | unsigned long (*get_cr3)(struct kvm_vcpu *vcpu); |
241 | int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err); | 241 | int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err); |
242 | void (*inject_page_fault)(struct kvm_vcpu *vcpu, | 242 | void (*inject_page_fault)(struct kvm_vcpu *vcpu); |
243 | unsigned long addr, | ||
244 | u32 error_code); | ||
245 | void (*free)(struct kvm_vcpu *vcpu); | 243 | void (*free)(struct kvm_vcpu *vcpu); |
246 | gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva, u32 access, | 244 | gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva, u32 access, |
247 | u32 *error); | 245 | u32 *error); |
@@ -288,6 +286,16 @@ struct kvm_vcpu_arch { | |||
288 | bool tpr_access_reporting; | 286 | bool tpr_access_reporting; |
289 | 287 | ||
290 | struct kvm_mmu mmu; | 288 | struct kvm_mmu mmu; |
289 | |||
290 | /* | ||
291 | * This struct is filled with the necessary information to propagate a | ||
292 | * page fault into the guest | ||
293 | */ | ||
294 | struct { | ||
295 | u64 address; | ||
296 | unsigned error_code; | ||
297 | } fault; | ||
298 | |||
291 | /* only needed in kvm_pv_mmu_op() path, but it's hot so | 299 | /* only needed in kvm_pv_mmu_op() path, but it's hot so |
292 | * put it here to avoid allocation */ | 300 | * put it here to avoid allocation */ |
293 | struct kvm_pv_mmu_op_buffer mmu_op_buffer; | 301 | struct kvm_pv_mmu_op_buffer mmu_op_buffer; |
@@ -624,8 +632,7 @@ void kvm_queue_exception(struct kvm_vcpu *vcpu, unsigned nr); | |||
624 | void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); | 632 | void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); |
625 | void kvm_requeue_exception(struct kvm_vcpu *vcpu, unsigned nr); | 633 | void kvm_requeue_exception(struct kvm_vcpu *vcpu, unsigned nr); |
626 | void kvm_requeue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); | 634 | void kvm_requeue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); |
627 | void kvm_inject_page_fault(struct kvm_vcpu *vcpu, unsigned long cr2, | 635 | void kvm_inject_page_fault(struct kvm_vcpu *vcpu); |
628 | u32 error_code); | ||
629 | bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl); | 636 | bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl); |
630 | 637 | ||
631 | int kvm_pic_set_irq(void *opaque, int irq, int level); | 638 | int kvm_pic_set_irq(void *opaque, int irq, int level); |