From nobody Wed Oct 29 20:36:33 2025 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 1525985223871758.2033679978213; Thu, 10 May 2018 13:47:03 -0700 (PDT) Received: from localhost ([::1]:35570 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsSt-00050A-1Z for importer@patchew.org; Thu, 10 May 2018 16:47:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57146) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOB-0005PX-7n for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsO7-0004WU-GM for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:11 -0400 Received: from mail-sn1nam01on0041.outbound.protection.outlook.com ([104.47.32.41]:36736 helo=NAM01-SN1-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 1fGsO7-0004Vg-70 for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:07 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:03 +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; bh=2iULzvNMLIPrzuWbZN3SjQNVff9TIiRl2/ZYWFL3I6c=; b=LKJrmJgMaJSuHpCiN1u0eWRqeOpArWgBTTM5lOhOJaJceZ/NiU4vL7yHnPNBppVKj7ZvFDRj3kBgk2r83q153NvzJZ6VFGPVTJG3fHNlcFynH5dzoycK6VJn0eh06ZrJUo3+cJvfkNrt8dLtaE+9JMpydSGsAqfa2onZldWAlXo= 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: Thu, 10 May 2018 15:41:41 -0500 Message-Id: <20180510204148.11687-2-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:J1VN0i5zKDfwzLnv9CX0FuyYbBkSEbXpg3o1/aFZUoV9/rDztTNznhVCPdWDilsOr1i2fJmutemutlSQ/QBkA5cmSVQi8WcGQZ8mlULIM23NtUfImXO9DlFBR50K6fsf1JpZqJz9X9VZWxfRAfvr6Ghe3q/bmK1m5jnSU/EDIMzkQLAaoanipMk9rGFplhMVT1zLNjF9niKPhvrOmxI0hqoaz/ND3THOpSqXz0Zcoph1yPecxR4vYJGvaum0mYo/; 25:BuFaoAUHBu4y7b/rDCdkxzpnPcOR2VYK6pPOLZXDXEJfVhK3VS/RWqIIOhqPhlD05CnQ/2H0P0CKn+Cdn0XEdX61uHtkM7xLVpT19BXWPfc4HhXteyf6kOSACRCdQujGpzgM1o0ajMhIckTm4jILMHiEAhLdK/ctz9s85mRR8Gpxf0QfiIlwgstPf2q2J+P15hLohmlwXTkA/5RRwR+CQ0AxRbq57MF3+bdxIw7pQsB4TYtYAmhMN9kY3sj5CpYR8kimfTF0Y0rMJDN11Q2tGD0dqScj+rtw/SUI6wS88xwQZH6wS/rRzLzCLr8Q8mKiieC4mEXFkI8eAaGjw/7AlQ==; 31:wxsVP1sILOGYOsb11YcXxc4oQZTuVyzjjRyqRN+z0HCMVFAOvqyOkUrz0bCJDaRALcN6OLPGleTmUh8fo5kEuclwwcmrGCeRBiSL8FX+xOjY5pVhaiGJH+swDClW7OllRfFblO6vHFj4bDfDQMGhqO7m7E0ePkr4N4JSQwoal3D/BMbLSPwznCyqIThgH7Civ3h81i+O8Qye2vGMrVq0r/uTjHSM0o6q8+HQA194Vvs= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:gSZDkltlgcKHdX/opGOi5KV2JNqcTa7SMlDzIQXl4D9Sn6pgejExnizIQJr9NBhU28vW7nIcmnz0N145cS9dio8M+tS07KSKTYeiYdGBf7B9Bk+IBWvCKXx73SWb6E1DioA/WTspNBExNx9DUJAR1sD0IIDIINhJSd74qhMIKUgSNRpd7+LUKm7t6a4K6w0XdWl7ANuMnR3MJtGWOKpQ7MpgNzkWSk9lATyqcTTGiLHUKnbxIAOUYdkPX5WES6FeBzYuulyQkBesGMKlyx20X38pja14GUyIrUJbyvVJnfUP4SWGnkyUrX99FME70ZnWdkJHoREovLIW0k/3D7dtA27jquWMM2/6G8r6IWxHks88An4vkf4E7gtcqWAYDUD8meepazHssjoN18vbdh5jj5Lz2U/xAJJezNQml7tfQt7zoZHslsiFhWbvbjqGjReYJq61bAphsNxQEUs0fZpSAbOMZ7lqeJYeV1Rlg0upwtj4xJZX5Thffh57uKqdT6Lh; 4:mHFQprzH/+IVfPZSpqcCc9k3/PLS6s+MO1s1NkbFschqVcFBpSta2aVwsubsggYbVufI+P+VlnNzs06vYIfaqUrm7ik4LFtAVnSXfeRAGziq+tM4/oHS8RZP7ymX5U5x3vSJoRMAAyY8RrrmT84jspHq0UFSrP764HHBELAW5INKPhsXK2NYYjYGGFQvVpmBUloAbrZOkIN3AwHAp8KabtPe4DK39J0qL+GlT/n293D7ZDgPhy9TspV5cg9NfSzoHyubBjkOQpfJINPygSRyMTjAb0UjOiUe+eK64kLYs2FRvmtetd1mrpS0PTZIlyIN 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(575784001)(8936002)(52116002)(7696005)(59450400001)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:qwkhrZAAgfvNcNOupcRUOvM8CfsyvVxa3DKuCDKtr?= =?us-ascii?Q?Ms2rvlMYnY71kuvb4CA4cJURdWgI5P+XM0/ppPyiUZzuf5jcXyLh/iyTemZ6?= =?us-ascii?Q?mPXAVbH67dJqA8yV2subNs0Yc0GvssR0mHmQWtY4YGg/UooKgG2b9b6spnLe?= =?us-ascii?Q?XMucYfkm9PEwx9sztFpLWImYatKKLZsmyUfXRefRZkK+HGvEJAbt+tG0w3/n?= =?us-ascii?Q?MHeUZTt/5Rm8ENh05op14ZmTGZZFPa8BFcT6cZ7cLQUN4PH85VLiIG+zkve7?= =?us-ascii?Q?8UOtqwgHYJUSHpaLpna+w8EbXy0Qi3fc+tmvhlDuQVQsWCAS4uzFRovsZyhx?= =?us-ascii?Q?/ugbLCJcrsc9wQnUqnDUgIuZPMuUI2iLDSDGYLK7TsBdr6eL7H5/W6cR7Qwf?= =?us-ascii?Q?RYoHN06A1xT2FVEHRjgY5d9PJZUEDRyeyZppOL8sO8pXsgtnmqnLqCxSheg5?= =?us-ascii?Q?ZVhN05oLpUCMoLc48/Qyx+gdyrcj7000YBkNYcu0M9zhwekYOz/lh+n2RHHL?= =?us-ascii?Q?YJUWhhTYMu7PVtVLfv5RpdmC/9+fBlPonL+7zetlH5M5c97JotMBhN7i3RyU?= =?us-ascii?Q?v+cIglmfxFGipX/TpPbIV9eDE2GQoqbVUgyg9d2ARiC1M2nqUOpp0iKjcIJI?= =?us-ascii?Q?3+gdOpBAStIbpX2PSJP9sPR5x88P1IjN03IAfLT/TqjX3z9vOQME7jv94onP?= =?us-ascii?Q?pMfQR6gLwBtTeomGd4HVYMJLI2BeLknudcj9aOqV5642TkV39KN0+WQGjrHY?= =?us-ascii?Q?od/o+aqBAme3mu4+Nk3kD3EUNv1L6N1lg7dQ3s3HRrVeeI89skjD5NHFsFen?= =?us-ascii?Q?mV1AvrVXvbozRq2VPTTJRsunhFqriPAvb5X/wKlqSzhGfyySfOaEJemtdh5x?= =?us-ascii?Q?Yi5MsjY+3HdAMdog6JIF/8gz7E80wziNhafaucXWGwFVxmW9o9FDmMWUiX3E?= =?us-ascii?Q?NOixLAsoX+3H6OWhVHafiBQOpl3PC990PGVs7odo0X0c5LZq5XaZ2a6FwChM?= =?us-ascii?Q?Ka3tAR4PY054Vk++APm751Z3txDzjskNtDO3o1zqQNwck6dbROANrL4AcPvW?= =?us-ascii?Q?dgt0xLUoa763oktvzVgtuxboX4Hu+8bVSGAxhMJU8HtveOROhoFADkY64MqZ?= =?us-ascii?Q?fuXkqVnIAV6w6YlkCLQVefOMa0CFp4chbdh2VRD1FXaEkqDNTx2ccEsakCZE?= =?us-ascii?Q?kMYLl7Wf4cUYlc/ktN7/7kApCnSH4x2dNV3CgHiHqTjPaKao9QXf2oQ5rpdz?= =?us-ascii?Q?DzZX+7FLxu6q1sgeHBt6XlRU+DJC/O4JzPKhq7H5WYpYseTaSBSyn1RG69F5?= =?us-ascii?Q?8Y3xdVBFRSD9rffFERGzJWNZZs6ede9J+T0At3hYKgb+Hh2RkoGGIZ6fb6tO?= =?us-ascii?Q?W6baw=3D=3D?= X-Microsoft-Antispam-Message-Info: VlD/MVsfn2h6syQO/XFCwP6waSYm/vgSmziwBQ8Z6aN4S8kn4fXYBmlG7FkrQNQK88EzRYulTXirv3cHnWxvEOpNX/TMdRgf7JnPQC8ZaCjz1JVbaFhxJaGwvHyaD2gEKstktwV0fPU83ZmofOCH7Yx+XsrsUVihZQoYwrgtCBTXYMqk2zUY0+ExPMI1YZ50 X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:f1pNARD3ShL9pXj9AsitgUPTid0ese1+wywXgsLSiRbR19PuhN9PwfRaHoRpQqs2gswfj54nzipUZ0BdBaH0jv6BshQ7SUrLrDA7EX6nRQ0zmeN7Dp4/8P53LEP7AXaeIePq/UAknDT/aDXC9AYWPl36rpQh3m0U01SMfIpZ7bEN4+oeuzvZkZ1M6rfqawxHVgdtw9NYl5UHHDf6DEQV1cLV1Xvr23yO/p2re+daQ9MFUlNtDAYYGtNLaHiIdIkQIblKFHm35x6WEbojgvv3oSggeYiMDpy4anrx/uc03v/FL5jr+JmHxzW+MjWXoCF8ApRilMugmZ5mpugBa4+evCvb6c6XCNOhfX8vE/WZ11Sqa9DjcvYR6vmYmvxS+rnxpOWFM8gLgs7Im8CYJy/XaxCWZ4LCE/4KU8q4+YAkWP54gBolLBktX/bps0bAKNR8AezMxfQ/dmpFri3xiNl1aQ==; 5:CQ/Nx+3W2/7SHNl2Y2TNjvIDZe5PrrBrRGqi28GXod8blMTEVGk9JScEiuNmrIMkXnT7QbrNL/95dWM5/TZcMILxy3MCjMGklg9oE0JPpwsxDg7e2CsvI0ZvmDmSTY9y2jfRgO7BQ8cbsR2li8u4Zc2A86SFBPO1lIzEwpvo3sc=; 24:gvp7Nk7ie9qRhMf5Ic6ORvH3p3Uev4PAtJMuMIFfznhMwN9+LsOq0xKlQoY0HpjQ0LOL7VY2TXNfra46CEO5fYSlm76tfr1fPlv33ubcjK0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:24qqSefjMWrDMkW+yd7GyHI5YEspPBoRe9pcKm9w2hleLuXFOt66FElTuousqefikMkUDmX/sVzQ+kdBZvWar8kSfn24Hy9pN5ozrQOQR7Edttp6la90SeJ0O9h8ipNzqmfm0L51cPyLF1l3nf1GAqnvcRwfopJnHWB/XuidFjeA8MLHhTsCg3My5hkJuREKugxifWo4iOoj3gG7BhDvUj0lZVM8zkOb+kfGsETpiwNSVg6F7Fh4BnaxoRT7KkTY; 20:n/UZD7uTi0hDgTrhdeNt3PFwccEyEc35e7v+V9dLxreZowS1+HdSHVNa1ROpA3vXdFcqPqBA7mY5tq4PT7GcKGWXfNMr7O4E8054NovBqmFEW2hUGSPJqfC3tmXptVFE5WyHhmLUKr4lDLr1o98FuXlr2IGlrHLnq/EDDUxRKy22W+405d6qxYQb5qaa8a55ywrVG/MNOGSU+J/HIoUPI1iZT1slFh32gvVl7C8LgmgUOGZcIWURSnWQzHTGiLyh X-MS-Office365-Filtering-Correlation-Id: d34d01bd-8331-45c9-8f3b-08d5b6b67d02 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:03.4322 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d34d01bd-8331-45c9-8f3b-08d5b6b67d02 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.41 Subject: [Qemu-devel] [PATCH v8 1/8] i386: Helpers to encode cache information consistently 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" From: Eduardo Habkost Instead of having a collection of macros that need to be used in complex expressions to build CPUID data, define a CPUCacheInfo struct that can hold information about a given cache. Helper functions will take a CPUCacheInfo struct as input to encode CPUID leaves for a cache. This will help us ensure consistency between cache information CPUID leaves, and make the existing inconsistencies in CPUID info more visible. Signed-off-by: Eduardo Habkost Signed-off-by: Babu Moger Tested-by: Geoffrey McRae Reviewed-by: Eduardo Habkost --- target/i386/cpu.c | 495 ++++++++++++++++++++++++++++++++++------------ target/i386/cpu.h | 53 +++++ 2 files changed, 424 insertions(+), 124 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index a20fe26573..18835400f1 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -56,33 +56,240 @@ =20 #include "disas/capstone.h" =20 +/* Helpers for building CPUID[2] descriptors: */ + +struct CPUID2CacheDescriptorInfo { + enum CacheType type; + int level; + int size; + int line_size; + int associativity; +}; =20 -/* Cache topology CPUID constants: */ +#define KiB 1024 +#define MiB (1024 * 1024) =20 -/* CPUID Leaf 2 Descriptors */ +/* + * Known CPUID 2 cache descriptors. + * From Intel SDM Volume 2A, CPUID instruction + */ +struct CPUID2CacheDescriptorInfo cpuid2_cache_descriptors[] =3D { + [0x06] =3D { .level =3D 1, .type =3D ICACHE, .size =3D 8 * Ki= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x08] =3D { .level =3D 1, .type =3D ICACHE, .size =3D 16 * Ki= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x09] =3D { .level =3D 1, .type =3D ICACHE, .size =3D 32 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x0A] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 8 * Ki= B, + .associativity =3D 2, .line_size =3D 32, }, + [0x0C] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 16 * Ki= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x0D] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 16 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x0E] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 24 * Ki= B, + .associativity =3D 6, .line_size =3D 64, }, + [0x1D] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 128 * Ki= B, + .associativity =3D 2, .line_size =3D 64, }, + [0x21] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 256 * Ki= B, + .associativity =3D 8, .line_size =3D 64, }, + /* lines per sector is not supported cpuid2_cache_descriptor(), + * so descriptors 0x22, 0x23 are not included + */ + [0x24] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 16, .line_size =3D 64, }, + /* lines per sector is not supported cpuid2_cache_descriptor(), + * so descriptors 0x25, 0x20 are not included + */ + [0x2C] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 32 * Ki= B, + .associativity =3D 8, .line_size =3D 64, }, + [0x30] =3D { .level =3D 1, .type =3D ICACHE, .size =3D 32 * Ki= B, + .associativity =3D 8, .line_size =3D 64, }, + [0x41] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 128 * Ki= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x42] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 256 * Ki= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x43] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 512 * Ki= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x44] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x45] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 2 * Mi= B, + .associativity =3D 4, .line_size =3D 32, }, + [0x46] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 4 * Mi= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x47] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 8 * Mi= B, + .associativity =3D 8, .line_size =3D 64, }, + [0x48] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 3 * Mi= B, + .associativity =3D 12, .line_size =3D 64, }, + /* Descriptor 0x49 depends on CPU family/model, so it is not included = */ + [0x4A] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 6 * Mi= B, + .associativity =3D 12, .line_size =3D 64, }, + [0x4B] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 8 * Mi= B, + .associativity =3D 16, .line_size =3D 64, }, + [0x4C] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 12 * Mi= B, + .associativity =3D 12, .line_size =3D 64, }, + [0x4D] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 16 * Mi= B, + .associativity =3D 16, .line_size =3D 64, }, + [0x4E] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 6 * Mi= B, + .associativity =3D 24, .line_size =3D 64, }, + [0x60] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 16 * Ki= B, + .associativity =3D 8, .line_size =3D 64, }, + [0x66] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 8 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x67] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 16 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x68] =3D { .level =3D 1, .type =3D DCACHE, .size =3D 32 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x78] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 4, .line_size =3D 64, }, + /* lines per sector is not supported cpuid2_cache_descriptor(), + * so descriptors 0x79, 0x7A, 0x7B, 0x7C are not included. + */ + [0x7D] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 2 * Mi= B, + .associativity =3D 8, .line_size =3D 64, }, + [0x7F] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 512 * Ki= B, + .associativity =3D 2, .line_size =3D 64, }, + [0x80] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 512 * Ki= B, + .associativity =3D 8, .line_size =3D 64, }, + [0x82] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 256 * Ki= B, + .associativity =3D 8, .line_size =3D 32, }, + [0x83] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 512 * Ki= B, + .associativity =3D 8, .line_size =3D 32, }, + [0x84] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 8, .line_size =3D 32, }, + [0x85] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 2 * Mi= B, + .associativity =3D 8, .line_size =3D 32, }, + [0x86] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 512 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0x87] =3D { .level =3D 2, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 8, .line_size =3D 64, }, + [0xD0] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 512 * Ki= B, + .associativity =3D 4, .line_size =3D 64, }, + [0xD1] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 4, .line_size =3D 64, }, + [0xD2] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 2 * Mi= B, + .associativity =3D 4, .line_size =3D 64, }, + [0xD6] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 1 * Mi= B, + .associativity =3D 8, .line_size =3D 64, }, + [0xD7] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 2 * Mi= B, + .associativity =3D 8, .line_size =3D 64, }, + [0xD8] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 4 * Mi= B, + .associativity =3D 8, .line_size =3D 64, }, + [0xDC] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 1.5 * Mi= B, + .associativity =3D 12, .line_size =3D 64, }, + [0xDD] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 3 * Mi= B, + .associativity =3D 12, .line_size =3D 64, }, + [0xDE] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 6 * Mi= B, + .associativity =3D 12, .line_size =3D 64, }, + [0xE2] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 2 * Mi= B, + .associativity =3D 16, .line_size =3D 64, }, + [0xE3] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 4 * Mi= B, + .associativity =3D 16, .line_size =3D 64, }, + [0xE4] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 8 * Mi= B, + .associativity =3D 16, .line_size =3D 64, }, + [0xEA] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 12 * Mi= B, + .associativity =3D 24, .line_size =3D 64, }, + [0xEB] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 18 * Mi= B, + .associativity =3D 24, .line_size =3D 64, }, + [0xEC] =3D { .level =3D 3, .type =3D UNIFIED_CACHE, .size =3D 24 * Mi= B, + .associativity =3D 24, .line_size =3D 64, }, +}; + +/* + * "CPUID leaf 2 does not report cache descriptor information, + * use CPUID leaf 4 to query cache parameters" + */ +#define CACHE_DESCRIPTOR_UNAVAILABLE 0xFF =20 -#define CPUID_2_L1D_32KB_8WAY_64B 0x2c -#define CPUID_2_L1I_32KB_8WAY_64B 0x30 -#define CPUID_2_L2_2MB_8WAY_64B 0x7d -#define CPUID_2_L3_16MB_16WAY_64B 0x4d +/* + * Return a CPUID 2 cache descriptor for a given cache. + * If no known descriptor is found, return CACHE_DESCRIPTOR_UNAVAILABLE + */ +static uint8_t cpuid2_cache_descriptor(CPUCacheInfo *cache) +{ + int i; + + assert(cache->size > 0); + assert(cache->level > 0); + assert(cache->line_size > 0); + assert(cache->associativity > 0); + for (i =3D 0; i < ARRAY_SIZE(cpuid2_cache_descriptors); i++) { + struct CPUID2CacheDescriptorInfo *d =3D &cpuid2_cache_descriptors[= i]; + if (d->level =3D=3D cache->level && d->type =3D=3D cache->type && + d->size =3D=3D cache->size && d->line_size =3D=3D cache->line_= size && + d->associativity =3D=3D cache->associativity) { + return i; + } + } =20 + return CACHE_DESCRIPTOR_UNAVAILABLE; +} =20 /* CPUID Leaf 4 constants: */ =20 /* EAX: */ -#define CPUID_4_TYPE_DCACHE 1 -#define CPUID_4_TYPE_ICACHE 2 -#define CPUID_4_TYPE_UNIFIED 3 +#define CACHE_TYPE_D 1 +#define CACHE_TYPE_I 2 +#define CACHE_TYPE_UNIFIED 3 =20 -#define CPUID_4_LEVEL(l) ((l) << 5) +#define CACHE_LEVEL(l) (l << 5) =20 -#define CPUID_4_SELF_INIT_LEVEL (1 << 8) -#define CPUID_4_FULLY_ASSOC (1 << 9) +#define CACHE_SELF_INIT_LEVEL (1 << 8) =20 /* EDX: */ -#define CPUID_4_NO_INVD_SHARING (1 << 0) -#define CPUID_4_INCLUSIVE (1 << 1) -#define CPUID_4_COMPLEX_IDX (1 << 2) +#define CACHE_NO_INVD_SHARING (1 << 0) +#define CACHE_INCLUSIVE (1 << 1) +#define CACHE_COMPLEX_IDX (1 << 2) + +/* Encode CacheType for CPUID[4].EAX */ +#define CACHE_TYPE(t) (((t) =3D=3D DCACHE) ? CACHE_TYPE_D : \ + ((t) =3D=3D ICACHE) ? CACHE_TYPE_I : \ + ((t) =3D=3D UNIFIED_CACHE) ? CACHE_TYPE_UNIFIED := \ + 0 /* Invalid value */) + + +/* Encode cache info for CPUID[4] */ +static void encode_cache_cpuid4(CPUCacheInfo *cache, + int num_apic_ids, int num_cores, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + assert(cache->size =3D=3D cache->line_size * cache->associativity * + cache->partitions * cache->sets); + + assert(num_apic_ids > 0); + *eax =3D CACHE_TYPE(cache->type) | + CACHE_LEVEL(cache->level) | + (cache->self_init ? CACHE_SELF_INIT_LEVEL : 0) | + ((num_cores - 1) << 26) | + ((num_apic_ids - 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 =3D (cache->line_size - 1) | + ((cache->partitions - 1) << 12) | + ((cache->associativity - 1) << 22); + + assert(cache->sets > 0); + *ecx =3D cache->sets - 1; + + *edx =3D (cache->no_invd_sharing ? CACHE_NO_INVD_SHARING : 0) | + (cache->inclusive ? CACHE_INCLUSIVE : 0) | + (cache->complex_indexing ? CACHE_COMPLEX_IDX : 0); +} + +/* Encode cache info for CPUID[0x80000005].ECX or CPUID[0x80000005].EDX */ +static uint32_t encode_cache_cpuid80000005(CPUCacheInfo *cache) +{ + assert(cache->size % 1024 =3D=3D 0); + assert(cache->lines_per_tag > 0); + assert(cache->associativity > 0); + assert(cache->line_size > 0); + return ((cache->size / 1024) << 24) | (cache->associativity << 16) | + (cache->lines_per_tag << 8) | (cache->line_size); +} =20 #define ASSOC_FULL 0xFF =20 @@ -100,57 +307,140 @@ a =3D=3D ASSOC_FULL ? 0xF : \ 0 /* invalid value */) =20 +/* + * Encode cache info for CPUID[0x80000006].ECX and CPUID[0x80000006].EDX + * @l3 can be NULL. + */ +static void encode_cache_cpuid80000006(CPUCacheInfo *l2, + CPUCacheInfo *l3, + uint32_t *ecx, uint32_t *edx) +{ + assert(l2->size % 1024 =3D=3D 0); + assert(l2->associativity > 0); + assert(l2->lines_per_tag > 0); + assert(l2->line_size > 0); + *ecx =3D ((l2->size / 1024) << 16) | + (AMD_ENC_ASSOC(l2->associativity) << 12) | + (l2->lines_per_tag << 8) | (l2->line_size); + + if (l3) { + assert(l3->size % (512 * 1024) =3D=3D 0); + assert(l3->associativity > 0); + assert(l3->lines_per_tag > 0); + assert(l3->line_size > 0); + *edx =3D ((l3->size / (512 * 1024)) << 18) | + (AMD_ENC_ASSOC(l3->associativity) << 12) | + (l3->lines_per_tag << 8) | (l3->line_size); + } else { + *edx =3D 0; + } +} =20 /* Definitions of the hardcoded cache entries we expose: */ =20 /* L1 data cache: */ -#define L1D_LINE_SIZE 64 -#define L1D_ASSOCIATIVITY 8 -#define L1D_SETS 64 -#define L1D_PARTITIONS 1 -/* Size =3D LINE_SIZE*ASSOCIATIVITY*SETS*PARTITIONS =3D 32KiB */ -#define L1D_DESCRIPTOR CPUID_2_L1D_32KB_8WAY_64B +static CPUCacheInfo l1d_cache =3D { + .type =3D DCACHE, + .level =3D 1, + .size =3D 32 * KiB, + .self_init =3D 1, + .line_size =3D 64, + .associativity =3D 8, + .sets =3D 64, + .partitions =3D 1, + .no_invd_sharing =3D true, +}; + /*FIXME: CPUID leaf 0x80000005 is inconsistent with leaves 2 & 4 */ -#define L1D_LINES_PER_TAG 1 -#define L1D_SIZE_KB_AMD 64 -#define L1D_ASSOCIATIVITY_AMD 2 +static CPUCacheInfo l1d_cache_amd =3D { + .type =3D DCACHE, + .level =3D 1, + .size =3D 64 * KiB, + .self_init =3D 1, + .line_size =3D 64, + .associativity =3D 2, + .sets =3D 512, + .partitions =3D 1, + .lines_per_tag =3D 1, + .no_invd_sharing =3D true, +}; =20 /* L1 instruction cache: */ -#define L1I_LINE_SIZE 64 -#define L1I_ASSOCIATIVITY 8 -#define L1I_SETS 64 -#define L1I_PARTITIONS 1 -/* Size =3D LINE_SIZE*ASSOCIATIVITY*SETS*PARTITIONS =3D 32KiB */ -#define L1I_DESCRIPTOR CPUID_2_L1I_32KB_8WAY_64B +static CPUCacheInfo l1i_cache =3D { + .type =3D ICACHE, + .level =3D 1, + .size =3D 32 * KiB, + .self_init =3D 1, + .line_size =3D 64, + .associativity =3D 8, + .sets =3D 64, + .partitions =3D 1, + .no_invd_sharing =3D true, +}; + /*FIXME: CPUID leaf 0x80000005 is inconsistent with leaves 2 & 4 */ -#define L1I_LINES_PER_TAG 1 -#define L1I_SIZE_KB_AMD 64 -#define L1I_ASSOCIATIVITY_AMD 2 +static CPUCacheInfo l1i_cache_amd =3D { + .type =3D ICACHE, + .level =3D 1, + .size =3D 64 * KiB, + .self_init =3D 1, + .line_size =3D 64, + .associativity =3D 2, + .sets =3D 512, + .partitions =3D 1, + .lines_per_tag =3D 1, + .no_invd_sharing =3D true, +}; =20 /* Level 2 unified cache: */ -#define L2_LINE_SIZE 64 -#define L2_ASSOCIATIVITY 16 -#define L2_SETS 4096 -#define L2_PARTITIONS 1 -/* Size =3D LINE_SIZE*ASSOCIATIVITY*SETS*PARTITIONS =3D 4MiB */ +static CPUCacheInfo l2_cache =3D { + .type =3D UNIFIED_CACHE, + .level =3D 2, + .size =3D 4 * MiB, + .self_init =3D 1, + .line_size =3D 64, + .associativity =3D 16, + .sets =3D 4096, + .partitions =3D 1, + .no_invd_sharing =3D true, +}; + /*FIXME: CPUID leaf 2 descriptor is inconsistent with CPUID leaf 4 */ -#define L2_DESCRIPTOR CPUID_2_L2_2MB_8WAY_64B +static CPUCacheInfo l2_cache_cpuid2 =3D { + .type =3D UNIFIED_CACHE, + .level =3D 2, + .size =3D 2 * MiB, + .line_size =3D 64, + .associativity =3D 8, +}; + + /*FIXME: CPUID leaf 0x80000006 is inconsistent with leaves 2 & 4 */ -#define L2_LINES_PER_TAG 1 -#define L2_SIZE_KB_AMD 512 +static CPUCacheInfo l2_cache_amd =3D { + .type =3D UNIFIED_CACHE, + .level =3D 2, + .size =3D 512 * KiB, + .line_size =3D 64, + .lines_per_tag =3D 1, + .associativity =3D 16, + .sets =3D 512, + .partitions =3D 1, +}; =20 /* Level 3 unified cache: */ -#define L3_SIZE_KB 0 /* disabled */ -#define L3_ASSOCIATIVITY 0 /* disabled */ -#define L3_LINES_PER_TAG 0 /* disabled */ -#define L3_LINE_SIZE 0 /* disabled */ -#define L3_N_LINE_SIZE 64 -#define L3_N_ASSOCIATIVITY 16 -#define L3_N_SETS 16384 -#define L3_N_PARTITIONS 1 -#define L3_N_DESCRIPTOR CPUID_2_L3_16MB_16WAY_64B -#define L3_N_LINES_PER_TAG 1 -#define L3_N_SIZE_KB_AMD 16384 +static CPUCacheInfo l3_cache =3D { + .type =3D UNIFIED_CACHE, + .level =3D 3, + .size =3D 16 * MiB, + .line_size =3D 64, + .associativity =3D 16, + .sets =3D 16384, + .partitions =3D 1, + .lines_per_tag =3D 1, + .self_init =3D true, + .inclusive =3D true, + .complex_indexing =3D true, +}; =20 /* TLB definitions: */ =20 @@ -3301,85 +3591,53 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index= , uint32_t count, if (!cpu->enable_l3_cache) { *ecx =3D 0; } else { - *ecx =3D L3_N_DESCRIPTOR; + *ecx =3D cpuid2_cache_descriptor(&l3_cache); } - *edx =3D (L1D_DESCRIPTOR << 16) | \ - (L1I_DESCRIPTOR << 8) | \ - (L2_DESCRIPTOR); + *edx =3D (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 */ if (cpu->cache_info_passthrough) { host_cpuid(index, count, eax, ebx, ecx, edx); + /* QEMU gives out its own APIC IDs, never pass down bits 31..2= 6. */ *eax &=3D ~0xFC000000; + if ((*eax & 31) && cs->nr_cores > 1) { + *eax |=3D (cs->nr_cores - 1) << 26; + } } else { *eax =3D 0; switch (count) { case 0: /* L1 dcache info */ - *eax |=3D CPUID_4_TYPE_DCACHE | \ - CPUID_4_LEVEL(1) | \ - CPUID_4_SELF_INIT_LEVEL; - *ebx =3D (L1D_LINE_SIZE - 1) | \ - ((L1D_PARTITIONS - 1) << 12) | \ - ((L1D_ASSOCIATIVITY - 1) << 22); - *ecx =3D L1D_SETS - 1; - *edx =3D CPUID_4_NO_INVD_SHARING; + encode_cache_cpuid4(&l1d_cache, + 1, cs->nr_cores, + eax, ebx, ecx, edx); break; case 1: /* L1 icache info */ - *eax |=3D CPUID_4_TYPE_ICACHE | \ - CPUID_4_LEVEL(1) | \ - CPUID_4_SELF_INIT_LEVEL; - *ebx =3D (L1I_LINE_SIZE - 1) | \ - ((L1I_PARTITIONS - 1) << 12) | \ - ((L1I_ASSOCIATIVITY - 1) << 22); - *ecx =3D L1I_SETS - 1; - *edx =3D CPUID_4_NO_INVD_SHARING; + encode_cache_cpuid4(&l1i_cache, + 1, cs->nr_cores, + eax, ebx, ecx, edx); break; case 2: /* L2 cache info */ - *eax |=3D CPUID_4_TYPE_UNIFIED | \ - CPUID_4_LEVEL(2) | \ - CPUID_4_SELF_INIT_LEVEL; - if (cs->nr_threads > 1) { - *eax |=3D (cs->nr_threads - 1) << 14; - } - *ebx =3D (L2_LINE_SIZE - 1) | \ - ((L2_PARTITIONS - 1) << 12) | \ - ((L2_ASSOCIATIVITY - 1) << 22); - *ecx =3D L2_SETS - 1; - *edx =3D CPUID_4_NO_INVD_SHARING; + encode_cache_cpuid4(&l2_cache, + cs->nr_threads, cs->nr_cores, + eax, ebx, ecx, edx); break; case 3: /* L3 cache info */ - if (!cpu->enable_l3_cache) { - *eax =3D 0; - *ebx =3D 0; - *ecx =3D 0; - *edx =3D 0; + pkg_offset =3D apicid_pkg_offset(cs->nr_cores, cs->nr_thre= ads); + if (cpu->enable_l3_cache) { + encode_cache_cpuid4(&l3_cache, + (1 << pkg_offset), cs->nr_cores, + eax, ebx, ecx, edx); break; } - *eax |=3D CPUID_4_TYPE_UNIFIED | \ - CPUID_4_LEVEL(3) | \ - CPUID_4_SELF_INIT_LEVEL; - pkg_offset =3D apicid_pkg_offset(cs->nr_cores, cs->nr_thre= ads); - *eax |=3D ((1 << pkg_offset) - 1) << 14; - *ebx =3D (L3_N_LINE_SIZE - 1) | \ - ((L3_N_PARTITIONS - 1) << 12) | \ - ((L3_N_ASSOCIATIVITY - 1) << 22); - *ecx =3D L3_N_SETS - 1; - *edx =3D CPUID_4_INCLUSIVE | CPUID_4_COMPLEX_IDX; - break; + /* fall through */ default: /* end of info */ - *eax =3D 0; - *ebx =3D 0; - *ecx =3D 0; - *edx =3D 0; + *eax =3D *ebx =3D *ecx =3D *edx =3D 0; break; } } - - /* QEMU gives out its own APIC IDs, never pass down bits 31..26. = */ - if ((*eax & 31) && cs->nr_cores > 1) { - *eax |=3D (cs->nr_cores - 1) << 26; - } break; case 5: /* mwait info: needed for Core compatibility */ @@ -3583,10 +3841,8 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, (L1_ITLB_2M_ASSOC << 8) | (L1_ITLB_2M_ENTRIES); *ebx =3D (L1_DTLB_4K_ASSOC << 24) | (L1_DTLB_4K_ENTRIES << 16) | \ (L1_ITLB_4K_ASSOC << 8) | (L1_ITLB_4K_ENTRIES); - *ecx =3D (L1D_SIZE_KB_AMD << 24) | (L1D_ASSOCIATIVITY_AMD << 16) |= \ - (L1D_LINES_PER_TAG << 8) | (L1D_LINE_SIZE); - *edx =3D (L1I_SIZE_KB_AMD << 24) | (L1I_ASSOCIATIVITY_AMD << 16) |= \ - (L1I_LINES_PER_TAG << 8) | (L1I_LINE_SIZE); + *ecx =3D encode_cache_cpuid80000005(&l1d_cache_amd); + *edx =3D encode_cache_cpuid80000005(&l1i_cache_amd); break; case 0x80000006: /* cache info (L2 cache) */ @@ -3602,18 +3858,9 @@ 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); - *ecx =3D (L2_SIZE_KB_AMD << 16) | \ - (AMD_ENC_ASSOC(L2_ASSOCIATIVITY) << 12) | \ - (L2_LINES_PER_TAG << 8) | (L2_LINE_SIZE); - if (!cpu->enable_l3_cache) { - *edx =3D ((L3_SIZE_KB / 512) << 18) | \ - (AMD_ENC_ASSOC(L3_ASSOCIATIVITY) << 12) | \ - (L3_LINES_PER_TAG << 8) | (L3_LINE_SIZE); - } else { - *edx =3D ((L3_N_SIZE_KB_AMD / 512) << 18) | \ - (AMD_ENC_ASSOC(L3_N_ASSOCIATIVITY) << 12) | \ - (L3_N_LINES_PER_TAG << 8) | (L3_N_LINE_SIZE); - } + encode_cache_cpuid80000006(&l2_cache_amd, + cpu->enable_l3_cache ? &l3_cache : NULL, + ecx, edx); break; case 0x80000007: *eax =3D 0; diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 1b219fafc4..fa03e2ced4 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1044,6 +1044,59 @@ typedef enum TPRAccess { TPR_ACCESS_WRITE, } TPRAccess; =20 +/* Cache information data structures: */ + +enum CacheType { + DCACHE, + ICACHE, + UNIFIED_CACHE +}; + +typedef struct CPUCacheInfo { + enum CacheType type; + uint8_t level; + /* Size in bytes */ + uint32_t size; + /* Line size, in bytes */ + uint16_t line_size; + /* + * Associativity. + * Note: representation of fully-associative caches is not implemented + */ + uint8_t associativity; + /* Physical line partitions. CPUID[0x8000001D].EBX, CPUID[4].EBX */ + uint8_t partitions; + /* Number of sets. CPUID[0x8000001D].ECX, CPUID[4].ECX */ + uint32_t sets; + /* + * Lines per tag. + * AMD-specific: CPUID[0x80000005], CPUID[0x80000006]. + * (Is this synonym to @partitions?) + */ + uint8_t lines_per_tag; + + /* Self-initializing cache */ + bool self_init; + /* + * WBINVD/INVD is not guaranteed to act upon lower level caches of + * non-originating threads sharing this cache. + * CPUID[4].EDX[bit 0], CPUID[0x8000001D].EDX[bit 0] + */ + bool no_invd_sharing; + /* + * Cache is inclusive of lower cache levels. + * CPUID[4].EDX[bit 1], CPUID[0x8000001D].EDX[bit 1]. + */ + bool inclusive; + /* + * A complex function is used to index the cache, potentially using all + * address bits. CPUID[4].EDX[bit 2]. + */ + bool complex_indexing; +} CPUCacheInfo; + + + typedef struct CPUX86State { /* standard registers */ target_ulong regs[CPU_NB_REGS]; --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1525985058355982.1596202070222; Thu, 10 May 2018 13:44:18 -0700 (PDT) Received: from localhost ([::1]:35551 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsQ8-0007gX-F8 for importer@patchew.org; Thu, 10 May 2018 16:44:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57152) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOB-0005Pa-94 for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsO7-0004Wi-MV for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:11 -0400 Received: from mail-sn1nam01on0041.outbound.protection.outlook.com ([104.47.32.41]:36736 helo=NAM01-SN1-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 1fGsO7-0004Vg-HD for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:07 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:04 +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; bh=V/aoeY7xdeOM5+46fEeGzmnmOlVc2JEAsInvVosTH70=; b=nUO5tBF/UadjmugaSiA81/zZ3L73/HN4H089K9b1/kxB9z/DClchQkAKfhc36k05k4RvsNvB5/Abt+N8MwT/MqSCrAbwKvXAtVmBn3s+K50eB0mmkF3ihtY/7+Uurl9koMk6bqqCJ1uZNkP2WcyS7mHm27Yy0AyW4kNPDNcpBG0= 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: Thu, 10 May 2018 15:41:42 -0500 Message-Id: <20180510204148.11687-3-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:+jYnTwn+JbQHoS1SL/HCyY4+ihpqQvUCTlXcEq5Jq5RyWEjLBnoGuxSibH7D5Kmck6/cZQCuyW8AthIBvJtXuI4UvY4WYLsfb9jRBO5Y/PcDMojz6wXwMuvvAAV8xpDYvYcK+OHCHAWaXCigIzNzOAAg+DULum4008+OepoC5GpJutM02uCwTAC90Iq3OneNP0qMA0K7eCbyydNYbIsuWfh8r5/A8mHu+o0vX69EWDrnKieDHpZRW9E1SNVKqi/B; 25:UQyDeGCoJ5uTM8K+SdZ6PEgaHRCmG+aODC6K3CTw9vxSAaEedcwULmec6LdtO9xsygrQFPq89q5GlWZ/33QuZdfTaaD6lFU/zHXA5Drf55WmmmsNODXZlShra1IRjm+Jx+r8KV3rfr7K+Uctss4nTT5F7j9F0pvz7t5Sa6+C8wFijPy8VXzZMpiKDOUjCvpr2iWU6WxO3dQzmNA8YpyPWN8IakV4yJ73QAoseD+rzkbeO0Wv2c1Pvmdo6xmJEDbarT+a6QhZSXclaFYk4GvWlpFZtpTGsjYxI4Rxia5qB2cBGrdPBdPM1XazzhdPsmqL/vL/rlR4ZwGYB0NRnipGJw==; 31:YlCXI0Z2JsRdgseOyf7O0ITw+F+REKXwkQknDaWhkEbME9Sx6waPBdUMybNJinarESh4iEHDGkFRUr8CLjrBJgALTPbn4gM6ut7ujfe/j1wjeybnWFDzFhGo5t9D1pnMEOv6jiIgM0I3RxMs06xoXYchq4rFzyiJCQHtarOm+Znil2EoYIvPUIlGwuj+AvqslBzps31m/57VVkZTZ5x0lta1S7cmw7fTDxEi+O8wVus= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:SFZPRbluARllwud0CKUgjR2eJKrjpQn7FP/8+pbRXFtGK+ZI3MOrbVw58VR/7Rto3FUdp2n5A3VXnBgy8Ux071+BoyuBDQwyKhhM42q/l2fDuBgm7L527ERQ3b9uy/Z4plYaC3XjeIfPY0YhTA2PBG2CspvK/NGN16ViR3oJLi7jeqWScXfqHB5FhUdOLRvI73ex6ZAhfdheJnfbK3D7UNy6A/32jnOKl1wIXjPyQx7U0H+qTYFs7nvpoAP5iFxNyPihwnThZ71Ar1j8hESHIVx+T0JT6njaSE4tlyGUCms8SHGF4LtapgcM8nb61RzEUZrH2i7NsFaGLGBHAx0ssoXUnHi3OTtq5xtTb3z+2xqaGbpRK5dhu83TTM9wayDyUeiIBFEqbzJz83M8EFZZ7piFXMjRpUWMlpG+avl3GwRGQWgHVhg1Pt5mZnb96/H+dSWtKX0paQprQ3MEoa/F6WzG9WsjHHy1s/cvWHZ4b9nQEu1evic4aC9yXx/8b3uO; 4:n2YouPZj6O3cTkfmTkvOVZnQRT1Ede59kf16ipJJHjEnMbRQcuDdWEwGcoy6mpw7nFHqlXQdSTxgOYsNlUz848PE5jK9iVk8Y96TP4yO22kwXQSrQSrR+DFU7n1+Ji7duaUu4xo9zPuC0WTCHkMl77zuMuOg9cIoaGv4ql+F2QMjFu27wxbPfqI/Vuayi3yOFmaT49Owfd01ZQzPYduJ+Om2nRr/VXrejpyyXqVFXWGHiGyQauEGL9XJhRc98yUCf+o3DEeqsfk4FIQTjzLPl6hgGAiNq1zHMrkAAXaVQ7ISvyo6OHEG/bogpLX5f/5U 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(8936002)(52116002)(7696005)(59450400001)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(15760500003)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:j46fHHuS3tMQ/idLaI1dL5yhQCkVq58dhymgH1WCn?= =?us-ascii?Q?qnt15Esn87RfqsIT2317e+d7k2EZ9FDGBdE4aMGS9Z7+cS5OQVulP+IhMZMc?= =?us-ascii?Q?1URbIwhqsb8oJyCoNtF1AnMlC2+67J20Ctszsayx0TiKN/vY2djbCiGAz8UF?= =?us-ascii?Q?W+zTNhEL4hXRVUY7frMvobr6tdQaT4qbNxaGf5xMsAWCwVTFTKhT0nVZiqZJ?= =?us-ascii?Q?frtWcIpVdch4nQHNBEvjBRB5AcDBm8+3JcNQ4Y0hbecCjwir13C+VOwL//1H?= =?us-ascii?Q?2XMrNeN+tNAV3xw8in71YIilbwywcHfT7zs+OcBY17A4uU6lUnDtOsL4kk94?= =?us-ascii?Q?4stEopARqbhyck/38958ifhywCxpwu1Li+Arb6qVIGl7dNe7r7q8GIAZV1i9?= =?us-ascii?Q?IIBmnhsEl5az4eihb17Efy6ak+Fit6FC4hI6h0TT3N+1EyIWO9HT9jRvvUsZ?= =?us-ascii?Q?Tnxcu9hEt1fKZXHbBwVMsfU5a/78W5JiniSYf6/Pp4GJtPiLYtX5IIH+ORJG?= =?us-ascii?Q?1BX6EWCuM6Jx7U8vzAS/E5eSuNr5KWUKZumWmv6FBdvbUzhVU7LruBTDGsxq?= =?us-ascii?Q?UX+e++C4d8W5DJ+fAp2Lo5Wz7NUkJmWtqEOhhUQG8dfiiGCcS9SHf/srhC1F?= =?us-ascii?Q?kg8tZzjttypmpeeWeDrymgX7dp6jz0O5E7yKlKxfCe27HVHwJ9+jAaZsJN1u?= =?us-ascii?Q?83uMA9VvU7SKlSWkPLbtPwvilCswBrypyAbzP2n1+bKdGN6q8sUfDEDCayS0?= =?us-ascii?Q?jZPAYbbfUNBLQ2Po9zLJ0NSYpwE5CBNRt+WgAfbE4Y+PBtMRp0QdR6c4Uj50?= =?us-ascii?Q?Fi/z91f9S29UBj9V1bbMWBVmFTTyrQnu0a/wKIy4Z0jsU/3MGejeKfv0t9ci?= =?us-ascii?Q?raqShP979PsaWP2E72HFgjW3bIKnQFFUYBbUgCXhV+mL1mocjS0lm1bANrCC?= =?us-ascii?Q?V1fOY5fZVRnHUdQwVolD0eF/Y2eddZq/NuuCIfxVTtqIsUhNZG2cvet/sFYE?= =?us-ascii?Q?XoG2cmDPNz2XqcfCZSXxITVO6MEV7/QF+oXcLPLied/Fcul53OB1LDXZ1U5Y?= =?us-ascii?Q?MviNNn1Xs9+L/kWn9TmkxVinjPfoq3+q8C1HyEt7crgfkJQzPKxniEyRViGd?= =?us-ascii?Q?o5tF+B4/xO3TFuncHrW2Pg833xTCNo+BWVsnmWjjFbOYN2AHcxSZ9FFKJqbR?= =?us-ascii?Q?Pyi6cgAHe0aHSrXhAUwyPeTKAbjh7h84SUQBZ5Dq4UjOPnm2CbjkFWZKh7SU?= =?us-ascii?Q?zT6osskz+pzFkT0XFjNcmQVvbIGPStqKEvjRCwRMUwjLI1aPf/z7nyjqrZFA?= =?us-ascii?Q?BYGhOzkyu2AITnRwzbs7h8=3D?= X-Microsoft-Antispam-Message-Info: 0w6g/pfeYyuWpnR0VzBT44l/2cHwGeSkkJ8ks20FAACZaNRtD4LthoxqlMHivhpxy5PL77ghA6Hs1XjrjaJwhJILxdrh5wUlTuh2h5elXcOuA0KN15SJkeo+p4UbYNQlvb5qv4Ld6kTgTwp/s6McooKqRKiakNBcY/wpOQVAknqRWnHRM2ppejxTfIVaYrAF X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:GapQboRAtkbhT3DUi4IGQrA5EFCgrgipJqlOWP/EphHmUxBsWHLOoIeBSbeWxZpL3jwBDS0CGONCXp3wzqk5RGiVELbwsXld2o7NEr4vQoo1Mlde8L0NTjSjlojpRU1NndVyijCImu3RUx1iv/o0V/Eiet2INOhlHq1RkaqNtU74wdpN+oNuq/cq34dDJVVgBIpQQglOlB5O2WHDn58rz+m5SAyK/RAx/m4EP6EnSL6svsuIiU9GMnx5I3Y6ym+MWibcQ/r+CvgWk/KQqTf58b1nPGz2M2Ee69zHliZeL9p5x/IMlKvpmYRY/UU0940wX3+mi3ZH1I58LAUu4b0u2PniIe9mpGG5EjbcTWU2B/gPi2lj+KQ4cMkMZchFOr7EOQmFc+99iWdYc8bKAs/DlFniBJSkHwa+bgi2FwBkSlbb9cNLAOkaxXTMXq+08khAcxLW/uBG9jHCxmsZ99RckQ==; 5:1KIn+OAl74O0PRXbRkF3eCwexUWZZukQW4g0RVrXECg5gprw2sTCqd89F1wiFzrdeS2sznur7ZT4AXhRLlXG0JdNbq/SvBldyq3WNpcy3mREywoAM4cqtk0NdiFrnL4paDRvzys1Ruj8Q5PMRthRgXNc1FyiEgkfchgKwm9PCoY=; 24:4g6oY/h/sHXgvIV7/lmEPDO8T1u+9Lltgl4IwKbJDjDWb31KnUjndc882ic980uUeodUlAiBiy28mVe3dvmJDcUUp1pQ9X9Tx43JiVv6gvE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:lvddtaRXKaaSj1vdtgAdsBCDPpEno9cTPCeOnto8gY2rZcuk8C9sUZP3PvxJJiuK8+jXi0mk/MppxTkDP6/6JTsqeK9OkOzbQBMJJ5enaYoXYlEmBsMn1cv15+mRu7LlDOheJsRGHg2DObLSS+pniIVaD2/+by6tNOwtOv/neefeXE3fbwZ7jK04oenCYVCSbyq3k41O8aCRP9aYOJlec7wfdsZsOcSixjQCokEEjBme63NiNipj3uHTSWZT6gBA; 20:R5MNTxoUrXnomu8+uMS3TQG0ybyZRMuFGU9ah9QOpGPFhbkX/Ou0vGrHsetQzEMgumgcRsfWcSmPYyxLv0y91+Vxmn0d7fxklZtGofCOtO2o6c67GvCL71nUtpq2++W8Nw6N20EM5X0RMj7WCXq2PHMmvCz8SwjAmJk0EcqYEO4nt2I5KEq3Ny5ZTa8eTGhcl/7Af/whoYrN9yGCmejwLphT7Y8hoOpfDfWXhGnHrPlGXp1xbKdICAKA6lIlkjqP X-MS-Office365-Filtering-Correlation-Id: e33afcc6-da44-47cf-28e6-08d5b6b67d5d X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:04.3541 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e33afcc6-da44-47cf-28e6-08d5b6b67d5d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.41 Subject: [Qemu-devel] [PATCH v8 2/8] i386: Add cache information in X86CPUDefinition 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 cache information in X86CPUDefinition and CPUX86State. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae Reviewed-by: Eduardo Habkost --- target/i386/cpu.c | 1 + target/i386/cpu.h | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 18835400f1..3a74c4b1e4 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1105,6 +1105,7 @@ struct X86CPUDefinition { int stepping; FeatureWordArray features; const char *model_id; + CPUCaches *cache_info; }; =20 static X86CPUDefinition builtin_x86_defs[] =3D { diff --git a/target/i386/cpu.h b/target/i386/cpu.h index fa03e2ced4..372f8b7ef5 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1096,6 +1096,12 @@ typedef struct CPUCacheInfo { } CPUCacheInfo; =20 =20 +typedef struct CPUCaches { + CPUCacheInfo l1d_cache; + CPUCacheInfo l1i_cache; + CPUCacheInfo l2_cache; + CPUCacheInfo l3_cache; +} CPUCaches; =20 typedef struct CPUX86State { /* standard registers */ @@ -1282,6 +1288,7 @@ typedef struct CPUX86State { /* Features that were explicitly enabled/disabled */ FeatureWordArray user_features; uint32_t cpuid_model[12]; + CPUCaches *cache_info; =20 /* MTRRs */ uint64_t mtrr_fixed[11]; --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 1525985190405804.6807276948502; Thu, 10 May 2018 13:46:30 -0700 (PDT) Received: from localhost ([::1]:35569 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsSL-0004fZ-HE for importer@patchew.org; Thu, 10 May 2018 16:46:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57145) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOB-0005PW-7k for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsO7-0004Wq-S8 for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:11 -0400 Received: from mail-sn1nam01on0041.outbound.protection.outlook.com ([104.47.32.41]:36736 helo=NAM01-SN1-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 1fGsO7-0004Vg-Nh for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:07 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:04 +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; bh=LOrf2ZTvW/oITKTfBoWLL+8IurByohb658T4BdCEPPI=; b=HsA5DvRQRkK5UrzVOKiyAtpwRH8Ep46NvD206n0mGX68OcZGIKnChVaJ8e0W2+zzDJDABd0XeNGChnqX6sOhhJtTv4tM/UEaNxUVPZ87doUH760ZvcA94PpzawrSSV4J5LgDmEN+vxJvJVvRkDanACLnnZHhFaWm4fMT8niTcm0= 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: Thu, 10 May 2018 15:41:43 -0500 Message-Id: <20180510204148.11687-4-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:+kObvYOyQRMmGzSi++P0CCEaMhEUhvP1/Qw2eLahwwBhny9K/X50QBj7kFGPbXC1HDMzrxKbevlFHJBIFZHILLWLK+35RB+AtEalVMH1mrzV24WFr4CJiAiZkTx5f1B28I0ootIk1jWWx/elJgXjOz8KS95Wl2UT2D4APNSuDjopdjLdApaQqOa1dE9e704CZuDniXj5AM37E7foA86CFz2qkRCGypzGHJHRe09hqO8+ky7FHm5z6eUbNbL9hckx; 25:HZXz8tS+7B0bRi3EYQXi0AzZ+kMLv42oGQTp6KZQWjdExDDruCxpHIeTwoTT5fN/0DSDdnPcpzzaJPjOKzobYxbBxub8mSnWlT7mwBthlvDSxibhbeLRWtqlRQpskzTMckrylHUWr16n5KjX+mfieKVsAPzX4Z+cXSLIuE/UTVRTyotvd+DlQxGPzYAFjxQdkjuyYgHtZJTtIyAsYHoHehaj1IhQGUippTxDn9vUjWFrLR8uNgyIIPsqxRMSx6NhB/7HfwOWalQ326fcfTvCKlFg4sO8nicMERDI2bTw3A+UEWpDmQ5N8L47R1GfotYgox4RqhtdolHVWKCN/Lz4/A==; 31:/zkN1Cw7JGywUTcF4TH2D7x4aCDpqsW+rrn6IjGh+PnCBadRsifKqiNgrrJQBH+bcxeBtLtvC5RTu/6AVqLa6VuS2DhMYUx0NibrNVKZEZTszBks+2me2tUPOvZBwGZ/Lt7HL38fe957s2bJjXr4CcOsWc6xo0K1+Ltzzmw4N65XUDOrsUsnDbZs3Qz4qNbyGsRjWbD5T83+dv6XNoJfJKR+YdlVos10OXVkkr+yZhg= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:uIuOgXh/mHXpRLxnlSb9Cs0FnTzb0RDnt8LdaiUziGNG8oh+yJTB1HIJejiLF5QpC2VIu9nxwZg2mt2DqRWTrSNSHaqrKh/fa083LO9rcEepqbIMmmDpKuQeSezEocY7oFL5T+D8i2snNDBUSF9MCAMjiQtMeBtv5S+FIZmq+N6nB9OrBKOy0O1OrHQQg7CaPiLRsPJBltdyaq/uJ2n6vPoMdyw9t95XY6Fj4yx6YUwCOzm5MdzIWjPW12cHhUEyZnvHQE+ir1WnuAFDA1UcsVA8wTKdmrb+j3kvvy9uebpH4XymiueT/TJwkRk9XYwtjA1yydwwviLF5tD8JHG/r9jI4TUzD/X96KvdlXug353vCAxDzMltle7BB4fN5yzs2O+aCHGiXv+HLmw+k6+awZw6WLOS4XvScElKKP7POxl23YtP7KRvUY9v/lO+uqB9EEDX4xC1RGe53B4OSnW6omVnGfDxrT6ZVnRwIyDuoGtJTCQSd4diSBLT2sWeaO0A; 4:hImsihxln8i33RrQtpDQnUtsvbm66h3AL6hwLYExKqWCmR051UufM8wdsl5NprOvg90syben9BctWxnqh+jwL10sckp76qyzrVBGsXOIQnGt1dYaKG0zsZNdSf5rne1ZZ8t1p4tMGeoP4h4vcNPxwRhCEQO0qeN0XfaIXDF1HNIMr31sPncfDQ6Z/NdfkZx6MgMJYGoVbB4tYyf2eylJPoW9f1MXL5b4lNM7B9W0uts7wIhoSsFaMjWEJYT5BjuiqyczeHuEjm7WzY6FqhoIvkIpXeOdM5l4LzZ1p039LCQjV+L7c1FvuvgqEZhwa0Ez 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(8936002)(52116002)(7696005)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(45080400002)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:9e0PTD9xc6HFh8a4ZN+H00EVFM7aCTZhvNDwvtwO1?= =?us-ascii?Q?Xtvd2rzKa1mjrVOzgh9l3fTCo6ohaHe1XorPdZfh+K0ELaEQPxnTBK97Y9+h?= =?us-ascii?Q?YSHR508lVg44iBhbA78j+Cse9LHtUWML+QBDXZ3prCLnwjOdHMtoPCk7Pcet?= =?us-ascii?Q?3KZW5Ay7k17qC8cTKsTXJprY/LT9/DByKbcPVotbD2Zd+iRtduoyLe41fqKW?= =?us-ascii?Q?yxrRnl8MuqFHLEBoJjMgkN23HksPBa8tyg5+ooC2nPf+kQWx2elIfMDz9e6n?= =?us-ascii?Q?2mdPjvuDh1pK7vD+FpfJkbD6bUPRGHGvYZiCiszRY+FXGdzJj4wXVc86Ie/6?= =?us-ascii?Q?P2YXdr9aFwZxZSMqnkB+G+bBfflte+zMM5hHTtkAgpd9PTq8c0K7R+Zu5M5Z?= =?us-ascii?Q?HQAge6qUPi3p27+w0dqjLe9ByARvljmoSr7GFcMahK1pS8OuqqR8TKfq+PEl?= =?us-ascii?Q?EU++qZPOq5f+8jS/VLHh707bKzsHf8KMITcR482Hc/siYvpKWU1aTbx+Fv/C?= =?us-ascii?Q?pvjwun5T0Ilqs8DSKwPqgd35MQxHsN01rQzh2sp8glOX/bi2z/Q1KcB3jZd/?= =?us-ascii?Q?lX2zLpCAVfe57qEoIhAYjGs0UhwYqReymE/0wqqSRKUHLqHAcdMV1dinntUv?= =?us-ascii?Q?4mOC64dV9I6mJsi43Cq9oI9mLEhVDOIWP1irtVnI67kmmrgVhUtpY9kp612X?= =?us-ascii?Q?q4Rvxy5iJ8MByX04qSiMUwbpabfeuwZClC6rz52VY4Ea6+d0JM+CKILO11I8?= =?us-ascii?Q?5z5DCpebdHVQZ1a/RNMw53hDKSomXgrUdkmtoUl0/Q0XzKZAO9hrm15Yxoj8?= =?us-ascii?Q?AesIg5+a7+tMUEi8lYrcnR7x0X1Xx68TOi0P2MjQ8tPPlJDbfywNUoDu5Xqe?= =?us-ascii?Q?e76skCJ1+3j6vhL0l4dDEwbBu3JxK8sGpCcPfIcB/JhofKeKdVoBGP4HaW69?= =?us-ascii?Q?R03Bja+lThjtnFrNCYQjsF2bs8c5QEOqpLkkMa4rw3tEyAR7c35ftpaOH9zO?= =?us-ascii?Q?dz1hsOeUhAz0Fk5H5BMPkMZVS1yQv5vV+MFmAIEaA7VJR1VLwAiQSxdkzfos?= =?us-ascii?Q?gvV4WOuzhi793mkdevhB1jqPhZ+d5yhiEd60h07G7U+eJobDJWr5RIpYT3/w?= =?us-ascii?Q?6EX2BcHfgWqG3mpAZbQmkKTtA20pGEXEznK2RxNWFJkuOtl2zrkI6kRBTN6b?= =?us-ascii?Q?vV9Vu6ELjsRZNpTJgGbemzYeICV9LRytz/kmtxNmFpc/QT21w1IKAFDeC3bn?= =?us-ascii?Q?ddMK3FXUVprBpPAPM5mloJi+lSnxv8bEC8RXoixx6EwrnACRLnFgWveAgSCl?= =?us-ascii?B?dz09?= X-Microsoft-Antispam-Message-Info: gPEx3+qeTi68SbIAjQ0KAy9kCG8KDl48+gzNYf1490GEX1CFyHE7HjnONq/w9+vGHfJ9QjYn5Z4Vd/IC6yMEIabxyPGhBrM13WCKCYozh+T+a0zsZy6mPinzh6w+DdZvkLlkqIXuZ8LVOmyVtNaz0LiL+Tq2eWJ9hkjDoG1ejjngQKWHyPT+VFb3lGLHfqg9 X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:TZHwWayPKPzCVTWcCoSWv1Ry5Wb2RHTIYOFXbDoJQ4TOAiYq2Kt9NFSXwoTX4LBjyESI5Z75O9k8dpn8BjTccbC0e8U+lSC6t6H2Wd2SgHO9dcXU9RfCwN5vaRdhioByaegcSEFPAeK9Uz973HF0EiHQQdH/3Gax1aRiHUSrKzjIT8hz3bHESUMZHVepveKIfYYq5wAQKBgU0aVMLSrKe1BGIoQvLf/2DhjbqbyVFS09HA38TTd6lcNaLg8+bubbCy3Ra1nx9aaYmQZRgA0Ud2TFN6reTcqICDyg855GO36os3ooBxgYodDosRf23t/A7V3s8FMFgk6iu0zegek1MzbIkrpWQqGQARZupCslmwaHgICJpk7yVKItK5NrbPYpXOZIHIsrby3B94m6e/WjNM+9ctlQVTt3bq806LtzP4QmLzFcTo0mXcmZtPi4AWCKiPZT/oqJg2NY/KZfsqJkVA==; 5:uYouH5nVlqmcBTCZyAHNn6RXiQMQiJnGIY9nM1sFuUmGHOPb1MFQCNf8bec58WyoqYuNEB0siNMXsVNnzGDm1QAeEuUCmhNZ282XxIRTZsAveRoKld9kZ/1+GUifgjYzqfrmp80ZTB5xJn3QXIAP54ARdfDZs1uOC8QR7sRsii8=; 24:2X6Oe6Jf+pAHqXLOHoXOyIdPFksVK8d50tm+mHFzYLcmDJj9q75QL8vDSp3GercZWpejFKQ29JyDpJFtSMm6zIyX2yCejtoQIo73Bo6ZnL8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:auBJ9t3ZKC4e0InlLE+nAYFntVM4oHmlvwLeuD4Cgv5pQ+VKRpUF7fguwtgjsygNWWmM8xu+bav+8DoC+otoikuu0PfmLkEFnSjBkvM3zBcUYSeapdy8ujhXnXep8gnhVzCjKJgyMgLexVMdOfZjE/XcNhb00GpXIwDRneTSSQ5FxATK2G67GgRQ+e+8BPbxYgGwEmnlAcv9AnKc10FQZBUYkRVyxqO7GDOkObXlF9bY5oDXpU7dPzZq//PnADZt; 20:zbmN/CW/vRUfLW86ylDRndW+DnYHc171ObwSLpbmxeaqHxkil9EXcFdd74bPZPm/CJ1L4DsDQEIAGm9aKs2JcCh+YIIoZqEkJkk9X7Aci4g3506sRuiXuXPKs2bRnKokm03OLuLHi/HzjnXeiz/0vVltm119AZPzPSsEty4CbzQiVRcRja2LOqSmPG2OKCvy3yuQG7ciVyiwDlTX4EFyOtZ9/ab8kv0Y1ymeQ8NGPESbRSwkRXTbkZJ9EpDtUYPy X-MS-Office365-Filtering-Correlation-Id: 6e7359c7-231f-41e7-6033-08d5b6b67db5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:04.9166 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6e7359c7-231f-41e7-6033-08d5b6b67db5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.41 Subject: [Qemu-devel] [PATCH v8 3/8] 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+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" 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. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae --- include/hw/i386/pc.h | 8 ++++ target/i386/cpu.c | 97 ++++++++++++++++++++++++++++++++------------ target/i386/cpu.h | 5 +++ 3 files changed, 84 insertions(+), 26 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 2e834e6ded..df15deefca 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -304,6 +304,14 @@ 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 *); =20 +#define PC_COMPAT_2_12 \ + HW_COMPAT_2_12 \ + {\ + .driver =3D TYPE_X86_CPU,\ + .property =3D "legacy-cache",\ + .value =3D "on",\ + }, + #define PC_COMPAT_2_11 \ HW_COMPAT_2_11 \ {\ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 3a74c4b1e4..d97b290b08 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -336,10 +336,14 @@ static void encode_cache_cpuid80000006(CPUCacheInfo *= l2, } } =20 -/* 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 + */ =20 /* L1 data cache: */ -static CPUCacheInfo l1d_cache =3D { +static CPUCacheInfo legacy_l1d_cache =3D { .type =3D DCACHE, .level =3D 1, .size =3D 32 * KiB, @@ -352,7 +356,7 @@ static CPUCacheInfo l1d_cache =3D { }; =20 /*FIXME: CPUID leaf 0x80000005 is inconsistent with leaves 2 & 4 */ -static CPUCacheInfo l1d_cache_amd =3D { +static CPUCacheInfo legacy_l1d_cache_amd =3D { .type =3D DCACHE, .level =3D 1, .size =3D 64 * KiB, @@ -366,7 +370,7 @@ static CPUCacheInfo l1d_cache_amd =3D { }; =20 /* L1 instruction cache: */ -static CPUCacheInfo l1i_cache =3D { +static CPUCacheInfo legacy_l1i_cache =3D { .type =3D ICACHE, .level =3D 1, .size =3D 32 * KiB, @@ -379,7 +383,7 @@ static CPUCacheInfo l1i_cache =3D { }; =20 /*FIXME: CPUID leaf 0x80000005 is inconsistent with leaves 2 & 4 */ -static CPUCacheInfo l1i_cache_amd =3D { +static CPUCacheInfo legacy_l1i_cache_amd =3D { .type =3D ICACHE, .level =3D 1, .size =3D 64 * KiB, @@ -393,7 +397,7 @@ static CPUCacheInfo l1i_cache_amd =3D { }; =20 /* Level 2 unified cache: */ -static CPUCacheInfo l2_cache =3D { +static CPUCacheInfo legacy_l2_cache =3D { .type =3D UNIFIED_CACHE, .level =3D 2, .size =3D 4 * MiB, @@ -406,7 +410,7 @@ static CPUCacheInfo l2_cache =3D { }; =20 /*FIXME: CPUID leaf 2 descriptor is inconsistent with CPUID leaf 4 */ -static CPUCacheInfo l2_cache_cpuid2 =3D { +static CPUCacheInfo legacy_l2_cache_cpuid2 =3D { .type =3D UNIFIED_CACHE, .level =3D 2, .size =3D 2 * MiB, @@ -416,7 +420,7 @@ static CPUCacheInfo l2_cache_cpuid2 =3D { =20 =20 /*FIXME: CPUID leaf 0x80000006 is inconsistent with leaves 2 & 4 */ -static CPUCacheInfo l2_cache_amd =3D { +static CPUCacheInfo legacy_l2_cache_amd =3D { .type =3D UNIFIED_CACHE, .level =3D 2, .size =3D 512 * KiB, @@ -428,7 +432,7 @@ static CPUCacheInfo l2_cache_amd =3D { }; =20 /* Level 3 unified cache: */ -static CPUCacheInfo l3_cache =3D { +static CPUCacheInfo legacy_l3_cache =3D { .type =3D UNIFIED_CACHE, .level =3D 3, .size =3D 16 * MiB, @@ -3243,6 +3247,10 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefi= nition *def, Error **errp) env->features[w] =3D def->features[w]; } =20 + /* Store Cache information from the X86CPUDefinition if available */ + env->cache_info =3D def->cache_info; + cpu->legacy_cache =3D def->cache_info ? 0 : 1; + /* Special cases not set in the X86CPUDefinition structs: */ /* TODO: in-kernel irqchip for hvf */ if (kvm_enabled()) { @@ -3592,11 +3600,21 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index= , uint32_t count, if (!cpu->enable_l3_cache) { *ecx =3D 0; } else { - *ecx =3D cpuid2_cache_descriptor(&l3_cache); + if (env->cache_info && !cpu->legacy_cache) { + *ecx =3D cpuid2_cache_descriptor(&env->cache_info->l3_cach= e); + } else { + *ecx =3D cpuid2_cache_descriptor(&legacy_l3_cache); + } + } + if (env->cache_info && !cpu->legacy_cache) { + *edx =3D (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 =3D (cpuid2_cache_descriptor(&legacy_l1d_cache) << 16) | + (cpuid2_cache_descriptor(&legacy_l1i_cache) << 8) | + (cpuid2_cache_descriptor(&legacy_l2_cache_cpuid2)); } - *edx =3D (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 */ @@ -3609,27 +3627,35 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index= , uint32_t count, } } else { *eax =3D 0; + CPUCacheInfo *l1d, *l1i, *l2, *l3; + if (env->cache_info && !cpu->legacy_cache) { + l1d =3D &env->cache_info->l1d_cache; + l1i =3D &env->cache_info->l1i_cache; + l2 =3D &env->cache_info->l2_cache; + l3 =3D &env->cache_info->l3_cache; + } else { + l1d =3D &legacy_l1d_cache; + l1i =3D &legacy_l1i_cache; + l2 =3D &legacy_l2_cache; + l3 =3D &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 =3D apicid_pkg_offset(cs->nr_cores, cs->nr_thre= ads); 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_core= s, eax, ebx, ecx, edx); break; } @@ -3842,8 +3868,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, (L1_ITLB_2M_ASSOC << 8) | (L1_ITLB_2M_ENTRIES); *ebx =3D (L1_DTLB_4K_ASSOC << 24) | (L1_DTLB_4K_ENTRIES << 16) | \ (L1_ITLB_4K_ASSOC << 8) | (L1_ITLB_4K_ENTRIES); - *ecx =3D encode_cache_cpuid80000005(&l1d_cache_amd); - *edx =3D encode_cache_cpuid80000005(&l1i_cache_amd); + if (env->cache_info && !cpu->legacy_cache) { + *ecx =3D encode_cache_cpuid80000005(&env->cache_info->l1d_cach= e); + *edx =3D encode_cache_cpuid80000005(&env->cache_info->l1i_cach= e); + } else { + *ecx =3D encode_cache_cpuid80000005(&legacy_l1d_cache_amd); + *edx =3D encode_cache_cpuid80000005(&legacy_l1i_cache_amd); + } break; case 0x80000006: /* cache info (L2 cache) */ @@ -3859,9 +3890,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 =3D 0; @@ -5039,6 +5078,12 @@ static Property x86_cpu_properties[] =3D { 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), =20 /* * From "Requirements for Implementing the Microsoft diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 372f8b7ef5..31715d167d 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1394,6 +1394,11 @@ struct X86CPU { */ bool enable_l3_cache; =20 + /* 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; =20 --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 1525985092913958.4183358340366; Thu, 10 May 2018 13:44:52 -0700 (PDT) Received: from localhost ([::1]:35554 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsQm-0000cV-2Y for importer@patchew.org; Thu, 10 May 2018 16:44:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57148) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOB-0005PZ-84 for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsO8-0004X2-2v for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:11 -0400 Received: from mail-sn1nam01on0041.outbound.protection.outlook.com ([104.47.32.41]:36736 helo=NAM01-SN1-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 1fGsO7-0004Vg-UC for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:08 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:05 +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; bh=9zR5n5WSGHjv0BICtPVo2mgqtNUUIMV0vEsuBK77WDI=; b=hQ8A0sgtUn+vaou5MbrcGa8hizU2gZa5bIwQpGmkSHnBRPRn/SeEE3Wz6wbrucuoGuspr6keQGliiqBfbpyaZLNuz42h8ZSJVaxmbUowRgPe1Sq50NAM73MqprL1DzahgdjXL0yNZk0AGAlwvfPAsPSKgHs9v9RohvsiNpK+FD8= 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: Thu, 10 May 2018 15:41:44 -0500 Message-Id: <20180510204148.11687-5-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:rJ6sH1PJR73GVNZzmcZlKuEdzzL3rHF4kR4YWnR6QA6UkRDhUfwB+gJSwTEyvKNZApLwuLmOZ+qdohJF0ESnuUTy0QKFBVG3JVToJvF2FFZC6wuxeYxmglgNmJznLa7cvfovd4B59DR4W1u2J6BWfxc6sD0NWipdlAkDAugKYz04DbTxcLOutOE15PJZ8MH5Y7jMZp0kQ0eLNCpzorAXnb58tWobbK75zomG3kIQuFuRtbUrC271CfczQTE+w6OH; 25:cNKr3GGXzAW1iEWIColeYR6oTiacibzLMIdHp8BRa8TtWDu33KoJNVMC0pZR8KTVEmHztsnVkwna9eNUgNwtunZJsLjuB2OOmi0UTW3t0+SBbeSrI5obOn7oLCpWx9jb780NZeX1twY/CTsSF/NVODnBrvu29+vN/lmB/gUUOgRsmGdi17aFZWG8L1swn2FTa6snKgTL504ErwZ90mj6kiSaV0nuSDCqifbpMi0I6uA+RNDYfOwaiC8podKB6Bvl24rj3eBKy45W/Vn/GnHkhf0RdN9y4uXZusF+VECXHqyWXhiOIE1ICa1YfuEGHmwDKfSk66QCwk9VmamNr8XlbA==; 31:7NeXJy22Kgvu5m+Lh2qAUy1a1bmU1BcLPLDORCvkMjU8WXURFQIvj+VjuXGUZL8D959VaqsC1DpLgJOYDlQLqBPtYQdLWuEq5aQnEbq7OegsAiqrAejxJbZF9Nugmx/Dh4xrJ5ka5DJtNGbJ1VwGjmO02G+ukz6kSwyBFUW2pdWwOMZXf+KCL7+bd9z5jTe1PoWQxlwcKfciOExPdF59ImMNELVNM3HzY7LLSJ9GU9Q= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:QnQjYX4CbR406Jdr4HqR5+LlBUFAlh6N2zkSAaVXxGACdPPZoi6JbC7LWp3rRLBwskw/mttc24ZG7rT/tQYVTRA2hSDENEyVNsKK886OQSTcX/TU7QfV9CvdJeAod59gWsV9VsWUWFF+F2JLF9XZigovakDvSM2NP9Ju5ceQ7ZywcxihPLyF2P49OQxDGGa3g4PsngCWjQbygox/dchbfgGExjRXZBP8uPFqaSRhWstJWyrcloQHanMb5Z6xyVxfKClmXpEP6y/Zz7Whc5qSimJDuffjui0usYj+zIwAM4GW7E8DKE7GU+PMxOpe1lQyWz/14rHgeC8ZRHB3qzu8ZZ2rdTkWeWFCAyGH6Mz54QP4VS7K/XrQ5ZukONR2tUrYVIB2XZbbZic5iPijyXJJJmUzc4PC+0SqNtjUtfFDRngBpcid4NWvz7OIHoLuG/9SNnRS9OzPaPZmYcKPwb0DWJJH99WRXHw4nRVvV+VzxGnX2Hvd0ryVFurvyOTeO6B3; 4:UYf0RrfrTFqdziAoODdS0asaGEmczwX/IPtwWfeXFF8FEhtO4Cc2CJFWYXXddKODfGKUZ4soKZurLwmzHo9ER/bNxUlYTNLGtqI2B7zYdg2javTI+KzUFtH2Z6BYvo8Vk4VzT6Cwo+aiHE+n3fXrdruL2mmJt79YluQhSAiIEtKEoPrYMkAJ5xWGt80wjmMklJ+sElrz5GjlbMjdoU3c1KOBwTvp4pFghWZbQ6bRHpVJldgU6i25OiuEKF+oVw1VvE+bXHPsRyaaV0umV6xWlFJzO2cc3zXZ5xa1wU7u2HElZl1ji7G7AduYjFVNRfCe 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(8936002)(52116002)(7696005)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:p10K8HVSxBkrCSTR9SRIP7CpRJ6NtG9VBF0eHIZn/?= =?us-ascii?Q?mqkWgxRXI0D7JVLvgYVn4v5TxW/o/4+dV2r1I/MDFFc3BZ4/w9E9vkIurEHf?= =?us-ascii?Q?SqQg7u5wIMFd7GFTJcMFnNgwJmkiQgAxVUrY6ntD+WVoB3jbSaGnQS7wKYPU?= =?us-ascii?Q?277itnOUoVsDbaXSxaJ9IjR7iJobUK9nLoOSxiGsDZbyuut23jU1ItE7kw71?= =?us-ascii?Q?9kw3D0Z46zTIBG+YeEDhW/u4jzATrO8nJHQd7eqo9PjvyuH5PirrE+d2IzIR?= =?us-ascii?Q?ob9rHbiOMZ4FIZVrCpiutC8sVdzO/aZsPT2Fr+ema++1ja34S399+q2IYXUi?= =?us-ascii?Q?Wq8JViBhsiMAxrr/QdzBJ0LRU6iqY67B5W5sktHLH23tZT7KRvp06GXQGNzI?= =?us-ascii?Q?b5I0yUTRMfXJm0gVi+9rP684IJmmWCQZE6UZA4XeYgZvmtgLDW+yBdrmKSAm?= =?us-ascii?Q?SfOwodpUpxq69CuhugTbYpbK3xzE8k7T3K4m9RIalVCnJLLJL8Le8cXbtsbD?= =?us-ascii?Q?PxJVpame9dH3wsjo8mdmxCrgjpOJ9IvEqwPMYDJ6m/LiuiGYj56OfvSwG8xv?= =?us-ascii?Q?+FCCHHrQYHH5F7AREzwplpT2zBFL0vHhiYPsY3Qg7eKVsesjB2MwAvO/LTmW?= =?us-ascii?Q?aDDDTRNWUShFx9rZoR68QLnzn8fUqvJso4xDmct2jEd3xj6zpu+gIwmUT3YE?= =?us-ascii?Q?/DrGXH5WbhPb/lqRD8o/GsmRPJndD+z14wVUblQcNTlUGN+69O+TpmA/wpQB?= =?us-ascii?Q?ewhTU4tmvcrQI5R4xQVrLyGsgsUCJ+GnfPAjK11J2n23CPBg9CWj10vgBcw1?= =?us-ascii?Q?fPNUbhaftU8pq5ZygtaKjRiIDiSQktA+Decafc/TznHgjYrYVcXJJqPvUphu?= =?us-ascii?Q?5GslIv1S0prWpdUa+hTQ51DfyaFRGVqCqGHE9DwOYv2q21abW1H40mKnyV6Z?= =?us-ascii?Q?oLo88+ZjgqpfY58ugQSJS5wHKUboBoAH+g6UfYiZxG9MLCtbi8GBGI41kg7+?= =?us-ascii?Q?GMyJUKT/Yyz1HRRgA5cp69top3fhD5VN0h98TaGTOdVfl2w3IxgMhTnEqqpK?= =?us-ascii?Q?Xk45NyDnwgq5giC6uokn59IA1pb1e34XIfq/0hHpNzKfEYBhFJrUCGXe5eNC?= =?us-ascii?Q?a6a1RJP6BBnB23/yR5K/yeJt1rRlgfA/dtQ0j6Vqs7Uuep4HZRraje41Kf7B?= =?us-ascii?Q?hFJjF3KIzY7LOjdtKlU2NCMyzSMK+iCw9oVAbHLlq73fTRJmmeE4+dAnvkhu?= =?us-ascii?Q?B8JXWEScjsR7gawCecGjOy1PLdjxmqO29JVAt64?= X-Microsoft-Antispam-Message-Info: SLPtxSWv14/5wIPWyVPm4n8XXxOcMIDht2u3fAjdx05eaFbco6FUkmYMMa9GHwFW8ZTpZHMxNIBS+hoTRY4KiHKWAX8rV7c6nTnFpkq3MgO/kScUFgYCgNoRBxEOf3S+3EYh8NcWfndtJJzTGCVfL+EHhggdlqZAjNrHI7tawy7yI7GsqBag/Mwx39MFg+Qg X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:Re8DzZr0h63luTRzTH1HGRv9VzGh7nGlJ/BIkYNklAswejm2eXwxl4lJcR8R75LU/JTryz47tVWNlUiRMZj0pP2veHhJteXoMbhNlQMp7urH6xu9R0krBUAJbWdxhuw6PnFrwCRVLsC0Do+wh2+WKsoOuLzN3hiHmC9eIioD6IIHMI1GnjGTejzf8WmEfyldRfyrQ9WH4drvHoJse7AdUPj3gFUYDiyxJYxU5pSbuUR95Y26HVNFkxAw9LsYb5d4HTGTSu+5uvcE9d9JCIxO1XpSMMFvsg3KeCnBSaMjNYiCv9Nj+bkY5D8zHeO6WOb55N5hUUu2XiZHiqKg51UAZgcW3q30jYco/arBDQEctyXPYt8eyytP3YOMzkRIDDP+TByWQveFFcVvborG4l3qZT1+boU0S96GOmSEembkzIYuAjP315SyKkJUR3U/LQ1vkwMRsv/CQAcHJ2SXn+LFQw==; 5:DxESd7efhmDiBvgE0o/IQ4HqliIGAxgFZkFLz118ANp8UUnifZ2Ms4/UBVeCGXdONoPT3h7qhA73mo4BB6XXACWVRlPwvYwR2WgBO1tKDuh3Jhc8vUMl8l//FZietNVAOghI2q0ieyZcNHaIA1wvRTvh6UAudtseXY0ziI/oX/g=; 24:spZ5xEotwnNR05U8R3/78fk5QvpyoYD4w++lNO/8aha/IeKtQ4nL6KT/fhwg6577LE1JZHluC1NftS5sS0I5+HQsa81LQ5Dnit0SCMcMY2M= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:jZlhsgXGyzOO7eqKDUYCtzDxnI9TKIHCbM/zXLAthWDL7pVkarM7edIObXMitL0zIj5t+Ung1yLsWfpvBJs0/6C37hSf7MPtJTl8gWIqA+o520M1c28hMC7BSCnX3cUxPnWeYShvNKG96NQoFYRh5A8Ez1+OnWmLHmKMGUREEUTeD/rb7u3t9KzpWGx1JKJ7wKmn//UsSPrzhBGPa0vkFuzA9ivOA5ubXe5/sieAiZ5j1ypzGfrPJALvnPj1ylOm; 20:gzR7IbCWKYg9Ns4SQuUiuKhSiaOpgsSPKO+9fSjHBiassKqytU7gTCcNlPaC9LQ93M14u3RFtGkLS0JW6TQvn2g34RII6fTelD6Yf9QAkoqxln9I6k+OkhUVp0JgTXsnrcQLtf8or7O4BgaJNOeXLLlqnoO0SbJ38wvrmcUJgzMLLzJa6CMko1Ea7rDo9ZniGvQjxLazBY6RIYEKxcbiVHO9ZErXSwan9PIOZU2I9i5Z0h1C5nSzdfxN7rf2EsEv X-MS-Office365-Filtering-Correlation-Id: bf024d48-3f52-4c5b-d2cd-08d5b6b67e08 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:05.4791 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf024d48-3f52-4c5b-d2cd-08d5b6b67e08 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.41 Subject: [Qemu-devel] [PATCH v8 4/8] i386: Initialize cache information for EPYC family processors 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" Initialize pre-determined cache information for EPYC processors. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae --- target/i386/cpu.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index d97b290b08..b20b8691a7 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1112,6 +1112,56 @@ struct X86CPUDefinition { CPUCaches *cache_info; }; =20 +static CPUCaches epyc_cache_info =3D { + .l1d_cache =3D { + .type =3D DCACHE, + .level =3D 1, + .size =3D 32 * KiB, + .line_size =3D 64, + .associativity =3D 8, + .partitions =3D 1, + .sets =3D 64, + .lines_per_tag =3D 1, + .self_init =3D 1, + .no_invd_sharing =3D true, + }, + .l1i_cache =3D { + .type =3D ICACHE, + .level =3D 1, + .size =3D 64 * KiB, + .line_size =3D 64, + .associativity =3D 4, + .partitions =3D 1, + .sets =3D 256, + .lines_per_tag =3D 1, + .self_init =3D 1, + .no_invd_sharing =3D true, + }, + .l2_cache =3D { + .type =3D UNIFIED_CACHE, + .level =3D 2, + .size =3D 512 * KiB, + .line_size =3D 64, + .associativity =3D 8, + .partitions =3D 1, + .sets =3D 1024, + .lines_per_tag =3D 1, + }, + .l3_cache =3D { + .type =3D UNIFIED_CACHE, + .level =3D 3, + .size =3D 8 * MiB, + .line_size =3D 64, + .associativity =3D 16, + .partitions =3D 1, + .sets =3D 8192, + .lines_per_tag =3D 1, + .self_init =3D true, + .inclusive =3D true, + .complex_indexing =3D true, + }, +}; + static X86CPUDefinition builtin_x86_defs[] =3D { { .name =3D "qemu64", @@ -2306,6 +2356,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_6_EAX_ARAT, .xlevel =3D 0x8000000A, .model_id =3D "AMD EPYC Processor", + .cache_info =3D &epyc_cache_info, }, { .name =3D "EPYC-IBPB", @@ -2352,6 +2403,7 @@ static X86CPUDefinition builtin_x86_defs[] =3D { CPUID_6_EAX_ARAT, .xlevel =3D 0x8000000A, .model_id =3D "AMD EPYC Processor (with IBPB)", + .cache_info =3D &epyc_cache_info, }, }; =20 --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 1525985053767199.96414243207482; Thu, 10 May 2018 13:44:13 -0700 (PDT) Received: from localhost ([::1]:35553 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsQ8-0007ih-Rn for importer@patchew.org; Thu, 10 May 2018 16:44:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOD-0005QV-3K for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsO9-0004Xd-2k for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:13 -0400 Received: from mail-sn1nam01on0069.outbound.protection.outlook.com ([104.47.32.69]:27968 helo=NAM01-SN1-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 1fGsO8-0004XC-SB for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:09 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:06 +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; bh=eqoyprUe59e+4Tiah5V/KvZBNBCmKYto6UD3e0qOC88=; b=2ZzeMi6vB8AtxImeH6BI/loP1by2fWwmbGSmdrmpFnZh4HN5od2dAU7RE7ktIIt9QA8jr1OhKAZgCGkYA9t77gagh4/WcD9xyNnVtm1rggMwvpdV2jqC4TcwhPpTmFHLsd79LyzVG0pazMely5+2s5cYJh9iDGEHNn7J2K5ivVQ= 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: Thu, 10 May 2018 15:41:45 -0500 Message-Id: <20180510204148.11687-6-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:92YyKZhyE+1GpZK5NPze2BJ6ttjVfzWuL6tuq+haTVsY9IywmhvthaKV8WRMyic/MOXQ44wL1gGeTXdGzkBavRU8H1iKcAXdOT8F1bA23/jM5nYFEU0GWguK671sHOpoZpA6mNtBof1YSdBL/OBO1Rlas80UE512iAl9qVa+qu7FDBAVOjfR/LNWlPBjE4OaB3cnHxZoH7v/fipQIHag6BFC5lVeqvQjG9TrWTislGTRryXctuNZmKQv5RAlaUPr; 25:7usgp40DBjUfmffrSOYw6rk9CtBGvPTlhxL0XQWnzxf2dKDZJxaW3M7WnI4GYwDLQDL+3K5KVW79Uh+G/NRJWPmB07n/EDapo1Cm8eZkeExZs2oTs30e3uQlMvIABgAL/TtUSoON0fqbhKy/e0TNcJ/S1OGNckm39Ml1SIxrde6IajEAqElSBWME2QXnB/sJaKf9ZG66dYoj6DtYqJBAeDUhBXVn0lZEMtP1XKb/tzYf0svWCkKGxjudhTqQNiL2MZrO0+1YkZTLbm8vBImjmr1yBGo4wfIhE9nqBl8uNx1BX2mTe6FZ7JOcFt87qLw66Cse+iwDky2+HbLmr1g9eg==; 31:uz29f84e5EQlHMEQpuhPOvbbOjhS9vfxxi/npFPUAuO+hnkE0m+oVtnOJIIEPbAXSW/0jxHNy/tpkFzDnnUV2u/W/vEtgOqdBefcng5UV/cUtddsOT8r0Gj/U+pCdWS2epcWtY55yWFlfQgFx1ilGqSWUnejZMwCVteurNOVbjGxtMAnDsLXTTk75K4qbZ11RukuR98Myeb2V0kqwwtuG9S5HTGKYn60PAo8VcupFk4= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:xjnS7dlNNXGGdWLoXRiwvX+3dfkBq4TRB9wB38F2L4UwAnFnikX0TOTcE/91JBaIwv1nWaMKLrE6ttpJMu38LzNeMXjvs/eKir7CCaF5zp17I+zIv9GhKLsHxDcCdtUc4oVrU9vFbqZP1z5Hm5ENsKoAuydCHa7/rgB084utkouq6q69BS+2r0p+xs5zqlx02REaLKk05kgWiDr5Jo2u+LuFJf2VDZC+oHsEbuSA1BEbsVPMLrSZH59rnyJ8NFM8BSkXUK/xEgs7RCwc80H4NSokMmgFEFkLRLhdXHBgtzt2UH7Cnh89kjcZE2yTftvC/xYQ9OG3cT3S9Y4cQG+eHdPfMmxYjVdu4SjnQubFfwqtxV+quEtWG8rZhq6dJAy27tqE3JuQw9riUu/5R8MArZorxk2LNoHFrDuk1J/uzPCOpiNG/7vndcHePk5NbjuF3IwsR/fHrGpfziQH3hwPUcgalpjDaV1U1x9ory1sfisvQxrsSlvqF8D3c2hAx8sn; 4:LMGD1+zR/2Yb2tF5PhOiwBzWnhVbDcmZjYiJ++QzFMLR5Zb/kUoWyE3Ut6MIBtgVJ00AgF8tNSsZuHclbeD2c15noCobbvvSlKWaRhP7PkX2p9AQeb7fkaKINevK2srUUX9TOoN5ghqpIoEliSnStOjyjLZa80Au0EhrdY9lntTsbImQOc5xvZYmaijCcuFow2afkidQ0+eT75q/sChZTAD0OX2xfH1ikcLiBIFG832AXnx+Nl2ilsFNKE9oReTPxuAZ/LhN7xs65XWjYkK4whMmuiYMhJhjB9Wxmj/cK4yP39waUO/eg0Gm5SHzgVy1 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(8936002)(52116002)(7696005)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:1tMrs8KbswL4ASQuXlHraJr3BCnc0s/EFzE4V+uQA?= =?us-ascii?Q?30SZuQcPKl0VQ17lMcLvkSJPQkUE0cmcp3E9vL6TKyWPzpEa5VSSG2jerJ7N?= =?us-ascii?Q?OBCeIrXhZwkFYcBeczdjQ4oE69bJDRdFwuKOlzwQpHjpV+rIQR7VWd9hjrcl?= =?us-ascii?Q?l6mMOiP7UsFoW2qBaZ+TX5b8qnI+RQ5qXH+qWRGzOIXiySsMGbqP7kAVInN8?= =?us-ascii?Q?P7waP+fIoQ3S1Uk39YhZABj/bE5YZW7Zn84LUeXCPO9Recm1qAPPTIehTjwi?= =?us-ascii?Q?E8aRQrL695cMJg2ncFfKNU7/A6HBX/rJx75ijGWYmCIINl0B/zm7jHW44D22?= =?us-ascii?Q?mRi1CMgJerU9ioelMW19A9y12mhUpt8UdjWhL4LEMvZ7FMSBSZtoLhTyGF/7?= =?us-ascii?Q?fTIEXRomV/buIZlHKzOXWz17nDmrqtGyhOTffprd0qFSXfUGfstNwkyU9bFd?= =?us-ascii?Q?iMt+KyCZAN8V9gjN51Ivdb+aQxfXhrFf1gAHUjqRR8bofdXKrU1CWKg7hQIW?= =?us-ascii?Q?I/HcX+cZ4XNtRpm8hO6VuwsTPX3DR/4q5OeOgqmy1aQAhkS450Kaj8QUBOtH?= =?us-ascii?Q?oyGjJDX0fiT/8pTlnXHs6v7TN51XWUquQT9LLS5XeUjbL79Jqt03InZRAC2n?= =?us-ascii?Q?sQ7Ict41/A+0pe0nrtvco10SuaY8GphkHWlEJyqEvYSuIbOxAoCnYL5QSfbX?= =?us-ascii?Q?YhwHZZGnUelwMYnQEb7bHnnW0UPtMjr4hVojc5imhOkg1kEQYRfUHLBhA3ob?= =?us-ascii?Q?Bly6Zw5RFR+kUbnyIFaal6UCFfPWe6PGHiX2Rg7z+zA9EVohqV9SRcaAndna?= =?us-ascii?Q?k210AeFMvca4byWC8j+NRYaIe0mDctApTtNdDVc9AslyALTfA0XtzXFsbINT?= =?us-ascii?Q?Zs7hXZtqCM6ZRIOpgf8zRuckcySQvY9LkPmXTf61Xzkg3Y5rUB76EW+R0Wpb?= =?us-ascii?Q?lOwKt5ZscgG6H4PWs87LaRd2iaiDYiDN1VT2uFN9s6Q/AxNn9xDqsJ2oh6jB?= =?us-ascii?Q?bFornS444GqZptDipaNop1hVjvaN/VxzfH4IRCIw+PjtT4EMfUIOMK4DkmOw?= =?us-ascii?Q?grDk+5KXoxW7I4jVDCR6Kx1lawiwLGg83xAUoOT1HWWzuwnI8+a6ucFdVXZu?= =?us-ascii?Q?AWeP2Ff/NVPze72odQKJJmUzgwnH42s42S4cscnB5VUTFrMkp1ES0G9SgY+k?= =?us-ascii?Q?rbV7Uaq9cr4ESpKijw0+g2w2uedX9BN7auzdayJGDBxX02NfqNLj521TcY7C?= =?us-ascii?Q?f/5hk2dFRRYeQjL5MQT2UXaRN4Z85kTUtJP+7Jf?= X-Microsoft-Antispam-Message-Info: Mywu+LTDA09rMWEyWHHDSPjDlq3WqqP+imlVM1tmClaRcWp/03ssqm11LF4jOALXYVaM+OzRhAJMzs2uBKKwVgjYa/ahs+RNFc1gx2kdWA9+zEIwQqKeVgp3PUlW55/ErMteUmpkZ2aY9KLMFamGyBwW2FH5AWN4sBD1L16EFc8x8l3CA6Jg2oNk5wjbm7Wx X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:8NEQfeyWabO5ilFGiXIwScB9ow6zvnBP0DA5jCiHZzlRc4NENTlEU7BiOLHRWHiM16hwedGSyTFGJUPvKzw55KJwt0kyuO2P5r53RKFbWvcXvLT7vFhojrvO3p2yX8z0xY1mMGaWxvYAaJo7t7Q+HLyeQFO/O0xk45QYtUfL9DhW/eAkPzK8483nzjJEa9sDo8wOEJv9TMbu29gzVb/h9BO4rynvJhFXrMM57HPL+RMNROQEmufrQ2vxDiVYNGol2BJO0v9XY3TqBn25bZ2C6UIdF78R44BCsyrAZXh5m6wNncs0l5RQ7RiydscvzGWVJ2i3hrDkQgOX/l42p29UFdb4m5CmKajlJy0hlC5y5eI2ygbyg6ziStPH5+4embfUjKCCy19yM6rv+GvLpOdc7F6Fs6xlMFc9hAtez5mmm+TSJhuRYFEZt8ywUFscXLYotdh6Vf+ZyWSAzKI7HWIxOg==; 5:3XBPmV/ARGKc95Er6q1d7cwlhg6lSQ4a/NEyPHlfQnDpEa0DUDM0Ngd/M9C4CKZy1UJbLz25VuFF96zbjwHqlRvoAW/Qwqg0r32tJJgsP6ajtsQ1ZcjwoV2ScYz5ZJbqiWJLfugbCfa8DrLdYL3w62uYjGyBzSdKYyCi7ZnD+z4=; 24:BeKfegqddH1S1WIacW2VYjjhE6oCj+bff/Hy3j6q7NlcMKQ0lLqI6HkWxoiXqaWZqYn6zuETmi+rJvauCuW61Hr2/sU7d/hYVOxBrcNW3kA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:4QSu2bIRNP8jBoqsoZcTqCW+uYVdu0Cpmo99Bwz+La3FqxiLurM71lXjIB3SJyVpzOZKtvSlFzDqrbE2UPZrK7hEg4YodIdC4mLO+Jrgkx8BkLXdjBzeRszG6XQ714e6wIkB4Kejf7hc/aIt+gGr7NicRNdc+jUrUUDNzK9jXnT8cxdG195OEIsLjWiKiAd0oW61I8/kzU5l9nRnS1ysFGSU/Vsvprgo259PaFYzZZYNytvDJiUsWOfGzTVBBO0J; 20:zcazavk0D0eFjGue+5+Zvp7CZDTAvuM02/l2DcaBawK5j768GrbHZZEkoF9J2S7BovWm1rzZjeXT7plnpn6Xvo3jSFmMYEbW9s4vpuYcX7vESvG89JLVOaigJV2309erfWcBQD8V/V0mQxNzwD5zDiZKelAWJpEJ30DB+txf60B7UEHAoIoy7jIuMcjh/EoSXHCEPCz2tA93d3/wIm/HlDeDwOhVOKeKXd+HcHMqxwtEB1iQZGprEvkhsWTOR3m6 X-MS-Office365-Filtering-Correlation-Id: 13b58c26-07c7-4ca2-0a1f-08d5b6b67e61 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:06.0416 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 13b58c26-07c7-4ca2-0a1f-08d5b6b67e61 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.69 Subject: [Qemu-devel] [PATCH v8 5/8] 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+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 information for cpuid 0x8000001D leaf. Populate cache topology informat= ion for different cache types(Data Cache, Instruction Cache, L2 and L3) support= ed 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 b20b8691a7..6898042787 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -307,6 +307,14 @@ static uint32_t encode_cache_cpuid80000005(CPUCacheInf= o *cache) a =3D=3D ASSOC_FULL ? 0xF : \ 0 /* invalid value */) =20 +/* 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 *l= 2, } } =20 +/* 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 =3D=3D cache->line_size * cache->associativity * + cache->partitions * cache->sets); + + *eax =3D 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 =3D=3D 3) { + *eax |=3D (NUM_SHARING_CACHE(nr_threads) << 14); + } else { + *eax |=3D ((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 =3D (cache->line_size - 1) | + ((cache->partitions - 1) << 12) | + ((cache->associativity - 1) << 22); + + assert(cache->sets > 0); + *ecx =3D cache->sets - 1; + + *edx =3D (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 @@ -3993,6 +4036,42 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, *edx =3D 0; } break; + case 0x8000001D: + *eax =3D 0; + CPUCacheInfo *l1d, *l1i, *l2, *l3; + if (env->cache_info && !cpu->legacy_cache) { + l1d =3D &env->cache_info->l1d_cache; + l1i =3D &env->cache_info->l1i_cache; + l2 =3D &env->cache_info->l2_cache; + l3 =3D &env->cache_info->l3_cache; + } else { + l1d =3D &legacy_l1d_cache_amd; + l1i =3D &legacy_l1i_cache_amd; + l2 =3D &legacy_l2_cache_amd; + l3 =3D &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 =3D *ebx =3D *ecx =3D *edx =3D 0; + break; + } + break; case 0xC0000000: *eax =3D env->cpuid_xlevel2; *ebx =3D 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 =3D &cpuid_data.entries[cpuid_i++]; =20 - c->function =3D i; - c->flags =3D 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 =3D 0; ; j++) { + c->function =3D i; + c->flags =3D KVM_CPUID_FLAG_SIGNIFCANT_INDEX; + c->index =3D j; + cpu_x86_cpuid(env, i, j, &c->eax, &c->ebx, &c->ecx, &c->ed= x); + + if (c->eax =3D=3D 0) { + break; + } + if (cpuid_i =3D=3D 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 =3D &cpuid_data.entries[cpuid_i++]; + } + break; + default: + c->function =3D i; + c->flags =3D 0; + cpu_x86_cpuid(env, i, 0, &c->eax, &c->ebx, &c->ecx, &c->edx); + break; + } } =20 /* Call Centaur's CPUID instructions they are supported. */ --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 1525985055106858.2122450877227; Thu, 10 May 2018 13:44:15 -0700 (PDT) Received: from localhost ([::1]:35552 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsQ8-0007hn-4f for importer@patchew.org; Thu, 10 May 2018 16:44:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57196) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOD-0005QW-3p for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsO9-0004Xm-9W for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:13 -0400 Received: from mail-sn1nam01on0069.outbound.protection.outlook.com ([104.47.32.69]:27968 helo=NAM01-SN1-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 1fGsO9-0004XC-4V for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:09 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:06 +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; bh=ieyGtXCfWvldyN9VB1OL/tBT73RRigqgp3cnxWk84Y8=; b=ps2wWnu3j/SZFZUrymhAIa2ojOteuEbX/dBtx4bDDbynovB9eIn2ux+mwpBqeaeRgqsXsqmvl/iNSskLxw5m5Rl7nLsb4aR/wXIhb2JsCp/S7fUwcmz3RmfW8jCKwoqD58+ALFljiheFGsGGZTj49NdN0oDXXxMRj+4tTDUwlPM= 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: Thu, 10 May 2018 15:41:46 -0500 Message-Id: <20180510204148.11687-7-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:8VgauVQQQlGsTkLNiQZ8g4zfxUjcy00xNqxX9vfyUDqBrQJJGzZkQXutajUh+s15aOh3O7VI0NuXXpAYIw1yayLER2dNUGeQppYecA7NyNO93a0ESL1wIuyL6Qmm3Qx9nm5Uh8fz4yhaqLrN+cpP+6rRzi3RruleLG0L9I/Bv24pY/4hl21qR2OrMD9lPqbKE9FLsAFrd681kbyCOcHBjuB3sKzwZlTEdlrWkmjXxPk7Li8jh9DSkovKs7l1/x1J; 25:+9cm/u5OAN+qIgseBCbACOy9KUkISi1ffvwZQkw3klZrwh8WGzTgHPUlDU/U5PbGSvE3Rf74kd/kRafuLGM0Pw3jJZgdNXivk6tOKsBw5A1qG60pw9WT1Ojn6Uq303OYcR8Uud1RZMKP5bP864XtAOQ0t5zrwCfGGrEonsMch8vhWM0N4g+wnOLXKypgWlo5YAo0RLPgrRSWjEW1dug3hExQCP57XKo3hq8+dqeH1X46bASXxzqm2frBEthsoJCRQinRnSJxF3iRSWVB23NAi0oF/fAKqrYyW0X2NJMhRjXIQCC6yEtyJURBmvredwhrUORSEMndSN51Yaiw9pq43w==; 31:KfwaPEYd0FrqK9g/MVtk1YYyCQwt9Vufb4nNVWdLl+yO3iG4zYclPz8yBc1kW4StI/nL3wtC+8Qplad3EvSSgcdrTPjX17WPV1+sUPQzo+EM5LaJRoSaxNzgFVz5hlFUY9QhZEc3v2Bsx23XWeUoBzKfAQbE08EsJF1zYwv7z3EIkM3AztNfF8a/4rfiDbwtg8fEMm15tXee/4wC6fnTc1eg2JZ4QtUAJQOZhOv5jXo= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:gv6XONhBaAc+g3psljA1ujrs7Kpx26hF5Oc0e0Jielcybe+x881qsQj0HRey4lJHfYB4LUdREdjs0qY5XeWLTXCIXvvZ/bA/5EX4nAHubGKHSjB1YUic0Nn98BZOteEvrbmWgslKwSTa2KZEM1s58AigzAkJobodPxmrAZUif3fjz2uUSPnwTnWhTJLFo/j1xrqsxs8Ci0LKnTi22KSX5YZoCAaYukSH2Fc6FVDAKQ5esZtaMOKys5zzFzbJ14XUW+Ugmw6nc2WFO/3qG5zMpml7O2OpsBsVIUoZzC0En1aLV74tyJ0KzQtcKn7FkZqOSWGr1FUDwVKE2xMEcEji7X/ql1JwSBi3iRHd86DGTmmauskKi5VZE5TBeOn2YgV5fwdDUPioxHqz1SUJ37Oa+GC/mu1IJQIFWJfLLraumt3vriq6ZYFisiJAqUjL/MCkCqQd5CuxpOs9q4SpkE9bxIbgDjVNUS6/6g9inWZHH6KaEYRTKJwFZLkqmTf+WLZt; 4:tVYz4v0ajKdMeT1arZbjUejNDtm3afxhDHyR9yIDW/lkHeKZtYg8dbl1bmya9Eb6pC3vO8h0TY+G0E6bu9qD5obN4rLh+0BQTxG7wZvLd+8Fs4PtvtiDkW+03KWFYzdyMbA5S68O5xrtHnCvxm2a6E2JJtps9RZhCu1PPL3ttqjwLt2bxylIiZclQOj89/udOr/Wji2Of2JzP0iARnMXM9E2WgduUvrgkLXVpiyrnaKMjViYBIIpMJTGIL74knhcikRcU3JNQaUaId/pvgtmK9K3ZDIC47BVtvjLtMEHJqKGdvKw/gRAFV0UXy5IvApb 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(575784001)(8936002)(52116002)(7696005)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:QdWMCqMpbIhzXJtKjLypaENBYmMoFXsQWhi1WKRqh?= =?us-ascii?Q?NhF7BHGyowDFGMFZyNA3Jyccz6H0JHI4HKXpyy3nMgr3ubbuNXe9W4fhM7gp?= =?us-ascii?Q?RKdHUgwkCL1bj0iVvo9oCXx2UPEhqNTLsNihNxSVaHCcEkKrDPfucgeEFMcu?= =?us-ascii?Q?dmZK3GZ1yIlFFbqboQ92bFutpIAT7pSsSdVRqzH5oQP4rpJpMyBXFCFLSbhi?= =?us-ascii?Q?qKiS5v/MnuXA//wzFHsn/2/CicWq0kbSlsSXOCLsTPeC6At+O1GmUBsYlmT7?= =?us-ascii?Q?4weblNEbnYU6n3MiCqQFD59LErYagQa1otBt5S4SjhgsFhKuNsnrcDNkoNXu?= =?us-ascii?Q?yx6DyTgnmlXTnNNAJmWMGsDJ29RHTU8z+7RfGaakrR5m0bLRBlL9AfpBlkLl?= =?us-ascii?Q?1xLAzl6XDNGTR72fUg1AJX7vUTnrRGoXpeFbY11280mQIp/IPo7YO58lP9s+?= =?us-ascii?Q?qPt1cOSYM9Qvf5+c0TPXAHjzhNZH0VhcEFEyzoilGx30RA7BRo8clZWj+b0T?= =?us-ascii?Q?VBbqVdVm3MdvyO8FwRmROx4hQOUidYdzTzBTBpVomNdHdd4owpnlboGZuNmE?= =?us-ascii?Q?HohbUrD17dzIAfcpFgokcFEKILhxvJYff+Zw+ONWb4hBAq7fse/Hy5nqANax?= =?us-ascii?Q?kfc5O19JXjwAcCuyuk4UZ6qw7urulzHKS6fWzDVpPkj9rpcuF4v/gYyaKZpV?= =?us-ascii?Q?QBChjPztZGgmdkTlVlCV7wrYl2OS09z7kaXT6G+D+XFxbncM62CikejhTfX6?= =?us-ascii?Q?e57Krvl0wW82vuxXRIpyxu+K9cCgXwfbOwcsFKXNLZzDhcvNldWLHVlA9WIl?= =?us-ascii?Q?1zNlchIgT9YXRtXkJpi8BbGGaIkJsxMNTV+T2KAuZ+HFXiFxPfrbtFlQK/JN?= =?us-ascii?Q?vOWnRt+TwxacfOxckuqBjA0G+Rt9dOdblYrOpscgAj1Q+V5n8ShZzkp4eqYx?= =?us-ascii?Q?sy3OtlyHABIAtiwMp9uHj5WaxEAGAn1hKu1m40v91og0mRS8INaSR3bHtYnT?= =?us-ascii?Q?icMFYwWR6FZ0mjeGAPRzyLQ/QYfShUv0AL6IWJ0Ei96WgfQ8vCPcEdri3pWl?= =?us-ascii?Q?WJH/Kmt86CfmzdiSotnlG3P+1G68hMwHE1S0umcjJFBFhd310U6Av6rKcUp/?= =?us-ascii?Q?o74zlB/lvN8h15MBOEfWeKUvm+amyc/+ycgFhfoXdsPN5jveXjpoba3AGtZm?= =?us-ascii?Q?JSIWJ0XRbj0cWZdIW8X/AOC9i2q1vrekV8BzhTGT1zpl1gJh/OAApX6rgMOG?= =?us-ascii?Q?IlS++la62twfxenFqAv6DfpJn02xNKHghCchzXtRpxJ7eXjFDya1MiX3yUEA?= =?us-ascii?B?UT09?= X-Microsoft-Antispam-Message-Info: 23ntv3ux/Bf9Py0iRLWSjHserF6XAh6RUaOF5/tPYTs45Qq9Tet2GRI3l/H85xndovRTfH13z4FUc0X6Jr5eZox3vOrGGzDfQNM+KGYCp8QkAX9jLtOenqDh3Cnv635ALPXWpu6t+tm5IUmN93b9UFRob+xQjvp68u7yNYQbF6nKTI+nS7k+NxwPjQvyEyYP X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:jvgzB+2M3qVZrIfpGTkmm8uvnzkLRYn0KZR7IkSAVpfx67mU7kwFW7+VUGcekVw+unohm2KfRrXJ4PCLAcJ6ST5NlcAoH38U3iMWpcadz51taLasMvV7dAXu6s1XJiQTyEiJuMFtcZYRMFtO3tDay+UXn01t75WFNCQsNs71Li+q+c7JMiXqapS6vIR/Ox2dNnCmA9bLT7N52W1BPFy5D0A6iolXJG/Twb8f+xKgF96SQPvf6XXuLQJ6psuatBwFctcLbK19EFNx3x7OOKilO0fghit72jbFb4EdBr7hbLXZchzK+VJWR46fUl2U1fXWD9Ht7bZvNKfS3rWmlQoY071OKoNCl8q6FnOcgY5phtXt2ZhNBH24BjWjARmAKT1QExf927uTEmlVMNHiszKhTw7Q/wff0vh/bv8GfT0FClMfksk0RiXWaYjG8FBEOIaebsem/z2mIQEV73SxINGu2g==; 5:8xWgR1l77lJu0jXeNE7uhz9Mo1sRBoSwmNsLmzse5HiQbtIaQZpBFr1mCk5yPRSIhNAplCRII9MxFmooub8qDSOg+dGMDtU8LUNppkarh9vuZksFarkA5yeON7MD9jUlapJhIBrApeWnNlQTLgQPf2WLjD5BzOmZV5gr7Mr12GI=; 24:jYaJa7PKUSNmrPosOZljzlVulNfDC61ORs+c9zO7yU4kDzGzK6zE50wxAbUMwR4mtNKEoKUxl1w2iVP0vb0WNgWvh67xSRRXcAW6PXW7//I= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:++HNBVrb/kQguNM34ogUIBuDUDU9k5jS9vXPE61FX35PfF97FWX2NC7tISHZHL3JNobHSFwGuAryvbOVKxEF0gBsJ6jzMOYBMJt+a6eXisp5+ZbZMtEf/GDWBfKux/sz4wRNuWppjmzoRZGfU1onmfavM78xB/a4dTfEwLeWqR+X7bk04WfQmHgc1UyWgEntHQG2Z/ubGTMHs9Nsy6X1BLIp0hwdqPli2kYrYwVwBysd4/ybmVZGtSZRucgjnPKf; 20:6zBZxhtklhCRFC12VlRhNzbMk6jbVjUEH1g2nDmchQScSkKlqu21mk8A7QCPWAmVjvdIFbFG8cfnJWe/G6xGNswHI7FtYytHhq4xoNwnRdj1cZJhpHQzCXKmdRkXiP4naWa+ts555qPOeEKZ7apmmNtGBGecSar3+ag0pAEF81qmP0W/Sg3FhblfkbWE44bt61zwEpBy1onJogd02oAxnF/RyW+2JqnDLxRJuZcs56VSbOp9PvJ6Gb9MFQS7N594 X-MS-Office365-Filtering-Correlation-Id: 58be9097-c4ee-47d6-4174-08d5b6b67eb9 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:06.6197 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 58be9097-c4ee-47d6-4174-08d5b6b67eb9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.69 Subject: [Qemu-devel] [PATCH v8 6/8] 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" 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 | 7 +++++++ 2 files changed, 13 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(unsign= ed nr_cores, return apicid_from_topo_ids(nr_cores, nr_threads, &topo); } =20 +/* 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 6898042787..5cfc7bb0e1 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4072,6 +4072,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, break; } break; + case 0x8000001E: + *eax =3D EXTENDED_APIC_ID((cs->nr_threads - 1), + cpu->socket_id, cpu->core_id, cpu->thread_id); + *ebx =3D (cs->nr_threads - 1) << 8 | cpu->core_id; + *ecx =3D cpu->socket_id; + *edx =3D 0; + break; case 0xC0000000: *eax =3D env->cpuid_xlevel2; *ebx =3D 0; --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 1525985320283661.1335665127033; Thu, 10 May 2018 13:48:40 -0700 (PDT) Received: from localhost ([::1]:35575 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsUL-0005sZ-NA for importer@patchew.org; Thu, 10 May 2018 16:48:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOE-0005Qa-Ie for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsOA-0004YO-Jw for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:14 -0400 Received: from mail-sn1nam01on0070.outbound.protection.outlook.com ([104.47.32.70]:52960 helo=NAM01-SN1-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 1fGsOA-0004Y4-D5 for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:10 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:07 +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; bh=eSP5pXDqBrVEdmdWHbVxugMddZv3eck/SxHlJ5TZ48o=; b=DZ7RRhpgljUihN1p2iK9XIRhbZulhpKzIBRtHgGX8Cy5UVJBKxbSUf43YLrRgqa8q/4/pQbQD4WjJqInun7xXmoraPN9zDMWMlgXS++cqpeTdvfu9Q5c6/jgP5tB+rdP/eJhHYTzrIWfJldTP9QQjKn6dyoU8tVfnRpb8NEX3hA= 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: Thu, 10 May 2018 15:41:47 -0500 Message-Id: <20180510204148.11687-8-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:a2qFjgomC+m6kE0qL/dms6BMZZxJGhLrWGhp/wboQZa16fBAsP1RVa3QaY+jcwqIxngGZeA/TI5ugo88G9YbqutiVT5sGXkSKVJlrWox4vLotDqyaNbN/ZvShgndm3Hi/17rRkLBjxkNmO1fxNnv3j339gW1ZTzVqVU0jvEl9NYxMsw6sMH9LdUsWVLKBF7UaIf76bot80sSeLUCXlkyI9zSnX7WL0/e9F0r5uySvqHLU+NXy/YncvMGPkePO/hr; 25:RcPifoSXZdoDlHvXev6N1lr994rQt0P61TpjdlHePTMkk+FARzr9MDzadxtQRIQlebRpOLpFON3O5JeDlNvHFBQT1ys8r9R7KvNAbttl78XB/TZDPLZNeklQE+Hp0Qsztdndv63jMXHxxynRU4KweNG0rqmQhLjTZkFjjCHxRrZQG1qsnAjOtGmzZtur1WRNvsdAWZgkGvT142L8m+Q75ijyUlaAuoWRtWgLuPkXMihFOe3A30Btk+IvIT3L94BZRokBMazapqTsDuuhdp4PzL3n6uvb1FY6I1u2lYk25RwgdAElwRh39Qptyxn2VB6Js6CbHbXc07sPBmCI/yqcmg==; 31:IraiEHefkxuC3mkTiL+HN28QLW+5hYw1cshP2H/WIDmJw/cL0xuoh+dzQ2eVEa1zStKfBoj05lFTINvp52CghLopUl07IuM8CWnkUNvJ4tAY6sag1SFz/wqTb7bvpyNCCPiGEAD+PPFEBhDeV/fMdbzZDXqzr0axHz2u/XX2DtaoXVswqhUpM31AYopYj2KZo/5FNgq+MpMjTiIDp/84MtjaWw6gSfrocvO7Xht10to= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:has0ea9TLb3IOHxsJ2MWOj3zSxRzP+V7eqw0IGL211ebrYuLQP1QnoRolY2bQnfrYma5QOo2eQYnAk2z7AqEzQ7VZjbVo57TVerlpuxiqWp14eKyKYKEAmqsbJsjjkIeKbOAWDWgq4QDVGn13+X1Iat+EZmMrTbhpe7ut+1nPYG9Rzc2Jh8mzQK/HGY4hpPi9fyvKI9VwwqFbVmW+LBgyTGadsefKhGfzfAm+LPCGWlF7UCXCqd7W+BFKrpPsH4XoH7+zTWVZhVamG4aqJsPxR3sra8HE40y0hPKz8WyAnLZ97oY9e5v8bvCNct3IdTvzoJfM62m3qLTNe/XWHa/vmvcJ7XFnoqwmFmkROjYALejd92IRtqzzqOHRH7JhXIHU7FOgL/2V8W5elAaa95CDygW5LIJqVkuZFcx5meGn3v1j+R2uNItOSSEbAJhIp6D68oimuliCaGgCrbMkaAXKh6yzHextkPNkMNA7vdLEJA7PpBLkjdtg6G3Kb5meltq; 4:/ggyr8AD2zC5BF7MzfBvKJPDgZOSK2mPZpQgSWFOy8JGkBLA8vcbKzTC6JSi+vy/zv9uGaT+xuWBo5N5Eun0PAhLIxwWtO0Vxx8cvVUi6sZgOQgRN1yENh1yBc/Uz4xzTKIFDm3Oq8iFaSBrJutbkdku++J6Acz6atY+ZCNdX0quEpf1VhBcCZ5xhzO4PucapJbtJGTVWzYiHQssiJ22ZTKENJaipdJmYpQjiw6lc891TF9C+1M3KGqivEt1x+Qfw3NeFq4R31zqfWWQmHjL+ZN8vrouPOI3lI3+o66SC3xSq5U/j1RX+JmHg4NPsowM 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(575784001)(8936002)(52116002)(7696005)(59450400001)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:q/d+AuBh7CbD97eZ9QnM6P+CgwKX42Rly70W2nCZm?= =?us-ascii?Q?ExyyhrD9Ljo6eG1SFM37Q3ngbNYIkXG936Y2mDmtdo2GIoBzM5RcEFgcoCSa?= =?us-ascii?Q?GpN23Rk4hNelMUcb3kUdLtS7Lth+gsZYGegGg0xGl5oBuZlMZK5LnsqkIDlG?= =?us-ascii?Q?Su43CNDwh8xhSWB4d9PpuTKcLe+P+l8odrb9Se6CMUUSAKH6ZBSZnzeUoWVM?= =?us-ascii?Q?ktC9jUhMQwGU86AXY6VGgXQPF5RwxDt7xifQ1AkEKddgnbDX2jl5Hkfj/BKD?= =?us-ascii?Q?E18RaBxQGQiKN73/YCkkT06Mf1y9RozLqCnkfZuFUNhAxMJTomyg2GCJWjCZ?= =?us-ascii?Q?s/Fb/+jV7svFew8SMuVbkdC+vV01/JGBVfZSnPirF6U/NK5ERoJvX7HO4FcA?= =?us-ascii?Q?Vl5WULJHlnYclf7WCHvMkWb5PTlfEgPTDom9a7DRxJcd1TKN+Dr03GeDj+mk?= =?us-ascii?Q?uTKsbg7MUL8quzOfezwhYH5Iy+bTIQGLll/QXIk0rl1YqJ88yoe1YoRfAI7Q?= =?us-ascii?Q?6J3xyTVE2jK5w3krcdjVI5Wuy330oGWUK9c3+d+TLCMBwg87ELKTR8Xl/y6K?= =?us-ascii?Q?2C7SOa3ck4Ec91dALFgjvpPTMwr31zwvEhBO/+mkXfK6HohOVqMQ2HmghJXA?= =?us-ascii?Q?2obqqBPBKjNg/LcQYtwKpe/jN63mnoK5sn7GLSwB1dSkALT9OVtDKUStaE3p?= =?us-ascii?Q?v1Zrx6ORIBCeN9K9lkgTay0wrH37wKL3kOt8WxcBU3wOHUyWrNabFL46Y84S?= =?us-ascii?Q?IiK1Uruhg2Vxe+iQPRFOdWX0ukfpSIR4E++Bq8gwMzYzUPKclTkI16lcrYLe?= =?us-ascii?Q?HQMMR15RGLyFwNNsmkEFGsYmZ3lxjcIbf8tD/uLZknl0VxEtTtNvZ05+Zmwg?= =?us-ascii?Q?lsM0JRbuDzaN78KVyX9gLSJMXlXkbwUn6ZGhaowW/Q+vBrFNHtDbD40zHLiC?= =?us-ascii?Q?WInPQYTIP2c9NsDRZw1wQKSd2EsUgrlNc7zK9yYNjBMwXzpoKXAFKZZpG5b4?= =?us-ascii?Q?IdukIpZjhrWeUqG2WwC0jSoF12LfYJkFKjRHc2TD4ZI5F00KJe4a4/APOwUS?= =?us-ascii?Q?iiY0yYWXvDcLj0Nvh7QfJNob+sP0/HnHXHc85CYtlzWWQYXSJNn5WBSBy2eL?= =?us-ascii?Q?LLEtKra9ID7c8Wm0dZuABFPWeztt7zCodvipQBEgXnfwn2NEkc+fiI02Lfip?= =?us-ascii?Q?e5kKMbmVQgmrwuCYjh7dDkKCk2zNyzuJ9IZw6KODroxP+KDhlH0O5C+IX36t?= =?us-ascii?Q?D7aoAOInxY8JXC67lwlKgPc/aveZi62fuG7LEyC6VLNG4v3WxcaSrsBeuMXg?= =?us-ascii?Q?Yf2R4KMPp+72inbil2i+CvegAIrBwbMwFRAYPPBJaDh?= X-Microsoft-Antispam-Message-Info: rCtfLZASDwBjvr0cRySY9j+IIgNYiAZhedk8BN2edTz9TYoN58nzSegm2H9ChThGAsC6fCnFpo9lgocPBQD5vmuhpolAL53j7ouhzeI+PQOPPT75KpEVKC/x0ufT2DkbpyesRE6KcO9NysV8HOnrhYewA263XLJsXiKHRSEHDtWI69vFdkp+qo+CaFwGLmCg X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:VlRSsmb2ymhJmJPRf7KrDwMO0wja6fb5kJxbUH2KOmERU1XRFA8gZ8fv4U41B5zViOXP41OKEJ8ToyGOc4nxIjtV5V+/TxCrMxoTHyomQNwinABiVo2oBi3ijMEPZzTAa+T+grqm4PFWvycqYiN96U9y66HnnA8vR9FmeWXp+A5/RVHX6kddrrsIZ15FpNG9JeLaxNGebcryU6oYfJZMMVhT6z9Ly3Etpc+jU4QdgFMmlOX+NzS28u8u51iD6Jcma6Zu8pF+wRYKAxjKlgZ2Og4XPPXh+q5od7I3iJCNkgJqGxnJjAMW1rPojsV+I1Y51ueAtkXCjl+yQgRFpkA4PCkqr5mfbqcsBcsk1a52OVeXRRcBT/tZlg/Rn672URIKQh7H8okVBjuAvHyvS2ZWlhUWEqhLx7YFLp7qJ2PkSb3HVwp5tzg/eVp+PVrN6dEu8hl1Nx3KFM8dpXBndquBYQ==; 5:TnHMWz/OOxLXthK75kuXdfBRU40Mi5NwuE6QW7SXxn/tRB2MHJFVPRiL6snh8GovkaSQoTviSYGJKwChq3x3FHTfrPwi5TTNN+3mWXZlqHS9y0JSMaO0n+htPlqRN8dVapb8SUIqP/+rnJztXMGPKT62AXR0U0C4SWtQL56Rblo=; 24:To4dnlmMEcuht3nDJdHIC6lYs6riIhnmiChILDMMwtNiJnOP815/FQ+Kv8Yhp/rKAYfhjRsjUF5ELK3OF30D6bIERJUxVe6XVc9bwFAYXh4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:9WmoeQWEQ1242Zj1HsgIbyczQmVg7FyS3JlkoBXAg/dWk+7jUXDJgcuPkH8airxOcn1KdG8RYQ/BgfrLWb9POWJ07cLIZ5xlyZXnDwf2kkXXnLZEB8eZBHPIunJXpG7nsYdJHvWvz7JjQXA2xlZkHU6xGWw2LUYvkEs7SdlErod5348cLZGJJpVkDbW12GeFVgW+HVn4mFE4Lxx7lXci76pqpXIvkL23kmvrKkECAfMo48rlVXPy7TihCyf/m8g3; 20:+o1wUpWcd1Hdns2Mq+tQnNlvS66W7iNcHgEtIXpfzlU15nyckCWC7Eu7kR9wPhCrfi/OcZ7SQdWXw2z85EAIx+/ItiZ4wad9UlEUMsoTNStNiVLlcRKJbqN7LO+f7yfmLVNaT0nvi6nAcSYbhfgZXtqHTYlh7hf9NvER4OW0LMx88YgfouokciJj3TA6GGmOGqMx2ZmHB+SHSopGNcuZx5eh5e9+d6eaGGfAe0I8cDP/XYY5X+NT+1+wcDEFmJfT X-MS-Office365-Filtering-Correlation-Id: 990dfd3e-bcdb-40a2-db1f-08d5b6b67f13 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:07.2291 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 990dfd3e-bcdb-40a2-db1f-08d5b6b67f13 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.70 Subject: [Qemu-devel] [PATCH v8 7/8] 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+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" Enable TOPOEXT feature on EPYC CPU. This is required to support hyperthreading on VM guests. Also extend xlevel to 0x8000001E. Signed-off-by: Babu Moger Tested-by: Geoffrey McRae Reviewed-by: Eduardo Habkost --- target/i386/cpu.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 5cfc7bb0e1..575f2416a1 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2382,7 +2382,8 @@ static X86CPUDefinition builtin_x86_defs[] =3D { .features[FEAT_8000_0001_ECX] =3D 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] =3D CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AV= X2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_RDSEED= | @@ -2427,7 +2428,8 @@ static X86CPUDefinition builtin_x86_defs[] =3D { .features[FEAT_8000_0001_ECX] =3D 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] =3D CPUID_8000_0008_EBX_IBPB, .features[FEAT_7_0_EBX] =3D @@ -4540,6 +4542,11 @@ static void x86_cpu_expand_features(X86CPU *cpu, Err= or **errp) x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A); } =20 + /* 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); --=20 2.17.0 From nobody Wed Oct 29 20:36:33 2025 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 1525985429342909.07995337865; Thu, 10 May 2018 13:50:29 -0700 (PDT) Received: from localhost ([::1]:35586 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsWC-0007SB-F6 for importer@patchew.org; Thu, 10 May 2018 16:50:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57253) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGsOG-0005Rq-Ij for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGsOC-0004Zq-Kh for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:16 -0400 Received: from mail-sn1nam01on0065.outbound.protection.outlook.com ([104.47.32.65]:36832 helo=NAM01-SN1-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 1fGsOC-0004ZA-EY for qemu-devel@nongnu.org; Thu, 10 May 2018 16:42:12 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Thu, 10 May 2018 20:42:08 +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; bh=asu+/GXHhQMe2epTy0WRwg2G1oG2YYxE8mQu2TQ8KwY=; b=UrlkaQWLI5/gYBXwR89VFpU4OYY8w+pzPtp03uhUZ0FHL7yjK2E0Ax4Xl3oalm0jHFrdK9hooInljZ3DaoWXzPsbDiNTZWSIzI91YZpUxP1O/ZIE5VGXI9jbSWkJzTAd6czBuFz2RlHeb33PHzfAt5LZ+Jxm/+JBJEHwy260iEk= 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: Thu, 10 May 2018 15:41:48 -0500 Message-Id: <20180510204148.11687-9-babu.moger@amd.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180510204148.11687-1-babu.moger@amd.com> References: <20180510204148.11687-1-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: SN4PR0801CA0024.namprd08.prod.outlook.com (2603:10b6:803:29::34) To SN1PR12MB2478.namprd12.prod.outlook.com (2603:10b6:802:29::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2478; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 3:bdxbFyXH0S2mdhsclZ2SklZCM3hZoSrWRu7ewsU1bhvfhyT95qlcc3FwvmTXJVmfBC4CNaeRC/8kJjDnKQAe9QcvWCAKb+8GLYfJ15OsZd+khP9SJrQFd5BIv+fPWVFnHYqmr9vdg6EeKSobMadA7KKM7awl0Uku4CLPNtiJ9crfGgSueeMHBb9u6vwISeOzf/tFyhZXqI0duo3d625udTc+xAATfG6opw63HG8CgoaCKRpGUNdM4YHh2JOTyg+h; 25:8fSEFC4X0PvTIGbtPJGibort+r4K2rjRHts3Ucvs1fP7Ys4oD8vSi+vwdGQFzmkbNN/ZPVaEm1Ot5NE3Z3uZOGKx1om0P279TkohgqS1YP9VwKBIUnMbDHOHsnzpUBT9/7AkqIgGOkspQI98lSwmFv8cR3eB3W0i5J5M7XSiDfXpF28MrVvjuyYXWqXSreaaW/zsqxwe2BkgmZWZtp1oTzOy6v4KWrVOKAoQ8ugzqLxAniwd89YWnOuKm2SwKl3mvOV4h8D/ov2eGzYj/HMo0OVBeCVV0z5/LItrsx+6mf7Y6vB3noxFFz/PiGHfi4X/vmAXSGimrRTYX2DwfoPH/g==; 31:09BD3KrltkEUshdYeLfCA2dmFwjWFJm3nTotJsojat9s19x65Yv+sOFAPZauoI6k8fBGr3dIXN6XAjQuea9+VsbZOmzstDbUVs63tcslMnuBI9Q4aq5rlKMVgGep5cxxUnWGxmPVBiqvTfHiEVkSNF+UxxG98cjwI4iwo0uECQegh1YWeDBeprAycrtL5WkCVrlhA7CO9bgX7adFUZIxljCiZ9H3sqkK7WJ4NKMbBTg= X-MS-TrafficTypeDiagnostic: SN1PR12MB2478: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 20:HQXHYLWALk5TKAxgNaj5U3HKTzFLmaLqsErzNuy701gxZ92MLMatW+LP1gaVmprTNYDmnER0WK7k3WWWtypR1ETCQY0OFP1RARuqAQ1AIJwpYcwQcvcZXIcFXnkAoCxikpo/oyMxkWCo6pirU/nUMe14a/NMJqzau/C6dc+4gD6/X7iKv0WRmGq8ku7cEfjUeY/4hmHLN7iqwibYdvwESze2I9qyPwIt/pH0lLUsxFPSAs6x6eqFDubvOymdoBj174dC/IKBz+d512cMzcvqP0OF8/gYxggt16IB/ikNlF2OpMEHOL4ZvmTeXwHNwEpJFbSP+bu4Gr295ZvJxHgGoDDuG05CQgCNJDwXhtUebGU9qFWTpQccfXBAYwdKugPR7Ia8ujGk0BzLxuQZL0nUYD39dbnf3rmA78m/266KsEZ8MjqOGuISgDMV6H5Yr03o92C3L4NAm9FfHFzwC0Lm/HYwOcFapkOnxEL+RDr9jBo5uD35qNo0Ie906Yimbzd2; 4:YcSZu4NwXUZsFi2Sn1+30QVrmKtyk7+NNUtKpxmXWjlkyYAob9YCCsW1eWC5Ap8EDMAb6O4PIwjEqSVK1qfjaSCJGPp1GgIrzc8L24MLtIq8sE5qBm7Njy7MTZMtgyDb4ZSgxMsy2rFwLChcgsULQKyk5manLpQf4VuzI32dHppQypDmlvs2ojxbjWOUv5oZxpFbq4i6243ZHzsvHWeGBm4hYLVpNXUS2Ysd1o7zH7ODrlfVQrB1hxzTEI2Bg9T1+FG+4GkWktdTxR8TMFKVG464H081DdFtzLa+A4P6T53RhbbOC1lR9pYUb5GO6723 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)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN1PR12MB2478; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2478; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(396003)(39860400002)(39380400002)(189003)(199004)(476003)(446003)(48376002)(50466002)(50226002)(2616005)(53936002)(76176011)(97736004)(4326008)(11346002)(16526019)(8676002)(86362001)(186003)(7736002)(956004)(44832011)(305945005)(6486002)(81156014)(2906002)(8936002)(52116002)(7696005)(59450400001)(486006)(81166006)(386003)(3846002)(26005)(25786009)(68736007)(51416003)(106356001)(5660300001)(316002)(36756003)(16586007)(105586002)(53416004)(7416002)(6666003)(6116002)(39060400002)(72206003)(66066001)(478600001)(47776003)(1076002)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2478; H:bmoger-ubuntu.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; SN1PR12MB2478; 23:rBJslHnlCMkpDjRbbpEe10Laqr3yeMXg+zOJyazfD?= =?us-ascii?Q?UHQd6PCfvtSR30RGcURha8p6g1naKVhBA5BpCAAPE+lR9DoN+Ldlxljo1iX7?= =?us-ascii?Q?ux4/YZfzvo3WVd2xk2A5XpeeWEB1K19auy0HNdFNPTcDm3vpKNJgq4TjIs0q?= =?us-ascii?Q?QLUgvAWpKrQtl2GyrbO2LNjpp+XyeUDi+ZsmwzMeOw2Za/u5pgzIehx2sqGf?= =?us-ascii?Q?KZsk31rpp1BHdI8bD96ay/CLN5RA6XtgFpHsm7S2fa8tobZLLbwN8vgcr2gg?= =?us-ascii?Q?IgVVkwBTqTw23isKW0QNH+Zur/hZKKPcXx3DXmwa+bqrHml7veF8MQQNdO4t?= =?us-ascii?Q?PKsfCDEjy6rekLtT2L4koKYHMyBVaPPUjF18wkvjzy3zif/kfWMmRf9JCvm7?= =?us-ascii?Q?a0u4u6L3gEkre6B91eyLiVtmXA+VanJ6slbHwcfRRb0+sAEtwqFbNQvvXQVG?= =?us-ascii?Q?yl3LDYgXX1ogqdlHDoOqapjqfGPJGuhmaHJV+RseWB341WfkOkJR8O2yNVd9?= =?us-ascii?Q?+/XBxNGciEqStErwGbGQnPEhiQoucPm5WH7Fw/FDfc1U4fGNGQ+bRxfnDzGR?= =?us-ascii?Q?cJfA2blRj2e763qFMCSd4OQb6Q9GgEYE+tHsOpCKAS9cg8blHM/RIPbD0een?= =?us-ascii?Q?WR8WDJC4SzEldVXbOitEqYu1pTBYyoXqpQh9AzM9wNjQsj12/n1J209kWUkL?= =?us-ascii?Q?4l3DC4/SNA5moLQbof6anSd5WlAfnlJG9T4bsp9i2COj2S+FILIicTB4VCMz?= =?us-ascii?Q?BYT/kYU0YjwC1nfOD64n8jXpgOfoGNaFN0hilR2IT6vSopITSmMAucxMzK5U?= =?us-ascii?Q?5AwvLaywiZw80vvbxsis/OqA3gBusNaRVietdWl5zj27wQRf+y/gk7i9CdAb?= =?us-ascii?Q?w8xKoDjS4vjMYfRp8HSIOTO2zkDquWjrL230Z+PoUyeKmfQK6V56ye3UE3Wu?= =?us-ascii?Q?RavZUmCe3vHl2rBrMp2LgXFTHh5+b4wehjJICO/QOQKK0fPMKW2xlezU17i6?= =?us-ascii?Q?9G/w96/sYxDAcrdLeQ7zctuGX/SwCkq+HstP0xMaD2nxbC3pLJRpAMb+XRj+?= =?us-ascii?Q?ftx++EIsz0CddgBaeqnnt+FYvCGFOuksnKfyz8DAegw0CD/8StaHq/mjYMcJ?= =?us-ascii?Q?PuE92ABHmBCchuDIZl9qo1/sw8LG474aVP/Wld9j83+qGzudXGY0m7CaWqhl?= =?us-ascii?Q?vc5vpQIW9HbLXrAdkirTJ3nriDu6v5qJwF4CyAfBa3m4TqGAcIFlwSQ6asg1?= =?us-ascii?Q?V5itC+xfWyN3YOCdJLwwjn9VDvLLLqbzQJ7dAdVAaKerTCCxOEs0cCJ9fZ/S?= =?us-ascii?Q?kGxXsy+SB9jnNT+gab+FpU=3D?= X-Microsoft-Antispam-Message-Info: oF4r+XmSGqE3BHqno7K+uBnXXCKdl/c20h9zyG16QIUmW4eR+A1OBn2heZfESZE7Xk2+uamzpwx/r8v7CZqSsP/vMvFy7A/WWZRFOVUQddcjk/jDZJAX3VmUVUUL2QbW9twDnx1g9WV+4lcwD2fBTiuGWHfrzzm3O355ZEbBkg+9m0DP9fxa4uXWTsimEz7f X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 6:27isKwjCFK+ZFzTgMhGOw9iwod4bkHWCDeRewqEPE+923twO712ndHP6btegJIoNkBa3EgPQv6eFN66QdjhvAlvDnlMWJXFyHQ86MaEbchSbNDwRA7Xh/XZW865I1nhQgsuyAwDFRSz9ImRJL4piJ2G86z3zWB6gmcUbfXiWvcHu8HV27x3TGJBUan7UmaTNrftmX5YugMQj3F85irGVIdQo2YdMGNoAkt6Ij0fjB5LnqkjShUvuVVNwPCxgMd/fdhyK/Q2zseU3VcAxIXrZI12U3H5HXp3V0u2iMeTqXeWuDMjKZ7RBTxV3WKknWTXEQekG8RkRWJuRLivZc8a3AtwCpu2IcUlmejerjGRh5LWSyhvdvT7t6VnpKI/eDU3+iQArMQSU5zC9o5jDQM6YF+OhKfkicE+fm21C+gjsgeAm+JdJU03xNvica8JP2an0ZuccCSFXuKybt/z0yJZISw==; 5:9jmMz4PZi+fuYxjKKpvpL9cZY0dADjBO65bL0fhHk7vt15LKcMVxBfd4eeCNpuiVaVacR8uONCNBXOtTvovPCscMWBv/LdyU837584cnwAyWVfph+pgf8br9hy1c0K8iI0EbMwEDEHgfCgCr6WcIrH7hMGRJdN8T+KxMEVZLknM=; 24:GF7yPy8ZkhbG0prlqEMKIh8VznhRUcjAJgwiiN5P/CJNcRFALP/2NrhBTSVQwWa+OW7/Af1mSv8ldJ25c/NPlcdju+cwSRLjgU9mXgtdIzY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2478; 7:iu6u1mdx1EH7japepQK2g8j8cwtrNwhGTT1aCQUyC7L2xl6rS32aA5yHLaAE+VZjsnmHTYnj+rRQRZqdT/rPkltK+2ZsHTLg3tnpbLAwchl/9D1eaPTGlEygPPubfJGvO5z6a8C66j1vUCgxgd+VdICtI407duTx/P1xaX2akwouaaPrfbPcGI2MuYyABGO90/zkmRzf/Yn0EDYuk32N7MHeMApMFJCufEJWcVB86QPHAifD5WFOrE8lHIo7NpxW; 20:AZt/8w93onFCO/LNVfCb5DQXwynuMLN5Og8RJpLGH3IBcsLB9yiR8+iXiwNA7J9CGJJjNQAPLPc8uGEGmkmnBkBnIo0of2t67r0aWEnQeM8Xig+XBWLWQy1vBAullkgGMM+ZQuG8SdvEbyw+1OusOPmYqbFGlFcC/AZWdDLds5YNobd5C2eUs2bM/ylbHxfOiYP5vQ8gzet0CY/SY6HAMURIL6PTG7h9xO8jeSYMpLvEKMtAKElHPO+WbCc7LeFB X-MS-Office365-Filtering-Correlation-Id: af0e0a13-4b6f-4e28-d335-08d5b6b67fcd X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 20:42:08.1354 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: af0e0a13-4b6f-4e28-d335-08d5b6b67fcd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2478 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.65 Subject: [Qemu-devel] [PATCH v8 8/8] 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+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" 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 575f2416a1..17803135ed 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4790,17 +4790,20 @@ static void x86_cpu_realizefn(DeviceState *dev, Err= or **errp) =20 qemu_init_vcpu(cs); =20 - /* 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_00= 08_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 incorrec= t. */ - if (!IS_INTEL_CPU(env) && cs->nr_threads > 1 && !ht_warned) { - error_report("AMD CPU doesn't support hyperthreading. Please confi= gure" - " -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 =3D true; } =20 --=20 2.17.0