From patchwork Tue May 22 00:41:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Babu Moger X-Patchwork-Id: 10417161 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5618A6032B for ; Tue, 22 May 2018 00:41:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 46ACC28AF9 for ; Tue, 22 May 2018 00:41:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3B86D28AFF; Tue, 22 May 2018 00:41:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 87A1A28AF9 for ; Tue, 22 May 2018 00:41:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752230AbeEVAll (ORCPT ); Mon, 21 May 2018 20:41:41 -0400 Received: from mail-co1nam03on0042.outbound.protection.outlook.com ([104.47.40.42]:64128 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752136AbeEVAlg (ORCPT ); Mon, 21 May 2018 20:41:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2gTSEwXiZQon1+GG0wFBaG+W6CwsQWMHu51XtfgnqIE=; b=WA0hVk+MayPIMSDBRThFMg5H3oTjqGBSOn86s38vI06ZIGbyUJ7s8hvLvlm/TYZJXnA4uxhwda4d/e4Ai4XsdLKrLnACt0wQJLUfFoPUzW5SObg9fi/jLrcc/IgKmyuwTG0qiR/tO/97kJlA7uqFQ/oKt8RlnRJysPA/NsnH8e8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Babu.Moger@amd.com; Received: from linux-h3ml.amd.com (165.204.77.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.776.11; Tue, 22 May 2018 00:41:26 +0000 From: Babu Moger To: mst@redhat.com, marcel.apfelbaum@gmail.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, mtosatti@redhat.com Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, babu.moger@amd.com, kash@tripleback.net, geoff@hostfission.com Subject: [PATCH v10 4/5] i386: Enable TOPOEXT feature on AMD EPYC CPU Date: Mon, 21 May 2018 20:41:14 -0400 Message-Id: <1526949675-106737-5-git-send-email-babu.moger@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1526949675-106737-1-git-send-email-babu.moger@amd.com> References: <1526949675-106737-1-git-send-email-babu.moger@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: SN1PR12CA0071.namprd12.prod.outlook.com (2603:10b6:802:20::42) 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)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN1PR12MB2479; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 3:E5G9uFO8NFWv7UCvjpnecLzWuS0sSYtgj5p0zoFdoA67rU8VSE3SVwcdmpcy5aHvYVasdYXWEWp0FEkXjB8YLXmmmlAS9NqHnZgCSnHzz6nFMy7UJh2b4vRTn2VS1J2Y78At4cCAv5/PenjD8LXCm3FoAOSoOhRdrQVkoY59sF++197/Jwen3scRD5LLk6HQCLU7YsynZrGVdJTLJ582rfviFbQIPkmXVB+xZ8MRhaqxOJh6LMK/leZZU+TY4WHr; 25:Rutplw/Kr6nxBhCEaQI6N1b59SFtMLW0NZXwkzjScF8ooiA5yhwZIcNQaN6wPNYVZ3ERVZU6pHtFZL31ieZ+zfln80pAv07N5BmZYPZHA4pVcEymMM2XLjj8/gGpmEP9HH80T/WcWh5ppXLyqA5PyEqLvTkcNrGhQdsqMxPEgJAf4a8ylbBlIaHyaBBxUZMD5AytOsIfSGhAy+DidvdJqiOfAx8OEzTqYU8AMKwIISLJ+BKVbotIqwuar7iCPZ22gmZetA2Q/xWw+mYrolCv9KT032FbcZZOnwyWaGpeSMnBD9c5/0CCKW8y76jBKTh/Yu+pkJ1Gy1ZZ5DuHWVI7CA==; 31:mpmWKD+Z+OJyCoiJlmJnm0BDLA43qNZju3v37IiF3B7OXlVhAIfhL8DSMzfgafi/eX8zossvlRI5wvOtrwB1L3mfTq5a8ygT5jjS21GICUE8FfHwOVftzcX3OgVk5BjMy13Kek1v3bYRFnfESQlRGH4S3xCUnrgMqwcvVy+BMKOrm+jVTrEfeyX32UlYk+oRJKLOFIITaMsqL6VDaQBcIewm9fb2i5ccf3T4JQ29jlM= X-MS-TrafficTypeDiagnostic: SN1PR12MB2479: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 20:VuA52Fp3S3aJ4/7RJ3YdRY5RfOQKQonvM5A5bIWFQ+v1UyXhgqEmQDmoEj2RhinBJHiuEmC+mxv+EODqp/cUYw76eIJo+PrmZ0ivy/joXFrQ3WtETZdJ/f/oizXlCRYEJR9RmgV7ZCrwty6nosbv68YroBzeuhwqWyIvFuW0N5rpsj1/yNV8x53LS00q1nWnXMlDvB9/mPJtXVWkTadsRbeFEgxPk9sXaMRNC7ke62KrFKaMrBxMeKWUsu4E/Oe298t+dO3068qS0Rj0mMjHbnxSsQ8VOBUchtFUUzEIykDUMNRwafgu9Nnppd7f5fSjE64rCVeJxoCzyaRIMcmyuTO0Afbjat8Z7w3kX0EzCm1V71n7Mzvuu7Qh6g4BEBx7VBi1uUdwOoCvY+TzA/7T89C4VwSYUhIKo0BmnFfZ+XUYqbA006W8vUoDH2+PZ3b38D/7yDV0z6q/GoqW0XDH9yfhfFX9qD9sxFAEYXxoDwugoq6saxTsRKn6Du47SKwr; 4:c30HVR3FoSL5uUKZZTZCo1wjBz6n5FU4NpRGey2Bjitlk8A0DHVcaGLmirkHs+gh2xeQaeQtpj5K0EdrkKoYS3GxkiqS4GOwgN6ZtUiZSrQRg9hqJrKVT5JjWWp0buV1UP4WBrr8pU1HIbDyflQygSTXYofmCTwJz2vAljrfWRDIwy5nexbtxZYSx2bQcZ0tdhRL7pj/ZvzsyLYvsGRJ7JubcM9jELApqiH8msUUXEbRAZzug2pLbcEoDcnsdlzi0R7KvhJpiyR/axP/fLBd8cKysQGnVa4EJ07cNgxZA+ZRHmToYFhKoWMGanM0YOjL 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)(8121501046)(5005006)(3231254)(944501410)(52105095)(93006095)(93001095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:SN1PR12MB2479; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB2479; X-Forefront-PRVS: 0680FADD48 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(346002)(39860400002)(376002)(39380400002)(199004)(189003)(16586007)(66066001)(25786009)(6666003)(36756003)(316002)(305945005)(48376002)(2616005)(486006)(3846002)(4720700003)(68736007)(956004)(47776003)(7736002)(53936002)(44832011)(50466002)(2906002)(6116002)(446003)(476003)(11346002)(8676002)(26005)(81166006)(8936002)(106356001)(7416002)(81156014)(386003)(105586002)(86362001)(97736004)(72206003)(5660300001)(478600001)(7696005)(186003)(39060400002)(50226002)(51416003)(59450400001)(53416004)(6486002)(16526019)(52116002)(76176011)(4326008)(575784001)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB2479; H:linux-h3ml.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR12MB2479; 23:R5XgvGwKTFXaGfB+PPlTitdG7YZNLqT/cfFikQVBW?= =?us-ascii?Q?d9qE1S+wYiKmahWeNDnl0PFYbafhsJzRAw3yfnyfKLdIQ4WD3jBN+B5IEkJy?= =?us-ascii?Q?LTo/11gIBil4xI2imab8BT3sSjN19S/QZUQ+3s8T6W5RZS49MnunBM7HOAA7?= =?us-ascii?Q?jd3UvkiaiV1SaV6A75O9sDZb3tBdnUopMJfxwg6vawMPExgMCbEw+xw4/8oj?= =?us-ascii?Q?ESYCwfYNmjwcGwY8kBa2YQ4RIJk8Cj6uAFTIjanUK4qhlhFCINxfxMT5yILV?= =?us-ascii?Q?CCx+tRLaGnS3ARXyERG1mQCKd9DlcqBq8NrZI4Q7AfxEtjaL4wQoOHIfwBYo?= =?us-ascii?Q?XsNxKZDiv4n1Uo1GvTqbKxQQP0LhA7Z0YBTDdK7sSnsLLrvkp8V7997jFNMR?= =?us-ascii?Q?k2eKTtOa7jBLkcN+hM9PFELFMrGumqqGn44MMOzwes7vMAQ2WLx3HNUce/oK?= =?us-ascii?Q?xKSMdO6uleFc95k1mV1FgX1LG1y6ADl3GytSCXonVzRnoTbAcKbAoIg99cX/?= =?us-ascii?Q?JG8pfldwp/OQrdxNoYk3sJZNcrqZWv7awKkGGpUuehckcbUpbcuPeYefcIeY?= =?us-ascii?Q?qXx4K3gEbTM7L8nA7AS3GoUqTZuP8pzX3pkTPlWNgwq2C1p/E0L7bAcFwpN9?= =?us-ascii?Q?W7jzrQMi97fY8y+VkDUrwbwjLBPIhCm3s7xbv4MiOuEHbhmyS5ErM4Bhm7Sa?= =?us-ascii?Q?a41+ScPW3DKDVgxBeRVG2VSH3fllgPpoBkJHLJceQ+H4MGrE4WaSz6uSK10k?= =?us-ascii?Q?Kcc4n+8maMMFobIOH4+NI7RYvjtc9f6w+dLeCY3T3t2sug/h36d6JcRADkOv?= =?us-ascii?Q?htpRxnM0EoztolMpeTxmoxOQthSfZuDGudzg4AAPh7nqpXzJLeFJm8VAuyUM?= =?us-ascii?Q?pQaIbsdxeOALM/Hyx+9/m2fYtGcLxdPql4hIDVDtTfDEcNmSFazeaJSR4JIX?= =?us-ascii?Q?vu/qbNNB1VPrKCqVLjhtJD7JJ8Vbo1c40pBmH41n+yyciNDTtxhcbVO9n0c5?= =?us-ascii?Q?8nxaHR3HzZB3Mh0GZEMrUm4eyMqmlWuKCRNtizHmlYh1GTIn4PfkwRTF10RQ?= =?us-ascii?Q?b+8SG1q7CcWuG24A5C94QU/AoKNusSpjQatcyYmAIXbZd5aNdkvpgJNM+NUN?= =?us-ascii?Q?yO+kYViPh9lycKnwBs2XIWh2XJLZWPiR8+WccHO3j100mtIfR9kgs4RIf5r5?= =?us-ascii?Q?Qc/U1kl/XkqjdwgdLzs7CX6kZqPojig3g1ZWF6ZJI5Hu88m0NY8MQLeK+y2H?= =?us-ascii?Q?C6WZVqms/p0pfCuLkJXSli5RtEW6RfX5SYQIvw1nPsIzeTdVhMahnRUvn+c0?= =?us-ascii?Q?VcUhaJ3gBFwh8OgpHwVaHDsCKwIhRuYDOri5jRx74nKJDoonIqWIarv9yZ7e?= =?us-ascii?Q?FUxYQ=3D=3D?= X-Microsoft-Antispam-Message-Info: nEFL2n3JdpIk2BPEx9CBM9ldqIugVOsFxj6R26R+LBRBnTuGMnIUQQZqQ3qO9GgH2WpqUtHEmRTV69g/9NHaS+WhebYi6clpndm2quYdZwnjM11ZJ/eIiddYnnsgEpGB304OoF7nEZU1Vfe74Wtf8gQi6B2pIyLEHyQelgpyyaXTTtfUhlucnpzu3tWiv9u5 X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 6:ywmMghCyy/XuRUlupCFxHafwo/PWh98/MfhZ7jLZTALuNqbUVSUQk6Y0YFwJatwkc9dvAATAB3X0N9JgQpYPL54sPRskWmc1fh8F04FzuTsU2rhkAxvbD7k3Hk/DNvbmrKqkFMLqzCzFrBg+0UhwfyGkdRzMd6GlyfX9YGBJLHrRXZMjq70Ua4m6kOfhiLQahg7tgZkuwd/FfCy7EqZ2IKJrdNR2BV4vMGO83z0igZon4w8hLH/IQii4E8vt7b6pHV41LdnGutf22/78h7SmtWUTSZ11re4GfKla/DXNxGxOwdhcB+F4yVJoUlvjoA4fuRZIKgP3VXjCwMEA5G/f5eX6QYaIAyLocfAAl/4MTtUYHFHQbAWg2A1sroFqHD3syRoUFEy1CdrK/fGmxHpv6Y0+3fzPKt1E4BMwKxdxqYqzu/o6S2c2k/eXdrBT8azFWd/nXOl/Swfqr3S+lxk+mQ==; 5:zDUSTpfayMDpCW1zzJ37lehetpetO9+8jiA4a02sTEgkY76AM5fqKAJEkfxl3Q5nOO6eSH/vKJaQRLPgusEM7v1vt6P10SRoHRFPoVbLxZ8sh1mniU3epfZWTZsTLz4n3eQypdPzB9g6eXTngKC+332884Yu1gXge/FcOUA1/O4=; 24:IWRRpjXopdGxV0aSX6AqL/G3h5AfoIOYV5r2RFvn7hpc5Ym3vyD8RR+k/9QxghokqiprZNxN1RQ2R3J8WRsGppSU8RrrVZTIfUTpAk6uVzg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB2479; 7:QcY4wre5YBcSJg7dQV8EcSF5LI4fXPfntxcpBJ9P1WTz7l/6fiiVODXIONJ92XzfWpeIbRgrLXcKTygt8obLe4iXIVnCXN7nzsZ+abYKyPvblgtj4/KA8vD7aUeJMStcu30syWjNNcEyekTWlCxB/tLPmA06srpn9eFQEeA1orlRELh9MwzO5G6+L05gACC6Cot4rHj25Qdzco+MGDZ4eRbtnQ17AEW7Ma/IgQUf444oMxrdHyVQdxBR0W/KlUYT; 20:XUUzkk6wydGl8ySVd4m+8OOJ2zxvYOFGqavtdKwGYhVknrWB2QLDb8wGhWEh56bwH3AblS8hwj8gL2MUo1R1SjHMomB/Zv/ipi8EKeW3cXaJkdEYlm5c//ykiljCy3CiubHOZTA5WlJM6RBIXc0DHNaWHfuG2jBAlMqrfDclh5e5n+3tp4UTQqgYHOACoqmi+jGj96DGUYJO5x2Gc106g3nCuvOScYD4itRZriT55IOf701cRg4ZHag1yizTj9cY X-MS-Office365-Filtering-Correlation-Id: 0b90e968-85e9-43eb-4918-08d5bf7cc075 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2018 00:41:26.5273 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b90e968-85e9-43eb-4918-08d5bf7cc075 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2479 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Enable TOPOEXT feature on EPYC CPU. This is required to support hyperthreading on VM guests. Also extend xlevel to 0x8000001E. Disable TOPOEXT feature for legacy machines and also disable TOPOEXT feature if the config cannot be supported. Signed-off-by: Babu Moger --- include/hw/i386/pc.h | 4 ++++ target/i386/cpu.c | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index a0c269f..9c8db3d 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -302,6 +302,10 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *); .driver = TYPE_X86_CPU,\ .property = "legacy-cache",\ .value = "on",\ + },{\ + .driver = "EPYC-" TYPE_X86_CPU,\ + .property = "topoext",\ + .value = "off",\ }, #define PC_COMPAT_2_11 \ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index d9ccaad..d20b305 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -496,6 +496,20 @@ static void encode_topo_cpuid8000001e(CPUState *cs, X86CPU *cpu, } /* + * Check if we can support this topology + * Fail if number of cores are beyond the supported config + * or nr_threads is more than 2 + */ +static int verify_topology(int nr_cores, int nr_threads) +{ + if ((nr_cores > (MAX_CORES_IN_NODE * MAX_NODES_EPYC)) || + (nr_threads > 2)) { + return 0; + } + return 1; +} + +/* * 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 @@ -2541,7 +2555,8 @@ static X86CPUDefinition builtin_x86_defs[] = { .features[FEAT_8000_0001_ECX] = CPUID_EXT3_OSVW | CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A | CPUID_EXT3_ABM | - CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM, + CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM | + CPUID_EXT3_TOPOEXT, .features[FEAT_7_0_EBX] = CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_RDSEED | @@ -2586,7 +2601,8 @@ static X86CPUDefinition builtin_x86_defs[] = { .features[FEAT_8000_0001_ECX] = CPUID_EXT3_OSVW | CPUID_EXT3_3DNOWPREFETCH | CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A | CPUID_EXT3_ABM | - CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM, + CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM | + CPUID_EXT3_TOPOEXT, .features[FEAT_8000_0008_EBX] = CPUID_8000_0008_EBX_IBPB, .features[FEAT_7_0_EBX] = @@ -4166,6 +4182,12 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, break; case 0x8000001D: *eax = 0; + /* Check if we can support this topology */ + if (!verify_topology(cs->nr_cores, cs->nr_threads)) { + /* Disable topology extention */ + env->features[FEAT_8000_0001_ECX] &= !CPUID_EXT3_TOPOEXT; + break; + } switch (count) { case 0: /* L1 dcache info */ encode_cache_cpuid8000001d(env->cache_info_amd.l1d_cache, cs, @@ -4190,6 +4212,12 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, break; case 0x8000001E: assert(cpu->core_id <= 255); + /* Check if we can support this topology */ + if (!verify_topology(cs->nr_cores, cs->nr_threads)) { + /* Disable topology extention */ + env->features[FEAT_8000_0001_ECX] &= !CPUID_EXT3_TOPOEXT; + break; + } encode_topo_cpuid8000001e(cs, cpu, eax, ebx, ecx, edx); break; @@ -4654,6 +4682,11 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A); } + /* TOPOEXT feature requires 0x8000001E */ + if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_TOPOEXT) { + x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001E); + } + /* SEV requires CPUID[0x8000001F] */ if (sev_enabled()) { x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000001F);