diff options
author | Gleb Natapov <gleb@redhat.com> | 2009-05-11 06:35:50 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-06-10 04:48:58 -0400 |
commit | 66fd3f7f901f29a557a473af595bf11b270b9ac2 (patch) | |
tree | 6adc1e94de39238a357980068f599070428767d8 /arch/x86/include/asm/kvm_host.h | |
parent | f629cf8485c9e1063fd8b915fa3bde80917400a1 (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.h | 5 |
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); |