APIC ver register is 1 but *IO*APIC ver register is 3... sorry for the confusion/noise, qemu looks fine
neil On 4/16/14 10:16 AM, Neil McGill wrote:
Seems there is a bug in qemu where the APIC version is being checked as value 3. However, it should be 1. static uint32_t apic_mem_readl(void *opaque, hwaddr addr) { ... switch(index) { case 0x03: /* version */ val = 0x11 | ((APIC_LVT_NB - 1) << 16); /* version 0x11 */ break; Comparing to KVM, it has the correct value: static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic, unsigned long addr, unsigned long length) { unsigned long result = 0; switch (ioapic->ioregsel) { case IOAPIC_REG_VERSION: result = ((((IOAPIC_NUM_PINS - 1) & 0xff) << 16) | (IOAPIC_VERSION_ID & 0xff)); break; ./virt/kvm/ioapic.h:#define IOAPIC_REG_VERSION 0x01 I hit this as we have on OS that was checking for the number of IRQ pins and we were falling into the default case. Is this a known issue? What's the best way to submit a patch/get this committed if it is an accepted bug? tx neil