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:
49
CryptoPkg/Library/BaseCryptLib/Hash/CryptDispatchApDxe.c
Normal file
49
CryptoPkg/Library/BaseCryptLib/Hash/CryptDispatchApDxe.c
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user