From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.68]) by mx.groups.io with SMTP id smtpd.web11.37606.1661524052421594317 for ; Fri, 26 Aug 2022 07:27:32 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=ZEX7XJtA; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.92.68, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W0RHudASRi8rU7mUz+iKCVAFlgCn3CbXNBj5PHKUbM1F7dZgS3TXFDony6UcWIG4KdAVG8fb1jX/p7IJiRS1SqWENLL4LGSKUERdZs2X2TYs2LdZonYys8y4nRv/rXREjvfYM06j0D6MdmimqzirYpQ2ptH/Ge62+DaKYCuGvrIEWmDPwbSUYdTkisQFiLTwcp+Mt+ht6MA1jMWU2kh6FIY1Jb1ig82Qq92ueYCyAAzm8pcTDGjWl8yavoi/NPunUz9gd/307gn0KwsIT79QF6+7qfV6v6y12EikcXLoWxK2BXolY8N0ys7Se4uz3rEwKSZnskJ7xKnb9ft4UH/R6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=F2r2Q+7ueEcq3cg874PeF0ro8FEJuDk4b4UCQO2YApc=; b=l2+vpqnBa0WAWqYAghInnPmN+F5deQB8NqL32mC3sUYeLogi7fA6Dtppcmt15w2ePWQ+EsGYf+0Y55T5AHMUT0n+0xyv4aEj76nRinmc2j8m42nV8SKbgYVZkepzWRtC19lKwqpsRSoDxXrA16evVu3/FCpdjyWO9yJ7ByV6AJzHqN0poKwI6PJ0XLDI4Zinh9jlvIvBDoefV+iO7baiWOWmrQcEnc4fY8mBaafdknfXDzjXAdk+Vkr6iFHkhQmCpHuMkS0PeSPlKUpe2P5KIldo1vIyyIe1piHz1iwxGMvOr4n6AUkBjq3R5aOZ33qRjle09/D8eu945A9x4MaRsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F2r2Q+7ueEcq3cg874PeF0ro8FEJuDk4b4UCQO2YApc=; b=ZEX7XJtA6B0IjPeMHcyxdEEbJsJyB+3/LthwyazxxoOUVbn7yyrnH1w5iII5UTSj6W+Dhueyq9FVa70RF6UHQWfHLjf1JogRBF7DYvxSJJ8uPew3wrvobnsdAMaEnKGYbAIslI4oBLPIdmTCrf6jedlryi6MyZHgfD4OnyQ91ns= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from DM4PR12MB5229.namprd12.prod.outlook.com (2603:10b6:5:398::12) by BL1PR12MB5208.namprd12.prod.outlook.com (2603:10b6:208:311::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.14; Fri, 26 Aug 2022 14:27:29 +0000 Received: from DM4PR12MB5229.namprd12.prod.outlook.com ([fe80::c175:4c:c0d:1396]) by DM4PR12MB5229.namprd12.prod.outlook.com ([fe80::c175:4c:c0d:1396%4]) with mapi id 15.20.5566.016; Fri, 26 Aug 2022 14:27:29 +0000 Message-ID: Date: Fri, 26 Aug 2022 09:27:27 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [edk2-devel] [PATCH] UefiCpuPkg: Use Top of each AP's stack to save CpuMpData To: devel@edk2.groups.io, yuanhao.xie@intel.com Cc: Eric Dong , Ray Ni , Rahul Kumar References: <20220816075715.932-1-yuanhao.xie@intel.com> From: "Lendacky, Thomas" In-Reply-To: <20220816075715.932-1-yuanhao.xie@intel.com> X-ClientProxiedBy: SN6PR05CA0029.namprd05.prod.outlook.com (2603:10b6:805:de::42) To DM4PR12MB5229.namprd12.prod.outlook.com (2603:10b6:5:398::12) Return-Path: Thomas.Lendacky@amd.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3134dfa0-5d51-4cbf-0d10-08da876f1b39 X-MS-TrafficTypeDiagnostic: BL1PR12MB5208:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DZDlOL3FwJldT7dh2hfBnAdPIvcWqkvBoxh+xnSeIz3cc8Yn8i1F8ok94F4f20th5ORM43ztmnOY0icUzdGtXEpizf/XPdZfRkzfCb7HJzJA0ZcMLumvARs5Yu130a1Vz+DivnkkqooKKykdkPe2p4Pth3py5wIqxGhKU8tKCS2iqapXQFA/kuISu+PcklmqjjnC+RRXZcuifYITxc+8gRSZG9HApIw46Tn9OjypSvv+9/d7Tg/YWGJZ2qNEJCx/yNfbPjL7MQvBzOTV5SLhk7aL5gpcN76TvuXR869pqcVaVFzyotYlzWxzCilXDTM58zjA2TbocInywcsneHsYo6BZqV1rwFOwNVuiYI5KKxUAWqPRDKFnpUaFXJYVKMZGbONMly1dv7M9Drt1BFJ27p2kZYvfMLnvBXJTeAZxF5MgYUPUpkd76s4ER8PmvZNHV3ZeJer9JTf6ORd6eqRZCgsgtlUlrpa8tWlDFtLCKT7GxUKp5ena4+Hm6DZ1TyuHD5eKew5Quh+N74ePwtlrjMmoSs94wq9yNkuTdunoPNV8zUtGAAPimZM3vW0Bdt3Ib3ZEWm0zJdsNlQzReD4m6iF8FendOGy2zTgcy6t7H0t5q2dMRvJkK0S5EJ9BM48/A3dTciEZQ55zaJrYQghwIE3y3P5N8g4dpM8+FmB92HFf/5e4E41LNYUcML/hazVp0Rm8FKPlq1UT2NQ0VQKlDYkNfRDAqbPKH16MMMGsq5fjLOR4BMDz6v7K8GtZtWAjJvx/Y/2sYhic7ju1xvnpJt5i8fR4lH7zrSwjy0/8/kg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB5229.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(6029001)(4636009)(136003)(346002)(376002)(39860400002)(366004)(396003)(38100700002)(36756003)(66946007)(66556008)(8676002)(4326008)(66476007)(19627235002)(31696002)(86362001)(31686004)(83380400001)(186003)(478600001)(53546011)(6512007)(6506007)(41300700001)(6486002)(8936002)(316002)(54906003)(2906002)(26005)(2616005)(5660300002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RzdTdEZUeHVvaFRyNCtaQWNWa2t5U1dTVS9ESk5Kdm5Nc1VxRUtLTUdZSEYz?= =?utf-8?B?NmwyK2lpNndHM1g2QkJsSk5xWjlkVmtubTdsS1FOSjh2ZHAyaU04NnlDSTFL?= =?utf-8?B?Mmlndm1qZHA0cEppYnNmRWlvSGxwQTNzVHJhTVhYMzB3K1N4VEJJMFdCUTBa?= =?utf-8?B?bk82ekJaWlJ4MDRrNzVCcmtwaTNRYUhocGMxelJNQXJkeW43NU5hR0V6V1pW?= =?utf-8?B?NlhTbkdWUUEwL3g3R1kyS0dkYjk0dzh2aUMzSUpLVzUwblRIcXYzcFdWV2Ns?= =?utf-8?B?Z0xuOFN6R1BsMUVkL2lOUjhRajY0cEJLdzZ5TDRoWkhOa3duN05NckVLWFRs?= =?utf-8?B?bFJiRkF6RzZxNHFzQWlqWW5sZkpaMEhsUGoxZkNreDhTRHNGR1Z2ditOcGFL?= =?utf-8?B?RHhwY0kzL3I0SEwwUjlTaHhBeVc2ZEtLdHJLSzdkQnBTK01EdkQxYXZIbUk3?= =?utf-8?B?V0dkSVhULzFmbnhFb2ZFSXVua1doOERFZjF1QUhLazJSeVNaSmt1bmc3anA1?= =?utf-8?B?aGcxeTVMR0EyOFpOMDd6NHZaZFQwT0FmRHI5Y2g0VHh5YmxsRHlNMzlQbWpD?= =?utf-8?B?QUU4VzlQMUJSdTZvZHNQdHVLSlhHL0I0Z2Zld3FPQUQvN0xpa0pMbU9zZ25y?= =?utf-8?B?dUxYL0lxL3ZYc0ZYZjdsUHBqZjUwYWNMME9UREZ6QkZENEFqVVJ5enlxRjRD?= =?utf-8?B?azNReHk3aEdrSy9ocWFJd1RCUWY4UjlMUGpKaG9SOERXQ21mcEx2azU0bTN0?= =?utf-8?B?R1Rpb3dKYnlaVXZUS3oyZ25jK2c0dTVZaUplczZ3Y3FMa21MMFJGcmljUHpJ?= =?utf-8?B?QmNTTWhMSUZSbWhwMkRZbkVWVkJvWEM4RDJmMVNzRG5kNUNucWNSNUZhV01R?= =?utf-8?B?QnNUeEptVENmL2ZDR2dHc1ErNy9yeFhWaU81VHdqaG5FN0d5c3A3Y2Jnbnoy?= =?utf-8?B?UDl6dHFBN3dZb28ra3R0UFVjd3FGcWNOa01CcEFLTmN5VThEd1ZBbkFVNUk4?= =?utf-8?B?WEpwVWtGNzZzd0JRYVNVT3dhV3pJS2xIZkdaTERvU3FBSWo0eCtrbjJBVTRw?= =?utf-8?B?c1VaQjJpam1rNWtqNDQrK05xVmdQTjdsdmUxWUhLRFJQRnV6aXBuZE5KclBJ?= =?utf-8?B?RHJ2WWJmckdKUjJxRnBsSWVET3lya3ROdUpORDlrc1pSaGVpd1QrcXlRemVP?= =?utf-8?B?WExSYm5MdldTMmY1SWlKbmhiSTdCVFk4MnBRY1NTd2tTZkpLSS91UFF4NHZG?= =?utf-8?B?eEJxYkNTZ05xUkl6aGRuUWpPVVVydll5ck0zY1RhSHdrUEUva2FrSkFLbVcr?= =?utf-8?B?Rm1iMU4yaHZNQkF6a2pLbHg0Y1pkWjdYelJKamx5bjEwMDY5QThKOURlcVUz?= =?utf-8?B?cTN0dm10WUl2aUE2Rm0rNC8xdmJpWWpVMytodGpsdSt3TG9FT042djlLNTZs?= =?utf-8?B?VGk0a2xwNlRNYVVQOTZ4ZnlkU3oxaVQzbkhUc3ppL093TjZRQWZWQkJUWG9Y?= =?utf-8?B?dG9kWFUvTVpkVDhYYk5YMmJvaWlwR3ZuK2ladDZwU1liNURyRkEvT2dockFT?= =?utf-8?B?NHJsMTBGZkQzYTlXN24rNHNHM0tNbUFnei9YTXVzQVJoMC8vTXhSZXc2TUV4?= =?utf-8?B?SGx2VUtrSEVyNWRvL1VPK0JkRlhDbStCa3R0WmxrZDA4SlFOSm5vV2FqSks5?= =?utf-8?B?TDVzNFgyV2hzZXF6T2FvR2JjTnFNT3k2eDB3RWNudWlST01DWkFIZTBmemlM?= =?utf-8?B?TEFNZFlsTldsZlEyT0VsTjdYV2J6dE5NY1FpVm1rVndNVnluZlJxVGo5SDZh?= =?utf-8?B?SlZDcE84RitmL0xrU0huQUgrVDg4aXhqcGNGU1RvMjBCbnl1aGZxdDZQVTVi?= =?utf-8?B?bVBhTEFIbHlUcWxYMkthK2ttUmdhOVczOXhJY25xWDh1NkxURXAxYW0yeUFm?= =?utf-8?B?K2pmbFJaODNrUU92eHFTbUxpbUFXdHJVTjgrUWI4OFdyMlUyRno1bHRwaUk0?= =?utf-8?B?SXFEMEFaRXdtWEZJQTBRelMrajZjNzVCdEpBQlFHQ0VPSElhWWRTSGhodk0z?= =?utf-8?B?VUJHNGRYYVhrL1V0WHZMZUdtTjdydjlMdWtnSHZTT052MTNDdjU3bjlvUGp3?= =?utf-8?Q?9aFzYmMicJHq5pHH5fCKfHkql?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3134dfa0-5d51-4cbf-0d10-08da876f1b39 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5229.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Aug 2022 14:27:29.5693 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ucgFn02Bv5m15cjwgX5LEd5LVK7wCAL8akdtzmFV2nc2QsrU3i9Cy3DG2SQTLgYkSAylKZYyZL4II986V0OCNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5208 Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 8/16/22 02:57, Yuanhao Xie via groups.io wrote: > To remove the dependency of CPU register, 4/8 byte at the top of the stack > is occupied for CpuMpData. BIST information is also taken care here. > This modification is only for PEI phase, since in DXE phase CpuMpData is > accessed via global variable. > > Signed-off-by: Yuanhao > Cc: Eric Dong > Cc: Ray Ni > Cc: Rahul Kumar > --- > .../Library/MpInitLib/Ia32/MpFuncs.nasm | 5 +++ > UefiCpuPkg/Library/MpInitLib/MpLib.c | 41 ++++++++++++++----- > UefiCpuPkg/Library/MpInitLib/MpLib.h | 8 ++++ > UefiCpuPkg/Library/MpInitLib/PeiMpLib.c | 10 +++-- > UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm | 6 +++ > 5 files changed, 56 insertions(+), 14 deletions(-) > > @@ -1796,30 +1806,41 @@ MpInitLibInitialize ( > AsmGetAddressMap (&AddressMap); > GetApResetVectorSize (&AddressMap, &ApResetVectorSizeBelow1Mb, &ApResetVectorSizeAbove1Mb); > ApStackSize = PcdGet32 (PcdCpuApStackSize); > - ApLoopMode = GetApLoopMode (&MonitorFilterSize); > + // > + // ApStackSize must be power of 2 > + // > + ASSERT ((ApStackSize & (ApStackSize - 1)) == 0); > + ApLoopMode = GetApLoopMode (&MonitorFilterSize); > > // > // Save BSP's Control registers for APs. > // > SaveVolatileRegisters (&VolatileRegisters); > > + // > + // Allocate extra ApStackSize to let AP stack align on ApStackSize bounday > + // > BufferSize = ApStackSize * MaxLogicalProcessorNumber; > + BufferSize += ApStackSize; > BufferSize += MonitorFilterSize * MaxLogicalProcessorNumber; > BufferSize += ApResetVectorSizeBelow1Mb; > BufferSize = ALIGN_VALUE (BufferSize, 8); > BufferSize += VolatileRegisters.Idtr.Limit + 1; > BufferSize += sizeof (CPU_MP_DATA); > BufferSize += (sizeof (CPU_AP_DATA) + sizeof (CPU_INFO_IN_HOB))* MaxLogicalProcessorNumber; > - MpBuffer = AllocatePages (EFI_SIZE_TO_PAGES (BufferSize)); > + // > + // Allocate extra ApStackSize to let stack align on ApStackSize bounday > + // > + MpBuffer = AllocatePages (EFI_SIZE_TO_PAGES (BufferSize)); If you're allocating pages, is all the alignment stuff really necessary? The allocated value is going to be page aligned already, right? Thanks, Tom > ASSERT (MpBuffer != NULL); > ZeroMem (MpBuffer, BufferSize); > - Buffer = (UINTN)MpBuffer; > + Buffer = ALIGN_VALUE ((UINTN)MpBuffer, ApStackSize); >