* [PATCH v2] Add support for Diagnostics ACM in FitGen tool
@ 2020-02-07 22:32 Agrawal, Sachin
2020-02-10 14:09 ` Liming Gao
[not found] ` <15F20FCE7331F072.7072@groups.io>
0 siblings, 2 replies; 3+ messages in thread
From: Agrawal, Sachin @ 2020-02-07 22:32 UTC (permalink / raw)
To: devel; +Cc: Bob Feng, Liming Gao
From: "Agrawal, Sachin" <sachin.agrawal@intel.com>
REF https://bugzilla.tianocore.org/show_bug.cgi?id=2200
FitGen Tool is responsible for creating FIT table in UEFI BIOS.
A new FIT entry type (FIT Type 0x3) has been allocated for Diagnsotics ACM.
FitGen tool is updated to add support for this Diagnostics ACM.
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
---
Notes:
v2:
-Remove CheckOverlap call for Diagnostics ACM
-Updated Minor version to 59
Silicon/Intel/Tools/FitGen/FitGen.c | 67 ++++++++++++++++++++
Silicon/Intel/Tools/FitGen/FitGen.h | 2 +-
2 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c b/Silicon/Intel/Tools/FitGen/FitGen.c
index 5f5638dc8b..8122c10ebb 100644
--- a/Silicon/Intel/Tools/FitGen/FitGen.c
+++ b/Silicon/Intel/Tools/FitGen/FitGen.c
@@ -217,6 +217,7 @@ typedef struct {
#define FIT_TABLE_TYPE_HEADER 0
#define FIT_TABLE_TYPE_MICROCODE 1
#define FIT_TABLE_TYPE_STARTUP_ACM 2
+#define FIT_TABLE_TYPE_DIAGNST_ACM 3
#define FIT_TABLE_TYPE_BIOS_MODULE 7
#define FIT_TABLE_TYPE_TPM_POLICY 8
#define FIT_TABLE_TYPE_BIOS_POLICY 9
@@ -254,6 +255,8 @@ typedef struct {
UINT32 FitHeaderVersion;
FIT_TABLE_CONTEXT_ENTRY StartupAcm;
UINT32 StartupAcmVersion;
+ FIT_TABLE_CONTEXT_ENTRY DiagnstAcm;
+ UINT32 DiagnstAcmVersion;
FIT_TABLE_CONTEXT_ENTRY BiosModule[MAX_BIOS_MODULE_ENTRY];
UINT32 BiosModuleVersion;
FIT_TABLE_CONTEXT_ENTRY Microcode[MAX_MICROCODE_ENTRY];
@@ -326,6 +329,7 @@ Returns:
"\t[-L <MicrocodeSlotSize> <MicrocodeFfsGuid>]\n"
"\t[-I <BiosInfoGuid>]\n"
"\t[-S <StartupAcmAddress StartupAcmSize>|<StartupAcmGuid>] [-V <StartupAcmVersion>]\n"
+ "\t[-U <DiagnstAcmAddress>|<DiagnstAcmGuid>]\n"
"\t[-B <BiosModuleAddress BiosModuleSize>] [-B ...] [-V <BiosModuleVersion>]\n"
"\t[-M <MicrocodeAddress MicrocodeSize>] [-M ...]|[-U <MicrocodeFv MicrocodeBase>|<MicrocodeRegionOffset MicrocodeRegionSize>|<MicrocodeGuid>] [-V <MicrocodeVersion>]\n"
"\t[-O RecordType <RecordDataAddress RecordDataSize>|<RESERVE RecordDataSize>|<RecordDataGuid>|<RecordBinFile> [-V <RecordVersion>]] [-O ... [-V ...]]\n"
@@ -340,6 +344,8 @@ Returns:
printf ("\tStartupAcmAddress - Address of StartupAcm.\n");
printf ("\tStartupAcmSize - Size of StartupAcm.\n");
printf ("\tStartupAcmGuid - Guid of StartupAcm Module, if StartupAcm is in a BiosModule, it will be excluded form that.\n");
+ printf ("\tDiagnstAcmAddress - Address of DiagnstAcm.\n");
+ printf ("\tDiagnstAcmGuid - Guid of DiagnstAcm Module, if DiagnstAcm is in a BiosModule, it will be excluded from that.\n");
printf ("\tBiosModuleAddress - Address of BiosModule. User should ensure there is no overlap.\n");
printf ("\tBiosModuleSize - Size of BiosModule.\n");
printf ("\tMicrocodeAddress - Address of Microcode.\n");
@@ -1029,6 +1035,17 @@ Returns:
gFitTableContext.StartupAcmVersion = BiosInfoStruct[BiosInfoIndex].Version;
gFitTableContext.FitEntryNumber ++;
break;
+ case FIT_TABLE_TYPE_DIAGNST_ACM:
+ if (gFitTableContext.DiagnstAcm.Type != 0) {
+ Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated DiagnosticsAcm!", NULL);
+ return 0;
+ }
+ gFitTableContext.DiagnstAcm.Type = FIT_TABLE_TYPE_DIAGNST_ACM;
+ gFitTableContext.DiagnstAcm.Address = (UINT32)BiosInfoStruct[BiosInfoIndex].Address;
+ gFitTableContext.DiagnstAcm.Size = 0;
+ gFitTableContext.DiagnstAcmVersion = DEFAULT_FIT_ENTRY_VERSION;
+ gFitTableContext.FitEntryNumber ++;
+ break;
case FIT_TABLE_TYPE_BIOS_MODULE:
if ((BiosInfoStruct[BiosInfoIndex].Attributes & BIOS_INFO_STRUCT_ATTRIBUTE_BIOS_POST_IBB) != 0) {
continue;
@@ -1261,6 +1278,40 @@ Returns:
} while (FALSE);
//
+ // 1.5. DiagnosticsAcm
+ //
+ do {
+ if ((Index + 1 >= argc) ||
+ ((strcmp (argv[Index], "-U") != 0) &&
+ (strcmp (argv[Index], "-u") != 0)) ) {
+ if (BiosInfoExist && (gFitTableContext.DiagnstAcm.Type == FIT_TABLE_TYPE_DIAGNST_ACM)) {
+ break;
+ }
+ break;
+ }
+ if (IsGuidData (argv[Index + 1], &Guid)) {
+ FileBuffer = FindFileFromFvByGuid (FdBuffer, FdSize, &Guid, &FileSize);
+ if (FileBuffer == NULL) {
+ Error (NULL, 0, 0, "-U Parameter incorrect, GUID not found!", "%s", argv[Index + 1]);
+ return 0;
+ }
+ FileBuffer = (UINT8 *)MEMORY_TO_FLASH (FileBuffer, FdBuffer, FdSize);
+ Index += 2;
+ } else {
+ FileBuffer = (UINT8 *) (UINTN) xtoi (argv[Index + 1]);
+ Index += 2;
+ }
+ if (gFitTableContext.DiagnstAcm.Type != 0) {
+ Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated DiagnosticsAcm!", NULL);
+ return 0;
+ }
+ gFitTableContext.DiagnstAcm.Type = FIT_TABLE_TYPE_DIAGNST_ACM;
+ gFitTableContext.DiagnstAcm.Address = (UINT32) (UINTN) FileBuffer;
+ gFitTableContext.DiagnstAcm.Size = 0;
+ gFitTableContext.FitEntryNumber ++;
+ gFitTableContext.DiagnstAcmVersion = DEFAULT_FIT_ENTRY_VERSION;
+ } while (FALSE);
+
// 2. BiosModule
//
do {
@@ -1933,6 +1984,9 @@ Returns:
if (gFitTableContext.StartupAcm.Address != 0) {
printf ("StartupAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.StartupAcm.Address, gFitTableContext.StartupAcm.Size, gFitTableContext.StartupAcmVersion);
}
+ if (gFitTableContext.DiagnstAcm.Address != 0) {
+ printf ("DiagnosticAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.DiagnstAcm.Address, gFitTableContext.DiagnstAcm.Size, gFitTableContext.DiagnstAcmVersion);
+ }
for (Index = 0; Index < gFitTableContext.BiosModuleNumber; Index++) {
printf ("BiosModule[%d] - (0x%08x, 0x%08x, 0x%04x)\n", Index, gFitTableContext.BiosModule[Index].Address, gFitTableContext.BiosModule[Index].Size, gFitTableContext.BiosModuleVersion);
}
@@ -1957,6 +2011,7 @@ CHAR8 *mFitTypeStr[] = {
" ",
"MICROCODE ",
"STARTUP_ACM",
+ "DIAGNST_ACM",
" ",
" ",
" ",
@@ -2525,6 +2580,18 @@ Returns:
FitIndex++;
}
+ //
+ // 4.5. DiagnosticAcm
+ //
+ if (gFitTableContext.DiagnstAcm.Address != 0) {
+ FitEntry[FitIndex].Address = gFitTableContext.DiagnstAcm.Address;
+ *(UINT32 *)&FitEntry[FitIndex].Size[0] = 0;
+ FitEntry[FitIndex].Version = (UINT16)gFitTableContext.DiagnstAcmVersion;
+ FitEntry[FitIndex].Type = FIT_TABLE_TYPE_DIAGNST_ACM;
+ FitEntry[FitIndex].C_V = 0;
+ FitEntry[FitIndex].Checksum = 0;
+ FitIndex++;
+ }
//
// 5. BiosModule
//
diff --git a/Silicon/Intel/Tools/FitGen/FitGen.h b/Silicon/Intel/Tools/FitGen/FitGen.h
index 4d0a2dc6f8..fdf535924c 100644
--- a/Silicon/Intel/Tools/FitGen/FitGen.h
+++ b/Silicon/Intel/Tools/FitGen/FitGen.h
@@ -31,7 +31,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
// Utility version information
//
#define UTILITY_MAJOR_VERSION 0
-#define UTILITY_MINOR_VERSION 58
+#define UTILITY_MINOR_VERSION 59
#define UTILITY_DATE __DATE__
//
--
2.14.3.windows.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] Add support for Diagnostics ACM in FitGen tool
2020-02-07 22:32 [PATCH v2] Add support for Diagnostics ACM in FitGen tool Agrawal, Sachin
@ 2020-02-10 14:09 ` Liming Gao
[not found] ` <15F20FCE7331F072.7072@groups.io>
1 sibling, 0 replies; 3+ messages in thread
From: Liming Gao @ 2020-02-10 14:09 UTC (permalink / raw)
To: Agrawal, Sachin, devel@edk2.groups.io; +Cc: Feng, Bob C
Reviewed-by: Liming Gao <liming.gao@intel.com>
> -----Original Message-----
> From: Agrawal, Sachin <sachin.agrawal@intel.com>
> Sent: Saturday, February 8, 2020 6:32 AM
> To: devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com>
> Subject: [PATCH v2] Add support for Diagnostics ACM in FitGen tool
>
> From: "Agrawal, Sachin" <sachin.agrawal@intel.com>
>
> REF https://bugzilla.tianocore.org/show_bug.cgi?id=2200
>
> FitGen Tool is responsible for creating FIT table in UEFI BIOS.
> A new FIT entry type (FIT Type 0x3) has been allocated for Diagnsotics ACM.
> FitGen tool is updated to add support for this Diagnostics ACM.
>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
>
> Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
> ---
>
> Notes:
> v2:
> -Remove CheckOverlap call for Diagnostics ACM
> -Updated Minor version to 59
>
> Silicon/Intel/Tools/FitGen/FitGen.c | 67 ++++++++++++++++++++
> Silicon/Intel/Tools/FitGen/FitGen.h | 2 +-
> 2 files changed, 68 insertions(+), 1 deletion(-)
>
> diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c b/Silicon/Intel/Tools/FitGen/FitGen.c
> index 5f5638dc8b..8122c10ebb 100644
> --- a/Silicon/Intel/Tools/FitGen/FitGen.c
> +++ b/Silicon/Intel/Tools/FitGen/FitGen.c
> @@ -217,6 +217,7 @@ typedef struct {
> #define FIT_TABLE_TYPE_HEADER 0
> #define FIT_TABLE_TYPE_MICROCODE 1
> #define FIT_TABLE_TYPE_STARTUP_ACM 2
> +#define FIT_TABLE_TYPE_DIAGNST_ACM 3
> #define FIT_TABLE_TYPE_BIOS_MODULE 7
> #define FIT_TABLE_TYPE_TPM_POLICY 8
> #define FIT_TABLE_TYPE_BIOS_POLICY 9
> @@ -254,6 +255,8 @@ typedef struct {
> UINT32 FitHeaderVersion;
> FIT_TABLE_CONTEXT_ENTRY StartupAcm;
> UINT32 StartupAcmVersion;
> + FIT_TABLE_CONTEXT_ENTRY DiagnstAcm;
> + UINT32 DiagnstAcmVersion;
> FIT_TABLE_CONTEXT_ENTRY BiosModule[MAX_BIOS_MODULE_ENTRY];
> UINT32 BiosModuleVersion;
> FIT_TABLE_CONTEXT_ENTRY Microcode[MAX_MICROCODE_ENTRY];
> @@ -326,6 +329,7 @@ Returns:
> "\t[-L <MicrocodeSlotSize> <MicrocodeFfsGuid>]\n"
> "\t[-I <BiosInfoGuid>]\n"
> "\t[-S <StartupAcmAddress StartupAcmSize>|<StartupAcmGuid>] [-V <StartupAcmVersion>]\n"
> + "\t[-U <DiagnstAcmAddress>|<DiagnstAcmGuid>]\n"
> "\t[-B <BiosModuleAddress BiosModuleSize>] [-B ...] [-V <BiosModuleVersion>]\n"
> "\t[-M <MicrocodeAddress MicrocodeSize>] [-M ...]|[-U <MicrocodeFv MicrocodeBase>|<MicrocodeRegionOffset
> MicrocodeRegionSize>|<MicrocodeGuid>] [-V <MicrocodeVersion>]\n"
> "\t[-O RecordType <RecordDataAddress RecordDataSize>|<RESERVE RecordDataSize>|<RecordDataGuid>|<RecordBinFile> [-V
> <RecordVersion>]] [-O ... [-V ...]]\n"
> @@ -340,6 +344,8 @@ Returns:
> printf ("\tStartupAcmAddress - Address of StartupAcm.\n");
> printf ("\tStartupAcmSize - Size of StartupAcm.\n");
> printf ("\tStartupAcmGuid - Guid of StartupAcm Module, if StartupAcm is in a BiosModule, it will be excluded form that.\n");
> + printf ("\tDiagnstAcmAddress - Address of DiagnstAcm.\n");
> + printf ("\tDiagnstAcmGuid - Guid of DiagnstAcm Module, if DiagnstAcm is in a BiosModule, it will be excluded from that.\n");
> printf ("\tBiosModuleAddress - Address of BiosModule. User should ensure there is no overlap.\n");
> printf ("\tBiosModuleSize - Size of BiosModule.\n");
> printf ("\tMicrocodeAddress - Address of Microcode.\n");
> @@ -1029,6 +1035,17 @@ Returns:
> gFitTableContext.StartupAcmVersion = BiosInfoStruct[BiosInfoIndex].Version;
> gFitTableContext.FitEntryNumber ++;
> break;
> + case FIT_TABLE_TYPE_DIAGNST_ACM:
> + if (gFitTableContext.DiagnstAcm.Type != 0) {
> + Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated DiagnosticsAcm!", NULL);
> + return 0;
> + }
> + gFitTableContext.DiagnstAcm.Type = FIT_TABLE_TYPE_DIAGNST_ACM;
> + gFitTableContext.DiagnstAcm.Address = (UINT32)BiosInfoStruct[BiosInfoIndex].Address;
> + gFitTableContext.DiagnstAcm.Size = 0;
> + gFitTableContext.DiagnstAcmVersion = DEFAULT_FIT_ENTRY_VERSION;
> + gFitTableContext.FitEntryNumber ++;
> + break;
> case FIT_TABLE_TYPE_BIOS_MODULE:
> if ((BiosInfoStruct[BiosInfoIndex].Attributes & BIOS_INFO_STRUCT_ATTRIBUTE_BIOS_POST_IBB) != 0) {
> continue;
> @@ -1261,6 +1278,40 @@ Returns:
> } while (FALSE);
>
> //
> + // 1.5. DiagnosticsAcm
> + //
> + do {
> + if ((Index + 1 >= argc) ||
> + ((strcmp (argv[Index], "-U") != 0) &&
> + (strcmp (argv[Index], "-u") != 0)) ) {
> + if (BiosInfoExist && (gFitTableContext.DiagnstAcm.Type == FIT_TABLE_TYPE_DIAGNST_ACM)) {
> + break;
> + }
> + break;
> + }
> + if (IsGuidData (argv[Index + 1], &Guid)) {
> + FileBuffer = FindFileFromFvByGuid (FdBuffer, FdSize, &Guid, &FileSize);
> + if (FileBuffer == NULL) {
> + Error (NULL, 0, 0, "-U Parameter incorrect, GUID not found!", "%s", argv[Index + 1]);
> + return 0;
> + }
> + FileBuffer = (UINT8 *)MEMORY_TO_FLASH (FileBuffer, FdBuffer, FdSize);
> + Index += 2;
> + } else {
> + FileBuffer = (UINT8 *) (UINTN) xtoi (argv[Index + 1]);
> + Index += 2;
> + }
> + if (gFitTableContext.DiagnstAcm.Type != 0) {
> + Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated DiagnosticsAcm!", NULL);
> + return 0;
> + }
> + gFitTableContext.DiagnstAcm.Type = FIT_TABLE_TYPE_DIAGNST_ACM;
> + gFitTableContext.DiagnstAcm.Address = (UINT32) (UINTN) FileBuffer;
> + gFitTableContext.DiagnstAcm.Size = 0;
> + gFitTableContext.FitEntryNumber ++;
> + gFitTableContext.DiagnstAcmVersion = DEFAULT_FIT_ENTRY_VERSION;
> + } while (FALSE);
> +
> // 2. BiosModule
> //
> do {
> @@ -1933,6 +1984,9 @@ Returns:
> if (gFitTableContext.StartupAcm.Address != 0) {
> printf ("StartupAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.StartupAcm.Address, gFitTableContext.StartupAcm.Size,
> gFitTableContext.StartupAcmVersion);
> }
> + if (gFitTableContext.DiagnstAcm.Address != 0) {
> + printf ("DiagnosticAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.DiagnstAcm.Address, gFitTableContext.DiagnstAcm.Size,
> gFitTableContext.DiagnstAcmVersion);
> + }
> for (Index = 0; Index < gFitTableContext.BiosModuleNumber; Index++) {
> printf ("BiosModule[%d] - (0x%08x, 0x%08x, 0x%04x)\n", Index, gFitTableContext.BiosModule[Index].Address,
> gFitTableContext.BiosModule[Index].Size, gFitTableContext.BiosModuleVersion);
> }
> @@ -1957,6 +2011,7 @@ CHAR8 *mFitTypeStr[] = {
> " ",
> "MICROCODE ",
> "STARTUP_ACM",
> + "DIAGNST_ACM",
> " ",
> " ",
> " ",
> @@ -2525,6 +2580,18 @@ Returns:
> FitIndex++;
> }
>
> + //
> + // 4.5. DiagnosticAcm
> + //
> + if (gFitTableContext.DiagnstAcm.Address != 0) {
> + FitEntry[FitIndex].Address = gFitTableContext.DiagnstAcm.Address;
> + *(UINT32 *)&FitEntry[FitIndex].Size[0] = 0;
> + FitEntry[FitIndex].Version = (UINT16)gFitTableContext.DiagnstAcmVersion;
> + FitEntry[FitIndex].Type = FIT_TABLE_TYPE_DIAGNST_ACM;
> + FitEntry[FitIndex].C_V = 0;
> + FitEntry[FitIndex].Checksum = 0;
> + FitIndex++;
> + }
> //
> // 5. BiosModule
> //
> diff --git a/Silicon/Intel/Tools/FitGen/FitGen.h b/Silicon/Intel/Tools/FitGen/FitGen.h
> index 4d0a2dc6f8..fdf535924c 100644
> --- a/Silicon/Intel/Tools/FitGen/FitGen.h
> +++ b/Silicon/Intel/Tools/FitGen/FitGen.h
> @@ -31,7 +31,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> // Utility version information
> //
> #define UTILITY_MAJOR_VERSION 0
> -#define UTILITY_MINOR_VERSION 58
> +#define UTILITY_MINOR_VERSION 59
> #define UTILITY_DATE __DATE__
>
> //
> --
> 2.14.3.windows.1
^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <15F20FCE7331F072.7072@groups.io>]
* Re: [edk2-devel] [PATCH v2] Add support for Diagnostics ACM in FitGen tool
[not found] ` <15F20FCE7331F072.7072@groups.io>
@ 2020-02-11 5:37 ` Liming Gao
0 siblings, 0 replies; 3+ messages in thread
From: Liming Gao @ 2020-02-11 5:37 UTC (permalink / raw)
To: devel@edk2.groups.io, Gao, Liming, Agrawal, Sachin; +Cc: Feng, Bob C
Push @ 8864a1ad2f090e8f71bb4a5da873baf903f5e053
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Liming Gao
> Sent: Monday, February 10, 2020 10:10 PM
> To: Agrawal, Sachin <sachin.agrawal@intel.com>; devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>
> Subject: Re: [edk2-devel] [PATCH v2] Add support for Diagnostics ACM in FitGen tool
>
> Reviewed-by: Liming Gao <liming.gao@intel.com>
>
> > -----Original Message-----
> > From: Agrawal, Sachin <sachin.agrawal@intel.com>
> > Sent: Saturday, February 8, 2020 6:32 AM
> > To: devel@edk2.groups.io
> > Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com>
> > Subject: [PATCH v2] Add support for Diagnostics ACM in FitGen tool
> >
> > From: "Agrawal, Sachin" <sachin.agrawal@intel.com>
> >
> > REF https://bugzilla.tianocore.org/show_bug.cgi?id=2200
> >
> > FitGen Tool is responsible for creating FIT table in UEFI BIOS.
> > A new FIT entry type (FIT Type 0x3) has been allocated for Diagnsotics ACM.
> > FitGen tool is updated to add support for this Diagnostics ACM.
> >
> > Cc: Bob Feng <bob.c.feng@intel.com>
> > Cc: Liming Gao <liming.gao@intel.com>
> >
> > Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
> > ---
> >
> > Notes:
> > v2:
> > -Remove CheckOverlap call for Diagnostics ACM
> > -Updated Minor version to 59
> >
> > Silicon/Intel/Tools/FitGen/FitGen.c | 67 ++++++++++++++++++++
> > Silicon/Intel/Tools/FitGen/FitGen.h | 2 +-
> > 2 files changed, 68 insertions(+), 1 deletion(-)
> >
> > diff --git a/Silicon/Intel/Tools/FitGen/FitGen.c b/Silicon/Intel/Tools/FitGen/FitGen.c
> > index 5f5638dc8b..8122c10ebb 100644
> > --- a/Silicon/Intel/Tools/FitGen/FitGen.c
> > +++ b/Silicon/Intel/Tools/FitGen/FitGen.c
> > @@ -217,6 +217,7 @@ typedef struct {
> > #define FIT_TABLE_TYPE_HEADER 0
> > #define FIT_TABLE_TYPE_MICROCODE 1
> > #define FIT_TABLE_TYPE_STARTUP_ACM 2
> > +#define FIT_TABLE_TYPE_DIAGNST_ACM 3
> > #define FIT_TABLE_TYPE_BIOS_MODULE 7
> > #define FIT_TABLE_TYPE_TPM_POLICY 8
> > #define FIT_TABLE_TYPE_BIOS_POLICY 9
> > @@ -254,6 +255,8 @@ typedef struct {
> > UINT32 FitHeaderVersion;
> > FIT_TABLE_CONTEXT_ENTRY StartupAcm;
> > UINT32 StartupAcmVersion;
> > + FIT_TABLE_CONTEXT_ENTRY DiagnstAcm;
> > + UINT32 DiagnstAcmVersion;
> > FIT_TABLE_CONTEXT_ENTRY BiosModule[MAX_BIOS_MODULE_ENTRY];
> > UINT32 BiosModuleVersion;
> > FIT_TABLE_CONTEXT_ENTRY Microcode[MAX_MICROCODE_ENTRY];
> > @@ -326,6 +329,7 @@ Returns:
> > "\t[-L <MicrocodeSlotSize> <MicrocodeFfsGuid>]\n"
> > "\t[-I <BiosInfoGuid>]\n"
> > "\t[-S <StartupAcmAddress StartupAcmSize>|<StartupAcmGuid>] [-V <StartupAcmVersion>]\n"
> > + "\t[-U <DiagnstAcmAddress>|<DiagnstAcmGuid>]\n"
> > "\t[-B <BiosModuleAddress BiosModuleSize>] [-B ...] [-V <BiosModuleVersion>]\n"
> > "\t[-M <MicrocodeAddress MicrocodeSize>] [-M ...]|[-U <MicrocodeFv MicrocodeBase>|<MicrocodeRegionOffset
> > MicrocodeRegionSize>|<MicrocodeGuid>] [-V <MicrocodeVersion>]\n"
> > "\t[-O RecordType <RecordDataAddress RecordDataSize>|<RESERVE RecordDataSize>|<RecordDataGuid>|<RecordBinFile> [-V
> > <RecordVersion>]] [-O ... [-V ...]]\n"
> > @@ -340,6 +344,8 @@ Returns:
> > printf ("\tStartupAcmAddress - Address of StartupAcm.\n");
> > printf ("\tStartupAcmSize - Size of StartupAcm.\n");
> > printf ("\tStartupAcmGuid - Guid of StartupAcm Module, if StartupAcm is in a BiosModule, it will be excluded form that.\n");
> > + printf ("\tDiagnstAcmAddress - Address of DiagnstAcm.\n");
> > + printf ("\tDiagnstAcmGuid - Guid of DiagnstAcm Module, if DiagnstAcm is in a BiosModule, it will be excluded from that.\n");
> > printf ("\tBiosModuleAddress - Address of BiosModule. User should ensure there is no overlap.\n");
> > printf ("\tBiosModuleSize - Size of BiosModule.\n");
> > printf ("\tMicrocodeAddress - Address of Microcode.\n");
> > @@ -1029,6 +1035,17 @@ Returns:
> > gFitTableContext.StartupAcmVersion = BiosInfoStruct[BiosInfoIndex].Version;
> > gFitTableContext.FitEntryNumber ++;
> > break;
> > + case FIT_TABLE_TYPE_DIAGNST_ACM:
> > + if (gFitTableContext.DiagnstAcm.Type != 0) {
> > + Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated DiagnosticsAcm!", NULL);
> > + return 0;
> > + }
> > + gFitTableContext.DiagnstAcm.Type = FIT_TABLE_TYPE_DIAGNST_ACM;
> > + gFitTableContext.DiagnstAcm.Address = (UINT32)BiosInfoStruct[BiosInfoIndex].Address;
> > + gFitTableContext.DiagnstAcm.Size = 0;
> > + gFitTableContext.DiagnstAcmVersion = DEFAULT_FIT_ENTRY_VERSION;
> > + gFitTableContext.FitEntryNumber ++;
> > + break;
> > case FIT_TABLE_TYPE_BIOS_MODULE:
> > if ((BiosInfoStruct[BiosInfoIndex].Attributes & BIOS_INFO_STRUCT_ATTRIBUTE_BIOS_POST_IBB) != 0) {
> > continue;
> > @@ -1261,6 +1278,40 @@ Returns:
> > } while (FALSE);
> >
> > //
> > + // 1.5. DiagnosticsAcm
> > + //
> > + do {
> > + if ((Index + 1 >= argc) ||
> > + ((strcmp (argv[Index], "-U") != 0) &&
> > + (strcmp (argv[Index], "-u") != 0)) ) {
> > + if (BiosInfoExist && (gFitTableContext.DiagnstAcm.Type == FIT_TABLE_TYPE_DIAGNST_ACM)) {
> > + break;
> > + }
> > + break;
> > + }
> > + if (IsGuidData (argv[Index + 1], &Guid)) {
> > + FileBuffer = FindFileFromFvByGuid (FdBuffer, FdSize, &Guid, &FileSize);
> > + if (FileBuffer == NULL) {
> > + Error (NULL, 0, 0, "-U Parameter incorrect, GUID not found!", "%s", argv[Index + 1]);
> > + return 0;
> > + }
> > + FileBuffer = (UINT8 *)MEMORY_TO_FLASH (FileBuffer, FdBuffer, FdSize);
> > + Index += 2;
> > + } else {
> > + FileBuffer = (UINT8 *) (UINTN) xtoi (argv[Index + 1]);
> > + Index += 2;
> > + }
> > + if (gFitTableContext.DiagnstAcm.Type != 0) {
> > + Error (NULL, 0, 0, "-U Parameter incorrect, Duplicated DiagnosticsAcm!", NULL);
> > + return 0;
> > + }
> > + gFitTableContext.DiagnstAcm.Type = FIT_TABLE_TYPE_DIAGNST_ACM;
> > + gFitTableContext.DiagnstAcm.Address = (UINT32) (UINTN) FileBuffer;
> > + gFitTableContext.DiagnstAcm.Size = 0;
> > + gFitTableContext.FitEntryNumber ++;
> > + gFitTableContext.DiagnstAcmVersion = DEFAULT_FIT_ENTRY_VERSION;
> > + } while (FALSE);
> > +
> > // 2. BiosModule
> > //
> > do {
> > @@ -1933,6 +1984,9 @@ Returns:
> > if (gFitTableContext.StartupAcm.Address != 0) {
> > printf ("StartupAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.StartupAcm.Address, gFitTableContext.StartupAcm.Size,
> > gFitTableContext.StartupAcmVersion);
> > }
> > + if (gFitTableContext.DiagnstAcm.Address != 0) {
> > + printf ("DiagnosticAcm - (0x%08x, 0x%08x, 0x%04x)\n", gFitTableContext.DiagnstAcm.Address, gFitTableContext.DiagnstAcm.Size,
> > gFitTableContext.DiagnstAcmVersion);
> > + }
> > for (Index = 0; Index < gFitTableContext.BiosModuleNumber; Index++) {
> > printf ("BiosModule[%d] - (0x%08x, 0x%08x, 0x%04x)\n", Index, gFitTableContext.BiosModule[Index].Address,
> > gFitTableContext.BiosModule[Index].Size, gFitTableContext.BiosModuleVersion);
> > }
> > @@ -1957,6 +2011,7 @@ CHAR8 *mFitTypeStr[] = {
> > " ",
> > "MICROCODE ",
> > "STARTUP_ACM",
> > + "DIAGNST_ACM",
> > " ",
> > " ",
> > " ",
> > @@ -2525,6 +2580,18 @@ Returns:
> > FitIndex++;
> > }
> >
> > + //
> > + // 4.5. DiagnosticAcm
> > + //
> > + if (gFitTableContext.DiagnstAcm.Address != 0) {
> > + FitEntry[FitIndex].Address = gFitTableContext.DiagnstAcm.Address;
> > + *(UINT32 *)&FitEntry[FitIndex].Size[0] = 0;
> > + FitEntry[FitIndex].Version = (UINT16)gFitTableContext.DiagnstAcmVersion;
> > + FitEntry[FitIndex].Type = FIT_TABLE_TYPE_DIAGNST_ACM;
> > + FitEntry[FitIndex].C_V = 0;
> > + FitEntry[FitIndex].Checksum = 0;
> > + FitIndex++;
> > + }
> > //
> > // 5. BiosModule
> > //
> > diff --git a/Silicon/Intel/Tools/FitGen/FitGen.h b/Silicon/Intel/Tools/FitGen/FitGen.h
> > index 4d0a2dc6f8..fdf535924c 100644
> > --- a/Silicon/Intel/Tools/FitGen/FitGen.h
> > +++ b/Silicon/Intel/Tools/FitGen/FitGen.h
> > @@ -31,7 +31,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> > // Utility version information
> > //
> > #define UTILITY_MAJOR_VERSION 0
> > -#define UTILITY_MINOR_VERSION 58
> > +#define UTILITY_MINOR_VERSION 59
> > #define UTILITY_DATE __DATE__
> >
> > //
> > --
> > 2.14.3.windows.1
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-02-11 5:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-07 22:32 [PATCH v2] Add support for Diagnostics ACM in FitGen tool Agrawal, Sachin
2020-02-10 14:09 ` Liming Gao
[not found] ` <15F20FCE7331F072.7072@groups.io>
2020-02-11 5:37 ` [edk2-devel] " Liming Gao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox