From patchwork Mon May 5 14:52:51 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gabriel L. Somlo" X-Patchwork-Id: 345740 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id DC12C1402C9 for ; Tue, 6 May 2014 00:53:41 +1000 (EST) Received: from localhost ([::1]:57842 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WhKGx-00017L-Ru for incoming@patchwork.ozlabs.org; Mon, 05 May 2014 10:53:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53693) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WhKGP-0000Fj-0t for qemu-devel@nongnu.org; Mon, 05 May 2014 10:53:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WhKGJ-0001Ri-B6 for qemu-devel@nongnu.org; Mon, 05 May 2014 10:53:04 -0400 Received: from mail-qg0-x22b.google.com ([2607:f8b0:400d:c04::22b]:58310) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WhKGJ-0001Rb-6E for qemu-devel@nongnu.org; Mon, 05 May 2014 10:52:59 -0400 Received: by mail-qg0-f43.google.com with SMTP id 63so2043049qgz.30 for ; Mon, 05 May 2014 07:52:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wWzd9zWot5KTzm4rcbrbQmNHMD0IOyO1XwyygZEPCEM=; b=h7fPC4AyIe3nOqD0dBcJgk2+oWd+zyKLlS4kc3w4LsFsuGE4MxtVYCnhkffsfxsag7 9kmLRmw0yWm6XrEFHyNaoZjlLg/9Vf585hj0YYg0vJcKcE+JAZ62ccg+kvdoc6ZFm3a3 ldbUUBRWT3ViFNJAppVoYoF4nbf1hSF4Is/IVwf5rzTCM+8uViapWCKVsoREbwOKZaLe RUR4Xx1Km3LZIy54B3GNfqYz7jDU4bV2DJSQnGHy+za1FHhwRN55FcJBQbBhiaXtb+Mb XgbUA7aQneav6NYdbbfMZ0UN0trh5VtuMXJaZe5bUMgrVZpCJCcW/CbcCPWchzuKVY07 8JBA== X-Received: by 10.140.28.198 with SMTP id 64mr31651802qgz.49.1399301578735; Mon, 05 May 2014 07:52:58 -0700 (PDT) Received: from ERROL.ini.cmu.edu (ERROL.INI.CMU.EDU. [128.2.16.43]) by mx.google.com with ESMTPSA id p9sm17462572qai.22.2014.05.05.07.52.57 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 May 2014 07:52:58 -0700 (PDT) X-Google-Original-From: "Gabriel L. Somlo" From: "Gabriel L. Somlo" To: qemu-devel@nongnu.org Date: Mon, 5 May 2014 10:52:51 -0400 Message-Id: <1399301571-6769-3-git-send-email-somlo@cmu.edu> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1399301571-6769-1-git-send-email-somlo@cmu.edu> References: <1399301571-6769-1-git-send-email-somlo@cmu.edu> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c04::22b Cc: pbonzini@redhat.com, agraf@suse.de, afaerber@suse.de, dslutz@verizon.com, mst@redhat.com Subject: [Qemu-devel] [v5 PATCH 2/2] apic: use emulated lapic version 0x14 on pc machines >= 2.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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 \