Message ID | 20140502142301.GD16023@ERROL.INI.CMU.EDU |
---|---|
State | New |
Headers | show |
Il 02/05/2014 16:23, Gabriel L. Somlo ha scritto: > > Did I miss anything ? Is there a way to override the default for all > apics, which I set in DEFINE_PROP_UINT32, *before* anything gets > initialized/realized/constructed/whatever ? :) Yes, there is. :) It's compat_props. You can set 0x14 in the default, and 0x11 for 2.0 and earlier. Paolo
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index 7ecce2d..9cb418f 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -380,6 +380,7 @@ static const VMStateDescription vmstate_apic_common = { static Property apic_properties_common[] = { DEFINE_PROP_UINT8("id", APICCommonState, id, -1), + DEFINE_PROP_UINT32("version", APICCommonState, version, 0x14), DEFINE_PROP_BIT("vapic", APICCommonState, vapic_control, VAPIC_ENABLE_BIT, true), DEFINE_PROP_END_OF_LIST(), diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h index 70542a6..0ac1462 100644 --- a/include/hw/i386/apic_internal.h +++ b/include/hw/i386/apic_internal.h @@ -98,6 +98,7 @@ struct APICCommonState { X86CPU *cpu; uint32_t apicbase; uint8_t id; + uint32_t version; uint8_t arb_id; uint8_t tpr; uint32_t spurious_vec; diff --git a/hw/intc/apic.c b/hw/intc/apic.c index 2f40cba..ef19e55 100644 --- a/hw/intc/apic.c +++ b/hw/intc/apic.c @@ -675,7 +675,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr) val = s->id << 24; break; case 0x03: /* version */ - val = 0x11 | ((APIC_LVT_NB - 1) << 16); /* version 0x11 */ + val = s->version | ((APIC_LVT_NB - 1) << 16); break; case 0x08: apic_sync_vapic(s, SYNC_FROM_VAPIC);