repository: /home/avi/kvm branch: master commit df984dcdd3b723d456e637365b9de70cd34e741c Author: Avi Kivity <[EMAIL PROTECTED]> Date: Wed Oct 10 14:20:47 2007 +0200
kvm: qemu: support compilation against older kernels diff --git a/qemu/hw/apic.c b/qemu/hw/apic.c index 62bd2ea..2011247 100644 --- a/qemu/hw/apic.c +++ b/qemu/hw/apic.c @@ -752,6 +752,9 @@ static void apic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val) } #ifdef USE_KVM + +#ifdef KVM_CAP_IRQCHIP + static inline uint32_t kapic_reg(struct kvm_lapic_state *kapic, int reg_id) { return *((uint32_t *) (kapic->regs + (reg_id << 4))); @@ -824,6 +827,9 @@ static void kvm_kernel_lapic_load_from_user(APICState *s) kvm_set_lapic(kvm_context, s->cpu_env->cpu_index, klapic); } + +#endif + #endif static void apic_save(QEMUFile *f, void *opaque) @@ -832,10 +838,12 @@ static void apic_save(QEMUFile *f, void *opaque) int i; #ifdef USE_KVM +#ifdef KVM_CAP_IRQCHIP if (kvm_allowed && kvm_irqchip_in_kernel(kvm_context)) { kvm_kernel_lapic_save_to_user(s); } #endif +#endif qemu_put_be32s(f, &s->apicbase); qemu_put_8s(f, &s->id); @@ -901,10 +909,12 @@ static int apic_load(QEMUFile *f, void *opaque, int version_id) qemu_get_timer(f, s->timer); #ifdef USE_KVM +#ifdef KVM_CAP_IRQCHIP if (kvm_allowed && kvm_irqchip_in_kernel(kvm_context)) { kvm_kernel_lapic_load_from_user(s); } #endif +#endif return 0; } @@ -1115,6 +1125,7 @@ static void ioapic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t va #ifdef USE_KVM static void kvm_kernel_ioapic_save_to_user(IOAPICState *s) { +#ifdef KVM_CAP_IRQCHIP struct kvm_irqchip chip; struct kvm_ioapic_state *kioapic; int i; @@ -1128,10 +1139,12 @@ static void kvm_kernel_ioapic_save_to_user(IOAPICState *s) for (i = 0; i < IOAPIC_NUM_PINS; i++) { s->ioredtbl[i] = kioapic->redirtbl[i].bits; } +#endif } static void kvm_kernel_ioapic_load_from_user(IOAPICState *s) { +#ifdef KVM_CAP_IRQCHIP struct kvm_irqchip chip; struct kvm_ioapic_state *kioapic; int i; @@ -1146,6 +1159,7 @@ static void kvm_kernel_ioapic_load_from_user(IOAPICState *s) } kvm_set_irqchip(kvm_context, &chip); +#endif } #endif diff --git a/qemu/hw/i8259.c b/qemu/hw/i8259.c index f8a80b4..c862da8 100644 --- a/qemu/hw/i8259.c +++ b/qemu/hw/i8259.c @@ -23,6 +23,10 @@ */ #include "vl.h" +#ifdef USE_KVM +#include "qemu-kvm.h" +#endif + /* debug PIC */ //#define DEBUG_PIC @@ -179,12 +183,14 @@ void i8259_set_irq(void *opaque, int irq, int level) { PicState2 *s = opaque; #ifdef USE_KVM +#ifdef KVM_CAP_IRQCHIP extern int kvm_set_irq(int irq, int level); if (kvm_allowed) if (kvm_set_irq(irq, level)) return; #endif +#endif #if defined(DEBUG_PIC) || defined(DEBUG_IRQ_COUNT) if (level != irq_level[irq]) { #if defined(DEBUG_PIC) @@ -471,6 +477,7 @@ extern kvm_context_t kvm_context; static void kvm_kernel_pic_save_to_user(PicState *s) { +#ifdef KVM_CAP_IRQCHIP struct kvm_irqchip chip; struct kvm_pic_state *kpic; @@ -496,10 +503,12 @@ static void kvm_kernel_pic_save_to_user(PicState *s) s->init4 = kpic->init4; s->elcr = kpic->elcr; s->elcr_mask = kpic->elcr_mask; +#endif } static void kvm_kernel_pic_load_from_user(PicState *s) { +#ifdef KVM_CAP_IRQCHIP struct kvm_irqchip chip; struct kvm_pic_state *kpic; @@ -526,6 +535,7 @@ static void kvm_kernel_pic_load_from_user(PicState *s) kpic->elcr_mask = s->elcr_mask; kvm_set_irqchip(kvm_context, &chip); +#endif } #endif diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c index 448e2ea..93a7f17 100644 --- a/qemu/qemu-kvm.c +++ b/qemu/qemu-kvm.c @@ -1122,14 +1122,17 @@ static void do_cpuid_ent(struct kvm_cpuid_entry *e, uint32_t function, int kvm_qemu_init_env(CPUState *cenv) { struct kvm_cpuid_entry cpuid_ent[100]; +#ifdef KVM_CPUID_SIGNATURE struct kvm_cpuid_entry *pv_ent; uint32_t signature[3]; +#endif int cpuid_nent = 0; CPUState copy; uint32_t i, limit; copy = *cenv; +#ifdef KVM_CPUID_SIGNATURE /* Paravirtualization CPUIDs */ memcpy(signature, "KVMKVMKVM", 12); pv_ent = &cpuid_ent[cpuid_nent++]; @@ -1144,6 +1147,7 @@ int kvm_qemu_init_env(CPUState *cenv) memset(pv_ent, 0, sizeof(*pv_ent)); pv_ent->function = KVM_CPUID_FEATURES; pv_ent->eax = 0; +#endif copy.regs[R_EAX] = 0; qemu_kvm_cpuid_on_env(©); @@ -1285,8 +1289,13 @@ int kvm_get_phys_ram_page_bitmap(unsigned char *bitmap) return r; } +#ifdef KVM_CAP_IRQCHIP + int kvm_set_irq(int irq, int level) { return kvm_set_irq_level(kvm_context, irq, level); } + +#endif + #endif ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ kvm-commits mailing list kvm-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-commits