public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [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

* 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