From nobody Wed Feb 11 08:19:19 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1528498883192956.9538541716722; Fri, 8 Jun 2018 16:01:23 -0700 (PDT) Received: from localhost ([::1]:38416 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fRQNm-0008Pu-Go for importer@patchew.org; Fri, 08 Jun 2018 19:01:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42884) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fRQJK-0005Az-KJ for qemu-devel@nongnu.org; Fri, 08 Jun 2018 18:56:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fRQJG-0002pD-2X for qemu-devel@nongnu.org; Fri, 08 Jun 2018 18:56:46 -0400 Received: from mail-bl2nam02on0082.outbound.protection.outlook.com ([104.47.38.82]:53152 helo=NAM02-BL2-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 1fRQJF-0002oc-QU for qemu-devel@nongnu.org; Fri, 08 Jun 2018 18:56:42 -0400 Received: from linux-h3ml.amd.com (165.204.77.1) by MW2PR12MB2473.namprd12.prod.outlook.com (2603:10b6:907:9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.841.14; Fri, 8 Jun 2018 22:56:37 +0000 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:X-MS-Exchange-SenderADCheck; bh=7DRAiQkTbxUQ9S7Z8lVbl092MtmrJlwApwbSVC+pnYA=; b=aovYtRZzVTFw14prY0pRWoKsMuvXFCY6cTeHmkPt/+OQ077upyvHZeJTGlKedkhS7pwsNfd1TBfq4Z4DtuVUzbo290+aBGSEIOeFETSRGXQx+fFizZ2yIdRUmIbK2RTXQSxxex9SjD6rIhL/uaFR+bxZEXUeDZQsDE8gNoxtp4o= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Fri, 8 Jun 2018 18:56:17 -0400 Message-Id: <1528498581-131037-2-git-send-email-babu.moger@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1528498581-131037-1-git-send-email-babu.moger@amd.com> References: <1528498581-131037-1-git-send-email-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN4PR0401CA0034.namprd04.prod.outlook.com (2603:10b6:803:2a::20) To MW2PR12MB2473.namprd12.prod.outlook.com (2603:10b6:907:9::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MW2PR12MB2473; X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2473; 3:z7rGaIgpP5a2373yggHPBdYU+ZscUS7l8/6j178zeLO40lWyCNwVLS7vLb8bcR6OlmUD8fR/GV6suNpXLw7x2Fg0W7/PmkmdoYBRXG5c8ZwAxUFnQT9a165gOZpYtxfOdoA9IvuJlqZcxrxfY1CbMkqlzQqFBKEitFPbKy9irhyamCznKhDfr3hl0duMYCnerlLz6oXtB82PCAjR3lKPr5kRxqo2kp28pszJrmMMD7BiZ3rjdB6D1AMY+QqRP+pJ; 25:niLS3hlgMV3t1657afBkueEKefyCEQLKz7oJhAI1DOezEztYxryodyMpEMSPa5tWom/eEtC+fcxLXcDx5oimhU991e4+K/YHSrEYjVKRSZDXN8dyya0rdm8zC0RGUd4RPPQJsy+57V8wSA2qaOsdkp2OUaYXqDcuGdbEO4klJNghXpvcp7UWNkYgdUuGozAOmm1n2Joyvx+NuMIevncUHM2sk9imtXUIytt0gpL9Mxr1xRmbUHRsgUHgaq10GdXARPWebeT2pVQDaXPrFZLxlkZxG0spq1z7ujB43Kmk975uIe7PKnCqHNKrk2jFQ7gyDb1R9YENfba6wjTVY5gIxA==; 31:Cu8jG3lMegHzQusXQyMI88QIDTAbeV736zzDTCFkWYTsIjln8kTXlEqv5TK8Fn5C4lDjKlZ380fCXpMDcrEyYoUBx2+h7QH0Z1h6RC219RR9LXNXD0oQ8oZlr2kg5hfes33kZTipN1Q9SvUlVFX9bCX8TmU+yyuffMQ+Rgtt4d6Q4dhu8KvNNY6M2T7nZcn2MYc21m75HedsJINS2isA+ik01trl9o8yKcQOeVDKk8s= X-MS-TrafficTypeDiagnostic: MW2PR12MB2473: X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2473; 20:ovIsvhqOdFPrja3Pb9CEs3StgqLmeBedCe/93jZtrVvSlDfghybRg5Y1imj41Z7hcAojJ5bGFHPRoEuyLmK8/77NR5cu0a0Iv5vZZ5sMZjkS60dpadNgxSLJuXUorVHxXJ7MQlOklAHXv6tt8zxRlyJS5uRVvwma61pkgnMtMV7UzPnUArV1q3Zj/nW4n3R3rs1U7X/iT+++CaGnA3EmBfsFVrehrfE6TXiRxxaE5jo7MWGW++z334mSAULFtlDpvXr6hdqe9ayqW9OOysUFJNXtDWWbsDtvaHxARkuJbguCa8YIvbc7tKZB+sgK8jk1ogq72yEG3jU+bviP8Z2+Oa7pfzTb76V5FgCgOGMHwNo9xZnLtYuQmj7sOTrzSF2okpBmUlPUShA2uBKgrOq4Ko1u6JOQK1493R7xMQHtJFaZvAJCezYkWI7SRlwF4yOLMZ9CEYHT9rcLEpK07VPTkmqo6yOQOOkfpi0nmz1XDseAIb2fEtTC/iv1xy+N1UyN; 4:KpY/lD9zdrjlkNpVuz1yBknQQnY783UqUndbD+fK92y1xjCtfna6R//Fj1sAkWxcR+B9UC2BL8hpzhxp9UgKRoNTCgXPCpsG2aleysetW2o8orgM7UL9B6N67yTFMsheZPTMZwi4zkmh8s9NLyxLt7HCru/+q2T8KeYP7Jcr3jrMXbJOVmehoK9tMWelJ/1mo2e1THLoROvcluqtJq2BzFgc3KgJ79WuI1E8glu0cOI0Q9fAAo1zBb2q0pqtL+fGcRsJlr59mZgMMxXr1gwyqutc8zay3XQ5JQYhUO5O4nRDVKKa8V6IqSTA2aic2g1z 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)(3002001)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:MW2PR12MB2473; BCL:0; PCL:0; RULEID:; SRVR:MW2PR12MB2473; X-Forefront-PRVS: 06973FFAD3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(39380400002)(396003)(39850400004)(366004)(189003)(199004)(956004)(7416002)(305945005)(6666003)(4720700003)(7736002)(53416004)(53936002)(48376002)(26005)(16526019)(105586002)(16586007)(106356001)(386003)(316002)(186003)(7696005)(52116002)(39060400002)(50226002)(51416003)(66066001)(47776003)(50466002)(446003)(8676002)(11346002)(8936002)(81166006)(81156014)(76176011)(4326008)(44832011)(486006)(2616005)(36756003)(476003)(25786009)(5660300001)(97736004)(6486002)(3846002)(6116002)(2906002)(86362001)(478600001)(68736007)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2473; H:linux-h3ml.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MW2PR12MB2473; 23:KEy5A2tW5Lz/xicSk9cI0TkLEXH3bD5qRhq8+dWAY?= =?us-ascii?Q?gCB9SYKyzSANx+6vEOUt3NNCbIwwQHdlMEwtirkiCu5HWtVNkEAQ+u2LrAPi?= =?us-ascii?Q?AW6qriGwoE+d83z4cAmGdll1LziSsQmg2ELH1AsrQDtICIUpWlZNLVUeUnOc?= =?us-ascii?Q?Kq1PtdZ2FqMs4kfbOhWzvURa2BcR8QIsDo38t5LwiUPSJ72DYeTjUMRSKMgz?= =?us-ascii?Q?ath60q5jnsFYPO9x9+4ccmO+XtPgcy+FhgpyRk3NU9roXqBhd3EhA82j4KFu?= =?us-ascii?Q?lqDo319DQPkn9wvq0P3tQJzVXr0n17Ty1hb9ojqhnW+sPNCOdBzcw0LGTfwY?= =?us-ascii?Q?VkV2FGVVqdT0qu7MPmaHaTR4sY2R5u42h52/19mtziCr+IsR4ECPgND9dsGY?= =?us-ascii?Q?2I2uCVwwSKrsIGkHX5gj/ctKMGztxOTcPLpyfQqze08ODMfZt8PdH+i/eu/G?= =?us-ascii?Q?ohcIOZNEZPzSuYlBVkq6/6WDALTfnU4Hbl59fxHJsbdgCyTi0KdfUu5LXWUX?= =?us-ascii?Q?S2SSa/ZBB/zxjmkZCMdkOwfh0MUUXFqOpeyEnbNpLGKm8pmVJpXi+BPUmJ55?= =?us-ascii?Q?6mLSezVAHNBliPzI5GO1q/orIGfu50bzTvqKB0rVFQ9A7ZRfATxDtV3fb9kU?= =?us-ascii?Q?jCTraWSfQHVpd/uK+ycsbC8xZdZpkaBC6sbeXs43mwWfd44lPnXdHEPsAPSz?= =?us-ascii?Q?eYkiaDmhVvQ3ia5OJJHDmWQBi9m4JS5WIIzA8DmkKWLxFO7d5JDpoLsdTH/p?= =?us-ascii?Q?VrJ4i1DIAvAWoiUqsEa5DSroEie7K8cOVHYozxM+3RMrUymgz/0Iaes/JUCN?= =?us-ascii?Q?AkgWvZyTFKZoNZ3dT9J2UowZ74Pxu+niZayTFBtIyfBlLNcm8I/5+AtMeZKE?= =?us-ascii?Q?397KNuUo9FXgXVK+UJ/SMhuOuSBwJRV3Ofw/uozcqDDMQhc1lUbGKHIMka7w?= =?us-ascii?Q?U9yD+AEQJGNmUCVJIIfEM2Blhu5ytLe9MLCYw183YIT+9TlRkIxjvfimslsF?= =?us-ascii?Q?xMGsoZ3evt5wZsSaerytWFsu1fqziepfn+sUlcU9XRjyipwMm2AENjCfgB6q?= =?us-ascii?Q?sIuhjH0kko1lrZppKByJ9f5xTdN5LAW8wV2GqVrLtvHxAr0+LniA65XIWUkR?= =?us-ascii?Q?KCwY/FnziC46hd8kRJRXxUvW6xoyNgtUZRJrO2u0hvQg1tM7nvi2Q/n2jpat?= =?us-ascii?Q?Gv+K5Tk8NmA0oD++yQxEUXzD6dmW4sEDV3EWNY5M6/EjwSGK2+CfNZnqCeWk?= =?us-ascii?Q?X/bjmCEVMOEreysU7UJi4Eigd8abJgBzZPTR1+d?= X-Microsoft-Antispam-Message-Info: IOSDXO5O7tnSuUiTM7YtRyPXFcwQSg8iiaANMgqrnBu5ElBBHrJvWoaIK47GG14xQgnuRYQM76Dozljt3cQLAobAu+Z7s/Fi8g7gZQDX7gADIiMe3Q7luF8XzYfd1VKvaHpB/cQ3ZdHeFfkkoQV/pKA+rvHTDBWBFsz66Omfb1TmRgW12Pgb9pb3sWzvmY5A X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2473; 6:P8s5b9DNiPuEQLOMsv92s6pJHkb/4rbqMtpqD1ngvW+zBJgr/ITXvYj9o2bsmVAXICs7ntSd6EalBPt67yaEwUbnUH8RIATq8ThYmM5jR6Ty0GMg0zzyGmiDwV/mLfVfKRCJvKH8MmeLbPow3iK6TDyWW+1l2b+zlaTl1745g6wjHM30UC+tGIJjF9t1a0Czzs1crcMryIPccncxYvFmU15lJhIqKBQBV3wXxmoNSY6hslqln/y7ZuNHaUoEgssMVyaDQoEEMUXLLN7CDrP/w+ABRp74rS7dVugaA3TX9pGQ+72IZP9guDwk4Az27OSs7QOFPjuuWaHZWLwq0po+t0nZOYpq+MM0TWkDcEEwu5MD6a9rS0ERH4c3GgtgX09T4Giq/K2sm/1DnRO+M4+WQ9pmCPu3tv57Q55TIZ0DYccPa0y8MUYAWv6AoF3ZpeFOu2OilamGNJzrTVh8oS1gLA==; 5:Uyqnaidh7PeI/qMtxG3HdH1LknvoL0LYoknIji0wa3UMKvuveBICeEF01Vw7DRiFddL2AmUw3e8VWD/wtidTK7zDLI3BKhwE3VMmDXvsszMrQ7Zpg5kPquDjlfwOPfhfNzZPCWjLZ2fUpxEykMvaM0MlL5lsvo8W9XGWiGLq4OE=; 24:xeLR0r7SR9WldV4alvW3IBlNskjH6u84UmSDvx7T7P2TQWAVLWBpkJn3huB0u3+Z0U3TKulkBpjJR9GY3d8S9ATGsZF6AxbDra5zmNKTlgw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MW2PR12MB2473; 7:UwfpqlJzNgECn2TTiWQmzANj6dGOny0SB7N/znHbIqPG1cn3soDB2pOgi9FxkARG4Kf8OV1kUnGNGLk3U0zvkxiigWTRYGVVyVobHuHKcTMx8iPBJprRDKabtQ+mYJtVZslkAp9VMS4I54aId7P3YjJgRZDA0Gq9WM2XNeGYMEu53W3POwIgr/uwc4hMLEUPMY5xzGrFYdYbPmZN/wJ/vlR7tpJ9pxCBEqQJhf9Ps9BHQGSqrRzjLGsfDhwCKBQN; 20:HkvoYxGVl822BJ185czPjFJ0Bo7LhcGRIOse+UtFXVR47ZEKWhNMiG08WrghKMg8GeZHu0GCQuxxBNYA8qZUWWtI6BR34u+REgvqazwKmE1NmrRIvjI40q2bG5GFNS3k03HzSDCBktXtYb59+4zRwzAA08LhPT3/l8z/IHrEKQekiCLcZVrbXMlmKHJwDBZIJFS+sxQL7/9hz0P9C/1RqzjtygKUkUP5+oeFxmAlk+WH3tPSak+wJQzGHh6EvLkd X-MS-Office365-Filtering-Correlation-Id: ab95a4c7-7f88-451b-05a0-08d5cd9317e1 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2018 22:56:37.7806 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ab95a4c7-7f88-451b-05a0-08d5cd9317e1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2473 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.38.82 Subject: [Qemu-devel] [PATCH v13 1/5] 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+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add support for cpuid leaf CPUID_8000_001E. Build the config that closely match the underlying hardware. Please refer to the Processor Programming Reference (PPR) for AMD Family 17h Model for more details. Signed-off-by: Babu Moger --- target/i386/cpu.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 86 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1e69e68..86fb1a4 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -427,6 +427,87 @@ static void encode_cache_cpuid8000001d(CPUCacheInfo *c= ache, CPUState *cs, (cache->complex_indexing ? CACHE_COMPLEX_IDX : 0); } =20 +/* Data structure to hold the configuration info for a given core index */ +struct core_topology { + /* core complex id of the current core index */ + int ccx_id; + /* + * Adjusted core index for this core in the topology + * This can be 0,1,2,3 with max 4 cores in a core complex + */ + int core_id; + /* Node id for this core index */ + int node_id; + /* Number of nodes in this config */ + int num_nodes; +}; + +/* + * Build the configuration closely match the EPYC hardware. Using the EPYC + * hardware configuration values (MAX_CCX, MAX_CORES_IN_CCX, MAX_CORES_IN_= NODE) + * right now. This could change in future. + * nr_cores : Total number of cores in the config + * core_id : Core index of the current CPU + * topo : Data structure to hold all the config info for this core ind= ex + */ +static void build_core_topology(int nr_cores, int core_id, + struct core_topology *topo) +{ + int nodes, cores_in_ccx; + + /* First get the number of nodes required */ + nodes =3D nodes_in_socket(nr_cores); + + cores_in_ccx =3D cores_in_core_complex(nr_cores); + + topo->node_id =3D core_id / (cores_in_ccx * MAX_CCX); + topo->ccx_id =3D (core_id % (cores_in_ccx * MAX_CCX)) / cores_in_ccx; + topo->core_id =3D core_id % cores_in_ccx; + topo->num_nodes =3D nodes; +} + +/* Encode cache info for CPUID[8000001E] */ +static void encode_topo_cpuid8000001e(CPUState *cs, X86CPU *cpu, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + struct core_topology topo =3D {0}; + + build_core_topology(cs->nr_cores, cpu->core_id, &topo); + *eax =3D cpu->apic_id; + /* + * CPUID_Fn8000001E_EBX + * 31:16 Reserved + * 15:8 Threads per core (The number of threads per core is + * Threads per core + 1) + * 7:0 Core id (see bit decoding below) + * SMT: + * 4:3 node id + * 2 Core complex id + * 1:0 Core id + * Non SMT: + * 5:4 node id + * 3 Core complex id + * 1:0 Core id + */ + if (cs->nr_threads - 1) { + *ebx =3D ((cs->nr_threads - 1) << 8) | (topo.node_id << 3) | + (topo.ccx_id << 2) | topo.core_id; + } else { + *ebx =3D (topo.node_id << 4) | (topo.ccx_id << 3) | topo.core_id; + } + /* + * CPUID_Fn8000001E_ECX + * 31:11 Reserved + * 10:8 Nodes per processor (Nodes per processor is number of nodes += 1) + * 7:0 Node id (see bit decoding below) + * 2 Socket id + * 1:0 Node id + */ + *ecx =3D ((topo.num_nodes - 1) << 8) | (cpu->socket_id << 2) | topo.no= de_id; + *edx =3D 0; +} + /* * Definitions of the hardcoded cache entries we expose: * These are legacy cache values. If there is a need to change any @@ -4120,6 +4201,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, break; } break; + case 0x8000001E: + assert(cpu->core_id <=3D 255); + encode_topo_cpuid8000001e(cs, cpu, + eax, ebx, ecx, edx); + break; case 0xC0000000: *eax =3D env->cpuid_xlevel2; *ebx =3D 0; --=20 1.8.3.1