CryptPkg: Enable CryptoPkg BaseCryptLib ParallelHash for PEI and DXE

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4097

The BaseCryptLib in the CryptoPkg currently supports ParallelHash
algorithm for SMM. The MP Services PPI and MP Services Protocol
could be used to enable ParallelHash in PEI and DXE
versions of the BaseCryptLib.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Signed-off-by: Zhihao Li <zhihao.li@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
Zhihao Li
2022-11-30 22:21:02 +08:00
committed by mergify[bot]
parent 47d988387e
commit 5d5be45bd1
8 changed files with 183 additions and 27 deletions

View File

@ -0,0 +1,49 @@
/** @file
Dispatch Block to Aps in Dxe phase for parallelhash algorithm.
Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include "CryptParallelHash.h"
#include <Library/UefiBootServicesTableLib.h>
#include <Protocol/MpService.h>
/**
Dispatch the block task to each AP in PEI phase.
**/
VOID
EFIAPI
DispatchBlockToAp (
VOID
)
{
EFI_STATUS Status;
EFI_MP_SERVICES_PROTOCOL *MpServices;
Status = gBS->LocateProtocol (
&gEfiMpServiceProtocolGuid,
NULL,
(VOID **)&MpServices
);
if (EFI_ERROR (Status)) {
//
// Failed to locate MpServices Protocol, do parallel hash by one core.
//
DEBUG ((DEBUG_ERROR, "[DispatchBlockToApDxe] Failed to locate MpServices Protocol. Status = %r\n", Status));
return;
}
Status = MpServices->StartupAllAPs (
MpServices,
ParallelHashApExecute,
FALSE,
NULL,
0,
NULL,
NULL
);
return;
}