Hi Abner,

Please see my response inline marked [SAMI].

Regards,

Sami Mujawar

On 13/09/2022, 04:00, "Chang, Abner" <abner.ch...@amd.com> wrote:

    [AMD Official Use Only - General]

    One question in below with tag [Abner],

    > -----Original Message-----
    > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sami
    > Mujawar via groups.io
    > Sent: Monday, September 12, 2022 10:57 PM
    > To: Girish Mahadevan <gmahade...@nvidia.com>; devel@edk2.groups.io;
    > Alexei Fedorov <alexei.fedo...@arm.com>
    > Cc: Samer El-Haj-Mahmoud <samer.el-haj-mahm...@arm.com>; Jeff
    > Brasen <jbra...@nvidia.com>; Ashish Singhal <ashishsin...@nvidia.com>;
    > Akanksha Jain <akanksha.ja...@arm.com>; Matteo Carlini
    > <matteo.carl...@arm.com>; Hemendra Dassanayake
    > <hemendra.dassanay...@arm.com>; Nick Ramirez <nrami...@nvidia.com>;
    > William Watson <wwat...@nvidia.com>; Akanksha Jain
    > <akanksha.ja...@arm.com>; n...@arm.com
    > Subject: Re: [edk2-devel] [PATCH 2/2] DynamicTablesPkg: Add Smbios
    > Type17 Table generator
...

    > > +STATIC
    > > +EFI_STATUS
    > > +EFIAPI
    > > +FreeSmbiosType17TableEx (
    > > +  IN      CONST SMBIOS_TABLE_GENERATOR                   *CONST    
This,
    > > +  IN      CONST CM_STD_OBJ_SMBIOS_TABLE_INFO             *CONST
    > SmbiosTableInfo,
    > > +  IN      CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL     *CONST
    > CfgMgrProtocol,
    > > +  IN OUT        SMBIOS_STRUCTURE                         ***CONST  
Table,
    > > +  IN      CONST UINTN                                              
TableCount
    > > +  )
    > > +{
    > > +  return EFI_SUCCESS;
    > > +}
    > > +
    > > +/** Construct SMBIOS Type17 Table describing memory devices.
    > > +
    > > +  If this function allocates any resources then they must be freed
    > > + in the FreeXXXXTableResources function.
    > > +
    > > +  @param [in]  This            Pointer to the SMBIOS table generator.
    > > +  @param [in]  SmbiosTableInfo Pointer to the SMBIOS table information.
    > > +  @param [in]  CfgMgrProtocol  Pointer to the Configuration Manager
    > > +                               Protocol interface.
    > > +  @param [out] Table           Pointer to the SMBIOS table.
    > > +
    > > +  @retval EFI_SUCCESS            Table generated successfully.
    > > +  @retval EFI_BAD_BUFFER_SIZE    The size returned by the Configuration
    > > +                                 Manager is less than the Object size 
for
    > > +                                 the requested object.
    > > +  @retval EFI_INVALID_PARAMETER  A parameter is invalid.
    > > +  @retval EFI_NOT_FOUND          Could not find information.
    > > +  @retval EFI_OUT_OF_RESOURCES   Could not allocate memory.
    > > +  @retval EFI_UNSUPPORTED        Unsupported configuration.
    > > +**/
    > > +STATIC
    > > +EFI_STATUS
    > > +EFIAPI
    > > +BuildSmbiosType17TableEx (
    > > +  IN  CONST SMBIOS_TABLE_GENERATOR                         *This,
    > > +  IN        CM_STD_OBJ_SMBIOS_TABLE_INFO           *CONST
    > SmbiosTableInfo,
    > > +  IN  CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL   *CONST
    > CfgMgrProtocol,
    > > +  OUT       SMBIOS_STRUCTURE                               ***Table,
    > > +  OUT       UINTN                                  *CONST  TableCount
    > > +  )
    > > +{
    > > +  EFI_STATUS                 Status;
    > > +  UINT32                     NumMemDevices;
    > > +  SMBIOS_STRUCTURE           **TableList;
    > > +  CM_ARM_MEMORY_DEVICE_INFO  *MemoryDevicesInfo;
    > > +  UINTN                      Index;
    > > +  UINTN                      SerialNumLen;
    > > +  CHAR8                      *SerialNum;
    > > +  UINTN                      AssetTagLen;
    > > +  CHAR8                      *AssetTag;
    > > +  UINTN                      DeviceLocatorLen;
    > > +  CHAR8                      *DeviceLocator;
    > > +  UINTN                      BankLocatorLen;
    > > +  CHAR8                      *BankLocator;
    > > +  UINTN                      FirmwareVersionLen;
    > > +  CHAR8                      *FirmwareVersion;
    > > +  CHAR8                      *OptionalStrings;
    > > +  SMBIOS_TABLE_TYPE17        *SmbiosRecord;
    > > +
    > > +  ASSERT (This != NULL);
    > > +  ASSERT (SmbiosTableInfo != NULL);
    > > +  ASSERT (CfgMgrProtocol != NULL);
    > > +  ASSERT (Table != NULL);
    > > +  ASSERT (TableCount != NULL);
    > > +  ASSERT (SmbiosTableInfo->TableGeneratorId == This->GeneratorID);
    > > +
    > > +  DEBUG ((DEBUG_ERROR, "%a : Start \n", __FUNCTION__));  *Table =
    > > + NULL;  Status = GetEArmObjMemoryDeviceInfo (
    > > +             CfgMgrProtocol,
    > > +             CM_NULL_TOKEN,
    > > +             &MemoryDevicesInfo,
    > > +             &NumMemDevices
    > > +             );
    [Abner] 
    SMBIOS type 17 record is generic to all platform architectures, however 
here we have the dependency with ARM namespace object. 
[SAMI] It would certainly be very good to have a common codebase across 
architectures. We welcome contribution from community members towards this 
effort.
So my question is what should we do if non-ARM platforms would like to leverage 
this library? 
[SAMI] I think we could define the SMBIOS specific objects in a separate 
namespace ID e.g. 1010b - SMBIOS Objects , see 
https://github.com/tianocore/edk2/blob/master/DynamicTablesPkg/Include/ConfigurationManagerObject.h#L30-L34
We can then define the SMBIOS objects as SMBIOS namespace objects. However, I 
would like to avoid duplicating any information between the ARM namespace 
objects and SMBIOS namespace objects (e.g. information about CPU, Cache, etc.). 
I have some initial thoughts on how this could be done by introducing an object 
mapper. However, I would first like to understand if you intend to use the 
Dynamic SMBIOS support only or you will use the Dynamic ACPI support as well?
[/SAMI]
    Thanks
    Abner

    > > +  if (EFI_ERROR (Status)) {
    > > +    DEBUG ((
    > > +      DEBUG_ERROR,
    > > +      "Failed to get Memory Devices CM Object %r\n",
    > > +      Status
    > > +      ));
    > > +    return Status;
    > > +  }
...



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#93780): https://edk2.groups.io/g/devel/message/93780
Mute This Topic: https://groups.io/mt/93275299/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to