13 #include <linux/mm_types.h>
14 #include <linux/hrtimer.h>
15 #include <linux/kvm_host.h>
16 #include <linux/spinlock.h>
21 #define PIC_NUM_PINS 16
22 #define SELECT_PIC(irq) \
23 ((irq) < 8 ? KVM_IRQCHIP_PIC_MASTER : KVM_IRQCHIP_PIC_SLAVE)
69 int mode = kvm->arch.irqchip_mode;
73 return mode == KVM_IRQCHIP_SPLIT;
78 int mode = kvm->arch.irqchip_mode;
82 return mode == KVM_IRQCHIP_KERNEL;
92 int mode = kvm->arch.irqchip_mode;
96 return mode != KVM_IRQCHIP_NONE;
111 struct kvm_lapic_irq *irq,
int kvm_setup_default_irq_routing(struct kvm *kvm)
void kvm_inject_pending_timer_irqs(struct kvm_vcpu *vcpu)
void kvm_pic_destroy(struct kvm *kvm)
void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu)
int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src, struct kvm_lapic_irq *irq, struct dest_map *dest_map)
void kvm_apic_nmi_wd_deliver(struct kvm_vcpu *vcpu)
void kvm_pic_update_irq(struct kvm_pic *s)
static int irqchip_split(struct kvm *kvm)
int kvm_pic_read_irq(struct kvm *kvm)
static int irqchip_in_kernel(struct kvm *kvm)
static int pic_in_kernel(struct kvm *kvm)
void __kvm_migrate_timers(struct kvm_vcpu *vcpu)
int kvm_setup_empty_irq_routing(struct kvm *kvm)
int kvm_pic_init(struct kvm *kvm)
void kvm_inject_apic_timer_irqs(struct kvm_vcpu *vcpu)
void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu)
static int irqchip_kernel(struct kvm *kvm)
int apic_has_pending_timer(struct kvm_vcpu *vcpu)
struct kvm_pic * pics_state
u8 special_fully_nested_mode
struct kvm_kpic_state pics[2]
struct kvm_io_device dev_master
struct kvm_io_device dev_elcr
struct kvm_io_device dev_slave
unsigned long irq_states[PIC_NUM_PINS]