[PATCH 04/12] UefiPayloadPkg: Update the function definition of HobConstructor


Zhiguang Liu
 

Update the function defination of HobConstructor to align the Phit Hob
structure.

Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Guo Dong <guo.dong@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
---
UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c | 26 +++++++++++++-----=
--------
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c | 5 +----
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h | 16 ++++++++--------
3 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c b/UefiPayloadP=
kg/Library/PayloadEntryHobLib/Hob.c
index 23a749edf1..768c3db770 100644
--- a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
+++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
@@ -39,14 +39,14 @@ GetHobList (
/**=0D
Build a Handoff Information Table HOB=0D
=0D
- This function initialize a HOB region from EfiMemoryBegin with length=0D
- EfiMemoryLength. And EfiFreeMemoryBottom and EfiFreeMemoryTop should=0D
+ This function initialize a HOB region from EfiMemoryBegin to=0D
+ EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop should=0D
be inside the HOB region.=0D
=0D
- @param[in] EfiMemoryBegin Total memory start address=0D
- @param[in] EfiMemoryLength Total memory length reported in handoff =
HOB.=0D
- @param[in] EfiFreeMemoryBottom Free memory start address=0D
- @param[in] EfiFreeMemoryTop Free memory end address.=0D
+ @param[in] EfiMemoryBottom Total memory start address=0D
+ @param[in] EfiMemoryTop Total memory end address.=0D
+ @param[in] EfiFreeMemoryBottom Free memory start address=0D
+ @param[in] EfiFreeMemoryTop Free memory end address.=0D
=0D
@return The pointer to the handoff HOB table.=0D
=0D
@@ -54,8 +54,8 @@ GetHobList (
EFI_HOB_HANDOFF_INFO_TABLE*=0D
EFIAPI=0D
HobConstructor (=0D
- IN VOID *EfiMemoryBegin,=0D
- IN UINTN EfiMemoryLength,=0D
+ IN VOID *EfiMemoryBottom,=0D
+ IN VOID *EfiMemoryTop,=0D
IN VOID *EfiFreeMemoryBottom,=0D
IN VOID *EfiFreeMemoryTop=0D
)=0D
@@ -77,11 +77,11 @@ HobConstructor (
Hob->Version =3D EFI_HOB_HANDOFF_TABLE_VERSION;=0D
Hob->BootMode =3D BOOT_WITH_FULL_CONFIGURATION;=0D
=0D
- Hob->EfiMemoryTop =3D (UINTN)EfiMemoryBegin + EfiMemoryLength;=0D
- Hob->EfiMemoryBottom =3D (UINTN)EfiMemoryBegin;=0D
- Hob->EfiFreeMemoryTop =3D (UINTN)EfiFreeMemoryTop;=0D
- Hob->EfiFreeMemoryBottom =3D (EFI_PHYSICAL_ADDRESS)(UINTN)(HobEnd+1);=0D
- Hob->EfiEndOfHobList =3D (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;=0D
+ Hob->EfiMemoryTop =3D (EFI_PHYSICAL_ADDRESS) EfiMemoryTop;=0D
+ Hob->EfiMemoryBottom =3D (EFI_PHYSICAL_ADDRESS) EfiMemoryBottom;=0D
+ Hob->EfiFreeMemoryTop =3D (EFI_PHYSICAL_ADDRESS) EfiFreeMemoryTop;=0D
+ Hob->EfiFreeMemoryBottom =3D (EFI_PHYSICAL_ADDRESS) (UINTN) (HobEnd+1);=
=0D
+ Hob->EfiEndOfHobList =3D (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd;=0D
=0D
mHobList =3D Hob;=0D
return Hob;=0D
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c b/UefiPaylo=
adPkg/UefiPayloadEntry/UefiPayloadEntry.c
index 8c6f7e326f..4308936d63 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
@@ -382,7 +382,6 @@ PayloadEntry (
PHYSICAL_ADDRESS DxeCoreEntryPoint;=0D
EFI_HOB_HANDOFF_INFO_TABLE *HandoffHobTable;=0D
UINTN MemBase;=0D
- UINTN MemSize;=0D
UINTN HobMemBase;=0D
UINTN HobMemTop;=0D
EFI_PEI_HOB_POINTERS Hob;=0D
@@ -401,9 +400,7 @@ PayloadEntry (
HobMemBase =3D ALIGN_VALUE (MemBase + PcdGet32 (PcdPayloadFdMemSize), SI=
ZE_1MB);=0D
HobMemTop =3D HobMemBase + FixedPcdGet32 (PcdSystemMemoryUefiRegionSize=
);=0D
=0D
- // DXE core assumes the memory below HOB region could be used, so includ=
e the FV region memory into HOB range.=0D
- MemSize =3D HobMemTop - MemBase;=0D
- HandoffHobTable =3D HobConstructor ((VOID *)MemBase, MemSize, (VOID *)Ho=
bMemBase, (VOID *)HobMemTop);=0D
+ HobConstructor ((VOID *)MemBase, (VOID *)HobMemTop, (VOID *)HobMemBase, =
(VOID *)HobMemTop);=0D
=0D
// Build HOB based on information from Bootloader=0D
Status =3D BuildHobFromBl ();=0D
diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h b/UefiPaylo=
adPkg/UefiPayloadEntry/UefiPayloadEntry.h
index a4c9da128e..e9c3ec3073 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
@@ -83,14 +83,14 @@ UpdateStackHob (
/**=0D
Build a Handoff Information Table HOB=0D
=0D
- This function initialize a HOB region from EfiMemoryBegin with length=0D
- EfiMemoryLength. And EfiFreeMemoryBottom and EfiFreeMemoryTop should=0D
+ This function initialize a HOB region from EfiMemoryBegin to=0D
+ EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop should=0D
be inside the HOB region.=0D
=0D
- @param[in] EfiMemoryBegin Total memory start address=0D
- @param[in] EfiMemoryLength Total memory length reported in handoff =
HOB.=0D
- @param[in] EfiFreeMemoryBottom Free memory start address=0D
- @param[in] EfiFreeMemoryTop Free memory end address.=0D
+ @param[in] EfiMemoryBottom Total memory start address=0D
+ @param[in] EfiMemoryTop Total memory end address.=0D
+ @param[in] EfiFreeMemoryBottom Free memory start address=0D
+ @param[in] EfiFreeMemoryTop Free memory end address.=0D
=0D
@return The pointer to the handoff HOB table.=0D
=0D
@@ -98,8 +98,8 @@ UpdateStackHob (
EFI_HOB_HANDOFF_INFO_TABLE*=0D
EFIAPI=0D
HobConstructor (=0D
- IN VOID *EfiMemoryBegin,=0D
- IN UINTN EfiMemoryLength,=0D
+ IN VOID *EfiMemoryBottom,=0D
+ IN VOID *EfiMemoryTop,=0D
IN VOID *EfiFreeMemoryBottom,=0D
IN VOID *EfiFreeMemoryTop=0D
);=0D
--=20
2.16.2.windows.1


Guo Dong
 

Reviewed-by: Guo Dong <guo.dong@intel.com>

-----Original Message-----
From: Liu, Zhiguang <zhiguang.liu@intel.com>
Sent: Sunday, June 20, 2021 8:47 AM
To: devel@edk2.groups.io
Cc: Ma, Maurice <maurice.ma@intel.com>; Dong, Guo
<guo.dong@intel.com>; You, Benjamin <benjamin.you@intel.com>
Subject: [PATCH 04/12] UefiPayloadPkg: Update the function definition of
HobConstructor

Update the function defination of HobConstructor to align the Phit Hob
structure.

Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Guo Dong <guo.dong@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
---
UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c | 26 +++++++++++++--
-----------
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c | 5 +----
UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h | 16 ++++++++--------
3 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
index 23a749edf1..768c3db770 100644
--- a/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
+++ b/UefiPayloadPkg/Library/PayloadEntryHobLib/Hob.c
@@ -39,14 +39,14 @@ GetHobList (
/**

Build a Handoff Information Table HOB



- This function initialize a HOB region from EfiMemoryBegin with length

- EfiMemoryLength. And EfiFreeMemoryBottom and EfiFreeMemoryTop
should

+ This function initialize a HOB region from EfiMemoryBegin to

+ EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop
should

be inside the HOB region.



- @param[in] EfiMemoryBegin Total memory start address

- @param[in] EfiMemoryLength Total memory length reported in handoff
HOB.

- @param[in] EfiFreeMemoryBottom Free memory start address

- @param[in] EfiFreeMemoryTop Free memory end address.

+ @param[in] EfiMemoryBottom Total memory start address

+ @param[in] EfiMemoryTop Total memory end address.

+ @param[in] EfiFreeMemoryBottom Free memory start address

+ @param[in] EfiFreeMemoryTop Free memory end address.



@return The pointer to the handoff HOB table.



@@ -54,8 +54,8 @@ GetHobList (
EFI_HOB_HANDOFF_INFO_TABLE*

EFIAPI

HobConstructor (

- IN VOID *EfiMemoryBegin,

- IN UINTN EfiMemoryLength,

+ IN VOID *EfiMemoryBottom,

+ IN VOID *EfiMemoryTop,

IN VOID *EfiFreeMemoryBottom,

IN VOID *EfiFreeMemoryTop

)

@@ -77,11 +77,11 @@ HobConstructor (
Hob->Version = EFI_HOB_HANDOFF_TABLE_VERSION;

Hob->BootMode = BOOT_WITH_FULL_CONFIGURATION;



- Hob->EfiMemoryTop = (UINTN)EfiMemoryBegin + EfiMemoryLength;

- Hob->EfiMemoryBottom = (UINTN)EfiMemoryBegin;

- Hob->EfiFreeMemoryTop = (UINTN)EfiFreeMemoryTop;

- Hob->EfiFreeMemoryBottom =
(EFI_PHYSICAL_ADDRESS)(UINTN)(HobEnd+1);

- Hob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;

+ Hob->EfiMemoryTop = (EFI_PHYSICAL_ADDRESS) EfiMemoryTop;

+ Hob->EfiMemoryBottom = (EFI_PHYSICAL_ADDRESS) EfiMemoryBottom;

+ Hob->EfiFreeMemoryTop = (EFI_PHYSICAL_ADDRESS)
EfiFreeMemoryTop;

+ Hob->EfiFreeMemoryBottom = (EFI_PHYSICAL_ADDRESS) (UINTN)
(HobEnd+1);

+ Hob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd;



mHobList = Hob;

return Hob;

diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
index 8c6f7e326f..4308936d63 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
@@ -382,7 +382,6 @@ PayloadEntry (
PHYSICAL_ADDRESS DxeCoreEntryPoint;

EFI_HOB_HANDOFF_INFO_TABLE *HandoffHobTable;

UINTN MemBase;

- UINTN MemSize;

UINTN HobMemBase;

UINTN HobMemTop;

EFI_PEI_HOB_POINTERS Hob;

@@ -401,9 +400,7 @@ PayloadEntry (
HobMemBase = ALIGN_VALUE (MemBase + PcdGet32
(PcdPayloadFdMemSize), SIZE_1MB);

HobMemTop = HobMemBase + FixedPcdGet32
(PcdSystemMemoryUefiRegionSize);



- // DXE core assumes the memory below HOB region could be used, so
include the FV region memory into HOB range.

- MemSize = HobMemTop - MemBase;

- HandoffHobTable = HobConstructor ((VOID *)MemBase, MemSize, (VOID
*)HobMemBase, (VOID *)HobMemTop);

+ HobConstructor ((VOID *)MemBase, (VOID *)HobMemTop, (VOID
*)HobMemBase, (VOID *)HobMemTop);



// Build HOB based on information from Bootloader

Status = BuildHobFromBl ();

diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
index a4c9da128e..e9c3ec3073 100644
--- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
+++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.h
@@ -83,14 +83,14 @@ UpdateStackHob (
/**

Build a Handoff Information Table HOB



- This function initialize a HOB region from EfiMemoryBegin with length

- EfiMemoryLength. And EfiFreeMemoryBottom and EfiFreeMemoryTop
should

+ This function initialize a HOB region from EfiMemoryBegin to

+ EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop
should

be inside the HOB region.



- @param[in] EfiMemoryBegin Total memory start address

- @param[in] EfiMemoryLength Total memory length reported in handoff
HOB.

- @param[in] EfiFreeMemoryBottom Free memory start address

- @param[in] EfiFreeMemoryTop Free memory end address.

+ @param[in] EfiMemoryBottom Total memory start address

+ @param[in] EfiMemoryTop Total memory end address.

+ @param[in] EfiFreeMemoryBottom Free memory start address

+ @param[in] EfiFreeMemoryTop Free memory end address.



@return The pointer to the handoff HOB table.



@@ -98,8 +98,8 @@ UpdateStackHob (
EFI_HOB_HANDOFF_INFO_TABLE*

EFIAPI

HobConstructor (

- IN VOID *EfiMemoryBegin,

- IN UINTN EfiMemoryLength,

+ IN VOID *EfiMemoryBottom,

+ IN VOID *EfiMemoryTop,

IN VOID *EfiFreeMemoryBottom,

IN VOID *EfiFreeMemoryTop

);

--
2.16.2.windows.1