From patchwork Mon May 14 16:41:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913096 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="FmlcdmDl"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l63D0wLsz9s0W for ; Tue, 15 May 2018 02:43:52 +1000 (AEST) Received: from localhost ([::1]:47191 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGZh-0007X7-Nu for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:43:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58438) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYE-0006o4-Qu for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYB-0005fG-VQ for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:18 -0400 Received: from mail-cys01nam02on0049.outbound.protection.outlook.com ([104.47.37.49]:26428 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYB-0005eV-PG for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=K/wl46KaQm28RxM6uC6G0JZMoaPxn92huKw1rwWXZPk=; b=FmlcdmDlw2WKpMQX9/OaPGkCwL3QYEvZiNWrnMyMBnCStKQfY+7Tw2tfRL720ykdZg+JsBeHlvReXVuMJ3UHr9p0Sgi0kIaCcKejVobT2C7LgiguexFZCDEitEoW2rTfilaFAdPx3luvzVRW+2MhfLMuI1hZ2IhdXWLPGimTlB8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:12 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:50 -0500 Message-Id: <20180514164156.27034-2-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:x2wNR1fmL0ZPSNTI8ZaCRqlXj7d9zZZimH4MNFDZpN88JnRs4z3KpEmbI6IGNrwpT0tGDHtiXNi79UV86v9eRd5RMT27bxBY+05Vtuyea5200WoUZ52S5tX3tEYMJie8NPECXe7T08CY8eWPbyt2XjytewfmQsrXM3WLlPZjCXuthcyueSoEep+eUGp2pgcktnDBHF8wiDsG8vvKwZfagQeg+bfPAB+1Z3UzFnEIly1qv1EJFtepFUSiebe5IWn3; 25:S1LbhkNXRVZQLQPa3WWOTipk6KRMS9i8I+de6qQfP6a8ZzW4UJQhNJd+iE7kAztmNCEjyT1jCwfhD3pdOeO8zF93E3gelCPohpv/EYwVS5VWSdNC5DYb9JZ996he3UfUGe+C42KVWLPzYTXc/VxVIHhOfZAlZV1DzbnlKFfCWxM4o5UY1FbBwqrWTVCENW8v9448FYe8PYfjvtVMCP9pakC4ek10DgbwAgWalD2ytQ0MyLoV6jMLa71JfSIy+l13FDWGZSQ48+u0076DNjbkxCJSqhSPEr6moF8Mtfj4xVDLXIlMMXlOvTFzolungmqDAgTm2rNKVg+vV0iDT95xfA==; 31:vt6yvwvJ5Hxewy81v5HLNXBgUbtX9317q6pMnCKDIjyMLa7CMYij5GlSG7A91JGEeTaCnu5SdTcXSMTe0rIWtcrthdfdi/pmFbf5DunQJOI05n/Qua4m0iBbaVZQ5vmCOo6nfiq1wEYpFQW/sWOB3iApSzzo3pq7LI1aEiKjS88DDeQLTltjdd216Sn8l8c0z+fwXAMKGfN/DZzVGXOs60FL5gTwHrOPCx9urs6PXBY= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:FKTu02yHk1my+LXufVQtOFFDFh+QD5bPQrVYRXu+xOLYO392XR1AryiMhYUhdgU0zgN9LBKX/VJ/O0WxHGkShz8zoTzUcV6kmNAPCsJwZHcbiPXMsvsWy25j90X8Od0qGaC58rcHA0eG9bSIalRbq+wCjoyK8BF+yklKKjULLjv+GW7gBESdbe8142OBx/xooHkZdszM8TIvEh8L78U39uXFJxiJkdT4bxkqzIPrhkc7ITcZEfijt2okVhEsLDWeQBOvX47iGqYB9khElKRv46KNiMn8hqq43Zh4uSjzls3nomahrW2hxYcNPa606jdSkhWA5xqRSRIAe+y/aVI80dF+Ww4ICZ3Z+nnn1oZ2saFwVpW9BJLWy6b89KIAcNrs6bKb9uZB70aazSnAi7UL6TYYRQzBSnH338o9jaIisCSWZuvRphZN78LNcDHIVtctKS2U/cbOZT3/J9RriwJYkUVit5LdFPK8Q3u0sT0YuoMjTNfXb7s3G4KnPJzcYD7N; 4:Y7hjFB0I77em2aophjXVzeqna3XKpUPJwIoDWRpuqMKV7HPix+0UfUUvRdYBpB1els05Aw/EE9AGodltuX9gqHKKsf9vO9mqj+3JzyQsryuULjZp5BVXt5wqaFkNfLhdvG2h6PSVNPGeYtExniQIDXmAJq+kAEjv2yE3ZY2CSD4Jp3V8pseEKwE/6JXG4hJk/KZEaC1tIN0nf0lXigXVHavp4ZW5qvdy/uk3gkQV/tatpl07UkSVtYTK7ICYoUao/y+il+sedFrXiDNl3Pe/1q4GPjz53qjDsbPoRHKX2pXoLOHaxatKoBK7jiWt3moe X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(5660300001)(76176011)(186003)(36756003)(86362001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:r8xm33QfFzBSutrEZPUrzufdRFpMnsz2von+sgaQi?= eB31P7j1hk+czYMQe8exgpAlTDbe9sHrAqNjAv3Ho8fxDoIRUG9ZAxb3hLIt3UwrwkhIZxGf95FKC28YKbPUI0IHqwKUJOgoFcNJf+UeO2Yk5RxGgekqTfgUqFziRIHESIycGJLYwbyM3Km5RA/f9S1Yb3ol5EbuF1d/tSr5wSrLShXxfmalnEWAU0R3HPUldcOcrkXNOhNHV8K5W/iFfN7AzQCnxYwXJXxdipckpMV4v6s30xQftWbF6/eFsFwJIPOEpXZXW5J4ue7kYZ0qwsWVIxdh0ckyjXoxYWhoua6N46jpenAAbFUz9aQU/Vgjv4O7aPILSpmgsLB+1D2Tuwi5jeyaTy99Pua5FXp5EBdZaeXbhVUpoo6Hohci/3SVtrbMUXcBrACMNfi78wchDjL0N27HoqBGB2DCz4I2KqAwEv03/RTt1pOOjH2qByIGB0MTu4lX2PnUu5vNVzl1AjEcFFRhaPPJUfV6VDfKKipmaB5MYLi/fnikgjIDagnaGDniO/LKAYk1Ujs8rtmKbg7G0xx/XtbPzoScGlzsYJ0nGF6DRZkQSyDRz3lqB9jgEWbb6FWNhcFwfwsaRkqzlNsT6SEcwQv4rbpDnbcS9vJzqeOSIm9go9f9tQ/6Ttv28faL5IbLoRWA5GUW+ftTOP6nGAPIcqbK5w7/AS8/864rt7i8vH1F2Jrk6Iex1KoVmUPX2OTMdrKIbJp7II6LQhPIafNgMwCAlP514kiqTDj0UF1n3y4tYilEuEJlHdnUoKN8/sttitEo5GGCXVTJP4DTZEHbcbKrL62FqhaWkcF3x1Oi1qoqpVCmv414Y3Sj8S6eahWsl1THu/G2GrOJtj4Ao5wqPmFfDA+Qxwd+ZbbsH2YwifH/ajaF2VzdR/FTxtweEYqO1hPSI6DV8kvxVS24slxBCFzGuReufaErt1eYokcST6Y2lbcbV3XVPQrdHgCBez2z2cQ2A/tVfChB+p9ZaXMx0tYWGV7MYJrKrUVuEYM3crZ9oeYIKRJbrxwI2n03YXuY3xQ6p66+/BoRCNgeVXT26mLPw9Rr6tSXrFbG+WyknS3ihJolJdb7+VFFQ04KAKap8q72WJACEcC6d+ddaY9wj+GtTP5jMRyhFEHI9TgrpKnCFsFVIWByK/W/YotsCDEza3sNiy/8wmlFD4AEHqHUGtTTsNWgIbAda/5S88Z07+8wJHa7CCz2aOQmjWKTN4L4XJmnJbCs7dM5weG X-Microsoft-Antispam-Message-Info: 6NtnhYxMVzkNOuCkEku9yl7lGMOGQ0oMYrI457hEp6yHwAypPCMwFkmrP1LViH2rrfL8T6HPMn59/XFmfBPDCICov4tCc6+H1VcxtMj72QNtwoHu5zDdjKXxz3vGcY75x3mFlgmCJRMSk+6E16xlvsh0MyMdC47TMwMu/16vLyA+O3lTGUiVVQeMQaApjzoQ X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:QuyCG+UF+Q5j4Q/Af+GZcEVT56T89uHPmH6ZztdXWx4r7DVxQs8HtzRLkQ6Bk3v3AgtEqWJIZixLFHpe986aSyrXhjNWT48IvHspOm2C60fSGGJGE/JjwDFtjd3znShTQnR08H6Ib0+6w8sz+BhtDfLqU2ewr1j/8/7ejBpPYhJCOb8+MS8s1mkPMkqHRcm0IzvSJYdkm2SO2WENIax98/JE4FOAz69T9+BNAeunPhYDzMWpMZiUVpRGpPJ4Q1XcSAF39iioBB76+U8KnLYkfWlwLdm58Kw7n4+tl1pDrwIMKxjqhX9a8SYnvnUUZgNFG3pGoesPHcr9DuwHk5mWJ+WP7WNNhoHB507EljB7xWT1ImYdezW7wao/YAZieucl/EhB5loTQNRYEameFfEsis6P7FwVfnLpGNCb3GoRg6WxEA+sbQ2tIuaHh1l3voIqnvTikh1VJQHEU1D0tPw0iw==; 5:MJJETH5EXeZsXhNVo+x59sdYnM2aM/+eGGNMMgV8wvWSGuoPV7lU/FcF5ku8E1Sm3kMrUKo7ihqB6IeC2vtl44EYXxpsDjpqnLRFxHI/kM1qhCvYOoMbkTeD5SHyCfU4IXM1uHj2TXsHB8eHI4gBHsjhO9uvw2t2YbYgqaf+Fgw=; 24:kXeiiAuvQCM5E2DGSO/HlP0Ax32Js3k4kl8GtDROrFGXsgKcn8aD/SkeEHxXtpCgYmZeGvUOjroPZU57xN1Ba7YmlNI1sb1k99LefdD6Bew= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:1UQu2aw1BC71WKFFx9XJZSxFqtx6fTF/aCYO5foi05LE4az2n/fG570rtLqko6mP9FT1T0MI044aRdHr2ngcczy7DgPCuJ8X61X1eK1uSVeVzgJPTpW3BwV6HafezLBJfDlGBWqFThEjmt690vm0yxNw5L/tOLOmM8EygKdrA69xGQpLX/9Yn0uAq9LBhaiiotKBp0tquZMP2jUswsOz5I/nTX+kLjzB4XrGBRKg643Ym44SzG8eK6szaHvF2VEn; 20:sIyX/SwtULhSj4bnPm2FjYbkQqNIi2BdchsozIvhV2KUOj+XeO5DnxKEJnFd8Au2dowl4dq8YRWq3M0jeuFd3Ug5uFTK5GqranrWrR2bRuwVL4Qhai+5YNevtwfBYDgf8eydjrzVs6pmA44jrO3yuEOK7viiFXZ04NsjwI9sbWOeUgcD1KBVyEsPB2ENCXy/qhe7XTr0x/q2PdtkGhiew8MW0gfBpnSOfOZhWNwD6K6g7em/V9geYthdIbXLhV6g X-MS-Office365-Filtering-Correlation-Id: e0029fef-4b02-4a66-0509-08d5b9b9a58b X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:12.8045 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0029fef-4b02-4a66-0509-08d5b9b9a58b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.49 Subject: [Qemu-devel] [PATCH v9 1/7] pc: add 2.13 machine types X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add pc-q35-2.13 and pc-i440fx-2.13 machine types Signed-off-by: Babu Moger Reviewed-by: Eduardo Habkost --- hw/i386/pc_piix.c | 15 ++++++++++++--- hw/i386/pc_q35.c | 13 +++++++++++-- include/hw/i386/pc.h | 3 +++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 729a0508aa..e36c7bbb40 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -425,21 +425,30 @@ static void pc_i440fx_machine_options(MachineClass *m) m->default_display = "std"; } -static void pc_i440fx_2_12_machine_options(MachineClass *m) +static void pc_i440fx_2_13_machine_options(MachineClass *m) { pc_i440fx_machine_options(m); m->alias = "pc"; m->is_default = 1; } +DEFINE_I440FX_MACHINE(v2_13, "pc-i440fx-2.13", NULL, + pc_i440fx_2_13_machine_options); + +static void pc_i440fx_2_12_machine_options(MachineClass *m) +{ + pc_i440fx_2_13_machine_options(m); + m->is_default = 0; + m->alias = NULL; + SET_MACHINE_COMPAT(m, PC_COMPAT_2_12); +} + DEFINE_I440FX_MACHINE(v2_12, "pc-i440fx-2.12", NULL, pc_i440fx_2_12_machine_options); static void pc_i440fx_2_11_machine_options(MachineClass *m) { pc_i440fx_2_12_machine_options(m); - m->is_default = 0; - m->alias = NULL; SET_MACHINE_COMPAT(m, PC_COMPAT_2_11); } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 9ae916327e..2372457c6a 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -308,12 +308,22 @@ static void pc_q35_machine_options(MachineClass *m) m->max_cpus = 288; } -static void pc_q35_2_12_machine_options(MachineClass *m) +static void pc_q35_2_13_machine_options(MachineClass *m) { pc_q35_machine_options(m); m->alias = "q35"; } +DEFINE_Q35_MACHINE(v2_13, "pc-q35-2.13", NULL, + pc_q35_2_13_machine_options); + +static void pc_q35_2_12_machine_options(MachineClass *m) +{ + pc_q35_2_13_machine_options(m); + m->alias = NULL; + SET_MACHINE_COMPAT(m, PC_COMPAT_2_12); +} + DEFINE_Q35_MACHINE(v2_12, "pc-q35-2.12", NULL, pc_q35_2_12_machine_options); @@ -323,7 +333,6 @@ static void pc_q35_2_11_machine_options(MachineClass *m) pc_q35_2_12_machine_options(m); pcmc->default_nic_model = "e1000"; - m->alias = NULL; SET_MACHINE_COMPAT(m, PC_COMPAT_2_11); } diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 2e834e6ded..69fced9aea 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -304,6 +304,9 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t); int e820_get_num_entries(void); bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); +#define PC_COMPAT_2_12 \ + HW_COMPAT_2_12 \ + #define PC_COMPAT_2_11 \ HW_COMPAT_2_11 \ {\ From patchwork Mon May 14 16:41:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913095 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="a+aydoY2"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l62D3zJWz9s0W for ; Tue, 15 May 2018 02:43:00 +1000 (AEST) Received: from localhost ([::1]:47186 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYs-0006tb-84 for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:42:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58465) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYH-0006pz-QK for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYE-0005gY-Ll for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:21 -0400 Received: from mail-cys01nam02on0046.outbound.protection.outlook.com ([104.47.37.46]:60455 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYE-0005g7-BQ for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=tNgVVCaE4C3Wvve9hl9V2bzBWBrtP/+//uhi04t3jGA=; b=a+aydoY2gc09p+itsFzwDJjxOCr3YMWuSTQHiVb0/AP9f1PNkUqXZilQLps6uECfAWTLrDc9R+7wj12gGGeCL41ewXKy+vRaRatTo6g+PsY/dLMW2ChTEaYqJQgjfCdx6VVEsIE+2gtu7LOqELvMAMzXbLCQSGW3vjaOaj4MxHs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:14 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:51 -0500 Message-Id: <20180514164156.27034-3-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:uek4xg8k7Sf5I/i87jVrucaBKhhf7C/hXWRTXNUq5xeOB4PDMU46+7kqcQI8z9FvzDgkcS25CicM+F8hcGpkU4RsIIFMSVVvLqr2ehYnxPoj2BdBIIhGSBAsbToS7ccg93AednuEI7vOR45PoK0CB4M+Y6x+AjGuJnBQyt0z7P1gP7mRSjooQ6bnjGW3HcfqpyvROpI7a5oUxJW8z1ThtOsry4I0D1h9/qXAndvggNONzb9e/lioLMigq4fTUO23; 25:IR/coz4oUvHHOtH52lZS545yC9Kwm+01vgTaFVrDuUoa6ICdRDmox9hclt2rX8dEZ92ufGgTKcsXsbnMmFvcK0US3fhbqN1COWGa4aUxcJbAMJnCeQeQRy6KFJ4KDVsY9g8kD5stp1x/rQc8dlMn1EXPRWnlPf7h6PFmTiMvzSFXRxsTku5XVhPR53CdmcmTkL5x1A6RKWYe6VndR2oe9xgfjxbKbk2rIXLT4/R2FWeSOEPN+4O9JTE3wk6vlj7ko5t65jD4CRBodOapjmAA3MF9mqyTs+ZqFYrGlRxJgnGygbzawGo1u20q3zmx3nak52coMZ9wLQWCJBPbWnsyNQ==; 31:T786B7PrXKECqDZSSKVKT3lv+3W7U+DY7iYXIFY3R49PB91oDEbNHl2gOWwIrkCN00bBVsdA+MXAF6GCRPifLx7/b5q+oz8tNm7fY5LohPYJu6jTTYj74yEwBxpUNyUJx5e+RaQCCmVtkbDpk+qQrMO2IlQ37fgx02VMlo3gtF7U7E+HeYQ2/9FXkN8/vJrrAZvpN75pE/M6b+VTCFIzLRFYk1PWFv/3hcTGaRT+jxM= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:AYDidq6WbznJrGslb8wyXmDe2RL9amgd9PW3NBXotPEMg7jecC4k7Vpf8dUdviiUHfIpjO7RiEFx7OWOkdeVk0pm2wfFuGFMw8pr7C3Rb+ceYQlO30GIwNAmjc6Frx4gmmGKf/UBd321pL8lk14cfLrt0rybvB1Aq9BMLg5kYIDYAcpOGrmPH2efw0h2wNBqjkw2a5jF6q1MY0i1RQQEM/OizJViGCF8NaNrZYT/PIWGAcxtscYbU+FE3CGDwy3ZunDrhp0P0ZzW43Xfre0bIx0+9V5NnGabhfc36scNrtOSP6R6xFWaTE/kyN423dpL4Fv0QdWfTRAza0BKHlHENGMU6KYcRfc/5CluJ5vszBI7K4ScLfRkkQE1LkWaTbVCrOKk9q4bKD0F958tN6wUfklHYror7aO1ekl7Z5Fv8jONL3XRhj3K2mLWPAFoRgrSUanpKqAlYoq6v0eRvVcYxUPclBYLLsOfBAStwzq7phTWVdWrZ1LUlksV7uc1MmdD; 4:2zqzRK9AefzqZ/mgLJbwdJMszvT91VGkB7o9BqRhhV0s0udHCrBnRQohrY9Ehwa+i0U5l55z6RrDiVTwsoWs8vAmn5AISsqiwn1emk7oYjRFoat7UY3R+2qnjRFTp5w8Zz/udtcHEOTrOCfsHGpD5/8jIr5MQp1r12iitSp98IMkMl3H4/rdczBDFpCh67HcLVjenCrux5DqUw7WbfEhqL7HBUQA9iU5d+OixmgfPR9Y5cAJhLvv3O1Ou/5FSms+dPFAKqo25UkWVrbntPqY9JowH/Q7nliYMipF2xXLcskCc07tv/p72slgW2V+9GOY X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(5660300001)(76176011)(186003)(36756003)(86362001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(45080400002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:sOxRYmKPKQOwHqNnc2A+kMk6bh1k+fUGT227gPyhD?= AkHQP9doLn+UyvwlAyU+YYHgATMLIG6YxuDeF6rhSuKTM6ybNfP0iWeO4/YHxchol2mshvbFZ2Gt83Pe1un7BnDaHcJ6oO9wYQawDr38l3Gn7nGVo0lNv7VP4kf9ILD0L1z+0DA8fOUnbPHUuhGj8NHinONgDeZHXEB8v0OaeN1d/8XBDipZ4Hl3RlAhKeGzXX8cbetIvhZlE6enoazXgZj+eXvpmo/cKj+Ki/xCVvMfT/V1aa2G9uPv3VJROCTS6VRm/1HBi7MJF8It2ZVLJaVDFZD20HB7cbvP3K38BgKrmGLXI1Q3HqaZYxcLZNfZJmGNYBXcrhyt3wrxpKTAWWTRhMDV3t1+z2txLxxZrnlFwyU60tl3pYL2DNpv9Rws+VBVFdF7bz2+K5/qfl5RHbQQQGcQ1gF1woVisZrJDtuvAdjRX/CQoksoO1xxZcz80PO5XGgDmNstPODS0/6C1QN2W+s+IcxfehR47NlrTQwXkvoz/Vl6X+6Ut8v2HeT+XR6nj/YQTTiY1X2onPqDyQmolGhsvxFrOp3rxfTdpwacr6KSH9nsHvZ3zL6/Kk+Wgu+b101qUj8IG5uuNS3QZxJ+k2u2klWALcaWiBhQBq4uTJx4XMlRYV58H3PP7iKIUxL6FpOSwagp74F/SgtaLUbbKKNNalAwDfrgWTnzyfsIHxdWon5xLo0Ltp0tYOvfmBt9bXbLuBJLEpM6yOf2Uypz8oR+trRkeriUKzvGekFkAZy9JbommuIk/ZtkB//JCs8gNh8efwC/N6ZfIsWTeEONw9B2QG7qah7LtSvYUsLYqZ7tsNNJNRsddPGPMaHvIxyGJp5x/GDAUdR7PRqpQhcYz48fzN15a/xWGHDEmGVREgLViwtJdFeOxikkHXA2fMjX7/8bIb1M6lFjJrTeoTBQ1GxDH3uK0qtZqLlHcwGSD97A9AS+hH4OQrGbgo/dRUoQPlVfcTLWOOsN3UxKp5E3CeXTYU9cpHncXHK7D2IPWMOGKlf0Gj46j0pbr7kUWnxtiRboBdc+Yc8YM64vbjkHZmz63DoJ97YAhFLeEh5NE53SmTRxcBq1PGHNaFvl4C/n4fn/1JdUCcNimt5FkTRPfovXZYQaHTnm1N8Uyd4JhcYt9T6G+5dpj0EoJecERJcmDkpIjhRD5UuTJ+BJk69JqZExB125wGCaLAaWIwnFM2F3c6FAmjOTdJJfH4o6Fd3oRxauILsKsIh4vsLpyoGpK3kO9Pf3jDaQqQWJYRE7A== X-Microsoft-Antispam-Message-Info: IATCTxvey+l0h4ykFlCyryt+b3a+HQ8nIA+GuT5N6d/OE2iVFdubOGKsGo7jcmTSV/bOU4WZsJddLnkwcmk9QSvBXPboZDy1DxAbyz2K8qmmT4Foe6kXEDM4AWIWsMFN9MK9N249j3sWwVursnQDOBz2+L6kOh0mwQL3EDyZU9Aw2AiKSdBc6OSKMyYTXUtf X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:PNUrn6MK28ZMqxMF2uUf9Ibpg2GT3WpMGnbjm96Psa2MQqwsA6hH5Xu6JnHrJ7/POHiVEiXg3tJt94rHmywkTmgb737GIDdNFT0ZZ26dVNwF/IvQGVlLOMMSM0qyCYszHldlOdQq6dn9P4/XgGHLDs6aYJPMRUBpYeJhxmALJjMU3ksCmhE40k7qwbr+mXbZmCIOBfHKMAk7dmeE/toRvqpeY5t/NUMPr+GCRZ700P1sgHsKzJEqWE8ki9dIUDPbW0WR3ztPWk077hKb8c+Yvp/gbGZO1SRah/itk4UgVSR098L7XRZbec2y/N5MofpPAHwaXc+NIx3YmI/FfLky6DjC2HFKNcF9QTivLjTzdBBOs5RTGcY1FY9Go/wb0cqeDwbfAd1el4riNFajs7WBmqN6qJcYDQo/BH368hZfY1WhuVdDOmOVER/demIC/++Wx38fA1g8AR/R8lMMtd2+Xg==; 5:H+tmjpsUSAw2oPC8g5m6zwuijyKEUSqbKXsrHSnHrlUk8y54/gVYHZxvRkxuytZXQbGUDE+f9NZ7xzuBszhYKtM25LSc/T0V2LbSoBaEU6FFChu75ONMPAmkF2hMRX2TjIsww4Fa2Yfki//lpBiv1InyKMj8nI+VpT1sg1ASLrE=; 24:H0ClkE+gmNYTcCByqMsz7A3hpGuV7SYP4PDahVlM+zQREL52CsyVWROCWDyZt//Nbuu5XlxPXNEuhQIQp4UCDssk1UGBaBVsXXggoPnPMTg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:FV5As94vcfnjFkxwwcAuzawvM6OudpDvsnapsSA9fOtx8xSmdaVviYQmOh+LWD0zgVb158QYZDvGAXaOnODj743OdN8NpWsXQS5huIna1Jm9GahTgZqZoYn1pDnIhR26l39C+R88N1p/ZDYzUKto2ejXhJEtW22o5KpPQgnRjhEruvXVW1Ue3/BwylrL9IAKh6b47Dgt/TgW/tEazRguvxDcZkJmCvIeLWbpvtVCamLdvLOqnucb8Luk96AoeWrv; 20:op4HhewC39rBCbnnfOX1IIH5xec0eqe7pDIULNpiLwy9fuaBJhDTqH4BMrpQlXmbxjbrSpE4NRGmzYhB+e3f4XIom+8tH/AJhSqqVWcD5d9TMe2MUKOCnOFK7rSm8jO9U6ltDb+SHRbjjRx2RixpEaKMVuALrA2D8LCu5ZvGm2go8LgMfLWGBlD0hMpBF28F89j337UcAH6QWuGTVbaCHLRGaZlsvK4MGEWAgrTrS0b13MvACDjg+p54uR/68xgy X-MS-Office365-Filtering-Correlation-Id: c3a90c27-a0b6-4913-5cc4-08d5b9b9a685 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:14.4451 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c3a90c27-a0b6-4913-5cc4-08d5b9b9a685 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.46 Subject: [Qemu-devel] [PATCH v9 2/7] i386: Add new property to control cache info X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The property legacy-cache will be used to control the cache information. If user passes "-cpu legacy-cache" then older information will be displayed even if the hardware supports new information. Otherwise use the statically loaded cache definitions if available. Renamed the previous cache structures to legacy_*. If there is any change in the cache information, then it needs to be initialized in builtin_x86_defs. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae Reviewed-by: Eduardo Habkost --- include/hw/i386/pc.h | 5 +++ target/i386/cpu.c | 97 ++++++++++++++++++++++++++++++++------------ target/i386/cpu.h | 5 +++ 3 files changed, 81 insertions(+), 26 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 69fced9aea..df15deefca 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -306,6 +306,11 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); #define PC_COMPAT_2_12 \ HW_COMPAT_2_12 \ + {\ + .driver = TYPE_X86_CPU,\ + .property = "legacy-cache",\ + .value = "on",\ + }, #define PC_COMPAT_2_11 \ HW_COMPAT_2_11 \ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index f9ebfcfe79..e1daff37ab 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -336,10 +336,14 @@ static void encode_cache_cpuid80000006(CPUCacheInfo *l2, } } -/* Definitions of the hardcoded cache entries we expose: */ +/* + * Definitions of the hardcoded cache entries we expose: + * These are legacy cache values. If there is a need to change any + * of these values please use builtin_x86_defs + */ /* L1 data cache: */ -static CPUCacheInfo l1d_cache = { +static CPUCacheInfo legacy_l1d_cache = { .type = DCACHE, .level = 1, .size = 32 * KiB, @@ -352,7 +356,7 @@ static CPUCacheInfo l1d_cache = { }; /*FIXME: CPUID leaf 0x80000005 is inconsistent with leaves 2 & 4 */ -static CPUCacheInfo l1d_cache_amd = { +static CPUCacheInfo legacy_l1d_cache_amd = { .type = DCACHE, .level = 1, .size = 64 * KiB, @@ -366,7 +370,7 @@ static CPUCacheInfo l1d_cache_amd = { }; /* L1 instruction cache: */ -static CPUCacheInfo l1i_cache = { +static CPUCacheInfo legacy_l1i_cache = { .type = ICACHE, .level = 1, .size = 32 * KiB, @@ -379,7 +383,7 @@ static CPUCacheInfo l1i_cache = { }; /*FIXME: CPUID leaf 0x80000005 is inconsistent with leaves 2 & 4 */ -static CPUCacheInfo l1i_cache_amd = { +static CPUCacheInfo legacy_l1i_cache_amd = { .type = ICACHE, .level = 1, .size = 64 * KiB, @@ -393,7 +397,7 @@ static CPUCacheInfo l1i_cache_amd = { }; /* Level 2 unified cache: */ -static CPUCacheInfo l2_cache = { +static CPUCacheInfo legacy_l2_cache = { .type = UNIFIED_CACHE, .level = 2, .size = 4 * MiB, @@ -406,7 +410,7 @@ static CPUCacheInfo l2_cache = { }; /*FIXME: CPUID leaf 2 descriptor is inconsistent with CPUID leaf 4 */ -static CPUCacheInfo l2_cache_cpuid2 = { +static CPUCacheInfo legacy_l2_cache_cpuid2 = { .type = UNIFIED_CACHE, .level = 2, .size = 2 * MiB, @@ -416,7 +420,7 @@ static CPUCacheInfo l2_cache_cpuid2 = { /*FIXME: CPUID leaf 0x80000006 is inconsistent with leaves 2 & 4 */ -static CPUCacheInfo l2_cache_amd = { +static CPUCacheInfo legacy_l2_cache_amd = { .type = UNIFIED_CACHE, .level = 2, .size = 512 * KiB, @@ -428,7 +432,7 @@ static CPUCacheInfo l2_cache_amd = { }; /* Level 3 unified cache: */ -static CPUCacheInfo l3_cache = { +static CPUCacheInfo legacy_l3_cache = { .type = UNIFIED_CACHE, .level = 3, .size = 16 * MiB, @@ -3337,6 +3341,10 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp) env->features[w] = def->features[w]; } + /* Store Cache information from the X86CPUDefinition if available */ + env->cache_info = def->cache_info; + cpu->legacy_cache = def->cache_info ? 0 : 1; + /* Special cases not set in the X86CPUDefinition structs: */ /* TODO: in-kernel irqchip for hvf */ if (kvm_enabled()) { @@ -3686,11 +3694,21 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, if (!cpu->enable_l3_cache) { *ecx = 0; } else { - *ecx = cpuid2_cache_descriptor(&l3_cache); + if (env->cache_info && !cpu->legacy_cache) { + *ecx = cpuid2_cache_descriptor(&env->cache_info->l3_cache); + } else { + *ecx = cpuid2_cache_descriptor(&legacy_l3_cache); + } + } + if (env->cache_info && !cpu->legacy_cache) { + *edx = (cpuid2_cache_descriptor(&env->cache_info->l1d_cache) << 16) | + (cpuid2_cache_descriptor(&env->cache_info->l1i_cache) << 8) | + (cpuid2_cache_descriptor(&env->cache_info->l2_cache)); + } else { + *edx = (cpuid2_cache_descriptor(&legacy_l1d_cache) << 16) | + (cpuid2_cache_descriptor(&legacy_l1i_cache) << 8) | + (cpuid2_cache_descriptor(&legacy_l2_cache_cpuid2)); } - *edx = (cpuid2_cache_descriptor(&l1d_cache) << 16) | - (cpuid2_cache_descriptor(&l1i_cache) << 8) | - (cpuid2_cache_descriptor(&l2_cache_cpuid2)); break; case 4: /* cache info: needed for Core compatibility */ @@ -3703,27 +3721,35 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, } } else { *eax = 0; + CPUCacheInfo *l1d, *l1i, *l2, *l3; + if (env->cache_info && !cpu->legacy_cache) { + l1d = &env->cache_info->l1d_cache; + l1i = &env->cache_info->l1i_cache; + l2 = &env->cache_info->l2_cache; + l3 = &env->cache_info->l3_cache; + } else { + l1d = &legacy_l1d_cache; + l1i = &legacy_l1i_cache; + l2 = &legacy_l2_cache; + l3 = &legacy_l3_cache; + } switch (count) { case 0: /* L1 dcache info */ - encode_cache_cpuid4(&l1d_cache, - 1, cs->nr_cores, + encode_cache_cpuid4(l1d, 1, cs->nr_cores, eax, ebx, ecx, edx); break; case 1: /* L1 icache info */ - encode_cache_cpuid4(&l1i_cache, - 1, cs->nr_cores, + encode_cache_cpuid4(l1i, 1, cs->nr_cores, eax, ebx, ecx, edx); break; case 2: /* L2 cache info */ - encode_cache_cpuid4(&l2_cache, - cs->nr_threads, cs->nr_cores, + encode_cache_cpuid4(l2, cs->nr_threads, cs->nr_cores, eax, ebx, ecx, edx); break; case 3: /* L3 cache info */ pkg_offset = apicid_pkg_offset(cs->nr_cores, cs->nr_threads); if (cpu->enable_l3_cache) { - encode_cache_cpuid4(&l3_cache, - (1 << pkg_offset), cs->nr_cores, + encode_cache_cpuid4(l3, (1 << pkg_offset), cs->nr_cores, eax, ebx, ecx, edx); break; } @@ -3936,8 +3962,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, (L1_ITLB_2M_ASSOC << 8) | (L1_ITLB_2M_ENTRIES); *ebx = (L1_DTLB_4K_ASSOC << 24) | (L1_DTLB_4K_ENTRIES << 16) | \ (L1_ITLB_4K_ASSOC << 8) | (L1_ITLB_4K_ENTRIES); - *ecx = encode_cache_cpuid80000005(&l1d_cache_amd); - *edx = encode_cache_cpuid80000005(&l1i_cache_amd); + if (env->cache_info && !cpu->legacy_cache) { + *ecx = encode_cache_cpuid80000005(&env->cache_info->l1d_cache); + *edx = encode_cache_cpuid80000005(&env->cache_info->l1i_cache); + } else { + *ecx = encode_cache_cpuid80000005(&legacy_l1d_cache_amd); + *edx = encode_cache_cpuid80000005(&legacy_l1i_cache_amd); + } break; case 0x80000006: /* cache info (L2 cache) */ @@ -3953,9 +3984,17 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, (L2_DTLB_4K_ENTRIES << 16) | \ (AMD_ENC_ASSOC(L2_ITLB_4K_ASSOC) << 12) | \ (L2_ITLB_4K_ENTRIES); - encode_cache_cpuid80000006(&l2_cache_amd, - cpu->enable_l3_cache ? &l3_cache : NULL, - ecx, edx); + if (env->cache_info && !cpu->legacy_cache) { + encode_cache_cpuid80000006(&env->cache_info->l2_cache, + cpu->enable_l3_cache ? + &env->cache_info->l3_cache : NULL, + ecx, edx); + } else { + encode_cache_cpuid80000006(&legacy_l2_cache_amd, + cpu->enable_l3_cache ? + &legacy_l3_cache : NULL, + ecx, edx); + } break; case 0x80000007: *eax = 0; @@ -5133,6 +5172,12 @@ static Property x86_cpu_properties[] = { false), DEFINE_PROP_BOOL("vmware-cpuid-freq", X86CPU, vmware_cpuid_freq, true), DEFINE_PROP_BOOL("tcg-cpuid", X86CPU, expose_tcg, true), + /* + * lecacy_cache defaults to CPU model being chosen. This is set in + * x86_cpu_load_def based on cache_info which is initialized in + * builtin_x86_defs + */ + DEFINE_PROP_BOOL("legacy-cache", X86CPU, legacy_cache, false), /* * From "Requirements for Implementing the Microsoft diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 318e66108a..1f9ccd47d9 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1395,6 +1395,11 @@ struct X86CPU { */ bool enable_l3_cache; + /* Compatibility bits for old machine types. + * If true present the old cache topology information + */ + bool legacy_cache; + /* Compatibility bits for old machine types: */ bool enable_cpuid_0xb; From patchwork Mon May 14 16:41:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913100 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="2ztMfe3R"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l68f3Xkyz9s0W for ; Tue, 15 May 2018 02:48:34 +1000 (AEST) Received: from localhost ([::1]:47214 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGeG-0002DT-30 for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:48:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58466) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYH-0006q0-QO for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYE-0005gr-Vy for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:21 -0400 Received: from mail-cys01nam02on0046.outbound.protection.outlook.com ([104.47.37.46]:60455 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYE-0005g7-PO for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=20WZV7ksie1BCfXV73vd5QmOsxtL5Wp7jC2vCCYutPQ=; b=2ztMfe3R32F3+9f5bGU/6jtZaiUPTR5FpWBFyfwG60fScSsBKVMikLcwixupN24mb60x7VKgT9a8+kkmL4Fn1Q6ja0LaLgqNsfPHq74TJBZasFxmgvBK6xH3aIgbMzf0yrOY7iCPT5Gw3UmbI+fbDXi9F+Ryw21WiA50BqTXE50= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:16 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:52 -0500 Message-Id: <20180514164156.27034-4-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:3mNOM0eTLYo6cbd+dUgv+3zBiCIyPmaeyobLplWj/UqtPi+/2l2+wLXEtO5YDpfoyT4e63wPMHXj4dyPGvHi4MdqojPdbo33yImnztTty39UYnas0gHquzXNzMDN82U1AOEIfzc2JkubMvJb5cLvUfaQZFkbfAYbP6yFexSs+zuQBbuw32UcZpgnQ28OFbBR9YzDw/6E9KDOIpb8Uv7m7OkKRy6gw1uJiCaHL1YURL1+KcVn1Qt4zyVFl6uRCPNx; 25:f62qun7/6BVZhsBoi/rdnD0hGfl27wCvteVcKyP0ICGqay2wQU+T5U9VqYyKZcglzH8cWbIrqdQftpbhfOXg4Y3mOTGa3Xzqq32WGZvnarEvqFm4w2Eezpm1DxgT67h5DCeLYANyp9p9dBG3ArO82jxf76gK4o/cah6kDQVgVNd3J4Am6Gttlk0Pla5ge6nVHrUBGfg1HERM0u9uTnsboDM0lU6KaqM6092ufuc3SZjjCO7nktN0/JsTULTGbYaEmmfdSCJXOF9tEgOyKy0QtYzyw9Y9CM3pe5PTKN0vYNeGLRoED2fP5GqBHC9tvezJtKLWUGF6V3+UMlopCFfGAA==; 31:UDDF7SSk0rI9VXnXU0XVSd+TaJcNzrZU1P+gkOpu3bh+pFfZDXMnooO5n9WL39C1W1D8oC0V4hY7Q6TFMz6QZtkOBYv2u56GhgAa2XFOvpZE+OUzn4BeRr2BOeBvjvSZiOR2Uxmr38JKqHyYzxp00ntLLmhmgGE/WXT3H0imhTMoJoVhBr/WSIwJCxQ9/WFaqnj1Ci1JZomF45q5G/XQLTz+TN+bAfQIj9aeBrywpDw= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:u72MDRAWgiFKxEQLU0VLNK1JRXn1emlaMdi74mlkTrsmDFhpbmTKTUjBUpzlEY5WB1qK0DmMWdQEzGzl/IJQzUanX0oBJmxf3obi4AL9o36OHMnx83x+2h3PcgnTCU5rcc+3mhvd2LCOWFj+gRzim2pvfRssRckz5FoPkPj5XIaBN5ZkkfXSvqZpqNfapuu1+BTKvaj/14+C6QINUTrYRHgQ6dgp7MpvH4fRdlcQIVrFewS3cYZtwl9OL5hXg2LIfXkuRDMsG58il6bbxXckBm7wjgj5OAAe9NkzN7+X+3TKO6uRGNomvaYJ5uXtqXPdExm7cGb3h0J/qG8j+o8DT7MuE3YWFYB0ULfo5aAFvp4byVSJsNNv9A7II1i629MLx9/5osUKAouZQCFNXL9iT2K4CcpJUjPR0xLupmwk3rCpHfC9e5GZ7VSzEyI4VVj+f598P63cclqYSZvk3UY0kx4UoE5b3WvivjY+v1/ABCKZyodjz+rHJ9Dc52Sia1l2; 4:WiqjSLdrjTd2BdwwCV0M9fqmWKF/OWVpuaxWAz5kudLPnbbnoMou+Pg0cwKkw+SjKu8tbHjyT3nv7MsM6pAiL+nZhkGGvJC+BmjZ1dZ08wAaUihejlQGyVPdY9jhaqxfJh1Pqgh6RrUa6hjSmkdL/jvs11Tcx/BmDC9IPzeUv+aBpLDn7S67VCYeNRY5hbe1B3zCOUL0MW8Mw6We4MI8N7hiu9rtn6dRfboVKs4Nt5CKnj2Av86kHRGKQtciQUN16wCnZYt/PuIIJ+NISBbPRfmnxhzkdQlLBZ/VHdt2iHRm445PsoHbBLtKOPlveQYU X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(5660300001)(76176011)(186003)(36756003)(86362001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:Y9nqJZcZkT7s2436iPH86HxybQklWulkzxWTqlASy?= wVGuReg70YcoHRknDp/Jbu+8qQRaJ/mtHSk9pepjxan6+lE+n0SJNNpQpybRHoPrxFxwR1WJv2jxs7JJ2VSlDc5VlMh0z5Ws76L+aODpyG/UZajxVphFMVInyl1N4wd+uRCVTARDMLMN0tvftU2ruI201OyniJaFYvaqjb+k64/xiVKCPhYilSvJk5ijfMttxJ0PUyleql5AkMF0K6XPia63JqS7WEnQYTaxS0DM3JmZDbmKjkCtsq70aSlzacSeXs4iLkb0NBIA4DGLnZGy8nRCAXijBSRgse+alCISGywW2wEhr5RDNb1UeDmqtuTa3c5pkvgEA7zjHsogDj7/AjVegZgHhUIGIvz90ARq5nqaYZf9UiN7/DA9LgcuaCI5kL1JR6yj+4AV8VWg62QO2X0NAfpD2PWHS2pxUsn3KbgNGN7bq6r6RBGtnflULCcn1mdABbxbiiRQEaqN7fEvoKKs+3n7St/ha0bwfc8hsKIjfTgX1abBYQ9skKe7PHCYW3TToKX9H6rd7MqdiuSjfM+YIDGPB/9lA6fmX4l6VzvQN7LAN2Hlyn4dKRWAlzxtvBhWId7kRU6QsdpDmbkyLUMy/CIfIws3ZsvZA4eTuObpjIQdUTPzhYqe1/GLa/TO4xXR+dS3DoODQ76TTUlkOxgnNy+UCk3jKAThPjM1YeNsIwEXXGoOwjXH2PB5PSb2ia/Ai/Xt62Asd7doENeZqiNxz79brWf651ATWvOQ5YNLHTcHNEns0FWCmbYOaCAYoOgmOUO50Z2xbVC3Kq7PO5n8DFD5ZJMChcInFVhdpkHN4codV4BdNrtt0rhBA9KDMf3bCFwL7MRLU0dUKVXFtDUjxjMaUf/7+ScpVoR2P9GZKmtHZR0xIjZTCO5LRXciJSALEjqwEAAlIYuHR+z7WZWVdUVag++Wo0oMgiIRz5PHZBPIQlfmrY2dIWHxRKpPv/POYgj2aF32JgTzADodJSpzQu3m7cbDq3qcCauKoh6/9qK0Lef9gkJnxpXjVqoiVCX8mHKqaZMzR0USaBcqweYddOufTYsGnQfQ/3wYxMZUzXtWRWr9WKKZ4O+39u09+HqEsIhjdzdEhE9sWoXPoi8mMCwCNqDEgto3i0q3DNiExCOg73xUXNfHqaqbBLncY60zqwUiqEfo/Qs9hQ4mAhwybloF9DW+EntMqWr+QN4ramOEkRjkYBPxBi+zue+mhSsopWKZsjJW+vlivFNEnVI X-Microsoft-Antispam-Message-Info: k0gTaiEnNozww56xH1hHavqqEa9YTIDbqkTP/EKUcio+W46CroXOefeV88VgrR63DOX82AjFP9jp3C49Me6fguxRyH4L8DZpB6I3F/qrFVTAvBG5SiVFdDU2LEzOaBDP/klgZgOdhygQA/bUtXI2JA/gWGci7VuF0oyZgQBU8khQdCnxgW38qeqjz7ZjCbM+ X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:iOrdNXzlSD+bMrkIHeCMxL0cbF4Q54ohVUS0Jm+lLW/R4cQS8hxyeUJANhd453xQwKuDhAF3Jlj7z79iOQBX+u2EVmbZ7rOZCVZ8rIX6TL52UadCSoWQbigYEWkEgzr5lCoSnsRlvJYSYf2Wz5qa2q8nCbfszHJg2wY5C9+U0rXiv0MqyJ1h7dzpBsMunJILsLAB5PX7ZjHiIm/6uam/s1f6lrjp2yOM/YRfMzvbezusrttfvhSgWXuaWZ6k1lGpnpGBNBEfiVelXdLM5bG5Rm/gV+peG3aG7eV5Xeuh+SEHnr4FD/R0Ki/KYk2wcTyDiA7GTWwQbSBRnhmAnyklXtDWddVs1edTVBtXBDM36AI3pfysA1bkEJh65VwLfOfKw6lywrUq+xajONbzssp3Dxzv/Jdw4XxOMYh/RIRqkTRstBP0H2kQqqkZiB0vkT17mZb4QuETvT5ICW0TcmeDVQ==; 5:VZ3hsmIwGdf2oL94+xgWQCnG3paP4IZoPXPz6QVwLfhWXw/z9mOU++8Pil7odxG6ftMxCp5bh/LxFwV0f9DRUB5Uzx4NgO2gwYxy0j6pCHpZ4OVDlEeu8OHFu3maY3auOCX1Ab0o+g9NlMvL8//pF3dQqKtu/D/1GBgCKbftgvQ=; 24:rfVaqlKfdWr/SgsJ0zVlWNAWKMcZeKmMK/ugcPjHqe8D+EYKiwfI99kVJ42nj+ySh6nHmBbuKTuXff4NL9Iwm013XYnJLsd4llljMNRnZVI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:TXIQ5w34vAFIEniTsUXZ3a65tUiY8SMRrhMTt+pzyqkbIyc/+Cnv+EXtnBrkBKr1kdUHsWjENLyF3Fiof9HchMQjG5nuqr7PBCVlFy+jtJ/BCDJ2mm28c/9XrTjr3GVJRpeV1UZe+4RObsCzGPqx+hLSi5OVCw6Oh1Sf2rbiPKEboFoPpLhGYIoQADpgYukOEh3+4cb3rlVBMtZyApSLLPfKArLUaQCFmqsKIB4QryM1ODkYvFWVV7uw2tOlsBRU; 20:iP1HXgQlBJMFRkVlClE/QCyrS0tj0ivtENRFl3qqeb1mD3XVngBFDujMmCjsotcXvuopw1GdfFUO1Scs/xXfdi3rkqyU5w7JfDL/qozCu+J441I+/BuZlfwKDbFKWi7hPrDV2r6XRia+7QRD3xYTqgryHHnvSzv28OXEUoC+6hKBMywXTL+jqTeVnjCjCviCD8Ju7cfA2zAFP8L5vfYU4AhfnWjqOXrpcZxA+LElhIUyNmEZObWKXSeOXUuUnyE7 X-MS-Office365-Filtering-Correlation-Id: aeb0a18d-89ef-44a6-a2f8-08d5b9b9a74d X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:16.0545 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aeb0a18d-89ef-44a6-a2f8-08d5b9b9a74d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.46 Subject: [Qemu-devel] [PATCH v9 3/7] i386: Populate AMD Processor Cache Information for cpuid 0x8000001D X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add information for cpuid 0x8000001D leaf. Populate cache topology information for different cache types(Data Cache, Instruction Cache, L2 and L3) supported by 0x8000001D leaf. Please refer Processor Programming Reference (PPR) for AMD Family 17h Model for more details. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae --- target/i386/cpu.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++ target/i386/kvm.c | 29 +++++++++++++++-- 2 files changed, 105 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index e1daff37ab..7f40241786 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -307,6 +307,14 @@ static uint32_t encode_cache_cpuid80000005(CPUCacheInfo *cache) a == ASSOC_FULL ? 0xF : \ 0 /* invalid value */) +/* Definitions used on CPUID Leaf 0x8000001D */ +/* Number of logical cores in a complex */ +#define CORES_IN_CMPLX 4 +/* Number of logical processors sharing cache */ +#define NUM_SHARING_CACHE(threads) ((threads > 1) ? \ + (((CORES_IN_CMPLX - 1) * threads) + 1) : \ + (CORES_IN_CMPLX - 1)) + /* * Encode cache info for CPUID[0x80000006].ECX and CPUID[0x80000006].EDX * @l3 can be NULL. @@ -336,6 +344,41 @@ static void encode_cache_cpuid80000006(CPUCacheInfo *l2, } } +/* Encode cache info for CPUID[8000001D] */ +static void encode_cache_cpuid8000001d(CPUCacheInfo *cache, int nr_threads, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + assert(cache->size == cache->line_size * cache->associativity * + cache->partitions * cache->sets); + + *eax = CACHE_TYPE(cache->type) | CACHE_LEVEL(cache->level) | + (cache->self_init ? CACHE_SELF_INIT_LEVEL : 0); + + /* L3 is shared among multiple cores */ + if (cache->level == 3) { + *eax |= (NUM_SHARING_CACHE(nr_threads) << 14); + } else { + *eax |= ((nr_threads - 1) << 14); + } + + assert(cache->line_size > 0); + assert(cache->partitions > 0); + assert(cache->associativity > 0); + /* We don't implement fully-associative caches */ + assert(cache->associativity < cache->sets); + *ebx = (cache->line_size - 1) | + ((cache->partitions - 1) << 12) | + ((cache->associativity - 1) << 22); + + assert(cache->sets > 0); + *ecx = cache->sets - 1; + + *edx = (cache->no_invd_sharing ? CACHE_NO_INVD_SHARING : 0) | + (cache->inclusive ? CACHE_INCLUSIVE : 0) | + (cache->complex_indexing ? CACHE_COMPLEX_IDX : 0); +} + /* * Definitions of the hardcoded cache entries we expose: * These are legacy cache values. If there is a need to change any @@ -4035,6 +4078,42 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, *edx = 0; } break; + case 0x8000001D: + *eax = 0; + CPUCacheInfo *l1d, *l1i, *l2, *l3; + if (env->cache_info && !cpu->legacy_cache) { + l1d = &env->cache_info->l1d_cache; + l1i = &env->cache_info->l1i_cache; + l2 = &env->cache_info->l2_cache; + l3 = &env->cache_info->l3_cache; + } else { + l1d = &legacy_l1d_cache_amd; + l1i = &legacy_l1i_cache_amd; + l2 = &legacy_l2_cache_amd; + l3 = &legacy_l3_cache; + } + switch (count) { + case 0: /* L1 dcache info */ + encode_cache_cpuid8000001d(l1d, cs->nr_threads, + eax, ebx, ecx, edx); + break; + case 1: /* L1 icache info */ + encode_cache_cpuid8000001d(l1i, cs->nr_threads, + eax, ebx, ecx, edx); + break; + case 2: /* L2 cache info */ + encode_cache_cpuid8000001d(l2, cs->nr_threads, + eax, ebx, ecx, edx); + break; + case 3: /* L3 cache info */ + encode_cache_cpuid8000001d(l3, cs->nr_threads, + eax, ebx, ecx, edx); + break; + default: /* end of info */ + *eax = *ebx = *ecx = *edx = 0; + break; + } + break; case 0xC0000000: *eax = env->cpuid_xlevel2; *ebx = 0; diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 6c49954e68..6e66f9c51d 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -967,9 +967,32 @@ int kvm_arch_init_vcpu(CPUState *cs) } c = &cpuid_data.entries[cpuid_i++]; - c->function = i; - c->flags = 0; - cpu_x86_cpuid(env, i, 0, &c->eax, &c->ebx, &c->ecx, &c->edx); + switch (i) { + case 0x8000001d: + /* Query for all AMD cache information leaves */ + for (j = 0; ; j++) { + c->function = i; + c->flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX; + c->index = j; + cpu_x86_cpuid(env, i, j, &c->eax, &c->ebx, &c->ecx, &c->edx); + + if (c->eax == 0) { + break; + } + if (cpuid_i == KVM_MAX_CPUID_ENTRIES) { + fprintf(stderr, "cpuid_data is full, no space for " + "cpuid(eax:0x%x,ecx:0x%x)\n", i, j); + abort(); + } + c = &cpuid_data.entries[cpuid_i++]; + } + break; + default: + c->function = i; + c->flags = 0; + cpu_x86_cpuid(env, i, 0, &c->eax, &c->ebx, &c->ecx, &c->edx); + break; + } } /* Call Centaur's CPUID instructions they are supported. */ From patchwork Mon May 14 16:41:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913101 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="fti11lDj"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l6DS5Tt7z9s0W for ; Tue, 15 May 2018 02:51:51 +1000 (AEST) Received: from localhost ([::1]:47233 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGhP-0004n3-KE for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:51:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYK-0006ry-0L for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYG-0005hn-Sb for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:24 -0400 Received: from mail-cys01nam02on0088.outbound.protection.outlook.com ([104.47.37.88]:24800 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYG-0005hU-IC for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Gj3qdQciwkLKaWEL9VXYh1E1JowNLUCHT3w4zNhoEmg=; b=fti11lDjO0XhDE8ly0Se95jcfVtdHVQPqiQXW9pXTCQe/xWvLViqZa8g9kDFhhogPU4ZBV193GMLxZHUwf9XiSIqIcIhCAcLzMgpDtt48QonQdpO5w4fE7ZwHJP5DOUzxVvPWWiDYny7HsRwRJ4FheuBhMcm6C+mZIXHl9M+pRU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:17 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:53 -0500 Message-Id: <20180514164156.27034-5-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:/boBwEa6yVHuRyHBShORLT0dUIXmvWFwccqaYrDk8A3p4juMo2eAUKgKtKQq6jG+5kZV8FpNJuZtuNXLsgPU5C7sbldBCNXzK+KnXd4k+CZ2i9B/PjxtFmJQEpgXfpZvQXA6BePSvHYC6GZpiL43aZrYILKvfBeXeQ9lsOOaCwQ/LQ9wQpHymjyuqWutOBpV5/XUvUX/KvjBDMwwBSyuR1LZ7NZYQa/oQwlDjyFNbenFI5ttShaC+leTmOAWtFym; 25:YgGY0cMe+uz1mZHq/EGUST82PnTItY5IYaGcZ+uCzFCR+xUnA5LIoG4C3ZGI5Cv13uPOquYO7Sy6UJ8IRSzY+jDxGMeJf5i/aO7PNQ3OX93Qq3EB11Fu4Po922F0+peMzgHm6QU1fiRJCPnYSlCqJ4HWVs9SN3rydIdS0o4MD4tzvHXhf2i1BdvKCgp1hni9vowEPq3h/OCoTtpqWomu7L7GY5QUJOrGsghAI7qDMd8fVpH3dL6+JNOpqHX1GXw+uQNQeNmWGuvtJApl94pOoFw5pys6vufiG77QmcO3suMH3mqHs7KVlsiZVoxW8B9IwLM5mnfCOiHgRhZ5n8jZyA==; 31:szutXyK/WvcVLuiMzJdnLIYWpB0fLZG5NBjCn4djReK/jl5SkEd/tMu21SChkHXvzPbu9wYIDDC7jAYXtFq3dZbClA/wqwo6EjfNeiPZhxxa+IJXDd1ELXhNlgB8u0tr3YGv9kepscnBCPNR5U9oMQSzFTjPoJ8sa2Z9nutS8hO8oulvxuIclm0Owa0TCKFv6XXYy1g/j1Y/Ot7+kvIu0JQm7kZtXNwxZJcmVcKnpzU= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:LFLcNPy4T+y4+wYIAcq6WtkwdROUMAdtG2X8nGTwbZUrMW+RNVHaMgiINzEMcy295UGOiL+TYvKIhwA2T9ILH2matXeiFifvH+GRABoJnZaSDEzgErAkxcAq5ARKsfxG7kYHLtyvuHn5XsmF9Mjpe5G7ejy/l6BLDtESH7RbkUBCuAEn2tuyV6grZ0Uw+V7jy6VpUidcnrWFM9Nm/80O5gAlBEcxG8/0ONZwbpLX7PzYBB/0I9Fu/x4GB9e2oHzbdiFABgfie+HBFFtVCLPB46zD8kNcgQ7vdVqqN0NnqJKDq2Vq6vPF0qgZ4CnGKSywpF/wWJyL8310gT+ZauUXnXGl0sAYlDUeOO98mtTgyEF1cktbnFHqP+bqQ0bOtGIkYnMVUGOyBKm6EHV9lP3OGQMtGLh7Z3fyChiFq/orhlr3T0KdTn0SDOWefYYhD2h6TN/SLHzWyWeV1g1HO1zsIdsX1ycXqwam2rMU64T/HaW2s4ixJjDQTqQvgE6C13+4; 4:z8CTdRjnE7FofEaY941fGtzZpHx+hVnC4lwcX1sgHuJHFuG4OxEVSjxPX0GfKBGIEgLwboKAVfV9hYEbq6qPp8cKrDefGxrmIHCuQUBVLVRZgkIHNdZJ5u6lKYa5c99mT4MS1l/zME1bPZYrGBi+2xI+HrT9Zn2GEOViidaFzkZ76YxDWehKTRIKR2eiue9lil18j97NLgPb61e2Hfy5R9vy7Dk5CeNom2m9FhuQkX6a5uxMoz5ZgSpk47YNWwA8U/kMjmNTANGSXO2Nzv6KgPrgF13h6/1L/25ywUM7eFKowpRmwNSrJ+2WQqjQoNr6XcdA60uVmtdZkY/iRIPz4w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(17755550239193); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(59450400001)(5660300001)(76176011)(186003)(36756003)(86362001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(45080400002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:G5SR7UAX3Qcz/c8tbPAGTjgs/hl+WY87iSLKtG/QD?= s/Xipy51AnayLY9P53hKQYs6CuxqeeFYhRTIIw6ld3U6Hx7pBDlC80HxEho8gT2IPpEfwtHmDw+g0KZjnLuy/I4Zf8eKmc47pVGbWIQ5Ao8n410yJ0WTlp+m1KENq4cENYINWuuxfTjFoFn4rNM2OHkblAq4E87ganAE954AABEHVPP5xYgtc5nAQ4MiczDf7eiw5hrZ6whUHRCgZiQ22ULyY620C78o9qYwYjMhUt8Z8EnqX2rPo3lF++vkF2esUw9RHiZgmotDG22s8msuLlkzaZlDu8AbUlXf8nT80iGPUoLr8sJD47Htgp7K6AffiQcT6rkFu9caS7BnWHq1rvo6UPMamq6IOIO2HUAUAK81Ago9CJEuK6Q7mkSJegYcVCUDm7aG141bHAO6tUv/SdtBrgmK7ggTh47ld/mlXM+7GOgH2lmfbgJ8uUKwep5WO7MC08LmbVkMBUMlFI+5OljS8Y5E8+7rpXrGQEuPH3JqAGuEUrnwUdBaGwQtHrGpy+p4DO92cYipp6XfeNvuqmo0C5GCb+o5HsJs5gSCl1TCycuJHlHD87KX/RlnI29u5CxcfebVOqBlV8xod9DIUXCgdEp3tgoTMxxrLWCD8AsXHFl2K5OuNVV/vCEu0c3Gly6364UDoj2YKN+5evXlDIdLnnfErBjwxf8OFVmDd8e/RkNIQnOlrC68naRxjchI6lvLSwY9vR+9x/bNKYAJVc75+QntuZwSq3g0+sPdfa+B9Re3/3ZxWfTfacvw894qc6o2m5vbK/vQH8BdouDHvSmY2zZ03sICC2krhlj3Ex8La6agLjlIN2TMw8WcGjDuCWHIVNXj42QNTdDzpRnwTqqSnwm1QMDWfTB/hDCVcETATLVg1JR3dYxn5xBQcDtmb9YJodk8W/L5vym/LOm22WBc0J236g5ebcV6TpMivzlG7NJmNwKpRm8E6WvoJ/b+wG8DjUdNy59vo/sa96mwQPuRqI2zB0bNsgkr/aHzo1qxtwm+QqPp9QPtm2v3pzRBLrAwxZY8VGQTkPOvPAtzezcxdzB0aLl6CP5rU3qccvxRPAEBnpQsUuLPcRyB4ubS2xMvzEDECwNQ5FjbtYybeKCgotbTaT0IV1eh20PyUank9TaUhpnPTQCquvfZLhOG9YyYphyN/dQeTs+45aJgqbK5SxeahrGgdY0eXqBRX8H1EfTEwC98LOufJk2SQz+yIXT6nLR4bwbH5Wd3hW2+o/bsImI0XU6Vojtz1adTJUc1DPwm9w5XsjNA8lkWfx5Da8= X-Microsoft-Antispam-Message-Info: PzZMPzEnLst6e3XHPrIBv9uFegtgrFNBVpCzrYdGSDqdYBTA1BrQd0lVySeR29ix9vd5JX//Z5Fj00jKgHOlrNYW7YeE7u/psaGDdAOT25XDIn1lM7C09C1KSbJH33T7o1gS/on9Q6oJ3PyY4o7+WQ4lkwBffN+Le0M+pOwjKF1i7L5wrBRxWoInrmUpuE3E X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:aj7oFtnxt48kghnpZa5aiOCkDz5ybzCZ2bB8s/EvgQDVtTrRQAa8XX82cPeHWmOTuIno9fGaD32s7tB3OMk2NsxnK66ZKE2/xh8uOmtJuwm77c+VvG00d01ZPznZPXSnCVitBc4Nq0Zk6a7wfwgs+W514MM7mThIvbiCxVXr4Ejf2g1kP3LnGEvrJIklIghnv1vIvfSmc8qXYZWN36tHKJxDdvOg2tC395lvang6+LMwaaVyLqKUR/9nLyfEMsH2uPjDbzC+sH4MrzfEl552e5RJIuHqHRC4Yiw05mEe6vYq5rB5SEZmvPdpTTrAxxiIKGZRUU5cKxP10qovMWuFD+ATSfxVW+qNNVaoEXfbnhHuKXzknQ1pzB0TC3jSxxaxGXn4838vBkKKZE+t4zx2qcePIODILY/4MNHI77g/YrKLE3xSmbw4TxI6wqd44XaknL3waM4xETITvBI0F3R98A==; 5:rAQkJuL2wrbHCpZ1HctN+i53brdwDYRLZCu5oA+dRG/6OJSl/DxETPDBLbzrxnHPiWFFuPFR8vVfCx+MU+R12bRR+zuwY2ZweUid6nInc8OWu3iUM3qPLwNeSk3yuEplP8G0J4SRbjqqsHt+X5ZpBJUsosdOlcllwVsL1ZitM4g=; 24:GCOT/BWHYbeVIijpi2UTvkWvW0mPzA7hqQ05UR3UT+oZHKd6ZULQy9FRpfhU3IH5yCDILxExH4sjjySRZCE9KDDAthBNSyVwL9ZxOlq1OUs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:2Mu1fnnRpBsdtMSEV9d5I7mO9i6zKKIIvtRwv+n6Jq9uB7iCnYQGyG1QcNRHH6MHP7xBrXP1FPQulACjadH4NmEk6vj9ayHT9LOeoFOIOOdxJqiR1IBJBKhFZXVk5bdEpO96ywMd1ez3pOt1db1c6M3XtnrNwoj+O8w2c3NpfOfmf9e3b6bSGD2ujRS1IgfQZkbvauJZJWiSUyjgcuNkHl89SEN5OCpE0iC5ay9WjXB3UuJGUaon9Xe6Joq5aWa0; 20:VqmTHG/4xf+E52WFQueZtjAKPiLq6jOkTgyUT+FXps6w6dBQpeiHIvEr4SSlBvktA2bLhxPYOM+piMERab4iHI+szKMOuFfS4uPAc6iCWIrceQzpVrTVfXj0aneNimvLkplBzl5N0XHzV8sbIDhXz+JZhhi4Abgh44oF5JZQoSOdcbIIeu0Vj34csY625rFNJjAswk8UTgFwZygggoKahWKHlPALDWAIzMyWgKAiiUXtVR3XeODXcWV6wclKaZ89 X-MS-Office365-Filtering-Correlation-Id: 1032e145-ae42-479c-e92c-08d5b9b9a815 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:17.3670 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1032e145-ae42-479c-e92c-08d5b9b9a815 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.88 Subject: [Qemu-devel] [PATCH v9 4/7] i386: Clean up cache CPUID code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Eduardo Habkost Always initialize CPUCaches structs with cache information, even if legacy_cache=true. Use different CPUCaches struct for CPUID[2], CPUID[4], and the AMD CPUID leaves. This will simplify a lot the logic inside cpu_x86_cpuid(). Signed-off-by: Eduardo Habkost Signed-off-by: Babu Moger --- target/i386/cpu.c | 145 +++++++++++++++++++++------------------------- target/i386/cpu.h | 14 +++-- 2 files changed, 75 insertions(+), 84 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 7f40241786..c06a9f5ebe 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1156,7 +1156,7 @@ struct X86CPUDefinition { }; static CPUCaches epyc_cache_info = { - .l1d_cache = { + .l1d_cache = &(CPUCacheInfo) { .type = DCACHE, .level = 1, .size = 32 * KiB, @@ -1168,7 +1168,7 @@ static CPUCaches epyc_cache_info = { .self_init = 1, .no_invd_sharing = true, }, - .l1i_cache = { + .l1i_cache = &(CPUCacheInfo) { .type = ICACHE, .level = 1, .size = 64 * KiB, @@ -1180,7 +1180,7 @@ static CPUCaches epyc_cache_info = { .self_init = 1, .no_invd_sharing = true, }, - .l2_cache = { + .l2_cache = &(CPUCacheInfo) { .type = UNIFIED_CACHE, .level = 2, .size = 512 * KiB, @@ -1190,7 +1190,7 @@ static CPUCaches epyc_cache_info = { .sets = 1024, .lines_per_tag = 1, }, - .l3_cache = { + .l3_cache = &(CPUCacheInfo) { .type = UNIFIED_CACHE, .level = 3, .size = 8 * MiB, @@ -3384,9 +3384,8 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp) env->features[w] = def->features[w]; } - /* Store Cache information from the X86CPUDefinition if available */ - env->cache_info = def->cache_info; - cpu->legacy_cache = def->cache_info ? 0 : 1; + /* legacy-cache defaults to 'off' if CPU model provides cache info */ + cpu->legacy_cache = !def->cache_info; /* Special cases not set in the X86CPUDefinition structs: */ /* TODO: in-kernel irqchip for hvf */ @@ -3737,21 +3736,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, if (!cpu->enable_l3_cache) { *ecx = 0; } else { - if (env->cache_info && !cpu->legacy_cache) { - *ecx = cpuid2_cache_descriptor(&env->cache_info->l3_cache); - } else { - *ecx = cpuid2_cache_descriptor(&legacy_l3_cache); - } - } - if (env->cache_info && !cpu->legacy_cache) { - *edx = (cpuid2_cache_descriptor(&env->cache_info->l1d_cache) << 16) | - (cpuid2_cache_descriptor(&env->cache_info->l1i_cache) << 8) | - (cpuid2_cache_descriptor(&env->cache_info->l2_cache)); - } else { - *edx = (cpuid2_cache_descriptor(&legacy_l1d_cache) << 16) | - (cpuid2_cache_descriptor(&legacy_l1i_cache) << 8) | - (cpuid2_cache_descriptor(&legacy_l2_cache_cpuid2)); + *ecx = cpuid2_cache_descriptor(env->cache_info_cpuid2.l3_cache); } + *edx = (cpuid2_cache_descriptor(env->cache_info_cpuid2.l1d_cache) << 16) | + (cpuid2_cache_descriptor(env->cache_info_cpuid2.l1i_cache) << 8) | + (cpuid2_cache_descriptor(env->cache_info_cpuid2.l2_cache)); break; case 4: /* cache info: needed for Core compatibility */ @@ -3764,35 +3753,27 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, } } else { *eax = 0; - CPUCacheInfo *l1d, *l1i, *l2, *l3; - if (env->cache_info && !cpu->legacy_cache) { - l1d = &env->cache_info->l1d_cache; - l1i = &env->cache_info->l1i_cache; - l2 = &env->cache_info->l2_cache; - l3 = &env->cache_info->l3_cache; - } else { - l1d = &legacy_l1d_cache; - l1i = &legacy_l1i_cache; - l2 = &legacy_l2_cache; - l3 = &legacy_l3_cache; - } switch (count) { case 0: /* L1 dcache info */ - encode_cache_cpuid4(l1d, 1, cs->nr_cores, + encode_cache_cpuid4(env->cache_info_cpuid4.l1d_cache, + 1, cs->nr_cores, eax, ebx, ecx, edx); break; case 1: /* L1 icache info */ - encode_cache_cpuid4(l1i, 1, cs->nr_cores, + encode_cache_cpuid4(env->cache_info_cpuid4.l1i_cache, + 1, cs->nr_cores, eax, ebx, ecx, edx); break; case 2: /* L2 cache info */ - encode_cache_cpuid4(l2, cs->nr_threads, cs->nr_cores, + encode_cache_cpuid4(env->cache_info_cpuid4.l2_cache, + cs->nr_threads, cs->nr_cores, eax, ebx, ecx, edx); break; case 3: /* L3 cache info */ pkg_offset = apicid_pkg_offset(cs->nr_cores, cs->nr_threads); if (cpu->enable_l3_cache) { - encode_cache_cpuid4(l3, (1 << pkg_offset), cs->nr_cores, + encode_cache_cpuid4(env->cache_info_cpuid4.l3_cache, + (1 << pkg_offset), cs->nr_cores, eax, ebx, ecx, edx); break; } @@ -4005,13 +3986,8 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, (L1_ITLB_2M_ASSOC << 8) | (L1_ITLB_2M_ENTRIES); *ebx = (L1_DTLB_4K_ASSOC << 24) | (L1_DTLB_4K_ENTRIES << 16) | \ (L1_ITLB_4K_ASSOC << 8) | (L1_ITLB_4K_ENTRIES); - if (env->cache_info && !cpu->legacy_cache) { - *ecx = encode_cache_cpuid80000005(&env->cache_info->l1d_cache); - *edx = encode_cache_cpuid80000005(&env->cache_info->l1i_cache); - } else { - *ecx = encode_cache_cpuid80000005(&legacy_l1d_cache_amd); - *edx = encode_cache_cpuid80000005(&legacy_l1i_cache_amd); - } + *ecx = encode_cache_cpuid80000005(env->cache_info_amd.l1d_cache); + *edx = encode_cache_cpuid80000005(env->cache_info_amd.l1i_cache); break; case 0x80000006: /* cache info (L2 cache) */ @@ -4027,17 +4003,10 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, (L2_DTLB_4K_ENTRIES << 16) | \ (AMD_ENC_ASSOC(L2_ITLB_4K_ASSOC) << 12) | \ (L2_ITLB_4K_ENTRIES); - if (env->cache_info && !cpu->legacy_cache) { - encode_cache_cpuid80000006(&env->cache_info->l2_cache, - cpu->enable_l3_cache ? - &env->cache_info->l3_cache : NULL, - ecx, edx); - } else { - encode_cache_cpuid80000006(&legacy_l2_cache_amd, - cpu->enable_l3_cache ? - &legacy_l3_cache : NULL, - ecx, edx); - } + encode_cache_cpuid80000006(env->cache_info_amd.l2_cache, + cpu->enable_l3_cache ? + env->cache_info_amd.l3_cache : NULL, + ecx, edx); break; case 0x80000007: *eax = 0; @@ -4080,34 +4049,22 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, break; case 0x8000001D: *eax = 0; - CPUCacheInfo *l1d, *l1i, *l2, *l3; - if (env->cache_info && !cpu->legacy_cache) { - l1d = &env->cache_info->l1d_cache; - l1i = &env->cache_info->l1i_cache; - l2 = &env->cache_info->l2_cache; - l3 = &env->cache_info->l3_cache; - } else { - l1d = &legacy_l1d_cache_amd; - l1i = &legacy_l1i_cache_amd; - l2 = &legacy_l2_cache_amd; - l3 = &legacy_l3_cache; - } switch (count) { case 0: /* L1 dcache info */ - encode_cache_cpuid8000001d(l1d, cs->nr_threads, - eax, ebx, ecx, edx); + encode_cache_cpuid8000001d(env->cache_info_amd.l1d_cache, + cs->nr_threads, eax, ebx, ecx, edx); break; case 1: /* L1 icache info */ - encode_cache_cpuid8000001d(l1i, cs->nr_threads, - eax, ebx, ecx, edx); + encode_cache_cpuid8000001d(env->cache_info_amd.l1i_cache, + cs->nr_threads, eax, ebx, ecx, edx); break; case 2: /* L2 cache info */ - encode_cache_cpuid8000001d(l2, cs->nr_threads, - eax, ebx, ecx, edx); + encode_cache_cpuid8000001d(env->cache_info_amd.l2_cache, + cs->nr_threads, eax, ebx, ecx, edx); break; case 3: /* L3 cache info */ - encode_cache_cpuid8000001d(l3, cs->nr_threads, - eax, ebx, ecx, edx); + encode_cache_cpuid8000001d(env->cache_info_amd.l3_cache, + cs->nr_threads, eax, ebx, ecx, edx); break; default: /* end of info */ *eax = *ebx = *ecx = *edx = 0; @@ -4770,6 +4727,37 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp) cpu->phys_bits = 32; } } + + /* Cache information initialization */ + if (!cpu->legacy_cache) { + if (!xcc->cpu_def || !xcc->cpu_def->cache_info) { + char *name = x86_cpu_class_get_model_name(xcc); + error_setg(errp, + "CPU model '%s' doesn't support legacy-cache=off", name); + g_free(name); + return; + } + env->cache_info_cpuid2 = env->cache_info_cpuid4 = env->cache_info_amd = + *xcc->cpu_def->cache_info; + } else { + /* Build legacy cache information */ + env->cache_info_cpuid2.l1d_cache = &legacy_l1d_cache; + env->cache_info_cpuid2.l1i_cache = &legacy_l1i_cache; + env->cache_info_cpuid2.l2_cache = &legacy_l2_cache_cpuid2; + env->cache_info_cpuid2.l3_cache = &legacy_l3_cache; + + env->cache_info_cpuid4.l1d_cache = &legacy_l1d_cache; + env->cache_info_cpuid4.l1i_cache = &legacy_l1i_cache; + env->cache_info_cpuid4.l2_cache = &legacy_l2_cache; + env->cache_info_cpuid4.l3_cache = &legacy_l3_cache; + + env->cache_info_amd.l1d_cache = &legacy_l1d_cache_amd; + env->cache_info_amd.l1i_cache = &legacy_l1i_cache_amd; + env->cache_info_amd.l2_cache = &legacy_l2_cache_amd; + env->cache_info_amd.l3_cache = &legacy_l3_cache; + } + + cpu_exec_realizefn(cs, &local_err); if (local_err != NULL) { error_propagate(errp, local_err); @@ -5252,11 +5240,10 @@ static Property x86_cpu_properties[] = { DEFINE_PROP_BOOL("vmware-cpuid-freq", X86CPU, vmware_cpuid_freq, true), DEFINE_PROP_BOOL("tcg-cpuid", X86CPU, expose_tcg, true), /* - * lecacy_cache defaults to CPU model being chosen. This is set in - * x86_cpu_load_def based on cache_info which is initialized in - * builtin_x86_defs + * lecacy_cache defaults to true unless the CPU model provides its + * own cache information (see x86_cpu_load_def()). */ - DEFINE_PROP_BOOL("legacy-cache", X86CPU, legacy_cache, false), + DEFINE_PROP_BOOL("legacy-cache", X86CPU, legacy_cache, true), /* * From "Requirements for Implementing the Microsoft diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 1f9ccd47d9..e64b7da997 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1098,10 +1098,10 @@ typedef struct CPUCacheInfo { typedef struct CPUCaches { - CPUCacheInfo l1d_cache; - CPUCacheInfo l1i_cache; - CPUCacheInfo l2_cache; - CPUCacheInfo l3_cache; + CPUCacheInfo *l1d_cache; + CPUCacheInfo *l1i_cache; + CPUCacheInfo *l2_cache; + CPUCacheInfo *l3_cache; } CPUCaches; typedef struct CPUX86State { @@ -1289,7 +1289,11 @@ typedef struct CPUX86State { /* Features that were explicitly enabled/disabled */ FeatureWordArray user_features; uint32_t cpuid_model[12]; - CPUCaches *cache_info; + /* Cache information for CPUID. When legacy-cache=on, the cache data + * on each CPUID leaf will be different, because we keep compatibility + * with old QEMU versions. + */ + CPUCaches cache_info_cpuid2, cache_info_cpuid4, cache_info_amd; /* MTRRs */ uint64_t mtrr_fixed[11]; From patchwork Mon May 14 16:41:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913097 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="hfgTSRBf"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l64L5G2Cz9s0W for ; Tue, 15 May 2018 02:44:50 +1000 (AEST) Received: from localhost ([::1]:47195 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGae-0008Ac-DC for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:44:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58496) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYK-0006s1-0p for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYI-0005iW-0K for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:24 -0400 Received: from mail-cys01nam02on0088.outbound.protection.outlook.com ([104.47.37.88]:9120 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYH-0005i0-PH for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BdvpuPC9TFp8bFY2HBsGRV0gd8yK8SxKJEh6W4P3Ymg=; b=hfgTSRBf0PeAJWNlak7eTRmxLcp+mu9C6jREP2skV7Pw4jU9P+ngQIFgcmYxJnFVaR/6Mek1I1NVVmEl0XondFq2GEwGfpPZABvIbAwAWsDn2HnkbYH5rgAsXtkYWwlNR65xByl/7ifEBzEBrPQJMz+YcQqgpKsZ1vMY44LFfDU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:18 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:54 -0500 Message-Id: <20180514164156.27034-6-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:w36JgSs1ClLonb4OVos+CHva6Av7PlwqtwapUEx8Zib6GKsuKRmvBhCthet2WjoxQzJhYfByjUOgj0Ppf4nE4EosU6AbOTpy3j2mI2+Z2GzCf7/jpNFg9X9Tt85iEz1eCU1dylBsnitJxjB8fLuI5b8UWHKO9B/ISyi/JPHALBaXpiozBAeXZbnUETuFhoycjOlzxZa9pf4QyoWWb9+UvHowZXAyZpQhKMBHDd2EziQhrGWUqyCqLR6MCH/rZ/cP; 25:oLSEhIuS68V65VfEroCQMcxEjOj49la9wbJdDGNmNNUQA6Z/Ax/YyD6qHlD5yAA+3NrCSq8jkgJ/+RYdJ1M6iFXG+cHeNVcy5FsstzLvkp7li7Jm/DUqvluFanLh8cEYlymXapVy8xkZCLgFbASJIuISlWvbKRY7GQe4tP7/I6zJYN9SGaH7chQ/IfEMSYACkNL0+n8a+gjKXtWCSJkVZS0+XueXfWFHEr4IMQDe5wKhQMoL1UtpXFn4J4bHiCwQ658du1Amf0c7RRs9PS++I2+nNHoiYSMXUVdE2+A6JoV2KWIqHojx+qhP63SH/zjaztF7SM7yAMrLIc6rmZmNww==; 31:OjtbIZNg442iydIiH/KP0RdKP/Tg6rCXl6/LLlXxATOVfZVeJhjcz1PKqU6Kmig7XimBWgx5IJTnWX7fltNTEx8cIhQbi/atRB7h8L0qrPnMePnOH2QXHuvv5TYafb4Umu+BIgvAz/aeowZYVmNtHsvzOa27a+p9qOeDhHsC71zR02it/tOq7VKX6UlF+SopNjTTURq7BV49qcclsevqYQbkU9dLDb76nGy/oBpFWNc= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:SoZguBNHNZgRmsY/6J3uXNRTs0n44QX6XyNTaz3Zz054WHYvb4SwJWU5C6hAtegWIpY/21jJy6OvJ80TRUbVMIiRM48t++ydEn8MQHnrTcYjQjnxVYY+bBte1h/PyB2f0lsArDwTNNkT3Nazi5bxgHUluBxcKySfNvfUl6VBshS5QTr2IzSuxT9iJMh52uOEO4r0ekBKIR2NMYwzSHtZaTAZuGOPQnzOccwCn8EilVitAymnHV7WfeLVgD3VTXK4WXq1gO28TGXGkFU16BeDYSa7dgdHt0439RUCGcT2yFDQJsqPXC+TH7lHlHizlq8LDVPdqyQrP0gZQdToO7GHxLDAkZrJMefcCR7eJS5rDsODDZoTvW7MBtAjHmjMd8SCRtLtc3P9AG05D4t9KaZLqIJcP+BUXCcxW7BBjNaWF9GH226nCySFGvKdGjRP+YyTyuur9h1+uZZqE+4a4Jct77PJfpzdfS5025eaaXR2juCb3gyUtnZa3EySoFwC1upP; 4:SSPDlUVCtEMJAyNgRxyt3bN0f9QwosOCYvNsXSmZYBgL6ZaQOTAVHk/sF/lloMUGuO7j9l8VcA8srGWX/RCYCU+XFqi12MC0V+Hgfubh5TnUMMxnVRp69Evk3WashxfMgmHc4dchruO2x0ne6VWvY5wlTFLQFBgGPnCSX3v3EPEk+vD13hYeGoG33r9yShdncFR/msW1Xa2KhaCbJvRGrK4H4mvvZeMnF6axoyLsFv7rs/OtkaHT2HTvoViGdPd1WGoGaFMvhs3rlqUZN3v6qm6rRWHIk47zU725ZNiyGTLDSgP+EgR6+NHVEjNEmlJt X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(5660300001)(76176011)(186003)(36756003)(86362001)(575784001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:zPrIcrUmSoAGqbrKWTJlxKogPj4NTZ61SMchLvw6o?= C24EZGotv4GmOifKlXCojLk7z7/5m5l1lvgQc2qxsxiIql9idz9x5v0h+vCa5e33DCl/446psVtWYaAJo7U2XVTKPxoEMLraWbtzvJA7DLxuoIzBoVJFwdeOHloiHaQAtYc8zUSITnNbntDvoI2ZlDtWBK9TpzPZ6X9RmVIE38MFU+IMswMyqMfE0rZ43UVhwAg186hkrBpc/773qo8GSVHJs7lvWVmsP5WKBBmpxZivy8jAc17C5L/FqKWlkviWhtSGWYMKJIwWGbRW2IIsckSWJ37prt0EjFm844kj++/Y++n16yn32Y9jT1DFLvh67z7671V2z+fdDcv2anAuTUEtggqItR7LUOipeqa2u4jJ+AXvlKI9dRIMb8d62fd+F9aXkvExP89/vkqeMtzeOeShNoHlA8VtjQuL7PAz9vnd4psX/I3FC32VDla6t0K6F3WRARC6cU0zEQjkMfCOOMczOSZlq/y+EGXv41JM311nOBPraq6vRv3sofMLJD5T/Zw0HBujPGGSHO1RCf8rU5HlXzKwavxhjBayyV+JHVn5Y0p/JKTsw06bqYHeMb9wjfUpdbKGiQ30Oo3/CNpqqCjUvck+Wx4TPZAZfM248nIjyT37RyOU7XaxZ7LG0XPsoypEGUOCbtdaMxL8gCvThktKgsQKJChVHmDbv1smLfmryASJTnZtYvXdRhdxSJ38iXRr9T43F1Ok81slDEuroQUjsFMIUzn6gtXZ0xby8KqVPXjRsylmf+uCHiYjNxat+JNUNtypXmx1qmkwXk0ZEKJAwWead4CkkLiR6/epoTR1O7U5HCR+J3lbweBi8f2nPWBu3CamoY1h1HIIa/IEtsNQDHMv35hfa80ia9fBYD1cDmLL6iexxOoPlwVt5QMZJgW4RzC6ziLpEfX+e92IQ18chiqvAT9YO3F33ixgIdkmD843wligCnL8Q8uLZ3atK59y6AQHQ3tT51nWVhR68SIBws53wYlMjXxk1GfiSFGTmaWLnhQFMN06M3VaTIXCfNO8HrpuTVYhQDuCvNG/8JJ1ZlfNBLMCLC0T2eRZWXRO3BHYL/nQeAeHWg8Q3LsUXoBnPPjq0CbKN+V4VobwB5Tv8NQPHen5JD8iLHzycMmYP7a350lqz9+ZUqUgtHZaVHUFhj+vjbFnBoLAkU26cK1OF4YjnBpYkD1tyROxvlhCHjbT58Hu8/lRGamsJfOx9iFhgOrybP/m/ELoComoMYyKZ7T1R/4O3Dhux/P0iIT3w== X-Microsoft-Antispam-Message-Info: 2aC7CsWfBzzm+6TZOR4xmbbFJ5nbyF0MXIrEIsBi/gfr9TnLWYWS9/EEQrFo2TBCjp3cRMvq3LVFzM0Ax8pQl/mTkcvHwfZbspbMUl5DJbN/wykq0lYY25LrZUcn2CJ0ocobwc/Re3Nhv6eBTgK5a0TlKT4GzVuQmJ+JbHd9jIz8jcB5fqcBftH8V9pvEaex X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:xzRAiDsEBa37bHHOwX7dWWgQ89+HDXl93aPXn2J4Sn0vy79+kWuySuUU+qsuZ/kCJO+qhHHbywtvJsrdKr5d4aHZN3EH0TyveaEdHCf8XpZbSBq+RgwjLyzZA8mY/nRGFCi/4TyUnQiwBYK240PgpoymVYKMQJS4k81ShwqLRLk/Kxdfnamx/E6DkgQNRieCviHjv56I3MnujZ5NS94rhxg3GAH00F9acnmL+4HM7bGbWCgktpwzMF11IkNPZfRqIiP2lZ127CHxVBv5ncBfc19pnKLl2Pd6oHPR0h650wmbTp/7i/flZ8+fw8ap9B49rANohSA2iMisYZRfvVOAJUPlzBo8cb40ueSGA/IA7W5hkcWeYaxWvMI81XdWSXEQ7+PLQFtoueGOWZUf3m3xzGRRbMEvP+J7PhkCof/hlrPVK13Khuyn422rFlCAeABdo/CgN5hjSbLk950EGUk5iQ==; 5:6eo8C9ZwjNJV8UAmJoznt/DGg5lmzq7dMEbAbvN/6JUTrTesMHtRSQb4JFU5lAcJybAScjeINoh9ufxvj1hhPAgPZEnGFXJS9gXShb2Uzwte4A4EX+2x2D0C2IdET1LExrHPXqww5NdKKCBy3fBbZoXe/ntTx+u1pJojI4bU3JQ=; 24:XXZYzmZCMxm8gjDfiwkc15uZvwfIF65nUpQvcTGjhQ6O7i/v/pfROCzKBdXYUSF7tSfdd28Uo88n0Kz0VtD7ITY8uEI5Rb9KBH1UlfcVxmo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:QFgCbGcPinZSH64rExZsitFOH+Ln4SP3k+dWCZVlTvm1YkEiarpfrzM7ympvXvUTWaspbHhdrV8QDtZ4kcJEzkYd1YOCx0kqBKsovvMp+0P8H7b9ZOFESwjaV+vUoCxCOTOeFNqUEMCK4hWbqQN+5gzsaGIzn0qahxcrd6lBI1G3+b79faS59gczajfA99+IoWmI6gIUj0NQQ7EDpZddIaTcAH3nNQaOWnMNKvzoKfrx3PEuiiooxPd4qihyxAVn; 20:kptx8zy31q6lhU7vCCFf1/swa2OcFzA/c/pOYNVOdvjDpuDNXFTiH90gQWTTnSd3ioPiDZkdJyGB9YpmLIpZJy32ngWgvWHfGWQW4dwyxwf7FoA+mauyQcd/nPPZraRW8bcAwRVWHZWN3gl1dMErRJDglw4IN0DsUVFYt0HHE8pvNRKucnyw271SC0Wii7qnm8V1K83ZRPCHFvw6g85NGGteWvPK8qo1nkYblF7VyYMePQ1FV66/lsbjyaDHzSvy X-MS-Office365-Filtering-Correlation-Id: b28a8c64-dae9-4bb5-5671-08d5b9b9a8e5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:18.7421 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b28a8c64-dae9-4bb5-5671-08d5b9b9a8e5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.88 Subject: [Qemu-devel] [PATCH v9 5/7] i386: Add support for CPUID_8000_001E for AMD X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Populate threads/core_id/apic_ids/socket_id when CPUID_EXT3_TOPOEXT feature is supported. This is required to support hyperthreading feature on AMD CPUs. This is supported via CPUID_8000_001E extended functions. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae --- include/hw/i386/topology.h | 6 ++++++ target/i386/cpu.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/include/hw/i386/topology.h b/include/hw/i386/topology.h index 1ebaee0f76..4af746e50c 100644 --- a/include/hw/i386/topology.h +++ b/include/hw/i386/topology.h @@ -145,4 +145,10 @@ static inline apic_id_t x86_apicid_from_cpu_idx(unsigned nr_cores, return apicid_from_topo_ids(nr_cores, nr_threads, &topo); } +/* Definitions used on CPUID Leaf 0x8000001E */ +#define EXTENDED_APIC_ID(threads, socket_id, core_id, thread_id) \ + ((threads) ? \ + ((socket_id << 6) | (core_id << 1) | thread_id) : \ + ((socket_id << 6) | core_id)) + #endif /* HW_I386_TOPOLOGY_H */ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index c06a9f5ebe..18a7872b7d 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4071,6 +4071,14 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, break; } break; + case 0x8000001E: + assert(cpu->core_id <= 255); + *eax = EXTENDED_APIC_ID((cs->nr_threads - 1), + cpu->socket_id, cpu->core_id, cpu->thread_id); + *ebx = (cs->nr_threads - 1) << 8 | cpu->core_id; + *ecx = cpu->socket_id; + *edx = 0; + break; case 0xC0000000: *eax = env->cpuid_xlevel2; *ebx = 0; From patchwork Mon May 14 16:41:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913102 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="lnRrQ7kV"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l6Gh3Hksz9s0W for ; Tue, 15 May 2018 02:53:48 +1000 (AEST) Received: from localhost ([::1]:47242 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGjK-0006MF-2M for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:53:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58514) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYM-0006tx-Lo for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYJ-0005jG-Jq for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:26 -0400 Received: from mail-cys01nam02on0061.outbound.protection.outlook.com ([104.47.37.61]:63568 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYJ-0005if-CB for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8/7sqGkhbQQTDHGPGYEiNo1pCSE/hXRWhi6i7h625Tw=; b=lnRrQ7kVLLK4Cf85NJzgL36ZoRzmpJ/F+URYAjYWrXMbrEIcnDHIBI3OBY5WkezJuZhu/hkI6TfhkdnjCk4SfgMVcBuKK8ViGP9M3jxGQAkXsFCcyS9XxLz3xLqxVVQw/jwmmgVL9OzALoOyqGlYlVbFqcDQaebqZKeEDUaw2lk= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:20 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:55 -0500 Message-Id: <20180514164156.27034-7-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:/wl4+iXO3Dw6T2ubsc+Km5tN7ZtnPntS41ycQpLocQrXu7J80Vd4qyBRtv79d/Y7q6YUBQsgBqPs0nLv5afh0xXzQuFK+EU3dvkqEhzEExHHzPC6kMj2TB5Lo9qqo+ff6VVCkDbnDMlFWYf4Aqh13ZLvRH/twLTt4jx5gp32wSYAdpadB86/6Hz2F2cKMVwEIvTw+Dr4h4euemkUmh4Uk/NdrVVf+RqTnMDppeEFOL+FhxHycud2eNkNe1QP2mo4; 25:YUpipdGYWg8taWNsfXrxsTQE0Klbj+ZVtQQdDrfmUC3jiZxxPveMduCLh4TrriYByHDW3q2JC8usvpjapDq3n5SpHxt94B+mORzL+Ndg3diBl0QjEI84TpJYhS6Afbfco8Tly9IYk1uN3G3lvkexSgygMATLNpicasUVjNPcfBKdHDwKjXK1h4J42k5JnPjikdLOkm1tuOdf42xHu29ww6ZD6ae+49nBUT9WcX5coiEw+IU9RfkVpARTsd+IHUH0G9MvqtsKo8XByNRXAUHt6lrVGQmurwn0Kg2r440WkzVGMNrm/MRG5eowialeZ4eDwR9MLvo2WFE7kkz9O6FNmg==; 31:TxSXawlnFiDFfB+QjJRGipDeexJfqgfIDEewzYGctmlnPZLIktXvCvc2l1LTNqCOwAHUjxsgYKaQmXSmjDb6fVw7uIbCnSuHIhCvK31TV7rRtSMcw5mNjwFNRtKejeXs9cJPP50Re1g+dt/Dqx9SbGrOwuUv5fwRmcMK630oT21U7tzuTwiXWgCiC9brermGpwwoRHNGHocfsQhLiUuumE9/XE0jUqg17SG2P3CShuU= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:+swCnak/mQRlt54/xjp7HhfPO4VKl3RQTiqHQ5o/zLhqjYbhZtJKAnMc0CzIFDzDXDjak9XBS3gQMO6jwe6aP8FrMfSaKlHu3FAAhna2JDY9fboYuOSwOLqpjgiBiKCYBZR17+jXf6qtY0DpNzqH9sJp3KdfRLawls8dEVgOWK94YWkAvSnKBewvJ+y6Bnptq+iUEb5zPn6y8emX13eHh30ixoV4D/sw6ZDD7vYSMvXa+7xgcGY/Izh/zc3WN6TIkLiJ1r4K9AnNKhlxRd5ZYoHxRBmQdUp/c9GYk7kgcbtox5HPpeRFjm+nZSUrV3PjNrq58+UnCNHEI1e2g6oIs/YpKG+xlVMPVwg7lr3JUmvr6e1GSm27lXND6pr8tkaB9t3Q44PP2CsIQDGQ3IfOsyYPlQtKHOGzIcEKnnpyIYJ+Zai3NZjEufUh2qiMd426973x65FIOqs89hmWuIbfL8euVnTypBrYy5JBQizTg4VP25uL6zKa0GZHe8kOZ8YV; 4:pYgx4Y0mEfPXBd4Cj/nc9KVfeId6NGA4Aggr4pZVoN7KOj7DHW0cMfSa7WaYQZ4HK+yMUD72UJpjhJD66OmqJFuQFUkESUL98MYsLAaNeb97cxH62qg5e6+VMCupMV7aqQcOx8I3fen2b3Id+oh+Hr8Ft0dOZmIt+D+S2G11LSOUzdGzKuPmCtUV7fsKVxBnjDt5v0Xu/ea8fk36v08I4b6UoRQfIn6rPlT7wHk9NWAR42IULsRz1DBJxAfn8QEQ9JmByr6uY+mct++2fHtW/Bks/0we/4z0n2FvcwEpD/ylDTt+lQwmN5QHxkJoP205 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(59450400001)(5660300001)(76176011)(186003)(36756003)(86362001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:CSz7GgSn0PaQPhOEuK9ggCpB3eQUAz5bFkuuHFLLw?= fXsN3F97IsM5z90qul/mkcHf60O1MOdhOpz9n1qY1CBYJAhV5Jr9QjR/1LNGqU3bGa4cKWA9tQGmlAPRFh4QBHTkcn/JoH2AssHxyBSvWz75C0I3aL4Up1TxbxerfkiCjpjbbRpy83Sud0uppYYx7/QXSGkfqfuaXyedJrQL/g1y0BGWryOj9q6MGVawY7Pt9ICgQ0+72PfjMjzDuT9cj0cobUQYNiCCFydibN+3hE7ncv8z/tG8H6p/tJq3LTT1WY3IqVFr41sZslFBAe5iAtXmWbjJfmVAbrjiMligMWHPJTWvuuTJ38Bv4tXSIO+IL7j72N/XzOQ+4zN9+voqvgRwrnzv9F5pcqYT7yXFF9LHi3u+FxJjMDroATEQSU9FncwBmaE4sJdMFwJvVkb/uFRRmjNaTAX+k/6Y1+rELOQLmgo4qDGrP/nSytOqzD+G/7H3byNaAR2Nxx0ccjuxRcRklGSwOMaLclqHYgSLC25JuE3JvK8k0EkGmxupR7tts/GImDCsaCyFyQrR8y4+W6wiyyYkRmqPAczE6+/yZCz3wZHMwmExgoj/9iPPirOzgcjdk0jAbDS1dmpyJwEZYPIj5LF9rxrXAkzsDuf3RdyBLDmz+EN+Vk4QGtxGXN7tpx05XXbkf6KwPEnw+gyPbUK9sIf4meLrP2vwJgzm91j7CntpKMMLjgbv/VhPh9w0siLQPLX4KVygRSOMqJbtv7xVAo7Q97Fgpb4VBAgbdqmCQkpzvlkGMKKHy5K9Jo6CrWeklUbDW53/uuNZ3sZ/KirzHS6+17hZ9uc0uzchNGJe34lZLMozwASYsA6iGi0UNf3jzS94qIQ8VM2eXoN7T4UR46sDoFZl5Y9+ambt9UDWNMmbejrHThmshnNSWB9ykj7SK/vPni3eyUNG/s8OzH5/H9qL3YBiYxh3XqKR4+UA61tM5ktQ77AjUR2MKhHLJMhHsMjBLLc0iSb2+3dx8jHodezpTjkTYAc/ryO7AaZa/YnMdZoBnimFDAJuPkX9acAd1/AXGDFx3OD0sRwIInOn2MNJEzy6FjQa4aEXlPW5ZH9BucQf/ySTr/kfpfF0S1qmNVtctHzdQDwKw0hgdm1D8oZXb1gWOrpzddwZRaHY+pLB/MXoQfneyh14pdTzTa7aiJN0RuJwlUmVp5emy3CcZMpulj7M0Vt8MDNleVNTIOvwvkMq8e3cvKGSvWEuni1RZlylfyjkSobV+n+KNnz0Sgk+o4Ukdo5yAZAR5ivDKmTH6XUqcOfUCYuHLIXNCw= X-Microsoft-Antispam-Message-Info: eFCoM5Yc1NqMM0ciXSDv7lOUEeWnZGDlWUHGvFN/vS428F7f7nk0da7zyqS7BmvEHRxYx5mDnAGvyaUCF2TnJQd4tVCjRK+2RUGtl9SuJM8Exz6h/VFJw1WidhgTQ12kMDqAG6ieAB1litsP+oZOeazMbB3HIyAskWaiLRSaMvkZ3EuxAQsGGe5rq+ytt7TX X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:JcrdGybphUCS/2RFZMHkpUMynQghwhbVGUowkbtfJ/hjbvhs8EpkXG6G0NQA3pfz0jnb7etyf4zAY5+Lp6x3uGxBdy4nJaRp/FJEs+oWHHI/Pbm6BUN9aUGOZ8LNFX1h932etMi70VRTyBylxHJH8izwHGV/ixB1b+lDY1qFbuT2Zo2+0qU+MHUT1zYmqM5xfzAltHzqRE5vVwAShoepYojdatoYB46JkR1zXa0kJpQ2ng9ts9lOkdZ7bcdgpFPnUYYZRmi4hi5WfBUCXNj/9kIKFPGEk9np9Ahb9Vbw92J9uyRbyah3eEdUZxsb6S/T9bngmbVtSUi3ttVeHaZBpEE21Q7AdmhSQGssVskaecb1V9n7XPMtSDhrJEq7d9cwqDzdjAKQs6o6cMBczdUHHotmM0H+6RWMWgJ+wGsgdue2e70HAzTcvM49Ekjp63BY87cziQ0XTaLqvmDHf6+BtA==; 5:MiDIe/E9DgOT/yL84co/jgX4d98RhqkC/rSYLOwA5/7Ms/90s7LdIn7nJ4thehaKAqoXNmhzp2Wh8BGm1e5EcjlBkm7um8qLls9I4P2KSDxzi8S2GdmJ6k1ZVynF7evEvFcD8nCaUjeJruxYao4dtB8e9Ae+a85JEAm08BgmAic=; 24:iSvA31lWZ+9ELOy2hgiRLThM/6376LhbABVh+S4+oEqYRMVgTlAml3l5qotBA8nNTJUiZ60tUSe4yVDyDF1AHWHnZCXwONwGwOyPhcx9w74= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:UaCg6RSx0817/gvWx5uHJsbuwhY6N9LMu6UZLxjggo3SRd79plweCjvghWjlKEQqDaMbLkeNS6/0BG6/p9bKxNynGBQu55XeY6cmeN4KEAR4cCkA9RuuphUFI0M39icrgNmBj4fE2I5G0NwIO67IX+9pT/QU0U39UrTYVFfephQVVpck89Sm9zrYLvNGqxvXC73aM4BIcKaF1NsAzmDcQeUX/vyyT6a7S7qBWoSHnrOW6v2gLFkByrOY7K4n4ROc; 20:jaek0BKC8R5v3Y2Eb/LhtV7EvhgqH0Mq8ftj2BprnlL4E7LeJYEbsPKCQdvmYWrm3Pwv1xfG8gAqW4yJfykEDjHNItduBbV1fJEzo5zZShUVwKT4APpdTEFYvds0U1UhVlcoxbtIF1vI5EazAf4s5X9qFHX4xDx/GjvBafnwbV1Nr7HkT6AC3VWczD6Y2P8jSrA61KIkmm3hPbo96VzY0CqhDwUZ1iL+Of1G071vkppe2IhESEin+pMZ4AMe8NEB X-MS-Office365-Filtering-Correlation-Id: f04f89a2-6006-4058-fda1-08d5b9b9a9ce X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:20.2733 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f04f89a2-6006-4058-fda1-08d5b9b9a9ce X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.61 Subject: [Qemu-devel] [PATCH v9 6/7] i386: Enable TOPOEXT feature on AMD EPYC CPU X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Enable TOPOEXT feature on EPYC CPU. This is required to support hyperthreading on VM guests. Also extend xlevel to 0x8000001E. Disable TOPOEXT feature for legacy (2.12 or older) machine types. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae Reviewed-by: Eduardo Habkost --- include/hw/i386/pc.h | 4 ++++ target/i386/cpu.c | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index df15deefca..c01adc92ba 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -310,6 +310,10 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); .driver = TYPE_X86_CPU,\ .property = "legacy-cache",\ .value = "on",\ + },{\ + .driver = "EPYC-" TYPE_X86_CPU,\ + .property = "topoext",\ + .value = "off",\ }, #define PC_COMPAT_2_11 \ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 18a7872b7d..de2749ae81 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2424,7 +2424,8 @@ static X86CPUDefinition builtin_x86_defs[] = { .features[FEAT_8000_0001_ECX] = CPUID_EXT3_OSVW | CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A | CPUID_EXT3_ABM | - CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM, + CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM | + CPUID_EXT3_TOPOEXT, .features[FEAT_7_0_EBX] = CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_RDSEED | @@ -2469,7 +2470,8 @@ static X86CPUDefinition builtin_x86_defs[] = { .features[FEAT_8000_0001_ECX] = CPUID_EXT3_OSVW | CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A | CPUID_EXT3_ABM | - CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM, + CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM | + CPUID_EXT3_TOPOEXT, .features[FEAT_8000_0008_EBX] = CPUID_8000_0008_EBX_IBPB, .features[FEAT_7_0_EBX] = @@ -4540,6 +4542,11 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A); } + /* TOPOEXT feature requires 0x8000001E */ + if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_TOPOEXT) { + x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001E); + } + /* SEV requires CPUID[0x8000001F] */ if (sev_enabled()) { x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F); From patchwork Mon May 14 16:41:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Moger, Babu" X-Patchwork-Id: 913099 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="0OfwtJ9n"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40l68C0VrQz9s0W for ; Tue, 15 May 2018 02:48:11 +1000 (AEST) Received: from localhost ([::1]:47212 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGds-00023n-PA for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 12:48:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58527) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fIGYO-0006v7-1U for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fIGYL-0005jj-05 for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:28 -0400 Received: from mail-cys01nam02on0064.outbound.protection.outlook.com ([104.47.37.64]:56428 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fIGYK-0005jN-Nw for qemu-devel@nongnu.org; Mon, 14 May 2018 12:42:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=BMMw2VG20dHyh71QL6uVY6qbMQv9bnL4ziepHFw0JjM=; b=0OfwtJ9npYNlE/VlPliU7E5OXh0nQaBfZuD0a5JGflS1nykt23Y1qq6nQM6IM+6igzKLJGdW4v8mVfFywR/yIAdDBA2nsUXt4d2b7hZwUKiaZZNf8dbLWSKkJ9yyZeJ0FXYvZksrVSkMkhFOpB8tJchRyYuYkhqPmSSEbCJITvo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from bmoger-ubuntu.amd.com (165.204.78.1) by MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 16:42:21 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Mon, 14 May 2018 11:41:56 -0500 Message-Id: <20180514164156.27034-8-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180514164156.27034-1-babu.moger@amd.com> References: <20180514164156.27034-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0701CA0008.namprd07.prod.outlook.com (2603:10b6:803:28::18) To MW2PR12MB2476.namprd12.prod.outlook.com (2603:10b6:907:9::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2476; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 3:nfWXUf1qLCdDCFZeoq+neeDTTQKKXVqGKAO8Nv99x3bG3XWfdU0k+IbpmQxki08asiN+fUiEQ4Y3v8N6tI0J7t0iVhP/0ijrTLBiKnB9Tw8MNQyf+bBTUQwFceEM6EMbEjiEkLv+aJvxGpxjE4noM8m699BWYUl5Kxs5XgntlLO0rgCuILdA4+i9PX6Tb1Os+pWfOCdYibMWuEeKhmuUAx/JfAhvMgyoDuexUhBvAinacWODvcjVmrag3tsf0hwI; 25:CsvQ5bziWALGopwKlEruyW3iPRhRWSZxSTJYulWzrj2aS1XuWyRpQbNJQk2ncqHq9/f1ui835zUsR2EBMxT9dM1RD7w5G8lBFrujxDzLRbQaKLKRlWfTV57YIVUbg/qeRLih0urnW1ZL7gnaCP0Q9syHriZl2dv190lDDg3Fno/UaZ2bFeZ634XdSBldRglgFtnUjWr6honpVHuripEl0d/Qf6rrik7my+RrStBuAwEPMUfn6LMkWndyvK+tGTVardi5JLSxILwQvhKYj8JdqPzhPl9aQeJ9kWgBapaiD8I8+gjWnjl/w5wxCTzpj60QK5qr3V1lkyVDwj6iPCgkNA==; 31:DAt2o+AxgxnUyvmc9G0yJZwgdprXKJZNjxzla8T0UD2TQnPzA7JX4lA80/HpZXFoD7A5yJEqvkAGD+QJTS8wq10u0KNSTK5n6tT/bdxUlVpmtRZB6rBaFwARNZ32QDXfqjlttxzbOKVfAci7MW+iPy4e+7hddWI5gkdstowyB9RQTJpvJocJZOXqHB3lP9J47U3Fvwc8XDu1ToCLJEIJ6FE+JWgzP8bd1fjA2hr8rWw= X-MS-TrafficTypeDiagnostic: MW2PR12MB2476: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 20:F/NhhiB7vT4lMhu6r8kila0DTyOKAMyj0/7eCMrKKhn8T7R/oiKCN9Qj9uB+kgfR750tNXd5ziPTc+kkYsstH2bJgaOL2JS1cYYCkPqB1k4lnlTPzhOIcqtkHSy6vUVheVXVkFr7n/RPgicDoMiFEaPdqS+SdlV80/oNnYjJ2z2lzrnbsJSxIuE0ZfZxU+u7a3VjALbNHwXoaqUB18URWVSO7ElQ2YLILt/rbLfUJUYiG+WlNHwcEtxlM/wycKExq+QjWAJqNr8Bb/DSVUB/D24GGZiZySQLivNTl6vMweBf7SBvQAmnWE8PJJ7tQprEqOEPrDuU32HPW42xSUA7UrUJj+z9yH3E5KOoIz692eps8gHzsXG1wQULO7VBdMI5kmIvljfGyPV4RCyBFWQGyzubcTnwzmOXMPFGyfgbZrSDiNQq6xmaOD7jabtB8jmXFXQFsFZtn6fE9o0IgLIlMCe5Rm/QdLF2jpDuMo4xZ7kEacc0SCw9RI7UV+ijNX6K; 4:QkiaYUDPld/mpm/3PxOUrgafEtOdwTSszpgqcPDRP3s/niGAp3H4gCSzvJz2vQGey2Fs7P7hp6qDIi3rcmAgI474DcClGBh0saIZcIgvfp77Opxo2m6CHwZyxeSRzBx5ykT5TRh9XUinB1DoN99rmydIH/iKnVTbQZWsbctPfV4wQe0zHjlhJmn0UCx7wSsVoEJEQj6pcvt0/z7qxtgE2edwY0hr907OWcB4rEjR7Rk/pgU/YbnNQwe/NyO1h1Xj5dg4FAhgsIfcoQsaQmJUQZvtAajf813Zf9PNL4VsM4UHAgNyt/nQI83QKJRlJvym X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:MW2PR12MB2476; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2476; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(346002)(376002)(366004)(199004)(189003)(50226002)(53936002)(50466002)(8936002)(8676002)(39060400002)(48376002)(2616005)(486006)(476003)(305945005)(25786009)(7736002)(6666003)(446003)(11346002)(956004)(59450400001)(5660300001)(76176011)(186003)(36756003)(86362001)(575784001)(16526019)(81166006)(26005)(4326008)(386003)(81156014)(7416002)(106356001)(53416004)(72206003)(97736004)(316002)(47776003)(478600001)(105586002)(51416003)(68736007)(6116002)(3846002)(16586007)(2906002)(6486002)(1076002)(44832011)(7696005)(66066001)(52116002)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2476; H:bmoger-ubuntu.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2476; 23:34XqdFPl97d263G3oPtc2kn6fBgJc84gAfZIU87kO?= BBQKVJ+afQxc5TxI0ctEvzdWvT692PIbtFYDa3k7l79X4QalalJueYxJE+fwo9VReEREmdAmP/Uj1vMUWjFdBRUHYkBdwIVdfKEQ8WyZ4wZ/I9OLyA5fb768LSg2t7/AJrOlqMaDlJBDMQYNfy3bEJ1HaSb00LJdFw9JJ40r8IUzYXpIoDkz+OOpY2mTpseXjbo/6qLJGx2vCR1nAfWx+WkRbDcXa4qW5yr0VLii1oPcY0oMgtwDh60ZShysQK6UazQUusLEp9oGPbQTBmAY4BgX8NJvcFbQOhiuHnoDPhoBVKw/60IMpLaO8WlUxVPqtGzI9UHP6mObq7RLm1UkMbL+T1pGDywndQfKyVw6rmvwiCuo0nZzaXDTAiaU4ZtOC9laxVTa7v+ZZnjkSsure4/IfLnBhjPYiHniMPD6zvrgzphN/wh/9KBd26LKksUK+99dV2hDYoO60rh0qAgdfSVvm2IEveF1JZpCagVOrsDk6fUmJpdmgHeneXz6/DeDiRTcqDSW3VGi9Ti2Le1lWjzicmmtRCWmYb1dGVekmR69+6JaTkBMsBPK7lb56ME9X02cwYpi1PEz+mQB3eZoGkbwCrQGRUZdPKb9k+84zU0TEOtdkKc1iIviAdBcstE3ehEo3K45wYM3aZ/K3LJ0lhMrq/mlnwBurIRXwnP8YT5gWMk5Aj0d+RZvdGv4fDVWei4gpnR7t1UsOYlG9HYWe/03L0frMLyWDRdmn93BGbCyEPSNp2xjg0891akh4e5WWl2XfK1C1XbIr9viBsl7MfFnX4Iq0sm4twN216jNmVYogS0t6XlxtNWjF5/fWktc4kQtNRS2r5NImJSSxdsh81pLyRzxQe6eeff723CXF6g0Z+2iRLa/30fWWGEzAIug/B6bEzZ6i5kgOxSSAgLFuSEhM4b0R2nwKu1rGeYFNDJzHxruWXnywYlU9CrUpdL+U2Ms0AD4RH1Id/bPc2GBXq1adybt++TQQBYn2OnskGDjSEGIreW9+jwjbtmkGeodmKgz4VtrCeQpSj/Bf3kygGimtPVai/c7N12Bi3DiNForRhzYZWyZmcFTu4givXXS+7N5D06wxG/d/7vhcwpjSGxM0omYUqseEv44sIipcx9foBmxTO8WrFnRPkYEcYxj9KZYK4L+ka0kvF52cjvab0fMb9JpGfhCKmuAaBcHT3wyGRMxDi11caQAdYARzvhqP59reAoh8IVNeGIvj6UE/wqcpn2e1QItWQNXRbNlwJ8JS64rw8nSjDrZzIX8egVrW69UZMsfzUOAPG2ZXQb6cEz X-Microsoft-Antispam-Message-Info: 0Ify4hfDZhzyLnftM3ZLLNnlJSSUNgj62yj4cKNz7BxJI+DnS/qF71sePXhPv7iLgNEsle1zu+jD1dBxpAQ9jW0dtrEaaRDZj1P0dFi3I0Tv9ZncxmXZQ2jsUPQ5Dv9MVP5pUf/q1xdkDVeOVAkhRDLtkYvUbQ7UCu2f9mpTSfBTyZjKrXMIRmc62sb6dB+U X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 6:irZ1/WSahDzYxZZ0s0SHNyVjZKHjK61sZ2vSdPyPpDQ7p5cLXUwNKH60Dq5lbPf8cqRjtuYgv5k4auX4JlCD+xTXou3dM0FLVmvybqXC8BtZJ/tqsrVKpPKxgL0z/4Ujv1aXBjgzgA8bO9nfecOQG0ZItmHZUsnOYj/wwK0QPr+VkjX99l86IeaBb+WFR3DGPtvaS5Y74/3fKvV7GATgeM49/T/dFnPaGL2ioqFOnsmPwk0jRkvjjkzBfKipFwP5MfASECluGynHoLJkJBmULXf6cWUb2aakbW+6u+r2GqhZAXVQo8JnTv3SxFDh173H6KDSMNYzQ2MrshK1hXn17WlrWe8c0QlPqKd2Tr8sS1M6orheMqd96HPwEVr4zQCVTurmhIp0ttUu/MEwnFv3vD2l2IkGnoa4h9SfpZYibq8Fhi+b56jK9Umsq6ogyXjIQ30sX5IgpZJLAPcq/sPhag==; 5:vLJgLq0FqdBSCXoh+6fkg1B2yfKCtweaxhJEFpQS9XBJuvhAqdgX12ReMyhgEg+X5EzYPgKmBzcaNgAvA9GisC/+iepZIK5Y+3dJPMCMGXMnTL1GlmNfNXSqiVTHmPRTRRNixIYYBnheonANcgKVxTfLp5xahnjNpG+Hyakh14E=; 24:NP6owVmKHdE6qe2pDV01ionDWz9ptxEHpXqRuY2cIfxFOIwgLkW4sHHYTCJ3LwoKQynSSas3lZSfojDQcBjKbQhqzJ5lkL2ojlKo4ZrMiFM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2476; 7:3dZLc13gMfd+6TGVPISq8lHuP7hVb0X7JXBONoUXsU2igbN3Pptx9rNqV76iUQpfvP7+VEqHuhCFOhrxxM7L0DYT2SAkSJt32EQxOv3hd1pSb2sdaRf/UhUYZD7+P4+5Tjj5UD4QLzguazrl3AeL0BOEuv2TIa8xKS/bCJGrOGtRf8TcY+S2m7ssO0HW82Co1ROMwPtBKve2LxTfZ5TjRzJb7kectf1X5AqRfbVrGlB7eKqo/Oe495G/wv/Vm+WM; 20:+gULgH5prEjlyH6pdc1f3SREKBCC1DLNCJZdPBD7dDsuMGjCF3qO/X3Qz4dc5cVyhZYwvCyJcFDovYkhiBqrhlDkrV1ixsi8gKRUmMtuwOjRy+tuRUMehZHTufA/72F6p+ASKmEh9lY97vMDxx7+mMIxE+i2baVOWi5YyUwAadqc+WNCSQdHiz1bC++Y7mXA1PbKf/NbArujK0i95FJ8BdADSDsR9OdAl6lfKI2SU6SQWeY/86Xch6+vhDalSJpW X-MS-Office365-Filtering-Correlation-Id: cedc1de0-df80-461c-43d9-08d5b9b9aa97 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 16:42:21.5858 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cedc1de0-df80-461c-43d9-08d5b9b9aa97 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2476 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.64 Subject: [Qemu-devel] [PATCH v9 7/7] i386: Remove generic SMT thread check X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geoff@hostfission.com, babu.moger@amd.com, kash@tripleback.net, qemu-devel@nongnu.org, kvm@vger.kernel.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Remove generic non-intel check while validating hyperthreading support. Certain AMD CPUs can support hyperthreading now. CPU family with TOPOEXT feature can support hyperthreading now. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae Reviewed-by: Eduardo Habkost --- target/i386/cpu.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index de2749ae81..d28b51c0a3 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4821,17 +4821,20 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp) qemu_init_vcpu(cs); - /* Only Intel CPUs support hyperthreading. Even though QEMU fixes this - * issue by adjusting CPUID_0000_0001_EBX and CPUID_8000_0008_ECX - * based on inputs (sockets,cores,threads), it is still better to gives + /* Most Intel and certain AMD CPUs support hyperthreading. Even though QEMU + * fixes this issue by adjusting CPUID_0000_0001_EBX and CPUID_8000_0008_ECX + * based on inputs (sockets,cores,threads), it is still better to give * users a warning. * * NOTE: the following code has to follow qemu_init_vcpu(). Otherwise * cs->nr_threads hasn't be populated yet and the checking is incorrect. */ - if (!IS_INTEL_CPU(env) && cs->nr_threads > 1 && !ht_warned) { - error_report("AMD CPU doesn't support hyperthreading. Please configure" - " -smp options properly."); + if (IS_AMD_CPU(env) && + !(env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_TOPOEXT) && + cs->nr_threads > 1 && !ht_warned) { + error_report("This family of AMD CPU doesn't support " + "hyperthreading. Please configure -smp " + "options properly."); ht_warned = true; }