mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +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>
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
/** @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;
|
|
}
|