[AMD Official Use Only - General] Hi Nickle, one comment below.
> -----Original Message----- > From: Nickle Wang <nick...@nvidia.com> > Sent: Wednesday, December 6, 2023 4:57 PM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > <ig...@ami.com>; Nick Ramirez <nrami...@nvidia.com> > Subject: [edk2-redfish-client][PATCH] > RedfishClientPkg/RedfishFeatureCoreDxe: fix Redfish event issue. > > Caution: This message originated from an External Source. Use proper caution > when opening attachments, clicking links, or responding. > > > RedfishFeatureDriverStartup is callback function at TPL_CALLBACK > level. In this function, Redfish events are signaled. However, > Redfish events are created in TPL_CALLBACK level too. As the result, > Redfish events cannot be invoked in desired sequence. Decrease the > TPL to TPL_APPLICATION level inside RedfishFeatureDriverStartup and > restore it to TPL_CALLBACK level before leaving this function. Now, > Redfish events are called in correct sequence. > > Signed-off-by: Nickle Wang <nick...@nvidia.com> > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > Cc: Nick Ramirez <nrami...@nvidia.com> > --- > .../RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.h | 1 + > .../RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.c | 14 +++++++++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git > a/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.h > b/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.h > index acefa41b..de08d79d 100644 > --- a/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.h > +++ b/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.h > @@ -33,6 +33,7 @@ > #define NodeIsCollectionLeftBracket L'{' > #define NodeIsCollectionRightBracket L'}' > #define NodeIsCollectionSymbol L"/{}" > +#define REDFISH_FEATURE_CORE_TPL TPL_CALLBACK > > typedef struct _REDFISH_FEATURE_INTERNAL_DATA > REDFISH_FEATURE_INTERNAL_DATA; > struct _REDFISH_FEATURE_INTERNAL_DATA { > diff --git a/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.c > b/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.c > index f3188ddf..c0c3ec47 100644 > --- a/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.c > +++ b/RedfishClientPkg/RedfishFeatureCoreDxe/RedfishFeatureCoreDxe.c > @@ -272,6 +272,13 @@ RedfishFeatureDriverStartup ( > return; > } > > + // > + // Lower the TPL to TPL_APPLICATION so that > + // Redfish event and report status code can be > + // triggered > + // > + gBS->RestoreTPL (TPL_APPLICATION); > + > // > // Reset PcdRedfishSystemRebootRequired flag > // > @@ -321,6 +328,11 @@ RedfishFeatureDriverStartup ( > gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); > CpuDeadLoop (); > } > + > + // > + // Restore to the TPL where this callback handler is called. > + // > + gBS->RaiseTPL (REDFISH_FEATURE_CORE_TPL); If we use PCD here, then we have to also update CreateEventEx in the RedfishFeatureCoreEntryPoint. Create the event using REDFISH_FEATURE_CORE_TPL. Abner > } > > /** > @@ -670,7 +682,7 @@ RedfishFeatureCoreEntryPoint ( > > Status = gBS->CreateEventEx ( > EVT_NOTIFY_SIGNAL, > - TPL_CALLBACK, > + REDFISH_FEATURE_CORE_TPL, > RedfishFeatureDriverStartup, > (CONST VOID *)&mFeatureDriverStartupContext, > EventGuid, > -- > 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112121): https://edk2.groups.io/g/devel/message/112121 Mute This Topic: https://groups.io/mt/103009658/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-