[AMD Official Use Only - General] It could be removed by accident, V2 is sent.
Thanks Abner > -----Original Message----- > From: Nickle Wang <nick...@nvidia.com> > Sent: Monday, December 19, 2022 10:39 PM > To: Chang, Abner <abner.ch...@amd.com>; devel@edk2.groups.io > Cc: Igor Kulchytskyy <ig...@ami.com> > Subject: RE: [PATCH 1/2] RedfishPkg/RedfishHostInterface: Platform Redfish HI > notification > > Caution: This message originated from an External Source. Use proper caution > when opening attachments, clicking links, or responding. > > > Hi Abner, > > @@ -119,7 +123,7 @@ RedfishCreateSmbiosTable42 ( > } else { > NewProtocolRecords = ReallocatePool (CurrentProtocolsDataLength, > NewProtocolsDataLength, (VOID *)ProtocolRecords); > if (NewProtocolRecords == NULL) { > - DEBUG ((DEBUG_ERROR, "%a: Fail to allocate memory for Redfish host > interface protocol data.", __FUNCTION__)); > + DEBUG ((DEBUG_ERROR, "%a: Fail to allocate memory for Redfish > + host interface protocol data.")); > > I think we need "__FUNCTION__" above. Not sure why you remove it but "%a" > relies on it. > > Thanks, > Nickle > > -----Original Message----- > From: abner.ch...@amd.com <abner.ch...@amd.com> > Sent: Monday, December 19, 2022 10:17 PM > To: devel@edk2.groups.io > Cc: Nickle Wang <nick...@nvidia.com>; Igor Kulchytskyy <ig...@ami.com> > Subject: [PATCH 1/2] RedfishPkg/RedfishHostInterface: Platform Redfish HI > notification > > External email: Use caution opening links or attachments > > > From: Abner Chang <abner.ch...@amd.com> > > For some use cases, Redfish host interface table relies on the certain EFI > protocols installation at the driver connection. > Redfish host interface DXE driver is not able to build the SMBIOS type 42h > record > at driver entry point. This patch adds the mechanism in Redfish host interface > DXE driver to listen to EFI protocol installed by platform library that > indicates the > necessary information is ready for building SMBIOS 42h record. > > Signed-off-by: Abner Chang <abner.ch...@amd.com> > Cc: Nickle Wang <nick...@nvidia.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > --- > .../Include/Library/RedfishHostInterfaceLib.h | 27 ++++++- > .../PlatformHostInterfaceLibNull.c | 26 ++++++- > .../RedfishHostInterfaceDxe.c | 73 ++++++++++++++++++- > 3 files changed, 119 insertions(+), 7 deletions(-) > > diff --git a/RedfishPkg/Include/Library/RedfishHostInterfaceLib.h > b/RedfishPkg/Include/Library/RedfishHostInterfaceLib.h > index 8d8389b9647..fa9f2d64eea 100644 > --- a/RedfishPkg/Include/Library/RedfishHostInterfaceLib.h > +++ b/RedfishPkg/Include/Library/RedfishHostInterfaceLib.h > @@ -2,6 +2,7 @@ > Definitinos of RedfishHostInterfaceDxe driver. > > (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR> > + Copyright (C) 2022 Advanced Micro Devices, Inc. All rights > + reserved.<BR> > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -19,7 +20,7 @@ > /** > Get platform Redfish host interface device descriptor. > > - @param[in] DeviceType Pointer to retrieve device type. > + @param[out] DeviceType Pointer to retrieve device type. > @param[out] DeviceDescriptor Pointer to retrieve > REDFISH_INTERFACE_DATA, caller has to free > this memory using FreePool(). > @retval EFI_SUCCESS Device descriptor is returned successfully in > DeviceDescriptor. > @@ -28,7 +29,7 @@ > **/ > EFI_STATUS > RedfishPlatformHostInterfaceDeviceDescriptor ( > - IN UINT8 *DeviceType, > + OUT UINT8 *DeviceType, > OUT REDFISH_INTERFACE_DATA **DeviceDescriptor > ); > > @@ -40,7 +41,7 @@ RedfishPlatformHostInterfaceDeviceDescriptor ( > @param[in, out] ProtocolRecord Pointer to retrieve the first or the next > protocol record. > caller has to free the new protocol record > returned from > this function using FreePool(). > - param[in] IndexOfProtocolData The index of protocol data. > + @param[in] IndexOfProtocolData The index of protocol data. > > @retval EFI_SUCCESS Protocol records are all returned. > @retval EFI_NOT_FOUND No more protocol records. > @@ -52,4 +53,24 @@ RedfishPlatformHostInterfaceProtocolData ( > IN UINT8 IndexOfProtocolData > ); > > +/** > + Get the EFI protocol GUID installed by platform library which > + indicates the necessary information is ready for building > + SMBIOS 42h record. > + > + @param[out] InformationReadinessGuid Pointer to retrive the protocol > + GUID. > + > + @retval EFI_SUCCESS Notification is required for building up > + SMBIOS type 42h record. > + @retval EFI_UNSUPPORTED Notification is not required for building up > + SMBIOS type 42h record. > + @retval EFI_ALREADY_STARTED Platform host information is already ready. > + @retval Others Other errors. > +**/ > + > +EFI_STATUS > +RedfishPlatformHostInterfaceNotification ( > + OUT EFI_GUID **InformationReadinessGuid > + ); > #endif > diff --git > a/RedfishPkg/Library/PlatformHostInterfaceLibNull/PlatformHostInterfaceLibN > ull.c > b/RedfishPkg/Library/PlatformHostInterfaceLibNull/PlatformHostInterfaceLibN > ull.c > index b30f9e37a4d..f83f5418d47 100644 > --- > a/RedfishPkg/Library/PlatformHostInterfaceLibNull/PlatformHostInterfaceLibN > ull.c > +++ b/RedfishPkg/Library/PlatformHostInterfaceLibNull/PlatformHostInterf > +++ aceLibNull.c > @@ -2,6 +2,7 @@ > NULL instace of RedfishPlatformHostInterfaceLib > > (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR> > + Copyright (C) 2022 Advanced Micro Devices, Inc. All rights > + reserved.<BR> > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -23,7 +24,7 @@ > **/ > EFI_STATUS > RedfishPlatformHostInterfaceDeviceDescriptor ( > - IN UINT8 *DeviceType, > + OUT UINT8 *DeviceType, > OUT REDFISH_INTERFACE_DATA **DeviceDescriptor > ) > { > @@ -51,3 +52,26 @@ RedfishPlatformHostInterfaceProtocolData ( { > return EFI_NOT_FOUND; > } > + > +/** > + Get the EFI protocol GUID installed by platform library which > + indicates the necessary information is ready for building > + SMBIOS 42h record. > + > + @param[out] InformationReadinessGuid Pointer to retrive the protocol > + GUID. > + > + @retval EFI_SUCCESS Notification is required for building up > + SMBIOS type 42h record. > + @retval EFI_UNSUPPORTED Notification is not required for building up > + SMBIOS type 42h record. > + @retval EFI_ALREADY_STARTED Platform host information is already ready. > + @retval Others Other errors. > +**/ > +EFI_STATUS > +RedfishPlatformHostInterfaceNotification ( > + OUT EFI_GUID **InformationReadinessGuid > + ) > +{ > + return EFI_UNSUPPORTED; > +} > diff --git a/RedfishPkg/RedfishHostInterfaceDxe/RedfishHostInterfaceDxe.c > b/RedfishPkg/RedfishHostInterfaceDxe/RedfishHostInterfaceDxe.c > index 623350bc261..e5b2bb225f9 100644 > --- a/RedfishPkg/RedfishHostInterfaceDxe/RedfishHostInterfaceDxe.c > +++ b/RedfishPkg/RedfishHostInterfaceDxe/RedfishHostInterfaceDxe.c > @@ -6,6 +6,7 @@ > > Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR> > + Copyright (C) 2022 Advanced Micro Devices, Inc. All rights > + reserved.<BR> > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -21,6 +22,9 @@ > #include <Library/UefiBootServicesTableLib.h> > #include <Library/UefiRuntimeServicesTableLib.h> > > +static EFI_EVENT mPlatformHostInterfaceReadylEvent = NULL; static VOID > +*mPlatformHostInterfaceReadyRegistration = NULL; > + > /** > Create SMBIOS type 42 record for Redfish host interface. > > @@ -119,7 +123,7 @@ RedfishCreateSmbiosTable42 ( > } else { > NewProtocolRecords = ReallocatePool (CurrentProtocolsDataLength, > NewProtocolsDataLength, (VOID *)ProtocolRecords); > if (NewProtocolRecords == NULL) { > - DEBUG ((DEBUG_ERROR, "%a: Fail to allocate memory for Redfish host > interface protocol data.", __FUNCTION__)); > + DEBUG ((DEBUG_ERROR, "%a: Fail to allocate memory for Redfish > + host interface protocol data.")); > FreePool (ProtocolRecords); > FreePool (ProtocolRecord); > return EFI_OUT_OF_RESOURCES; > @@ -238,6 +242,27 @@ ON_EXIT: > return Status; > } > > +/** > + Notification event of platform Redfish Host Interface readiness. > + > + @param[in] Event Event whose notification function is being invoked. > + @param[in] Context The pointer to the notification function's context, > + which is implementation-dependent. > + > +**/ > +VOID > +EFIAPI > +PlatformHostInterfaceInformationReady ( > + IN EFI_EVENT Event, > + IN VOID *Context > + ) > +{ > + DEBUG ((DEBUG_INFO, "%a: Platform Redfish Host Interface informtion > +is ready\n", __FUNCTION__)); > + > + RedfishCreateSmbiosTable42 (); > + return; > +} > + > /** > Main entry for this driver. > > @@ -254,8 +279,50 @@ RedfishHostInterfaceDxeEntryPoint ( > IN EFI_SYSTEM_TABLE *SystemTable > ) > { > + EFI_STATUS Status; > + EFI_GUID *ReadyGuid; > + > + DEBUG ((DEBUG_INFO, "%a: Entry\n.", __FUNCTION__)); > + > // > - // Create SMBIOS type 42 record. > + // Check if the Redfish Host Interface depends on // the specific > + protocol installation. > // > - return RedfishCreateSmbiosTable42 (); > + Status = RedfishPlatformHostInterfaceNotification (&ReadyGuid); if > + (Status == EFI_SUCCESS) { > + DEBUG ((DEBUG_INFO, " Create protocol install notification to know > the > installation of platform Redfish host interface readiness\n")); > + DEBUG ((DEBUG_INFO, " Protocol GUID: %g\n", ReadyGuid)); > + // > + // Register event for ReadyGuid protocol installed by > + // platform Redfish host interface library. > + // > + Status = gBS->CreateEvent ( > + EVT_NOTIFY_SIGNAL, > + TPL_CALLBACK, > + PlatformHostInterfaceInformationReady, > + NULL, > + &mPlatformHostInterfaceReadylEvent > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " Fail to create event for the installation of > platform Redfish host interface readiness.\n")); > + return Status; > + } > + > + Status = gBS->RegisterProtocolNotify ( > + ReadyGuid, > + mPlatformHostInterfaceReadylEvent, > + &mPlatformHostInterfaceReadyRegistration > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, " Fail to register event for the installation > of > platform Redfish host interface readiness.\n")); > + return Status; > + } > + return EFI_SUCCESS; > + } > + if (Status == EFI_UNSUPPORTED || EFI_ALREADY_STARTED) { > + Status = RedfishCreateSmbiosTable42 (); } > + > + // Return other erros. > + return Status; > } > -- > 2.37.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#97565): https://edk2.groups.io/g/devel/message/97565 Mute This Topic: https://groups.io/mt/95765392/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-