aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/kvm_host.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/include/asm/kvm_host.h')
-rw-r--r--arch/x86/include/asm/kvm_host.h17
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);
624void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); 632void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code);
625void kvm_requeue_exception(struct kvm_vcpu *vcpu, unsigned nr); 633void kvm_requeue_exception(struct kvm_vcpu *vcpu, unsigned nr);
626void kvm_requeue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); 634void kvm_requeue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code);
627void kvm_inject_page_fault(struct kvm_vcpu *vcpu, unsigned long cr2, 635void kvm_inject_page_fault(struct kvm_vcpu *vcpu);
628 u32 error_code);
629bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl); 636bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl);
630 637
631int kvm_pic_set_irq(void *opaque, int irq, int level); 638int kvm_pic_set_irq(void *opaque, int irq, int level);