From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.84]) by mx.groups.io with SMTP id smtpd.web11.2188.1600884259069603516 for ; Wed, 23 Sep 2020 11:04:19 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@amdcloud.onmicrosoft.com header.s=selector2-amdcloud-onmicrosoft-com header.b=pasIT4NP; spf=none, err=SPF record not found (domain: amd.com, ip: 40.107.94.84, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cudV/u14o3lyz+FdiQ/68Zqz0Y7Glx42+D08qyRHFAotGsPMI5oMzqRC0dq3rd8Quk0Wt60OEo3sgi33X53iVrVPWpprB0yY+hRQPoKvgbLBB4EtIDMDaz3Dnh7mq9OJghqZSwsW+nyKOjGrgVhTMJIzXdP5qOgayKLH2OR9oQC4UTeiLXVIfU3q6qZoCek84fgn8tEgpz9fcNptJvgiDA9BQKgK72DSm77CSnTGAXoOvqgAXiDKZher+mztgfWbgIhRuCrhl49nrbwzHxOyDQ5ehxZ/5kkjL8yNMf1QHS9uTXE3eZIOnb1SraJkfw95kZlVtm76yyHbfihQK0443Q== 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-SenderADCheck; bh=7aD87D+3dwk72z/WIY/Vcvo6+JzfqMvXvrOPfo6QCdk=; b=cReABrjfNW6vt5wNNrfmleO3Fv3aTtvSOt02St+BBJ+obgN/DHuPtQPUvgI146sFU3UqtHeJ1MZtZ3S40vgaZLq+zXKGz6NyqaXRNU8+UtXBQpawubnDLUidgQeJe4YyFvv5NMnzDQP/o4a3gsiXSfb6EQXaU0E4P9tTwONl1lXUDnvwFdN4VRWdRI0Bd82L12LBaHx+zT/X+wZfS7JaKsWFN0p53R8d/ksT+/lM+o0FSc3xew5rbACfZGgLVNahFHu6TSN2V7DTpgShzhQzRHBklhdKlnbuWz6pcVS5fhUfGG0Zqh/7+ZPr0YrE8m/hGgBsUmpg4zSHS3g/+CUvqA== 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=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7aD87D+3dwk72z/WIY/Vcvo6+JzfqMvXvrOPfo6QCdk=; b=pasIT4NPa0eBrRZ+o/di/QJphDtG66SrPIE75z1n2ctBAirfVUNmO/kDJESQNBjSXyX7GlH79WTnDqCZLfG7O8vY2xEo1TPvgOzGY0+VPNO3o/pN9zwTSZ2i6B4gXX1f0kv7ar8htcDL/zhjHgsM4znqtt157P/H3jTU03U2898= Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=amd.com; Received: from DM5PR12MB1355.namprd12.prod.outlook.com (2603:10b6:3:6e::7) by DM5PR1201MB0218.namprd12.prod.outlook.com (2603:10b6:4:4d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.15; Wed, 23 Sep 2020 18:04:16 +0000 Received: from DM5PR12MB1355.namprd12.prod.outlook.com ([fe80::299a:8ed2:23fc:6346]) by DM5PR12MB1355.namprd12.prod.outlook.com ([fe80::299a:8ed2:23fc:6346%3]) with mapi id 15.20.3391.024; Wed, 23 Sep 2020 18:04:16 +0000 From: "Lendacky, Thomas" To: devel@edk2.groups.io CC: Eric Dong , Ray Ni , Laszlo Ersek , Rahul Kumar , Brijesh Singh , Garrett Kirkendall Subject: [PATCH v2 1/1] UefiCpuPkg/MpInitLib: Reduce reset vector memory pressure Date: Wed, 23 Sep 2020 13:04:00 -0500 Message-ID: <21345cdbc906519558202b3851257ca07b9239ba.1600884239.git.thomas.lendacky@amd.com> X-Mailer: git-send-email 2.28.0 X-ClientProxiedBy: SN1PR12CA0107.namprd12.prod.outlook.com (2603:10b6:802:21::42) To DM5PR12MB1355.namprd12.prod.outlook.com (2603:10b6:3:6e::7) Return-Path: thomas.lendacky@amd.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from tlendack-t1.amd.com (165.204.77.1) by SN1PR12CA0107.namprd12.prod.outlook.com (2603:10b6:802:21::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.21 via Frontend Transport; Wed, 23 Sep 2020 18:04:15 +0000 X-Mailer: git-send-email 2.28.0 X-Originating-IP: [165.204.77.1] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6aa9753d-f11a-418b-e418-08d85feb1592 X-MS-TrafficTypeDiagnostic: DM5PR1201MB0218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vC7i+C5NllWpipHrviWK3s+Gy7sQrD2qw0WQQJaFW3SD97fmFYoYj4UDEdPjfopbE92x9EsklsoWnLqKdSBWlTKiqlIJXKqi+xnoYhfLnWAMHV2zpRvQdW+O5RVpGpDWAxyqhbOiFvabkmw8Ftmr8M0lTnvlYVmMltO9w+AnoFkqtTpsAznE1XTlg4gp7nj945sIOM01b/L6Hi51SfeEa/lu3+oYkIDgTKaB+kl7aMURJ/Jy9ZhgjpuzBUgCc5S6MCgCo+KVcGrjh3C4yrRp4RO0uPq8poO4Xb4OZw9r5hhA2e0j9oEGwnrOXS6hcSDmu45WRhmt3DcZOo7s1PsxTg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR12MB1355.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(366004)(39860400002)(396003)(136003)(376002)(346002)(36756003)(86362001)(316002)(6666004)(26005)(186003)(16526019)(66946007)(66556008)(66476007)(4326008)(6916009)(2906002)(8676002)(478600001)(8936002)(7696005)(52116002)(54906003)(2616005)(83380400001)(956004)(6486002)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: WwHuiTCPVCEN509iAtPDhFAIUlnhvc6fPeobM0Z8rXk6eP5xq1L+bXsoimY9qPm7DWRRHhb/B4p66pRh/Ov1jm9yJFFgvifJmUARTqozOZXfiMJ5MOlJ1XTQLCeZBUf6Mc3pBwnoAeGU0X/7ZdYSAaIuE9Bueg+qQ7NlteF2tog5N69NhBMJpx6ZYviCw7DWKgvIErK+ln3PHthrKWxCqxM1c0Lyk+J16L688NTMI87EZN0DfN7qo4AvcyQsuoHsdIo7dYarZZAaClHrfds0KjbngJJBmg6L5Nmn6jkW9JqI0LgShz6MO0opjETq8+J9GSFvRC3U1pj305HalMW6jVq8EdvM3kBXP9hkgy3zmGUWAi6tp8cGCqvDIno03hBOnDnmkSSyU3kp9Wd2/FpPvwiOtAEVa3wPj43j04ekyO4ZFAGAxIywPZmK9Gs9RMv3s743I6QthRj1Fg5eUY5e0t3fpDmCLRGkbaXCgH0Y7ysyrX8QeZuaRjcegS8Tr332i/YG1czuLC/zhdPXTho4tUdiKSXfdZXjqFuC6lAwil9sh8sYyWfNSSTE1glgsB7DEKwzqrxmFb4DYRr/Ce1Mkfj0uc449U9e2dYr/e2OKW/8gTK671+tO6sxQKc+2K9PKVAgXkM3RyB/dXVJRYjXug== X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6aa9753d-f11a-418b-e418-08d85feb1592 X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB1355.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2020 18:04:16.0135 (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: c7U1IINs3ygCynooQPN05XhTLZPlk6LYsPgjprWQ7cukvgC1D91ZF9jVExQfp48XnXrAOCTxxW8SnuYOmY2fwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0218 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable From: Tom Lendacky The AP reset vector stack allocation is only required if running as an SEV-ES guest. Since the reset vector allocation is below 1MB in memory, eliminate the requirement for bare-metal systems and non SEV-ES guests to allocate the extra stack area, which can be large if the PcdCpuMaxLogicalProcessorNumber value is large, and also remove the CPU_STACK_ALIGNMENT alignment. Fixes: 7b7508ad784d ("UefiCpuPkg: Allow AP booting under SEV-ES") Cc: Garrett Kirkendall Signed-off-by: Tom Lendacky --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 36 +++++++++----------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpIn= itLib/MpLib.c index 07426274f639..a9708c6479d2 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -1141,20 +1141,6 @@ RestoreWakeupBuffer( ); } =20 -/** - Calculate the size of the reset stack. - - @return Total amount of memory required for stacks -**/ -STATIC -UINTN -GetApResetStackSize ( - VOID - ) -{ - return AP_RESET_STACK_SIZE * PcdGet32(PcdCpuMaxLogicalProcessorNumber); -} - /** Calculate the size of the reset vector. =20 @@ -1170,11 +1156,23 @@ GetApResetVectorSize ( { UINTN Size; =20 - Size =3D ALIGN_VALUE (AddressMap->RendezvousFunnelSize + - AddressMap->SwitchToRealSize + - sizeof (MP_CPU_EXCHANGE_INFO), - CPU_STACK_ALIGNMENT); - Size +=3D GetApResetStackSize (); + Size =3D AddressMap->RendezvousFunnelSize + + AddressMap->SwitchToRealSize + + sizeof (MP_CPU_EXCHANGE_INFO); + + // + // The AP reset stack is only used by SEV-ES guests. Do not add to the + // allocation if SEV-ES is not enabled. + // + if (PcdGetBool (PcdSevEsIsEnabled)) { + // + // Stack location is based on APIC ID, so use the total number of + // processors for calculating the total stack area. + // + Size +=3D AP_RESET_STACK_SIZE * PcdGet32(PcdCpuMaxLogicalProcessorNumb= er); + + Size =3D ALIGN_VALUE (Size, CPU_STACK_ALIGNMENT); + } =20 return Size; } --=20 2.28.0