mirror of https://github.com/acidanthera/audk.git
IntelFsp2WrapperPkg: Support FSP Dispatch mode
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1300 Provides PCD selection for FSP Wrapper to support Dispatch mode. Also PcdFspmBaseAddress should support Dynamic for recovery scenario (multiple FSP-M binary in flash) Test: Verified on internal platform and both API and DISPATCH modes booted successfully. Cc: Jiewen Yao <Jiewen.yao@intel.com> Cc: Desimone Nathaniel L <nathaniel.l.desimone@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Chasel Chiu <chasel.chiu@intel.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
This commit is contained in:
parent
de1e1195b3
commit
115336ccaf
|
@ -3,7 +3,7 @@
|
||||||
register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
||||||
notify to call FspSiliconInit API.
|
notify to call FspSiliconInit API.
|
||||||
|
|
||||||
Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -65,7 +65,7 @@ PeiFspMemoryInit (
|
||||||
FspHobListPtr = NULL;
|
FspHobListPtr = NULL;
|
||||||
FspmUpdDataPtr = NULL;
|
FspmUpdDataPtr = NULL;
|
||||||
|
|
||||||
FspmHeaderPtr = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress));
|
FspmHeaderPtr = (FSP_INFO_HEADER *) FspFindFspHeader (PcdGet32 (PcdFspmBaseAddress));
|
||||||
DEBUG ((DEBUG_INFO, "FspmHeaderPtr - 0x%x\n", FspmHeaderPtr));
|
DEBUG ((DEBUG_INFO, "FspmHeaderPtr - 0x%x\n", FspmHeaderPtr));
|
||||||
if (FspmHeaderPtr == NULL) {
|
if (FspmHeaderPtr == NULL) {
|
||||||
return EFI_DEVICE_ERROR;
|
return EFI_DEVICE_ERROR;
|
||||||
|
@ -155,8 +155,20 @@ FspmWrapperInit (
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
Status = PeiFspMemoryInit ();
|
Status = EFI_SUCCESS;
|
||||||
ASSERT_EFI_ERROR (Status);
|
|
||||||
|
if (FixedPcdGet8 (PcdFspModeSelection) == 1) {
|
||||||
|
Status = PeiFspMemoryInit ();
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
} else {
|
||||||
|
PeiServicesInstallFvInfoPpi (
|
||||||
|
NULL,
|
||||||
|
(VOID *)(UINTN) PcdGet32 (PcdFspmBaseAddress),
|
||||||
|
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspmBaseAddress))->FvLength,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
# register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
||||||
# notify to call FspSiliconInit API.
|
# notify to call FspSiliconInit API.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -61,6 +61,7 @@
|
||||||
[Pcd]
|
[Pcd]
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress ## CONSUMES
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress ## CONSUMES
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmUpdDataAddress ## CONSUMES
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmUpdDataAddress ## CONSUMES
|
||||||
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspModeSelection ## CONSUMES
|
||||||
|
|
||||||
[Sources]
|
[Sources]
|
||||||
FspmWrapperPeim.c
|
FspmWrapperPeim.c
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
||||||
notify to call FspSiliconInit API.
|
notify to call FspSiliconInit API.
|
||||||
|
|
||||||
Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -349,7 +349,17 @@ FspsWrapperPeimEntryPoint (
|
||||||
{
|
{
|
||||||
DEBUG ((DEBUG_INFO, "FspsWrapperPeimEntryPoint\n"));
|
DEBUG ((DEBUG_INFO, "FspsWrapperPeimEntryPoint\n"));
|
||||||
|
|
||||||
FspsWrapperInit ();
|
if (FixedPcdGet8 (PcdFspModeSelection) == 1) {
|
||||||
|
FspsWrapperInit ();
|
||||||
|
} else {
|
||||||
|
PeiServicesInstallFvInfoPpi (
|
||||||
|
NULL,
|
||||||
|
(VOID *)(UINTN) PcdGet32 (PcdFspsBaseAddress),
|
||||||
|
(UINT32)((EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PcdGet32 (PcdFspsBaseAddress))->FvLength,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
# register TemporaryRamDonePpi to call TempRamExit API, and register MemoryDiscoveredPpi
|
||||||
# notify to call FspSiliconInit API.
|
# notify to call FspSiliconInit API.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -68,6 +68,7 @@
|
||||||
[Pcd]
|
[Pcd]
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress ## CONSUMES
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress ## CONSUMES
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsUpdDataAddress ## CONSUMES
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsUpdDataAddress ## CONSUMES
|
||||||
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspModeSelection ## CONSUMES
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
gFspHobGuid ## CONSUMES ## HOB
|
gFspHobGuid ## CONSUMES ## HOB
|
||||||
|
|
|
@ -71,9 +71,8 @@
|
||||||
## Indicate the PEI memory size platform want to report
|
## Indicate the PEI memory size platform want to report
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdPeiRecoveryMinMemSize|0x3000000|UINT32|0x40000005
|
gIntelFsp2WrapperTokenSpaceGuid.PcdPeiRecoveryMinMemSize|0x3000000|UINT32|0x40000005
|
||||||
|
|
||||||
## This is the base address of FSP-T/M/S
|
## This is the base address of FSP-T
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFsptBaseAddress|0x00000000|UINT32|0x00000300
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFsptBaseAddress|0x00000000|UINT32|0x00000300
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress|0x00000000|UINT32|0x00000301
|
|
||||||
|
|
||||||
## This PCD indicates if FSP APIs are skipped from FSP wrapper.<BR><BR>
|
## This PCD indicates if FSP APIs are skipped from FSP wrapper.<BR><BR>
|
||||||
# If a bit is set, that means this FSP API is skipped.<BR>
|
# If a bit is set, that means this FSP API is skipped.<BR>
|
||||||
|
@ -93,7 +92,17 @@
|
||||||
# @Prompt Skip FSP API from FSP wrapper.
|
# @Prompt Skip FSP API from FSP wrapper.
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdSkipFspApi|0x00000000|UINT32|0x40000009
|
gIntelFsp2WrapperTokenSpaceGuid.PcdSkipFspApi|0x00000000|UINT32|0x40000009
|
||||||
|
|
||||||
|
## This PCD decides how Wrapper code utilizes FSP
|
||||||
|
# 0: DISPATCH mode (FSP Wrapper will load PeiCore from FSP without calling FSP API)
|
||||||
|
# 1: API mode (FSP Wrapper will call FSP API)
|
||||||
|
#
|
||||||
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspModeSelection|0x00000001|UINT8|0x4000000A
|
||||||
|
|
||||||
[PcdsFixedAtBuild, PcdsPatchableInModule,PcdsDynamic,PcdsDynamicEx]
|
[PcdsFixedAtBuild, PcdsPatchableInModule,PcdsDynamic,PcdsDynamicEx]
|
||||||
|
#
|
||||||
|
## These are the base address of FSP-M/S
|
||||||
|
#
|
||||||
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress|0x00000000|UINT32|0x00001000
|
||||||
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress|0x00000000|UINT32|0x00001001
|
gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress|0x00000000|UINT32|0x00001001
|
||||||
#
|
#
|
||||||
# To provide flexibility for platform to pre-allocate FSP UPD buffer
|
# To provide flexibility for platform to pre-allocate FSP UPD buffer
|
||||||
|
|
Loading…
Reference in New Issue