aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/kvm_host.h
diff options
context:
space:
mode:
authorGleb Natapov <gleb@redhat.com>2009-05-11 06:35:50 -0400
committerAvi Kivity <avi@redhat.com>2009-06-10 04:48:58 -0400
commit66fd3f7f901f29a557a473af595bf11b270b9ac2 (patch)
tree6adc1e94de39238a357980068f599070428767d8 /arch/x86/include/asm/kvm_host.h
parentf629cf8485c9e1063fd8b915fa3bde80917400a1 (diff)
KVM: Do not re-execute INTn instruction.
Re-inject event instead. This is what Intel suggest. Also use correct instruction length when re-injecting soft fault/interrupt. Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/include/asm/kvm_host.h')
-rw-r--r--arch/x86/include/asm/kvm_host.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 977a785a9d75..1d6c3f757cb6 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -319,6 +319,8 @@ struct kvm_vcpu_arch {
319 struct kvm_pio_request pio; 319 struct kvm_pio_request pio;
320 void *pio_data; 320 void *pio_data;
321 321
322 u8 event_exit_inst_len;
323
322 struct kvm_queued_exception { 324 struct kvm_queued_exception {
323 bool pending; 325 bool pending;
324 bool has_error_code; 326 bool has_error_code;
@@ -328,6 +330,7 @@ struct kvm_vcpu_arch {
328 330
329 struct kvm_queued_interrupt { 331 struct kvm_queued_interrupt {
330 bool pending; 332 bool pending;
333 bool soft;
331 u8 nr; 334 u8 nr;
332 } interrupt; 335 } interrupt;
333 336
@@ -510,7 +513,7 @@ struct kvm_x86_ops {
510 u32 (*get_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask); 513 u32 (*get_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask);
511 void (*patch_hypercall)(struct kvm_vcpu *vcpu, 514 void (*patch_hypercall)(struct kvm_vcpu *vcpu,
512 unsigned char *hypercall_addr); 515 unsigned char *hypercall_addr);
513 void (*set_irq)(struct kvm_vcpu *vcpu, int vec); 516 void (*set_irq)(struct kvm_vcpu *vcpu);
514 void (*set_nmi)(struct kvm_vcpu *vcpu); 517 void (*set_nmi)(struct kvm_vcpu *vcpu);
515 void (*queue_exception)(struct kvm_vcpu *vcpu, unsigned nr, 518 void (*queue_exception)(struct kvm_vcpu *vcpu, unsigned nr,
516 bool has_error_code, u32 error_code); 519 bool has_error_code, u32 error_code);