From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45087) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Whh7o-0003hK-K2 for qemu-devel@nongnu.org; Tue, 06 May 2014 11:17:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Whh7f-0003ft-Hz for qemu-devel@nongnu.org; Tue, 06 May 2014 11:17:44 -0400 Received: from mail-qg0-x22c.google.com ([2607:f8b0:400d:c04::22c]:38738) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Whh7f-0003fp-Dv for qemu-devel@nongnu.org; Tue, 06 May 2014 11:17:35 -0400 Received: by mail-qg0-f44.google.com with SMTP id i50so8207443qgf.3 for ; Tue, 06 May 2014 08:17:35 -0700 (PDT) From: "Gabriel L. Somlo" Date: Tue, 6 May 2014 11:17:25 -0400 Message-Id: <1399389445-1607-3-git-send-email-somlo@cmu.edu> In-Reply-To: <1399389445-1607-1-git-send-email-somlo@cmu.edu> References: <1399389445-1607-1-git-send-email-somlo@cmu.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v6 2/2] pic: use emulated lapic version 0x14 on pc machines >= 2.1 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, agraf@suse.de, afaerber@suse.de, mst@redhat.com Add "version" property to local apic, and have it default to 0x14 for pc machines starting at 2.1. For compatibility with previous releases, pc machines up to 2.0 will have their local apic version set to 0x11. Signed-off-by: Gabriel L. Somlo Acked-by: Alexander Graf Acked-by: Michael S. Tsirkin Reviewed-by: Andreas Färber --- hw/intc/apic.c | 2 +- hw/intc/apic_common.c | 1 + include/hw/i386/apic_internal.h | 1 + include/hw/i386/pc.h | 3 +++ 4 files changed, 6 insertions(+), 1 deletion(-) 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); diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index 7ecce2d..7137653 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_UINT8("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..83e2a42 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; + uint8_t version; uint8_t arb_id; uint8_t tpr; uint32_t spurious_vec; diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 0ade0f1..32a7687 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -268,6 +268,9 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); #define PC_COMPAT_2_0 \ {\ + .driver = "apic",\ + .property = "version",\ + .value = stringify(0x11),\ } #define PC_COMPAT_1_7 \ -- 1.9.0