From nobody Wed Oct 29 17:28:21 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 15247615376671002.8123506967287; Thu, 26 Apr 2018 09:52:17 -0700 (PDT) Received: from localhost ([::1]:43495 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fBk80-0004h6-S3 for importer@patchew.org; Thu, 26 Apr 2018 12:52:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45094) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fBjjk-0000Rw-Th for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:27:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fBjjg-0003Jk-UH for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:27:12 -0400 Received: from mail-sn1nam01on0049.outbound.protection.outlook.com ([104.47.32.49]:52196 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 1fBjjg-0003JY-NB for qemu-devel@nongnu.org; Thu, 26 Apr 2018 12:27:08 -0400 Received: from bmoger-ubuntu.amd.com (165.204.78.1) by SN1PR12MB2479.namprd12.prod.outlook.com (2603:10b6:802:29::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.696.13; Thu, 26 Apr 2018 16:27: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=lrZhv8JoRCy/liBRMH0AgztluC8X/yg5moDGX9cicG8=; b=LwoSzc40BiehxlhlNiNb3+BAAnI5DReui5HPmu9qzFT5ATxjjwt11K7qKfwpMgBQkFRLG1MbANEibJxJD64p9bSfXbkEFZ00erYlFymdFo76zJhtzcspVMJLsiUIRltRdyheEshqqqxB5IWNVCZJSGm1la6gUgMdCzeF/Hvn19Y= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; From: Babu Moger To: mst@redhat.com, marcel@redhat.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Date: Thu, 26 Apr 2018 11:26:46 -0500 Message-Id: <1524760009-24710-7-git-send-email-babu.moger@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1524760009-24710-1-git-send-email-babu.moger@amd.com> References: <1524760009-24710-1-git-send-email-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: CY4PR1801CA0020.namprd18.prod.outlook.com (2603:10b6:910:74::33) To SN1PR12MB2479.namprd12.prod.outlook.com (2603:10b6:802:29::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2479; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 3:JhWtjTm2vrQM9zfqUt/pjSsMHvW2HqdXDnWjZEgYeczhfORAZzecPmaDDg5BHcvYRcvo5DxXg1AmB/e6kChkRQEM0KZFN+zb5+RphsK/e1xrKNDBdyta7Md4G8unwZpY6ExXA2+7In8NdoLKUz2f1VuN3kIoQiQ8Zm8Gup/SKYa5u+0sQJJ7hu/bcYKzLJTiOFvvB1t/1Q+ZfFLe6Y1uzdp6VwgcFJ5hBnJfesYLbl36lwiyrYpuqsime1jWmsgR; 25:qZo+5ow8I5u1M/WD0gqmBxOv1wg4et4aBthVAL+A5FB1qLcgf2V0AZBs2UvRGTGpNaWxE3xCVG1pTJom2NIBuxA6pP3A/8hLKjZwsfYVx8GjPewvHPQL0/nuV603TXKXZsxxjZvjANo49NeUVpTyl1SyU+N7xjZMjyz0P0HTS2ckdd/DNdnxcUZf/qvHgeircohHIKUbG8oD0ourgAQnn+IbXWP6kGHP80VptKzN+O1edF4czHGKRDXxP8GnmOGkmBroD8vIgouefKxCTKaiDqeMw9IKxJCAlTRzyqw4UgydJBlU+mPucMFFMIvfnfrAzOuAuBfWRoAXfqffPxrLhQ==; 31:07SeGoXccwv8/N7y5cOlsV0op/40QRwB5mA9mxXR/xZymMTUeCahfBD9QOnp0WEn2uIJi2LEWrsgb0UiV/gka6+wEF831JmwYyEvKRUyeM2UD0oM+ZAo8kyyVbPxdU+SekfqOLFRBnMwJTrrngnxffV//lxklT1pfBkpYLBstZRuCmkvmQmVghj5Q9t9SzpY2D+jbggP12bx4IKD4WDDNlblXA0E+B7KhEJY6BEyKN4= X-MS-TrafficTypeDiagnostic: SN1PR12MB2479: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 20:8CYYbdMB4Q3fWWaxfeXPPrFyFvLba6oriv42cD0LuDCenQya8E1M4kD2CeXxC4n2ImhXF/bjYtGfhiYrDt1iTnnlR+srfwaROIF5geEqh1pd6VEVVfLlFdUN/mOPgS8K9HQvn6zhIcOK5dHaxe/ggr0M9CHwz7J5xivleZaom72lxAIxyfg76Id+Cglh5edd08ZeYviZ4XTDJmLmYjjP//ATbmsZNnAHB29E7aE0Amd0to1ZbVIaK5t6cYb9VT025tks+LQqbA6yFwNvd8NAUTJ8zYpfq/jACrWRHbO/8LYaDs+c9tUmVjHpDQ2n0vqUoqib5opcj6ILeMxV0xi8Ef7GnuAz1TGvdZZhlDIp7cw67Cn/9aR0OuuJlfaizawCgIbV5PmmYCrm6h/TdNutGXQNWK+nUD6mUlQaaJimu698Tv6dwtVC+VvVovBn9qAjtLpTX3AsbiN5/RwAkNPiRlEMR+Hiqn1yFAojacyOKlk27CU5W8GM1P0iTK3u1RTJ; 4:oXJG47Dcv7v5Fw5lMPM7B2vi40AC/ZSSKpJaZzeIlDu6Y8rkF25NJt6SBvWKTRHd32y8MKyJnmpEavTCs+VddpRaihie/2ZTtyz7OuLaVBfkYzEwYytd3OCj1IE/Ec3JAk6w13Hq2e2KRPHgNN4uUAaKi/3Fnpmh7Y4RwkLg/5Rk464yAVRAzGg8rwcaiHW2vh7ZJhny2I1NBrr1rCkEU3c4y0e1Hgrr4Lawize/KJPcxLet6QrAGS+boCv4X/VGRZCCCxTXsf93H18G+tPFWDL1mXz+4CvMRqXB5goC2H+4lJCwxwfFUN3+un78yeWF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231232)(944501410)(52105095)(6055026)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:SN1PR12MB2479; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2479; X-Forefront-PRVS: 0654257CF5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(366004)(376002)(396003)(39860400002)(346002)(189003)(199004)(68736007)(8676002)(2906002)(6116002)(76176011)(8936002)(5660300001)(316002)(3846002)(4326008)(81156014)(50226002)(81166006)(386003)(956004)(16526019)(7416002)(52116002)(476003)(97736004)(186003)(25786009)(86362001)(446003)(7696005)(11346002)(51416003)(26005)(48376002)(36756003)(16586007)(47776003)(53416004)(486006)(44832011)(106356001)(7736002)(575784001)(6666003)(72206003)(2616005)(6486002)(105586002)(66066001)(478600001)(305945005)(53936002)(50466002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2479; 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; SN1PR12MB2479; 23:0Oz/SN5SjzVXrvgaEuVrmO5zJjo/L6UeYMZRc95fd?= =?us-ascii?Q?6+cPmyP+Lxxpr97RZ9NTUCzD0Iq8Oi0lpUHGTejGI+N12u19mOueQhv1rd1g?= =?us-ascii?Q?lrRCUtZauepvH3RHHYIVApGzV86THE7FE+K465YYpmp77RVt+z9GBnLwHTs1?= =?us-ascii?Q?DeW+gOpxLDSKLGrdhXlMhKFzKqSykC++mgsw48B4EvDGhsIitcy+5ZmOmqrZ?= =?us-ascii?Q?xvgdgvhnKR0jv4qhXNfvY0oxZII/HYlcjyDNw99P6k3xq5ZUpgcxbL2tSr+s?= =?us-ascii?Q?VFQW775Rbh+RGFlo7SGnFPEnWh25CiVPzkLZdGwPw7tqwBwTjBX24VaM6X5o?= =?us-ascii?Q?hpHxZv6BGKArHTJ0iub/erfkCGHmGsR8G33CIviD+6VHPWXAVGVZPjkaPbj5?= =?us-ascii?Q?KWTYQscETgB7zUyUxkuCJ+fGiPqjhPFKtQFxGAzUuDH1rG3Lu9inrvOtuVeE?= =?us-ascii?Q?8Wbcfx2jCW9YcW4AIFe0H41+Tl5WVX20hJZ3cxOfXWO2voP/l2edAoJuO1Y1?= =?us-ascii?Q?d3zGoodc697GsGIBJOc5oKwFzoCY6vmP++f4GGdQVi54LhL6CsnqR9FvVEc6?= =?us-ascii?Q?6c5IM+id4Py2eMuPmrMQh9irNXgONtTL+DA980UoR0qPvJoAlg5cOolaQAPR?= =?us-ascii?Q?Ipb+xkyXJIttG3z+PpFg+shDU2QADA4+QADLN0T8OjJ+ZHX/Wd3S2Gx9AVYP?= =?us-ascii?Q?id3IY6c8dMsWRZ4Nro8TYWtI6/2BJAaUCtzXPFRQ4dTDmE9qQV/ZZSjawTPY?= =?us-ascii?Q?aH5jhG2z0K9dWgd1zlHPjNyIeaOlEXes9MUGJbFQj94oWF/h3RGS7t3Oyl2i?= =?us-ascii?Q?YqvWZK9HQN2RVSl2URohDNt0/8EoqZvfOVrMWnf3eGdw8YiCJ4akDSzePgfc?= =?us-ascii?Q?AoN+R+lGi4Kkmv8ujABwV+WLEtnImrDRtc7qBbuTjyyt9fvlpTuSuruc1d8E?= =?us-ascii?Q?6f08y3M035eFR75zEziIPNxy8+DuEW/wgmZtD7/RByyEKRScdgbx2V14Zv7+?= =?us-ascii?Q?QhUoaSCFc4zlyA3ix7tCfthUZZZ1GeF2nShVAG1Dr3goUZLmstfoupReeqxY?= =?us-ascii?Q?ih3imdsUkKwdgQ0tpqQ26eC2Gv9YK7jz5c9PtOa6ZGfifY/lE7fnmZy242ie?= =?us-ascii?Q?G3oSLWg9tScnjoCf4dCKskJo4KI2eFcRlUL5oATc1OCvhGK7Z9INNd25Yjxh?= =?us-ascii?Q?kNx52aATsgj6gLCx0/t04e/2OXboPVfPMifAxSUa9RW81gcwO5Rf4y94x0ma?= =?us-ascii?Q?5wqq8oihg42bQ/WM/A=3D?= X-Microsoft-Antispam-Message-Info: 05jcTj1yx+mZJP050hKEtV2QFbv4cOaiUDRGJJaYfg7TuBBvLDj5F0HketNEO1NeBcOciFMmD2Aa/5q0e0x61bbmY1zq34l2mDzsmuEx/d+TBeek6qqI0CFrt2pmdblzRLFr+w3N+FVPiSoV19RtVaP7TH/+yaQPxOsZ5OguoPgpOqnEisF9CnGbiHPuo2AW X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 6:ivrrZJ0AXIhaYBRMe0+rA4j9HVvIpbrgei+jOwtY86P7L6vLPCWcSFFbA/jMVtu5APpcnniHeYF+HPAqMXocnkB/ZurhM3b6IZU3tMUpiU37ibdsLDWswSLroFkh3HjIlg2MdX9L2yWQrLEPLKJjDOOgT53Adgl0mYSbtDtJemP+745goUrZULryEocJ+I0dArEUZJZk6h0ubOgPQOvf6vA9eD3+tSebQmqoyFW8KoL2T5ERXTLWZ16mdNJuwiyDwb+h8m5GD/rpLk1AHrsyuTl7du0xYmwIF5h1kGotGW4FGmM8mSkX1hZ17VaQ5xoI5Fx9FKj3y+X6VLAqPOeQfjs3FIBvJaGcf3lVzK1zOV1cE1AP2uc6V/JtKUVPbG/3PCwVAP1F4wZjT1Oj9n/3DO4NlpZcDSqa4CmpY1DwnEELRB4Iu0CRXMPafYysoOO9S5BBSFPzA2qmil9IPkO90A==; 5:w19bH/wWKsTHKUCzrrd5+5mD3R/xMg6tdA43zQnhEbns5FVOixLOz2Kpgs+OkDi0Va4JSBc8q5Bw/EqTjf7x2B+NARSIcB5CeBHKYElfU7d/+ONWLQ33BTpblxaLZZw02DKTfQLoUbuw8CU5VIhfU1vOtn35NmbRz0xr2lRZsjY=; 24:VIJCNIxeGPwaTLZCgWxi00ObNcJUcArbnVzMQv5eQkJ+grpPM6iUo+UHpR14njxXzURQnUiq95JjRu6YR0Xcy+6me2UkFPAWapWwLAcUYX8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 7:wT53hLfvl0tv/9liK25rGNkSmD/Wl6zifC+ViAH08yStuXbMFGkt9g+mnRBPFE+mWNRc1xiey6RoGskwS6L32+pAg2ZUeyQWsjcysUSGSqJpAPi3BqFbrh7d/1UX0qsvMJRTjtyWQTelO1OVNvJ42SQBga0Hz/RZZva0fHI5wC0wSI/VtO/FT32nCqkOA2qDdRY7MYGlledzd1GDAlUYwWn6aROZ8cFHwBGsu82UkKrILMdCdk6AfJHeKeEv4WxF; 20:Z4gYZIvk/SZnZSA79NxpBYdMvmkNT+lOWoav4sLwPo+NoUGOzDZRetcz2qMa8oLpvbsutNMb0OMMRVGWC9k+9yuleAT8b9bAYjRsVNOt2+tDaP+zRE3oSbLfeb7P29ouOOIlXLX5I260unfTYe6HvltJHZ+8BtnIpuVqXd/kan+/r3Q9PWUhu5dye3Igzj5T+6CnUSN7klrpeEmCccltp5lFGoZ5xSY1N/tydcOyaNVUPLgvuCq8394b6ruKqN2e X-MS-Office365-Filtering-Correlation-Id: dc2db44b-40fa-4bdb-2459-08d5ab928ce0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2018 16:27:05.1117 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc2db44b-40fa-4bdb-2459-08d5ab928ce0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2479 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.32.49 Subject: [Qemu-devel] [PATCH v7 6/9] 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 | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ target/i386/kvm.c | 29 ++++++++++++++++-- 2 files changed, 118 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 56d2f0b..1024b09 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 ? \ + (((CORES_IN_CMPLX - 1) * 2) + 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 - 1) << 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: */ =20 /* L1 data cache: */ @@ -4013,6 +4056,55 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, *edx =3D 0; } break; + case 0x8000001D: + *eax =3D 0; + switch (count) { + case 0: /* L1 dcache info */ + if (env->cache_info.valid && !cpu->legacy_cache) { + encode_cache_cpuid8000001d(&env->cache_info.l1d_cache, + cs->nr_threads, + eax, ebx, ecx, edx); + } else { + encode_cache_cpuid8000001d(&l1d_cache_amd, cs->nr_threads, + eax, ebx, ecx, edx); + } + break; + case 1: /* L1 icache info */ + if (env->cache_info.valid && !cpu->legacy_cache) { + encode_cache_cpuid8000001d(&env->cache_info.l1i_cache, + cs->nr_threads, + eax, ebx, ecx, edx); + } else { + encode_cache_cpuid8000001d(&l1i_cache_amd, + cs->nr_threads, + eax, ebx, ecx, edx); + } + break; + case 2: /* L2 cache info */ + if (env->cache_info.valid && !cpu->legacy_cache) { + encode_cache_cpuid8000001d(&env->cache_info.l2_cache, + cs->nr_threads, + eax, ebx, ecx, edx); + } else { + encode_cache_cpuid8000001d(&l2_cache_amd, cs->nr_threads, + eax, ebx, ecx, edx); + } + break; + case 3: /* L3 cache info */ + if (env->cache_info.valid && !cpu->legacy_cache) { + encode_cache_cpuid8000001d(&env->cache_info.l3_cache, + cs->nr_threads, + eax, ebx, ecx, edx); + } else { + encode_cache_cpuid8000001d(&l3_cache, 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 6c49954..6e66f9c 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.7.4