aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/x86.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/kvm/x86.h')
-rw-r--r--drivers/kvm/x86.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/kvm/x86.h b/drivers/kvm/x86.h
index eed796402e3b..1e71668694ea 100644
--- a/drivers/kvm/x86.h
+++ b/drivers/kvm/x86.h
@@ -139,6 +139,13 @@ struct kvm_vcpu {
139 struct kvm_pio_request pio; 139 struct kvm_pio_request pio;
140 void *pio_data; 140 void *pio_data;
141 141
142 struct kvm_queued_exception {
143 bool pending;
144 bool has_error_code;
145 u8 nr;
146 u32 error_code;
147 } exception;
148
142 struct { 149 struct {
143 int active; 150 int active;
144 u8 save_iopl; 151 u8 save_iopl;
@@ -224,6 +231,9 @@ struct kvm_x86_ops {
224 unsigned char *hypercall_addr); 231 unsigned char *hypercall_addr);
225 int (*get_irq)(struct kvm_vcpu *vcpu); 232 int (*get_irq)(struct kvm_vcpu *vcpu);
226 void (*set_irq)(struct kvm_vcpu *vcpu, int vec); 233 void (*set_irq)(struct kvm_vcpu *vcpu, int vec);
234 void (*queue_exception)(struct kvm_vcpu *vcpu, unsigned nr,
235 bool has_error_code, u32 error_code);
236 bool (*exception_injected)(struct kvm_vcpu *vcpu);
227 void (*inject_pending_irq)(struct kvm_vcpu *vcpu); 237 void (*inject_pending_irq)(struct kvm_vcpu *vcpu);
228 void (*inject_pending_vectors)(struct kvm_vcpu *vcpu, 238 void (*inject_pending_vectors)(struct kvm_vcpu *vcpu,
229 struct kvm_run *run); 239 struct kvm_run *run);
@@ -294,6 +304,9 @@ void kvm_get_cs_db_l_bits(struct kvm_vcpu *vcpu, int *db, int *l);
294int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata); 304int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata);
295int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data); 305int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data);
296 306
307void kvm_queue_exception(struct kvm_vcpu *vcpu, unsigned nr);
308void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code);
309
297void fx_init(struct kvm_vcpu *vcpu); 310void fx_init(struct kvm_vcpu *vcpu);
298 311
299int emulator_read_std(unsigned long addr, 312int emulator_read_std(unsigned long addr,