diff options
author | Yang Zhang <yang.z.zhang@Intel.com> | 2013-04-11 07:21:40 -0400 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2013-04-15 22:20:34 -0400 |
commit | aa2fbe6d44892070d78995f0df875ce930904e29 (patch) | |
tree | bc2350a65c4e656df5597ebe4111bcfd98116bfe /include | |
parent | f3bff6318fa0f54956b02ed451d9b120441006ea (diff) |
KVM: Let ioapic know the irq line status
Userspace may deliver RTC interrupt without query the status. So we
want to track RTC EOI for this case.
Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Reviewed-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/kvm_host.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 20d77d24d764..4a76aca31478 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -292,7 +292,8 @@ struct kvm_kernel_irq_routing_entry { | |||
292 | u32 gsi; | 292 | u32 gsi; |
293 | u32 type; | 293 | u32 type; |
294 | int (*set)(struct kvm_kernel_irq_routing_entry *e, | 294 | int (*set)(struct kvm_kernel_irq_routing_entry *e, |
295 | struct kvm *kvm, int irq_source_id, int level); | 295 | struct kvm *kvm, int irq_source_id, int level, |
296 | bool line_status); | ||
296 | union { | 297 | union { |
297 | struct { | 298 | struct { |
298 | unsigned irqchip; | 299 | unsigned irqchip; |
@@ -591,7 +592,8 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm, | |||
591 | 592 | ||
592 | int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, | 593 | int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, |
593 | struct kvm_userspace_memory_region *mem); | 594 | struct kvm_userspace_memory_region *mem); |
594 | int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level); | 595 | int kvm_vm_ioctl_irq_line(struct kvm *kvm, struct kvm_irq_level *irq_level, |
596 | bool line_status); | ||
595 | long kvm_arch_vm_ioctl(struct file *filp, | 597 | long kvm_arch_vm_ioctl(struct file *filp, |
596 | unsigned int ioctl, unsigned long arg); | 598 | unsigned int ioctl, unsigned long arg); |
597 | 599 | ||
@@ -722,10 +724,11 @@ void kvm_get_intr_delivery_bitmask(struct kvm_ioapic *ioapic, | |||
722 | union kvm_ioapic_redirect_entry *entry, | 724 | union kvm_ioapic_redirect_entry *entry, |
723 | unsigned long *deliver_bitmask); | 725 | unsigned long *deliver_bitmask); |
724 | #endif | 726 | #endif |
725 | int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level); | 727 | int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level, |
728 | bool line_status); | ||
726 | int kvm_set_irq_inatomic(struct kvm *kvm, int irq_source_id, u32 irq, int level); | 729 | int kvm_set_irq_inatomic(struct kvm *kvm, int irq_source_id, u32 irq, int level); |
727 | int kvm_set_msi(struct kvm_kernel_irq_routing_entry *irq_entry, struct kvm *kvm, | 730 | int kvm_set_msi(struct kvm_kernel_irq_routing_entry *irq_entry, struct kvm *kvm, |
728 | int irq_source_id, int level); | 731 | int irq_source_id, int level, bool line_status); |
729 | bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin); | 732 | bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin); |
730 | void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin); | 733 | void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin); |
731 | void kvm_register_irq_ack_notifier(struct kvm *kvm, | 734 | void kvm_register_irq_ack_notifier(struct kvm *kvm, |