repository: /home/avi/kvm
branch: master
commit 56bbb30e14ae8896fe99f91f44af4e5bcdea96ff
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..de90212 100644
--- a/qemu/hw/i8259.c
+++ b/qemu/hw/i8259.c
@@ -179,12 +179,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 +473,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 +499,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 +531,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(&copy);
@@ -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

Reply via email to