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); } /** @@ -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 (#112100): https://edk2.groups.io/g/devel/message/112100 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] -=-=-=-=-=-=-=-=-=-=-=-