mirror of
https://github.com/acidanthera/audk.git
synced 2025-05-03 06:00:10 +02:00
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>
55 lines
1.6 KiB
C
55 lines
1.6 KiB
C
/** @file
|
|
Dispatch Block to Aps in Pei 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/PeiServicesTablePointerLib.h>
|
|
#include <PiPei.h>
|
|
#include <Ppi/MpServices.h>
|
|
#include <Library/PeiServicesLib.h>
|
|
|
|
/**
|
|
Dispatch the block task to each AP in PEI phase.
|
|
|
|
**/
|
|
VOID
|
|
EFIAPI
|
|
DispatchBlockToAp (
|
|
VOID
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
CONST EFI_PEI_SERVICES **PeiServices;
|
|
EFI_PEI_MP_SERVICES_PPI *MpServicesPpi;
|
|
|
|
PeiServices = GetPeiServicesTablePointer ();
|
|
Status = (*PeiServices)->LocatePpi (
|
|
PeiServices,
|
|
&gEfiPeiMpServicesPpiGuid,
|
|
0,
|
|
NULL,
|
|
(VOID **)&MpServicesPpi
|
|
);
|
|
if (EFI_ERROR (Status)) {
|
|
//
|
|
// Failed to locate MpServices Ppi, do parallel hash by one core.
|
|
//
|
|
DEBUG ((DEBUG_ERROR, "[DispatchBlockToApPei] Failed to locate MpServices Ppi. Status = %r\n", Status));
|
|
return;
|
|
}
|
|
|
|
Status = MpServicesPpi->StartupAllAPs (
|
|
(CONST EFI_PEI_SERVICES **)PeiServices,
|
|
MpServicesPpi,
|
|
ParallelHashApExecute,
|
|
FALSE,
|
|
0,
|
|
NULL
|
|
);
|
|
return;
|
|
}
|