From nobody Fri Mar 29 02:02:57 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; dkim=fail spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1495722774650890.7330705997458; Thu, 25 May 2017 07:32:54 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 16EEA21AE3CC7; Thu, 25 May 2017 07:32:50 -0700 (PDT) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on061e.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe40::61e]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5F72021AE3CC0 for ; Thu, 25 May 2017 07:32:48 -0700 (PDT) Received: from leduran-Precision-WorkStation-T5400.amd.com (165.204.77.1) by CY4PR12MB1240.namprd12.prod.outlook.com (10.168.167.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14; Thu, 25 May 2017 14:32:46 +0000 X-Original-To: edk2-devel@lists.01.org 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=QUySS4bbq/Ealslwb9TaSy5EMJ1U1I16UMfTFsCrfW0=; b=u9iTa32Ik8CrvJlr/lqsYVxsipdN55vTJtI0IALJDNGXDGU2nrkH11AJ6PAoIASblHJmDQORh5fgsWCLnozMNHUHBH6OOcvG9gQpt1rGfUffz3OizcPHjp9CKjDU715ge1D0wmkbAqfWTVb9d555hE2X2tV1otd2hpdETslgvCY= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=amd.com; From: Leo Duran To: Date: Thu, 25 May 2017 09:32:31 -0500 Message-ID: <1495722752-17445-2-git-send-email-leo.duran@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495722752-17445-1-git-send-email-leo.duran@amd.com> References: <1495722752-17445-1-git-send-email-leo.duran@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CO2PR05CA0073.namprd05.prod.outlook.com (10.166.88.169) To CY4PR12MB1240.namprd12.prod.outlook.com (10.168.167.15) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PR12MB1240: X-MS-Office365-Filtering-Correlation-Id: f84b7030-5ebd-435c-bc77-08d4a37aea10 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(201703131423075)(201703031133081); SRVR:CY4PR12MB1240; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 3:pZGEs8ZCKWMyzk2cmOwxVOu7zOY/CdMGA3fCdOOYRB3uw1jNZ83I11SI7jTRqBpSn7Lygs1tO2y8JDzbnNiMW8o6wIqvPnJMCeqRjzRpfeV0kcsJEet3zTw2lOxEH6f/Jsm7K6wpm6fDIt+vZa8n0RY9kbxSEK7i1Rr5Z9rneD7k/6EMecOq1v5qlfnEeUR0pCyFB/Khb9xcNf9ACFkBw2ZAuSKCX+dM5ESxaihym6tGkDBJgbaRGLPntvsugc0KZctl5o5sJVK2eJyK72MPWVOD+5PRKVTcCXeYYf+OVBrZep9pdi1mZG+7p4B68fkYEjeYomh4QiVmXkxBEI0+B5NHNF6ItlEomG1toYn9+08=; 25:pFA9oeJv67FJ0OO/ZI3KDilzC9mwZ57zE8sr6r8fd9n6gAl8IihQWykF5TymPe5lXPUcquW0sdu23Y7gyUXjl/YnVTe3EgDxP+18Np+CZ8qxwjkDhTU6ZWAm6NW8eMHZVPx+4NPn1W+A5pCFCATKwvw+6Tb2AS+uK36Yso6HJ0Rau/BHKwSBxBFRKpefhLZqfqNyOnrWdCffw0BgMmZRZvo4HnTpX0c0C7ayBgtPQxlURnwThyskSQ4hz0dIkI+fEEkSmOuqfGzCf0rNLMOgoBdvJhxPR+4Je0NqbTclJVhL+9ewLfIC196kM7ogUnX+fFQHv0UOlzxh2iic8zHuuK+xohqmbQ/gyH/kYM65mohNzA47Egfn0lgriCuLQE4KKaPAVeOp8MqLHS8EZo+doBdsEl0AzyjZhCWk2S6rLJU1w6uTi+XB152hgForqAyDKsN7WvBkQH1NccsdE9hLAJlnJcBNOm52ORPNu9d1DpE= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 31:ajxrwVhWQ8lSxK9s2iQBvnRgjqVjU14vxTC+88q5CVCYTwWhFywoONQUfweuLINl80N1nQwO0Ky/c+4AUYvw1EkBBBe7WtuiojTEumFkSLfmRN2+0iRNkei4w3h0VU6TiAKxyo+zASu/CopFYlQBaIaWrmu0v4NO82Vh3JMwKAr16onPp1NngOwkN6dCdJeUa6U624A3NN6cCEeEoGZKk9sz/SR/74nCeAbWBUWz7VY=; 20:vEzSOkCVOnCmbGxnNIT4tN82lcLRFZp63rzaDVVMQX08ZtbsLno3SWdUuEm+c7IeJbhEl5KHAB77dSUZw309tAy5CQxMc5g1O5zFBt9K/+rDJicgX8PI1aFmnqj/b1oVk3aNJ9JBF87ihWBOWXAlQkr5XiHX6YIAUWWPFezZijhIvoRoOHekf5Hd7CG8SXh+nVaJDXbZZUXX5Lua2sRvtKnffzczP6poEz39KtUE4XEu6acnx2ztCd0CTsqeHLxP/QeofUTgH70BGf1CmTPuNSso415TT7dO7Up6KLCkPBurJK/OTz34hJS8RMoIFsFDPoHrvqiWhlvvhh6R3TglAwjmmXzNrBcGjDLMyqefiYxcGAvgdMb/iwyoKbYjj1EbjIdtkXiNgqXkkFSNehvxoVrOCYWbUb3O96mjAkj749FTLaGVFWwOVmblSDm/XwxweXPTu8txQ0LduHz6DMm6zMCYOtEQRK7xMU5wVJAAmkO/NomjoQKS2IjNBiYyQbec X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123562025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148); SRVR:CY4PR12MB1240; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1240; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 4:EpBuqEBRbmfakoRMbImjTz93Sr0zl7g5GbLq0ghd+Z9+RyZ6juGhJj4fHVXOc066i+fHyv+ffOfsZYwl8qfJxxP9XBV91LQN6zGMgR4F9hnZWQqudzn+jka7fehFnOR7iijRCPbPdD2B3OyXAUJUyowNEU/EZQq1RfFgtC/DbWuv6wCYxU5PZWdGeq0oF6YcYw1eRA2LmDlhJcI2ieTnOohztXgWaoIy0a4SwBJLixMPyk+LL48q2KiDvtMKSvZ4x8F+Sx1zCIwmD0fgb3vy5wXe51CagAMH5a8XUwaClBfgcVy/jkW5c0qNWw2tJVwEByScVggPsqU8k28vNxk6s2wu/TQNP/vAnthhjKF1Nma9qQ42VgQtjFFMcJY/7rn7bncdusA8kPDi5CW6/I17jOMUNlY520DOX9tNUpFj73PjEqyCDu2JRN7170nty+ZJqrqHj6iPUY75BbpViZ/A+wqAlO99jOZM2kCUx+OG3/VuJ5kzP1X70Yb5u/DF/RXaR/LTPDjapZKiRVqBkSd0YxqsL5Qpvy8nIgzvty6BiJuYgxsZEkaUJ06y5Mxkxhrw1N6RZn6SdXrZRfwdKGqq06nZwRA07N4I/YajXnJ9SwI8cq29e8fsKJwevGJ8Mc3WKPiTqpYH0eodmUq/CQtwtZfQkiR1i2dg7EG70JMGaWH7Fp+oMl3H6dvy8RneEfd/E+0L7R6lCZZeL1rckpMp+g8podlS/dcgst03HVbew3wyCk9lAwIdIN5WUvCIygpoAcUQd9quZuHGzidIUB/DSIfN7fkIVzB64MgFeTk1TTFeMLGoHhBBmxub+PwzVx1rk9mOCGaaCYoiM7S2F+59cyK4O8chIQJdipYbiIkVwOqJA675dIChQ6F3/QTGPlNU X-Forefront-PRVS: 0318501FAE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6009001)(39860400002)(39850400002)(39400400002)(39450400003)(39840400002)(39410400002)(48376002)(2906002)(478600001)(50466002)(47776003)(5660300001)(36756003)(2351001)(3846002)(86362001)(54906002)(53936002)(6116002)(6486002)(38730400002)(7736002)(305945005)(4326008)(33646002)(8676002)(25786009)(53416004)(50226002)(5003940100001)(6666003)(189998001)(2950100002)(42186005)(6916009)(66066001)(81166006)(76176999)(50986999)(110136004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1240; H:leduran-Precision-WorkStation-T5400.amd.com; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR12MB1240; 23:Egqbt1dGGLYGHVo4iKbSWbNiqR62+GDGNCN5E9TFV?= =?us-ascii?Q?xonCYFYiCTqPSLhrF5gAWZ6+eahGiGaFl4RVgStL65xk2nWSHOnCeLp+MHLD?= =?us-ascii?Q?1ccQzIltzI7ayxxasp7TRZ9YtHRdwRCOU9Uv9CI7ZPYvVpJgDYk22Q+hOBsn?= =?us-ascii?Q?nWfA4Mi7f0QigfIPOkRSK8UW6XGIrCWpXR1Y6mPm+NkcOe4TRvYF/VyRg4SU?= =?us-ascii?Q?1YNdftpyvFZSSC4CQnFxYOxl12BD0Yxk6S7gepHhDo/gVK+BXOwRzAjfABsJ?= =?us-ascii?Q?rqaNuHOAqtfo7oSulHPbAFcaBXMH9tAvkWD6U4cMOSbcpmekQ+LMbkyH9/k1?= =?us-ascii?Q?XswCqRBeCoDq/zpLu1D/XwHP9Um9vIO30o+ccPSMgNFx96K89QCsCVZSj9n3?= =?us-ascii?Q?pL4pJcoBT0zHfSW5XhG4s4Uap8gYFIMZTo7I+4vWEvHdsy4aM1iVpDwLW0fK?= =?us-ascii?Q?lDNyjWKMNJ0uLcXddxwWvBsP095cza3XqjkJiDCTI2zzBSNJ73cmhSjmaWrx?= =?us-ascii?Q?pg7G6aIrZwxES0x+EYmaRROESW+UCcgH6fYYaD6GL5bMA40eMSfP54X3xboK?= =?us-ascii?Q?HTOFJxBAh56DLOwzajzm3sYWjTUe35ol3A1RA4RRmVj9sjKW9k7vr+78lNzZ?= =?us-ascii?Q?DTg5zqCFIdItHikfe4DHXLy0/m1qOGu+ic8/qzQ2S1bo9wWvky5kKuQSWPXp?= =?us-ascii?Q?kkMXfrf/x0zE7LhTpw3WS6NTHmxtZsx/+NhXiE2g3vW63Y7Epc+7T3c1Rhs8?= =?us-ascii?Q?jsTrETWXKm8Ioh4wXn6nePT0bGYq0+H3t8J6Bzmp0vnrBkVvWosax+Zse9Lc?= =?us-ascii?Q?SEEFG+DvwuL7MlKDWwehLhEemqeYHSRWgE9KqLLew/r9BqKhdmDCNnJBGUhM?= =?us-ascii?Q?uf0YwBLlJFVULq1j4CXtO34k7Y+Gau2yG9IpOqoS4t0FDiV5eLgc3/aReGv3?= =?us-ascii?Q?WKJj0tIu+Fz3xwGQ0EXgx2T3kqTrsG762Ja/lSv/UMZFzBvknox3EZbEu7ox?= =?us-ascii?Q?66i5o0Wt+HwqVXzRjyoW7QPHtNiBlL9/jJ7ZJpUNCEL9//m5hSRJyuJy3jUO?= =?us-ascii?Q?YIR2WhKedcZPc6rV6PLZwemBd4qWNwBhAScJXg95GE9KH/D1s0OXa7gLFrpv?= =?us-ascii?Q?sNOV8I3/SNVbo1QoqOA++qZSsbWJPf8wUqt2Q4Q8KWws3nCQK0clK4GDFjcZ?= =?us-ascii?Q?BRmcvrjZgwu53I=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 6:kRzK+id42s2ZU0qTf7Trxe5q7RAWSYmJmrSazlUxUAtKkzNOgnfK0OT84j9BjSaEfYP3G4stJuxHkxqreXLiFQscsw+XvI+bH5kPUONvE6kmPQlavS+324rBF66sPAdniBcn/aPe1k7yEA183LWpzhxu187yS4OKRz5DSWe4bU22Sqgi4PxcDYcEVEj9oYYq36Cr3O98+AeJKoyUTizANRWL2NwOeubAQ+MW1Sp93Dbz92TV7Gj/obpocS0UeOXVpEEX9Q0OvMcsl4UgBmV7mctkKk1X5EqEEQcAT1ZiU5LDEzxX0TpM8SWglBohBDimwVvoyNo7iol99Y6yauHU3O2gbuH48Ebcc9OWZd39X061VWxFKMrVBlQF3/1QdCyIAG3ZboF+RUtUDT7qh7junKDS99VZNDja9H/07Gm+D0dQyX7kZajP4/ZMfsxq0qggwLrexD0SyeZiNxbeY7jOMtc3YcEORITEnWkfhXLwx1n3TKzrdHonYnXX4joNSSKUKUF/rg1qh4N7iK9e9kGiKVdN3KaLSADzyPGTcvskDjY=; 5:rDYkdSVzAQ/2nVWJK02EcNv/S1r0V3rj1Shx5nw8EvyfbOx+Ds4C63uDQ1fAoeecwxx5lJW/cEyNJNkh0QgK8F7u2fpqYp8xjBGfUpFPJJMtASRIVPksRql5b9hszAcavfNNG72lDhog5FoNZJJR8k/PqSZDUYo4wLVF6x5GP50=; 24:RODpJd2wklmCS40qeFW5+TajBhwpH3GBo5T5lHf+9DXRB3RJp9u2y68NGTFRcLitepbKxTzUwClHpjhGi1rTKIlnZNYz67ZZH98u9D982ls= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 7:nTAUjLKEphUuDbeOWV8qqFPKgjePMApMZNrbY3W/n2N+ZLLTlxu/mKyACWLMrC8xEhDP8bV7llcr3KTqLMsKIc/TSCqMQIO07tIDjERd78qxl8YiT9y2+VXlMXgPX0tofnIHrv37f6DBlqBw3SRqmgVOd4WnZvHbJIZHO+enc3LmkWu9YSuSxspkF7qFRFmW+GQ6/9/y1mS+M5lBz8dCFfjo8vNnBynjiwyRt+pmwoBI/qoMAd9LW37qsimiIWyjLYseG+j3tF9NXOunjwldIh5HIbabt1HwDD9BkwIhPoOcKCF1G3syUPtc5PV6zZ0FY8Al4nVQKrRMXoC5CTkfKA==; 20:DMzRRRlzUWrAs/CKywfZVHRT1Iv6C/rXIrtzcs7kbTjLi9SIEPxodJf9EUwnLOBJvFVd9fFT3Awi9NaHK9RwJF2dmZleGMuamiwww7/Gi+rlAim8PxIsi4g+dJVZzIB6O2s6RIFJ15ZtCJWbR0EtYiKiWxCDiEaYO6L+L3XAQGV8QooCshbw+PXI0k6vaWxT8eZU2L3Nxda3s9C6cLrQBoRNF8s+BNhOoaSKMt1SOXjfqEoPOnFgbh+/fE05bGKo X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2017 14:32:46.8440 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1240 Subject: [edk2] [PATCH v2 1/2] UefiCpuPkg: Add CPUID definitions for AMD. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jordan Justen , Leo Duran , Jeff Fan , Liming Gao Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Cc: Jordan Justen Cc: Jeff Fan Cc: Liming Gao Cc: Brijesh Singh Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leo Duran --- UefiCpuPkg/Include/Register/Amd/Cpuid.h | 265 ++++++++++++++++++++++++++++= ++-- 1 file changed, 256 insertions(+), 9 deletions(-) diff --git a/UefiCpuPkg/Include/Register/Amd/Cpuid.h b/UefiCpuPkg/Include/R= egister/Amd/Cpuid.h index 74ffb95..4a26bf7 100644 --- a/UefiCpuPkg/Include/Register/Amd/Cpuid.h +++ b/UefiCpuPkg/Include/Register/Amd/Cpuid.h @@ -7,6 +7,7 @@ not provided for that register. =20 Copyright (c) 2017, Advanced Micro Devices. All rights reserved.
+ This program and the accompanying materials are licensed and made availa= ble under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -24,8 +25,253 @@ #define __AMD_CPUID_H__ =20 /** + CPUID Extended Processor Signature and Feature Bits =20 - Memory Encryption Information + @param EAX CPUID_EXTENDED_CPU_SIG (0x80000001) + + @retval EAX CPUID_EXTENDED_CPU_SIG. + @retval EBX Reserved. + @retval ECX Extended Processor Signature and Feature Bits information + described by the type CPUID_AMD_EXTENDED_CPU_SIG_ECX. + @retval EDX Extended Processor Signature and Feature Bits information + described by the type CPUID_EXTENDED_CPU_SIG_EDX. + + Example usage + @code + UINT32 Eax; + CPUID_AMD_EXTENDED_CPU_SIG_ECX Ecx; + CPUID_EXTENDED_CPU_SIG_EDX Edx; + + AsmCpuid (CPUID_EXTENDED_CPU_SIG, &Eax, NULL, &Ecx.Uint32, &Edx.Uint32); + @endcode +**/ + +/** + CPUID AMD Extended Processor Signature and Feature Bits ECX for CPUID le= af + #CPUID_EXTENDED_CPU_SIG. +**/ +typedef union { + /// + /// Individual bit fields + /// + struct { + /// + /// [Bit 0] LAHF/SAHF available in 64-bit mode. + /// + UINT32 LAHF_SAHF:1; + /// + /// [Bit 1] Core multi-processing legacy mode. + /// + UINT32 CmpLegacy:1; + /// + /// [Bit 2] Secure Virtual Mode feature. + /// + UINT32 SVM:1; + /// + /// [Bit 3] Extended APIC register space. + /// + UINT32 ExtApicSpace:1; + /// + /// [Bit 4] LOCK MOV CR0 means MOV CR8. + /// + UINT32 AltMovCr8:1; + /// + /// [Bit 5] LZCNT instruction support. + /// + UINT32 LZCNT:1; + /// + /// [Bit 6] SSE4A instruction support. + /// + UINT32 SSE4A:1; + /// + /// [Bit 7] Misaligned SSE Mode. + /// + UINT32 MisAlignSse:1; + /// + /// [Bit 8] ThreeDNow Prefetch instructions. + /// + UINT32 PREFETCHW:1; + /// + /// [Bit 9] OS Visible Work-around support. + /// + UINT32 OSVW:1; + /// + /// [Bit 10] Instruction Based Sampling. + /// + UINT32 IBS:1; + /// + /// [Bit 11] Extened Operation Support. + /// + UINT32 XOP:1; + /// + /// [Bit 12] SKINIT and STGI support. + /// + UINT32 SKINIT:1; + /// + /// [Bit 13] Watchdog Timer support. + /// + UINT32 WDT:1; + /// + /// [Bit 14] Reserved. + /// + UINT32 Reserved1:1; + /// + /// [Bit 15] Lightweight Profiling support. + /// + UINT32 LWP:1; + /// + /// [Bit 16] 4-Operand FMA instruction support. + /// + UINT32 FMA4:1; + /// + /// [Bit 17] Translation Cache Extension. + /// + UINT32 TCE:1; + /// + /// [Bit 21:18] Reserved. + /// + UINT32 Reserved2:4; + /// + /// [Bit 22] Topology Extensions support. + /// + UINT32 TopologyExtensions:1; + /// + /// [Bit 23] Core Performance Counter Extensions. + /// + UINT32 PerfCtrExtCore:1; + /// + /// [Bit 25:24] Reserved. + /// + UINT32 Reserved3:2; + /// + /// [Bit 26] Data Breakpoint Extension. + /// + UINT32 DataBreakpointExtension:1; + /// + /// [Bit 27] Performance Time-Stamp Counter. + /// + UINT32 PerfTsc:1; + /// + /// [Bit 28] L3 Performance Counter Extensions. + /// + UINT32 PerfCtrExtL3:1; + /// + /// [Bit 29] MWAITX and MONITORX capability. + /// + UINT32 MwaitExtended:1; + /// + /// [Bit 31:30] Reserved. + /// + UINT32 Reserved4:2; + } Bits; + /// + /// All bit fields as a 32-bit value + /// + UINT32 Uint32; +} CPUID_AMD_EXTENDED_CPU_SIG_ECX; + + +/** + CPUID AMD Processor Topology + + @param EAX CPUID_AMD_PROCESSOR_TOPOLOGY (0x8000001E) + + @retval EAX Extended APIC ID. + @retval EBX Core Indentifiers. + @retval ECX Node Indentifiers. + @retval EDX Reserved. + + Example usage + @code + UINT32 Eax; + UINT32 Ebx; + UINT32 Ecx; + UINT32 Edx; + + AsmCpuid (CPUID_AMD_PROCESSOR_TOPOLOGY, &Eax, &Ebx, &Ecx, &Edx); + @endcode +**/ +#define CPUID_AMD_PROCESSOR_TOPOLOGY 0x8000001E + +/** + CPUID AMD Processor Topology support information EAX for CPUID leaf + #CPUID_AMD_PROCESSOR_TOPOLOGY. +**/ +typedef union { + /// + /// Individual bit fields + /// + struct { + /// + /// [Bit 31:0] Extended APIC Id. + /// + UINT32 ExtendedApicId; + } Bits; + /// + /// All bit fields as a 32-bit value + /// + UINT32 Uint32; +} CPUID_AMD_PROCESSOR_TOPOLOGY_EAX; + +/** + CPUID AMD Processor Topology support information EBX for CPUID leaf + #CPUID_AMD_PROCESSOR_TOPOLOGY. +**/ +typedef union { + /// + /// Individual bit fields + /// + struct { + /// + /// [Bits 7:0] Core Id. + /// + UINT32 CoreId:8; + /// + /// [Bits 15:8] Threads per core. + /// + UINT32 ThreadsPerCore:8; + /// + /// [Bit 31:16] Reserved. + /// + UINT32 Reserved:16; + } Bits; + /// + /// All bit fields as a 32-bit value + /// + UINT32 Uint32; +} CPUID_AMD_PROCESSOR_TOPOLOGY_EBX; + +/** + CPUID AMD Processor Topology support information ECX for CPUID leaf + #CPUID_AMD_PROCESSOR_TOPOLOGY. +**/ +typedef union { + /// + /// Individual bit fields + /// + struct { + /// + /// [Bits 7:0] Node Id. + /// + UINT32 NodeId:8; + /// + /// [Bits 10:8] Nodes per processor. + /// + UINT32 NodesPerProcessor:3; + /// + /// [Bit 31:11] Reserved. + /// + UINT32 Reserved:21; + } Bits; + /// + /// All bit fields as a 32-bit value + /// + UINT32 Uint32; +} CPUID_AMD_PROCESSOR_TOPOLOGY_ECX; + + +/** + CPUID Memory Encryption Information =20 @param EAX CPUID_MEMORY_ENCRYPTION_INFO (0x8000001F) =20 @@ -33,8 +279,8 @@ @retval EBX If memory encryption feature is present then return the page table bit number used to enable memory encryption= support and reducing of physical address space in bits. - @retval ECX Returns number of encrypted guest supported simultaneosuly. - @retval EDX Returns minimum SEV enabled and SEV disbled ASID.. + @retval ECX Returns number of encrypted guest supported simultaneously. + @retval EDX Returns minimum SEV enabled and SEV disabled ASID. =20 Example usage @code @@ -79,7 +325,7 @@ typedef union { UINT32 SevEsBit:1; =20 /// - /// [Bit 4:31] Reserved + /// [Bit 31:4] Reserved /// UINT32 ReservedBits:28; } Bits; @@ -99,17 +345,18 @@ typedef union { /// struct { /// - /// [Bit 0:5] Page table bit number used to enable memory encryption + /// [Bit 5:0] Page table bit number used to enable memory encryption /// UINT32 PtePosBits:6; =20 /// - /// [Bit 6:11] Reduction of system physical address space bits when me= mory encryption is enabled + /// [Bit 11:6] Reduction of system physical address space bits when + /// memory encryption is enabled /// UINT32 ReducedPhysBits:5; =20 /// - /// [Bit 12:31] Reserved + /// [Bit 31:12] Reserved /// UINT32 ReservedBits:21; } Bits; @@ -129,7 +376,7 @@ typedef union { /// struct { /// - /// [Bit 0:31] Number of encrypted guest supported simultaneously + /// [Bit 31:0] Number of encrypted guest supported simultaneously /// UINT32 NumGuests; } Bits; @@ -149,7 +396,7 @@ typedef union { /// struct { /// - /// [Bit 0:31] Minimum SEV enabled, SEV-ES disabled ASID + /// [Bit 31:0] Minimum SEV enabled, SEV-ES disabled ASID /// UINT32 MinAsid; } Bits; --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Fri Mar 29 02:02:57 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; dkim=fail spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1495722776944576.1884650361997; Thu, 25 May 2017 07:32:56 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 4A13C21AE3CD9; Thu, 25 May 2017 07:32:51 -0700 (PDT) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on060a.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe40::60a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 915BD21AE3CC0 for ; Thu, 25 May 2017 07:32:49 -0700 (PDT) Received: from leduran-Precision-WorkStation-T5400.amd.com (165.204.77.1) by CY4PR12MB1240.namprd12.prod.outlook.com (10.168.167.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1101.14; Thu, 25 May 2017 14:32:47 +0000 X-Original-To: edk2-devel@lists.01.org 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=0e9CFxcw+HPzKTM4TeW5fTXMPUMm3ZHww0iS9O8cu4g=; b=5M//O0XXoMN5N2J+wZ/DXOsaZ9h+tQgMntlBlKLciON5agA1kkFn9JQXY681D1SVgF059JA/dXpAnsSlRGoroz81HVUwtamE5c83e64DXdD7h6Qj6GFrEulKlSvEyoCMMyhBSnsK18X/S32L5f9YdIkqNyWKNw7DcDoLLYKo7fs= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=amd.com; From: Leo Duran To: Date: Thu, 25 May 2017 09:32:32 -0500 Message-ID: <1495722752-17445-3-git-send-email-leo.duran@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1495722752-17445-1-git-send-email-leo.duran@amd.com> References: <1495722752-17445-1-git-send-email-leo.duran@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CO2PR05CA0073.namprd05.prod.outlook.com (10.166.88.169) To CY4PR12MB1240.namprd12.prod.outlook.com (10.168.167.15) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PR12MB1240: X-MS-Office365-Filtering-Correlation-Id: 3c7e2f8f-0a68-42bb-dffa-08d4a37aea99 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(201703131423075)(201703031133081); SRVR:CY4PR12MB1240; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 3:fxjLUVqu//3m/E9PY0JQKn1HmNZsOqSJ3kCS1ZrKC9m3bC5oOPpog3Mle/TlhpQyUseQZwdhq0nN2t7UNWIV20xj9XIVnwdfRdmyQkP3E40oGK19iuyAcom0UuafdoZ1XzYd1vh8ZZ5AnYCw/dYIK24u8gCLO+8MsN2VFIsh4rmy1ZJYzluHbBnLUvnOSa3Lpb5Yvc2okjKSGIEDeafWZUe8tRfVxRt1KN88nmXhB7dojthUDHGYPgMAfN9vJIE7+Qk8Y958X3b+fopC1oHT/pOZdR++oAVFLNuuPVBYfMzq/VxksXURY2SDvzW6APfipCg9UuvY3o+CFvF3jKW3tJ6KVHOX6BO486BPaqKGQho=; 25:Ev9f6saGeguPwsSncm1hG0l7/9+HX+zA6p9XTAOkfTAdmCPYjWEpSQCUakec7SuEZTtqnHWwzmybK0X/nOOq0CM+j3NcEN9ZDRv/uKvpZTxBoI6OQEmGOToTJnj9CvhVCS2VUb3ortX/7+HJCGX1RT4FBMCkKcaxJoFCZi/8itQN10+pkXIVwqDhm2CJgIuk1A7NgpELaJe5BUJrvPCRH3YzSUoFkQv3PuPPEbfZjLHRngJsw+Gz98ak0dOB52XKUFaJ9ISb3gLlNMuZ1hs2JMEC+nwudJHbI7ED9BC7pH1Eucis5WHZckYr6JFkJkGDW2ZX0p9aXdWL1CqrHwpVQL1yv4mIYiK/d12hxgT+nyuP0r2oGFJlzNDWNoYr7yTmKAOI6WeCPklKC+qGlnSJPo+0PHlzRO3iqBr+fkqLM/gOZZ8btzgJXjdWh4+h/xxfDPKNQYvf1O1r6VFwlke5D/uMDPuq5duOqZX3Bg5hF68= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 31:/OCVOblAYMCbne63rewZ4St4EEU/DYsPsQ+fX95WQsCX1HHdac/2Kxxx4U+N72RqqAxaElhdP15X+q6FQX0mgxnLmHmnOuIuDFlUaOhxUGrx9OvKu0I+pNqCBtNRZmb53MfIkuXccnErKqI79U4bhdNSHyG9zKuGUtZvIfs0AyKQBocEC/9N0V4w9DfC8TRLh1AY7Hu4euT5/OSWDyqHmtjA6gRX6F7Zo974qKLj4xc=; 20:K+E23eHLqTRn+MqnX5Si95Q/QH1pnYDNCUu5rmTrhNda6Bdq5GpmquuCFAuHvRUAPlmIasA8fF2TzvSkc3jPrYlF1XL+PqmDDKq9HhUlxeNYvgwba8fZXAJ0aQOGc51G+28c1uCV27ikeK3spAuXDj5MugZCAvopb8CIL4t97u3VgDOmaD58M4UdJOV9W3F5RpjmyhUF7HQ0dQWfXvnBtIhw5/qAKe+ufnfM+eSUQk4aGGNT6nMBy8rGiD8l2yZmaKg+ybw+BNnD94ipxqlNMDBRobzpELjBXl2WbcgQBNjdF8ivJnkzrvJwgwXblNw1v0ox715zhMB/oXc1wrfJz64WWYlFoKukWd+9ezv9UKWK5+7pmTWCIbQIL/DXTV3MZmoQvLYgYOzRemlTsMDdEQCg5Cz9YqzCooqjYSeQiPBpBsYso2DJHHW9A18LwmimzuL39pFPz3wVGxNZZcrEz6JK0LR5q7xpuai67xR7OR5s5incTBpKc7ojQ+xRdoSP X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123562025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148); SRVR:CY4PR12MB1240; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1240; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 4:U3eAWHNU0HV9+BL1SjhsSLOUJclzYR4GsUQBEeScst62rmEuVmJQqVc/rpfiDrG+v+9eEQag9kmTzog2LWxfc/YHzeeVzqo0Sv7NJbmyTsevh6tc3P7+8ueOPoPrCe3HTyQ3Mzbq+wb6uYJEyIC3BWS88YRQpqPwzVK4U72jYLfCHJie99WDlZsayXcPrUtUXNKFjl6FGLphtLQ/JfECZbgVW5G+oawmLDT00/jfPvtOuTxRW9z0Jq8DlbX1nFUSxYr3wAwud6xPe7hfrKuDySMz8TVYL8wyh3h+J83To6QPwM+VGHTVPR7WL4MqcGAGFEWGLEhKpVx02pRaHaNqEJMxxxvtgx4thYd9TYNU9oktC1Uzk94InvCdvxmuMmlXGB++YRiIv7GNGYM1S3yWYIuuPEj7Noo91wTFHc/m8H7TuEvgcYIeZs4YQp4qcbiRlweEaxvC0DvCb3U1Rk3J750T8B0fW5vhPv7Iaj8sKqVKf6YdbSnmiV4+r0GXDfpKET9u8MZXkD1NgfGVVdkBbCwT4/T9j5GNGCApqHopQTi4LgRfjs1BvF20R89OtRn/O8N2AL+7sbixdFJptZo9aOXYUh2zirZqz92NA8ymakIJapV0rdbIV8RxkS6S8auZg445SZeoTJ6bKaNLDRzc+bMm8uQON4a5hgoF6YxMALvKEUK1W1ISJ6VX3zeaIDLHyHoRNFyrdeFRn1GXU7yTiP69kMwOtFpBBRBC4ierrG6VocDsCIhtVsDURlpqesItSOw1JH0IJOHDe9w+3KmZl8vQUO5HjawbMTcy5P0kdh7oWvm/ArgWrJJPLY5ydtD//oAjGVMtIqbGHzbiv0zHBvuY62XG0EAxS1HZlRsX4h+ty7bAW6EKEXtP6syC9vf1 X-Forefront-PRVS: 0318501FAE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6029001)(6009001)(39860400002)(39850400002)(39400400002)(39450400003)(39840400002)(39410400002)(48376002)(2906002)(478600001)(50466002)(47776003)(5660300001)(36756003)(2351001)(3846002)(86362001)(53936002)(6116002)(6486002)(38730400002)(7736002)(305945005)(4326008)(33646002)(8676002)(25786009)(53416004)(50226002)(5003940100001)(6666003)(189998001)(2950100002)(42186005)(6916009)(66066001)(81166006)(76176999)(50986999)(110136004)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1240; H:leduran-Precision-WorkStation-T5400.amd.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR12MB1240; 23:Aih7XUlzB9rohFZOlUA5bPgu9Wour8MiygGBb/m3/?= =?us-ascii?Q?Clqp42eNUNu3dBd9Pvn3dLIMZc4WpOTa2AS82a3cKEEUTjn2atyzRzGv5ov6?= =?us-ascii?Q?PloxUDv+frogdqL4m+1zRZXeP983D81oFTGbHfdXI231S740GrSFVfqR8OrD?= =?us-ascii?Q?8sgSgnu7RzguI/t4H+U7+GQs8QSk1zefoy9rBJouX09lWM/lpAz1//h4X1IG?= =?us-ascii?Q?IWqJdV71zfgctV6T5oNRBQ7WJ9KyHCfbgMMFl3EOusqQLobzaaSNWGredK5V?= =?us-ascii?Q?pG62lS9ISHCMBpcWX8R1OxXvgR5ylZwPrlB0g54yP2zK66/nJwHeJApxehWh?= =?us-ascii?Q?scMasuozRkKSlMGlqLopdsKPwPs59Bb8eckp9bBhprcO0yWr9OhBOw5pmspQ?= =?us-ascii?Q?C/9f63VPUyZfO/VIgJh0DfG+hBVbjv9cfuPBuUBpV4XZCG7oY87rRLJzaf90?= =?us-ascii?Q?fDE4JvDH1CgM13E1Yo3ui7jjXJMCIAdTIC3rDyAql9RqZBE7hdd2kuwyEZxo?= =?us-ascii?Q?2tRZmNCMJLjulzmXszxVI+QcoHqUe90A/Y/YG/Dd+KiApRaeSBRYJIQjEO6s?= =?us-ascii?Q?l04YkKS+yPZS1d2DkP/80FyeICO2wl317KG4yt2ZxrdxJ5CfBJIBgNXvEnRG?= =?us-ascii?Q?MtxcUqM6fpYtVkOqYuKHkEphSN5mil7rRpxSIgXv6zr8D5rvcf/zf4lf9iXW?= =?us-ascii?Q?Fvx9PDv2aK0DD9N3nmsJFjI+j7WZyQUpywN0OX7XkKqMquq+4E9mq5Hw4atR?= =?us-ascii?Q?zIzpEJMOFRdVNRDv2enukSHgvbJpPIhPydlBhaspXNkJYXNrmOfFh5+3dzqP?= =?us-ascii?Q?/mjBls/Ant/DXih6Egv+0z98O52FzwOAQgaHW1VakHJNY7dhecnjLbm1XMlV?= =?us-ascii?Q?AVx0Vsh3wjMBi3OAo0BJlmb558WP71Xktm/KcH+y5mgPyNu+UlghVVO41Uwv?= =?us-ascii?Q?2xf1ly9Pg/ysAoiz6pTD8Tybd5kulETQUqh1gD3eMpPB7J8+ycA8r3XItAVU?= =?us-ascii?Q?XKSZx9xVcSndi+Oab6m9W5IPYcGo6FKQCHApv6byZmjZZBg3FhClsBPmv3cC?= =?us-ascii?Q?KKgNde1njwS5UDYTLRYMesWpqBKPgGzJrEO5kVJKYme3/pjdA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 6:mARVuJL88D4C3TY0BDCGl825/y5GWFoXh4Oc3gwkJz0GAouPy/2qEPko6MHWN0QnCFxlDYYmg5Y6N87ryNgEoyHPPWeDj3vF4wcCwkG7YW3PNR0jKtVVm/hOsrcYcogCK14BFRD6KAGh7WWy8jrYE7uvBfFC+PBw6qG9EHsJQ1RzUrxWfF6hyz8fIAiTEZiABAVu0mvNVL2ge8RNEgl4CH3VFGObgZ0i8meieaYACJaYXp2klOezQ7oill6ANUhYbqpe2nOlKuh1hlVXU9rMh9YjXimSsdeu+r38ObV042XUmgEvELaFOm67PBesb5yhrCfBP0YpQ+nSI8RdcN4TJuY2FkeIpif/9d1jRE4W6ZB7IvODIkI211NDbAdZmTWKYvBEMuSfDo/PcMFKUkUiCtE0MJmqa+N4BSZbQrbuVnNAl5TDYuKadAjK+j4fI90e1iRfQv8IXYdhqpvUpJOi9EPHzPqbh7Htp7EcveeIURMcViqLz4ZCbzGIIipNkdr+qeXjwwzARNMkqYJNiiERku5Wxmzo6pVsNUpmA95DhcQ=; 5:8OiIEnxaeLPRbzGQuyyuvON507JbEZu58dj8wQjKU3VkMAsTUQC7N88blHdJCSvvIqH0h5U4ERnIwZBaZt4uLmda6HwBHa7Hsa233WajZAsdKvHFmWlKrAzLOuvxczv1zOya1w78fseP/kXE8XJNWKvtQVjmKUaQrZnnG15Od5s=; 24:zmAFxIbi/9fX8Qxn233W2kiiN7Z40USUEiG1SKHzEUm5xRBBAmuHS0bItWMAP0o2elWiHUJB7TZOtpyRPOiBXedfE5CLegfc1NNZzgVJiEY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1240; 7:USs2JQlMdVhsGzTh+uyDEJbjGDzfW/KJUJ3mRWIqI7Thz93Vygp2+SbwAVKBUbENodbguM8hUF6LZlYcUYmhNY7EY9B/Ug7XD4oZGnFcBV+59bPrNsRIIAuPF9JT9ZOhSD9EkfFAmNnGyzKLmsxcFTSMNCyNASHcFAizOYDAKOBhjddNgNus0ErhAYMbQlhxblrwCdeAWOzxUrqUUH904bF7qzNR/bLUXAgv+0v/J2Cex6EPBFXCIhjuXrB7vav3S8LvZHjfhbknfbn+Y+2MK+PclRCmwwN+UYMRMYEafjQm+W8O1uuO6R1wezTM5Pwjx2tDP0+5mea7S07V1wk7sQ==; 20:RneIlg6pvkI3zJ0vMVlkbbYKlhqq2pkr10lboIZW9WuCYb+xsEWwQfR4iyGAlHVAjq/fSHAKXBCBMV8CHUEQl5vvnHw8pLTXGp927pKsyeEyoh/ny6FAISfLCFKe9tPQMdESAWEYRwLpAoe2GlsQenwwGrTfJRC01Z8lGD7cAlbkNPVPbW89GdgEgphc/zQ5M637loUkzlSX/qNFhBLgqK5iRPnvfCKuQaTSwluzgy2KQHcDgbwQjDHwXo9sJ6f1 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2017 14:32:47.7428 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1240 Subject: [edk2] [PATCH v2 2/2] UefiCpuPkg: Modify GetProcessorLocationByApicId() to support AMD. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jordan Justen , Leo Duran , Jeff Fan , Liming Gao Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Cc: Jordan Justen Cc: Jeff Fan Cc: Liming Gao Cc: Brijesh Singh Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leo Duran --- UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c | 85 +++++++++++++-----= ---- .../BaseXApicX2ApicLib/BaseXApicX2ApicLib.c | 85 +++++++++++++-----= ---- 2 files changed, 98 insertions(+), 72 deletions(-) mode change 100644 =3D> 100755 UefiCpuPkg/Library/BaseXApicLib/BaseXApicLi= b.c diff --git a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c b/UefiCpuPkg/Li= brary/BaseXApicLib/BaseXApicLib.c old mode 100644 new mode 100755 index f81bbb2..dfdbd8e --- a/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c +++ b/UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c @@ -4,6 +4,8 @@ This local APIC library instance supports xAPIC mode only. =20 Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2017, AMD Inc. All rights reserved.
+ This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License which accompanies this distribution. The full text of the license may b= e found at @@ -15,6 +17,7 @@ **/ =20 #include +#include #include #include =20 @@ -966,20 +969,22 @@ GetProcessorLocationByApicId ( OUT UINT32 *Thread OPTIONAL ) { - BOOLEAN TopologyLeafSupported; - UINTN ThreadBits; - UINTN CoreBits; - CPUID_VERSION_INFO_EBX VersionInfoEbx; - CPUID_VERSION_INFO_EDX VersionInfoEdx; - CPUID_CACHE_PARAMS_EAX CacheParamsEax; - CPUID_EXTENDED_TOPOLOGY_EAX ExtendedTopologyEax; - CPUID_EXTENDED_TOPOLOGY_EBX ExtendedTopologyEbx; - CPUID_EXTENDED_TOPOLOGY_ECX ExtendedTopologyEcx; - UINT32 MaxCpuIdIndex; - UINT32 SubIndex; - UINTN LevelType; - UINT32 MaxLogicProcessorsPerPackage; - UINT32 MaxCoresPerPackage; + CPUID_VERSION_INFO_EBX VersionInfoEbx; + CPUID_VERSION_INFO_EDX VersionInfoEdx; + CPUID_CACHE_PARAMS_EAX CacheParamsEax; + CPUID_EXTENDED_TOPOLOGY_EAX ExtendedTopologyEax; + CPUID_EXTENDED_TOPOLOGY_EBX ExtendedTopologyEbx; + CPUID_EXTENDED_TOPOLOGY_ECX ExtendedTopologyEcx; + CPUID_AMD_EXTENDED_CPU_SIG_ECX AmdExtendedCpuSigEcx; + CPUID_AMD_PROCESSOR_TOPOLOGY_EBX AmdProcessorTopologyEbx; + UINT32 MaxStandardCpuIdIndex; + UINT32 MaxExtendedCpuIdIndex; + UINT32 SubIndex; + UINTN LevelType; + UINT32 MaxLogicProcessorsPerPackage; + UINT32 MaxCoresPerPackage; + UINTN ThreadBits; + UINTN CoreBits; =20 // // Check if the processor is capable of supporting more than one logical= processor. @@ -1002,20 +1007,16 @@ GetProcessorLocationByApicId ( CoreBits =3D 0; =20 // - // Assume three-level mapping of APIC ID: Package:Core:SMT. + // Get the max index of CPUID // - TopologyLeafSupported =3D FALSE; - - // - // Get the max index of basic CPUID - // - AsmCpuid(CPUID_SIGNATURE, &MaxCpuIdIndex, NULL, NULL, NULL); + AsmCpuid(CPUID_SIGNATURE, &MaxStandardCpuIdIndex, NULL, NULL, NULL); + AsmCpuid(CPUID_EXTENDED_FUNCTION, &MaxExtendedCpuIdIndex, NULL, NULL, NU= LL); =20 // // If the extended topology enumeration leaf is available, it // is the preferred mechanism for enumerating topology. // - if (MaxCpuIdIndex >=3D CPUID_EXTENDED_TOPOLOGY) { + if (MaxStandardCpuIdIndex >=3D CPUID_EXTENDED_TOPOLOGY) { AsmCpuidEx( CPUID_EXTENDED_TOPOLOGY, 0, @@ -1030,8 +1031,6 @@ GetProcessorLocationByApicId ( // supported on that processor. // if (ExtendedTopologyEbx.Uint32 !=3D 0) { - TopologyLeafSupported =3D TRUE; - // // Sub-leaf index 0 (ECX=3D 0 as input) provides enumeration paramet= ers to extract // the SMT sub-field of x2APIC ID. @@ -1061,26 +1060,40 @@ GetProcessorLocationByApicId ( } SubIndex++; } while (LevelType !=3D CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID); + goto GetLocation; } } =20 - if (!TopologyLeafSupported) { - AsmCpuid(CPUID_VERSION_INFO, NULL, &VersionInfoEbx.Uint32, NULL, NULL); - MaxLogicProcessorsPerPackage =3D VersionInfoEbx.Bits.MaximumAddressabl= eIdsForLogicalProcessors; - if (MaxCpuIdIndex >=3D CPUID_CACHE_PARAMS) { - AsmCpuidEx(CPUID_CACHE_PARAMS, 0, &CacheParamsEax.Uint32, NULL, NULL= , NULL); + AsmCpuid(CPUID_VERSION_INFO, NULL, &VersionInfoEbx.Uint32, NULL, NULL); + MaxLogicProcessorsPerPackage =3D VersionInfoEbx.Bits.MaximumAddressableI= dsForLogicalProcessors; + + if (MaxStandardCpuIdIndex >=3D CPUID_CACHE_PARAMS) { + AsmCpuidEx(CPUID_CACHE_PARAMS, 0, &CacheParamsEax.Uint32, NULL, NULL, = NULL); + if (CacheParamsEax.Uint32 !=3D 0) { MaxCoresPerPackage =3D CacheParamsEax.Bits.MaximumAddressableIdsForL= ogicalProcessors + 1; + goto GetBits; } - else { - // - // Must be a single-core processor. - // - MaxCoresPerPackage =3D 1; + } + + if (MaxExtendedCpuIdIndex >=3D CPUID_AMD_PROCESSOR_TOPOLOGY) { + AsmCpuid(CPUID_EXTENDED_CPU_SIG, NULL, NULL, &AmdExtendedCpuSigEcx.Uin= t32, NULL); + if (AmdExtendedCpuSigEcx.Bits.TopologyExtensions !=3D 0) { + AsmCpuid(CPUID_AMD_PROCESSOR_TOPOLOGY, NULL, &AmdProcessorTopologyEb= x.Uint32, NULL, NULL); + MaxCoresPerPackage =3D MaxLogicProcessorsPerPackage / (AmdProcessorT= opologyEbx.Bits.ThreadsPerCore + 1); + goto GetBits; } + } + + // + // Must be a single-core processor. + // + MaxCoresPerPackage =3D 1; =20 - ThreadBits =3D (UINTN)(HighBitSet32(MaxLogicProcessorsPerPackage / Max= CoresPerPackage - 1) + 1); - CoreBits =3D (UINTN)(HighBitSet32(MaxCoresPerPackage - 1) + 1); } +GetBits: + ThreadBits =3D (UINTN)(HighBitSet32(MaxLogicProcessorsPerPackage / MaxCo= resPerPackage - 1) + 1); + CoreBits =3D (UINTN)(HighBitSet32(MaxCoresPerPackage - 1) + 1); =20 +GetLocation: if (Thread !=3D NULL) { *Thread =3D InitialApicId & ((1 << ThreadBits) - 1); } diff --git a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c b/U= efiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c index e690d2a..d1dcb17 100644 --- a/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c +++ b/UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c @@ -5,6 +5,8 @@ which have xAPIC and x2APIC modes. =20 Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2017, AMD Inc. All rights reserved.
+ This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License which accompanies this distribution. The full text of the license may b= e found at @@ -16,6 +18,7 @@ **/ =20 #include +#include #include #include =20 @@ -1061,20 +1064,22 @@ GetProcessorLocationByApicId ( OUT UINT32 *Thread OPTIONAL ) { - BOOLEAN TopologyLeafSupported; - UINTN ThreadBits; - UINTN CoreBits; - CPUID_VERSION_INFO_EBX VersionInfoEbx; - CPUID_VERSION_INFO_EDX VersionInfoEdx; - CPUID_CACHE_PARAMS_EAX CacheParamsEax; - CPUID_EXTENDED_TOPOLOGY_EAX ExtendedTopologyEax; - CPUID_EXTENDED_TOPOLOGY_EBX ExtendedTopologyEbx; - CPUID_EXTENDED_TOPOLOGY_ECX ExtendedTopologyEcx; - UINT32 MaxCpuIdIndex; - UINT32 SubIndex; - UINTN LevelType; - UINT32 MaxLogicProcessorsPerPackage; - UINT32 MaxCoresPerPackage; + CPUID_VERSION_INFO_EBX VersionInfoEbx; + CPUID_VERSION_INFO_EDX VersionInfoEdx; + CPUID_CACHE_PARAMS_EAX CacheParamsEax; + CPUID_EXTENDED_TOPOLOGY_EAX ExtendedTopologyEax; + CPUID_EXTENDED_TOPOLOGY_EBX ExtendedTopologyEbx; + CPUID_EXTENDED_TOPOLOGY_ECX ExtendedTopologyEcx; + CPUID_AMD_EXTENDED_CPU_SIG_ECX AmdExtendedCpuSigEcx; + CPUID_AMD_PROCESSOR_TOPOLOGY_EBX AmdProcessorTopologyEbx; + UINT32 MaxStandardCpuIdIndex; + UINT32 MaxExtendedCpuIdIndex; + UINT32 SubIndex; + UINTN LevelType; + UINT32 MaxLogicProcessorsPerPackage; + UINT32 MaxCoresPerPackage; + UINTN ThreadBits; + UINTN CoreBits; =20 // // Check if the processor is capable of supporting more than one logical= processor. @@ -1097,20 +1102,16 @@ GetProcessorLocationByApicId ( CoreBits =3D 0; =20 // - // Assume three-level mapping of APIC ID: Package:Core:SMT. + // Get the max index of CPUID // - TopologyLeafSupported =3D FALSE; - - // - // Get the max index of basic CPUID - // - AsmCpuid(CPUID_SIGNATURE, &MaxCpuIdIndex, NULL, NULL, NULL); + AsmCpuid(CPUID_SIGNATURE, &MaxStandardCpuIdIndex, NULL, NULL, NULL); + AsmCpuid(CPUID_EXTENDED_FUNCTION, &MaxExtendedCpuIdIndex, NULL, NULL, NU= LL); =20 // // If the extended topology enumeration leaf is available, it // is the preferred mechanism for enumerating topology. // - if (MaxCpuIdIndex >=3D CPUID_EXTENDED_TOPOLOGY) { + if (MaxStandardCpuIdIndex >=3D CPUID_EXTENDED_TOPOLOGY) { AsmCpuidEx( CPUID_EXTENDED_TOPOLOGY, 0, @@ -1125,8 +1126,6 @@ GetProcessorLocationByApicId ( // supported on that processor. // if (ExtendedTopologyEbx.Uint32 !=3D 0) { - TopologyLeafSupported =3D TRUE; - // // Sub-leaf index 0 (ECX=3D 0 as input) provides enumeration paramet= ers to extract // the SMT sub-field of x2APIC ID. @@ -1156,26 +1155,40 @@ GetProcessorLocationByApicId ( } SubIndex++; } while (LevelType !=3D CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID); + goto GetLocation; } } =20 - if (!TopologyLeafSupported) { - AsmCpuid(CPUID_VERSION_INFO, NULL, &VersionInfoEbx.Uint32, NULL, NULL); - MaxLogicProcessorsPerPackage =3D VersionInfoEbx.Bits.MaximumAddressabl= eIdsForLogicalProcessors; - if (MaxCpuIdIndex >=3D CPUID_CACHE_PARAMS) { - AsmCpuidEx(CPUID_CACHE_PARAMS, 0, &CacheParamsEax.Uint32, NULL, NULL= , NULL); + AsmCpuid(CPUID_VERSION_INFO, NULL, &VersionInfoEbx.Uint32, NULL, NULL); + MaxLogicProcessorsPerPackage =3D VersionInfoEbx.Bits.MaximumAddressableI= dsForLogicalProcessors; + + if (MaxStandardCpuIdIndex >=3D CPUID_CACHE_PARAMS) { + AsmCpuidEx(CPUID_CACHE_PARAMS, 0, &CacheParamsEax.Uint32, NULL, NULL, = NULL); + if (CacheParamsEax.Uint32 !=3D 0) { MaxCoresPerPackage =3D CacheParamsEax.Bits.MaximumAddressableIdsForL= ogicalProcessors + 1; + goto GetBits; } - else { - // - // Must be a single-core processor. - // - MaxCoresPerPackage =3D 1; + } + + if (MaxExtendedCpuIdIndex >=3D CPUID_AMD_PROCESSOR_TOPOLOGY) { + AsmCpuid(CPUID_EXTENDED_CPU_SIG, NULL, NULL, &AmdExtendedCpuSigEcx.Uin= t32, NULL); + if (AmdExtendedCpuSigEcx.Bits.TopologyExtensions !=3D 0) { + AsmCpuid(CPUID_AMD_PROCESSOR_TOPOLOGY, NULL, &AmdProcessorTopologyEb= x.Uint32, NULL, NULL); + MaxCoresPerPackage =3D MaxLogicProcessorsPerPackage / (AmdProcessorT= opologyEbx.Bits.ThreadsPerCore + 1); + goto GetBits; } + } + + // + // Must be a single-core processor. + // + MaxCoresPerPackage =3D 1; =20 - ThreadBits =3D (UINTN)(HighBitSet32(MaxLogicProcessorsPerPackage / Max= CoresPerPackage - 1) + 1); - CoreBits =3D (UINTN)(HighBitSet32(MaxCoresPerPackage - 1) + 1); } +GetBits: + ThreadBits =3D (UINTN)(HighBitSet32(MaxLogicProcessorsPerPackage / MaxCo= resPerPackage - 1) + 1); + CoreBits =3D (UINTN)(HighBitSet32(MaxCoresPerPackage - 1) + 1); =20 +GetLocation: if (Thread !=3D NULL) { *Thread =3D InitialApicId & ((1 << ThreadBits) - 1); } --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel