diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | kvm_ioapic.h | 52 |
2 files changed, 25 insertions, 28 deletions
@@ -27,6 +27,7 @@ HEADERS= \ kvm_host.h \ kvm_i8254.h \ kvm_impl.h \ + kvm_ioapic.h \ kvm_x86.h kvm: kvm.c kvm_x86.c kvm_emulate.c kvm.h kvm_x86host.h msr.h kvm_bitops.h kvm_irq.c kvm_i8254.c kvm_lapic.c kvm_mmu.c kvm_iodev.c kvm_ioapic.c kvm_vmx.c kvm_i8259.c kvm_coalesced_mmio.c kvm_irq_comm.c kvm_cache_regs.c kvm_bitops.c $(HEADERS) diff --git a/kvm_ioapic.h b/kvm_ioapic.h index 5b17598..3d23445 100644 --- a/kvm_ioapic.h +++ b/kvm_ioapic.h @@ -1,5 +1,5 @@ #ifndef __KVM_IO_APIC_H -#define __KVM_IO_APIC_H +#define __KVM_IO_APIC_H #include "kvm_host.h" #include "kvm_iodev.h" @@ -7,25 +7,25 @@ struct kvm; struct kvm_vcpu; -#define IOAPIC_NUM_PINS KVM_IOAPIC_NUM_PINS -#define IOAPIC_VERSION_ID 0x11 /* IOAPIC version */ -#define IOAPIC_EDGE_TRIG 0 -#define IOAPIC_LEVEL_TRIG 1 +#define IOAPIC_NUM_PINS KVM_IOAPIC_NUM_PINS +#define IOAPIC_VERSION_ID 0x11 /* IOAPIC version */ +#define IOAPIC_EDGE_TRIG 0 +#define IOAPIC_LEVEL_TRIG 1 -#define IOAPIC_DEFAULT_BASE_ADDRESS 0xfec00000 -#define IOAPIC_MEM_LENGTH 0x100 +#define IOAPIC_DEFAULT_BASE_ADDRESS 0xfec00000 +#define IOAPIC_MEM_LENGTH 0x100 /* Direct registers. */ -#define IOAPIC_REG_SELECT 0x00 -#define IOAPIC_REG_WINDOW 0x10 -#define IOAPIC_REG_EOI 0x40 /* IA64 IOSAPIC only */ +#define IOAPIC_REG_SELECT 0x00 +#define IOAPIC_REG_WINDOW 0x10 +#define IOAPIC_REG_EOI 0x40 /* IA64 IOSAPIC only */ /* Indirect registers. */ -#define IOAPIC_REG_APIC_ID 0x00 /* x86 IOAPIC only */ -#define IOAPIC_REG_VERSION 0x01 -#define IOAPIC_REG_ARB_ID 0x02 /* x86 IOAPIC only */ +#define IOAPIC_REG_APIC_ID 0x00 /* x86 IOAPIC only */ +#define IOAPIC_REG_VERSION 0x01 +#define IOAPIC_REG_ARB_ID 0x02 /* x86 IOAPIC only */ -/*ioapic delivery mode*/ +/* ioapic delivery mode */ #define IOAPIC_FIXED 0x0 #define IOAPIC_LOWEST_PRIORITY 0x1 #define IOAPIC_PMI 0x2 @@ -45,23 +45,19 @@ typedef struct kvm_ioapic { struct kvm *kvm; void (*ack_notifier)(void *opaque, int irq); kmutex_t lock; -#ifdef XXX - DECLARE_BITMAP(handled_vectors, 256); -#else unsigned long handled_vectors[BT_BITOUL(256)]; -#endif /*XXX*/ } kvm_ioapic_t; -struct kvm_ioapic *ioapic_irqchip(struct kvm *kvm); -void kvm_ioapic_update_eoi(struct kvm *kvm, int vector, int trigger_mode); -int kvm_ioapic_init(struct kvm *kvm); -void kvm_ioapic_destroy(struct kvm *kvm); -int kvm_ioapic_set_irq(struct kvm_ioapic *ioapic, int irq, int level); -void kvm_ioapic_reset(struct kvm_ioapic *ioapic); -int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src, - struct kvm_lapic_irq *irq); -int kvm_get_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state); -int kvm_set_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state); +extern struct kvm_ioapic *ioapic_irqchip(struct kvm *); +extern void kvm_ioapic_update_eoi(struct kvm *, int, int); +extern int kvm_ioapic_init(struct kvm *); +extern void kvm_ioapic_destroy(struct kvm *); +extern int kvm_ioapic_set_irq(struct kvm_ioapic *, int, int); +extern void kvm_ioapic_reset(struct kvm_ioapic *); +extern int kvm_irq_delivery_to_apic(struct kvm *, struct kvm_lapic *, + struct kvm_lapic_irq *); +extern int kvm_get_ioapic(struct kvm *, struct kvm_ioapic_state *); +extern int kvm_set_ioapic(struct kvm *, struct kvm_ioapic_state *); #endif |