This commit is contained in:
vanjeff 2010-06-29 09:14:31 +00:00
parent 6b22483ffb
commit 7df41b1150
3 changed files with 19 additions and 13 deletions

View File

@ -104,11 +104,10 @@ MemoryStatusCodeReportWorker (
PacketIndex = 0; PacketIndex = 0;
// //
// Journal GUID'ed HOBs to find empty record entry. if found, then save status code in it. // Journal GUID'ed HOBs to find empty record entry.
// otherwise, create a new GUID'ed HOB.
// //
Hob.Raw = GetFirstGuidHob (&gMemoryStatusCodeRecordGuid); Hob.Raw = GetFirstGuidHob (&gMemoryStatusCodeRecordGuid);
while (Hob.Raw != NULL) { while ((Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw)) != NULL) {
PacketHeader = (MEMORY_STATUSCODE_PACKET_HEADER *) GET_GUID_HOB_DATA (Hob.Guid); PacketHeader = (MEMORY_STATUSCODE_PACKET_HEADER *) GET_GUID_HOB_DATA (Hob.Guid);
// //
@ -124,17 +123,14 @@ MemoryStatusCodeReportWorker (
// //
PacketIndex++; PacketIndex++;
Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw); Hob.Raw = GET_NEXT_HOB (Hob);
} }
if (Record == NULL) { if (Record == NULL) {
// //
// No available entry found, so create new packet. // No available entry found
// //
PacketHeader = CreateMemoryStatusCodePacket (PacketIndex); return EFI_OUT_OF_RESOURCES;
Record = (MEMORY_STATUSCODE_RECORD *) (PacketHeader + 1);
Record = &Record[PacketHeader->RecordIndex++];
} }
Record->CodeType = CodeType; Record->CodeType = CodeType;

View File

@ -24,7 +24,7 @@ EFI_EVENT mLogDataHubEvent;
// //
// Cache data hub protocol. // Cache data hub protocol.
// //
EFI_DATA_HUB_PROTOCOL *mDataHubProtocol; EFI_DATA_HUB_PROTOCOL *mDataHubProtocol = NULL;
/** /**
@ -189,6 +189,7 @@ DataHubStatusCodeReportWorker (
BASE_LIST Marker; BASE_LIST Marker;
CHAR8 *Format; CHAR8 *Format;
UINTN CharCount; UINTN CharCount;
EFI_STATUS Status;
// //
// Use atom operation to avoid the reentant of report. // Use atom operation to avoid the reentant of report.
@ -205,6 +206,13 @@ DataHubStatusCodeReportWorker (
return EFI_DEVICE_ERROR; return EFI_DEVICE_ERROR;
} }
if (mDataHubProtocol == NULL) {
Status = DataHubStatusCodeInitializeWorker ();
if (EFI_ERROR (Status)) {
return Status;
}
}
Record = AcquireRecordBuffer (); Record = AcquireRecordBuffer ();
if (Record == NULL) { if (Record == NULL) {
// //
@ -358,7 +366,10 @@ DataHubStatusCodeInitializeWorker (
NULL, NULL,
(VOID **) &mDataHubProtocol (VOID **) &mDataHubProtocol
); );
ASSERT_EFI_ERROR (Status); if (EFI_ERROR (Status)) {
mDataHubProtocol = NULL;
return Status;
}
// //
// Create a Notify Event to log data in Data Hub // Create a Notify Event to log data in Data Hub

View File

@ -226,8 +226,7 @@ InitializationDispatcherWorker (
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
} }
if (FeaturePcdGet (PcdStatusCodeUseDataHub)) { if (FeaturePcdGet (PcdStatusCodeUseDataHub)) {
Status = DataHubStatusCodeInitializeWorker (); DataHubStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
} }
if (FeaturePcdGet (PcdStatusCodeUseOEM)) { if (FeaturePcdGet (PcdStatusCodeUseOEM)) {
// //