Update directory/file names for status code runtime dxe driver.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8180 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
xli24 2009-04-27 06:35:40 +00:00
parent 9484bb628a
commit 20e7a77431
7 changed files with 142 additions and 182 deletions

View File

@ -1,161 +0,0 @@
/** @file
Status Code Architectural Protocol implementation as defined in Tiano
Architecture Specification.
This driver has limited functionality at runtime and will not log to Data Hub
at runtime.
Notes:
This driver assumes the following ReportStatusCode strategy:
PEI -> uses PeiReportStatusCode
DXE IPL -> uses PeiReportStatusCode
early DXE -> uses PeiReportStatusCode via HOB
DXE -> This driver
RT -> This driver
Copyright (c) 2006 - 2009, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#include "DxeStatusCode.h"
/**
Dispatch initialization request to sub status code devices based on
customized feature flags.
**/
VOID
InitializationDispatcherWorker (
VOID
)
{
EFI_PEI_HOB_POINTERS Hob;
EFI_STATUS Status;
MEMORY_STATUSCODE_PACKET_HEADER *PacketHeader;
MEMORY_STATUSCODE_RECORD *Record;
UINTN ExpectedPacketIndex;
UINTN Index;
VOID *HobStart;
//
// If enable UseSerial, then initialize serial port.
// if enable UseRuntimeMemory, then initialize runtime memory status code worker.
// if enable UseDataHub, then initialize data hub status code worker.
//
if (FeaturePcdGet (PcdStatusCodeUseEfiSerial)) {
Status = EfiSerialStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseHardSerial)) {
//
// Call Serial Port Lib API to initialize serial port.
//
Status = SerialPortInitialize ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseRuntimeMemory)) {
Status = RtMemoryStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseDataHub)) {
Status = DataHubStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseOEM)) {
//
// Call OEM hook status code library API to initialize OEM device for status code.
//
Status = OemHookStatusCodeInitialize ();
ASSERT_EFI_ERROR (Status);
}
//
// Replay Status code which saved in GUID'ed HOB to all supported devices.
//
//
// Journal GUID'ed HOBs to find all record entry, if found,
// then output record to support replay device.
//
ExpectedPacketIndex = 0;
Hob.Raw = GetFirstGuidHob (&gMemoryStatusCodeRecordGuid);
HobStart = Hob.Raw;
while (Hob.Raw != NULL) {
PacketHeader = (MEMORY_STATUSCODE_PACKET_HEADER *) GET_GUID_HOB_DATA (Hob.Guid);
if (PacketHeader->PacketIndex == ExpectedPacketIndex) {
Record = (MEMORY_STATUSCODE_RECORD *) (PacketHeader + 1);
for (Index = 0; Index < PacketHeader->RecordIndex; Index++) {
//
// Dispatch records to devices based on feature flag.
//
if (FeaturePcdGet (PcdStatusCodeReplayInSerial) &&
(FeaturePcdGet (PcdStatusCodeUseHardSerial) ||
FeaturePcdGet (PcdStatusCodeUseEfiSerial))) {
SerialStatusCodeReportWorker (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance,
NULL,
NULL
);
}
if (FeaturePcdGet (PcdStatusCodeReplayInRuntimeMemory) &&
FeaturePcdGet (PcdStatusCodeUseRuntimeMemory)) {
RtMemoryStatusCodeReportWorker (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance
);
}
if (FeaturePcdGet (PcdStatusCodeReplayInDataHub) &&
FeaturePcdGet (PcdStatusCodeUseDataHub)) {
DataHubStatusCodeReportWorker (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance,
NULL,
NULL
);
}
if (FeaturePcdGet (PcdStatusCodeReplayInOEM) &&
FeaturePcdGet (PcdStatusCodeUseOEM)) {
//
// Call OEM hook status code library API to report status code to OEM device
//
OemHookStatusCodeReport (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance,
NULL,
NULL
);
}
}
ExpectedPacketIndex++;
//
// See whether there is gap of packet or not
//
if (HobStart != NULL) {
HobStart = NULL;
Hob.Raw = HobStart;
continue;
}
} else if (HobStart != NULL) {
//
// Cache the found packet for improve the performance
//
HobStart = Hob.Raw;
}
Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw);
}
}

View File

@ -12,7 +12,7 @@
**/
#include "DxeStatusCode.h"
#include "StatusCodeRuntimeDxe.h"
//
// Initialize FIFO to cache records.

View File

@ -12,7 +12,7 @@
**/
#include "DxeStatusCode.h"
#include "StatusCodeRuntimeDxe.h"
RUNTIME_MEMORY_STATUSCODE_HEADER *mRtMemoryStatusCodeTable;

View File

@ -12,7 +12,7 @@
**/
#include "DxeStatusCode.h"
#include "StatusCodeRuntimeDxe.h"
EFI_SERIAL_IO_PROTOCOL *mSerialIoProtocol;

View File

@ -1,7 +1,7 @@
/** @file
Status code driver for IA32/X64/EBC architecture.
Copyright (c) 2006, Intel Corporation
Copyright (c) 2006 - 2009, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@ -12,7 +12,7 @@
**/
#include "DxeStatusCode.h"
#include "StatusCodeRuntimeDxe.h"
EFI_EVENT mVirtualAddressChangeEvent = NULL;
EFI_HANDLE mHandle = NULL;
@ -44,7 +44,7 @@ UINT32 mStatusCodeNestStatus = 0;
**/
EFI_STATUS
EFIAPI
DxeStatusCodeDriverEntry (
StatusCodeRuntimeDxeEntry (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
@ -191,3 +191,135 @@ VirtualAddressChangeCallBack (
);
}
/**
Dispatch initialization request to sub status code devices based on
customized feature flags.
**/
VOID
InitializationDispatcherWorker (
VOID
)
{
EFI_PEI_HOB_POINTERS Hob;
EFI_STATUS Status;
MEMORY_STATUSCODE_PACKET_HEADER *PacketHeader;
MEMORY_STATUSCODE_RECORD *Record;
UINTN ExpectedPacketIndex;
UINTN Index;
VOID *HobStart;
//
// If enable UseSerial, then initialize serial port.
// if enable UseRuntimeMemory, then initialize runtime memory status code worker.
// if enable UseDataHub, then initialize data hub status code worker.
//
if (FeaturePcdGet (PcdStatusCodeUseEfiSerial)) {
Status = EfiSerialStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseHardSerial)) {
//
// Call Serial Port Lib API to initialize serial port.
//
Status = SerialPortInitialize ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseRuntimeMemory)) {
Status = RtMemoryStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseDataHub)) {
Status = DataHubStatusCodeInitializeWorker ();
ASSERT_EFI_ERROR (Status);
}
if (FeaturePcdGet (PcdStatusCodeUseOEM)) {
//
// Call OEM hook status code library API to initialize OEM device for status code.
//
Status = OemHookStatusCodeInitialize ();
ASSERT_EFI_ERROR (Status);
}
//
// Replay Status code which saved in GUID'ed HOB to all supported devices.
//
//
// Journal GUID'ed HOBs to find all record entry, if found,
// then output record to support replay device.
//
ExpectedPacketIndex = 0;
Hob.Raw = GetFirstGuidHob (&gMemoryStatusCodeRecordGuid);
HobStart = Hob.Raw;
while (Hob.Raw != NULL) {
PacketHeader = (MEMORY_STATUSCODE_PACKET_HEADER *) GET_GUID_HOB_DATA (Hob.Guid);
if (PacketHeader->PacketIndex == ExpectedPacketIndex) {
Record = (MEMORY_STATUSCODE_RECORD *) (PacketHeader + 1);
for (Index = 0; Index < PacketHeader->RecordIndex; Index++) {
//
// Dispatch records to devices based on feature flag.
//
if (FeaturePcdGet (PcdStatusCodeReplayInSerial) &&
(FeaturePcdGet (PcdStatusCodeUseHardSerial) ||
FeaturePcdGet (PcdStatusCodeUseEfiSerial))) {
SerialStatusCodeReportWorker (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance,
NULL,
NULL
);
}
if (FeaturePcdGet (PcdStatusCodeReplayInRuntimeMemory) &&
FeaturePcdGet (PcdStatusCodeUseRuntimeMemory)) {
RtMemoryStatusCodeReportWorker (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance
);
}
if (FeaturePcdGet (PcdStatusCodeReplayInDataHub) &&
FeaturePcdGet (PcdStatusCodeUseDataHub)) {
DataHubStatusCodeReportWorker (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance,
NULL,
NULL
);
}
if (FeaturePcdGet (PcdStatusCodeReplayInOEM) &&
FeaturePcdGet (PcdStatusCodeUseOEM)) {
//
// Call OEM hook status code library API to report status code to OEM device
//
OemHookStatusCodeReport (
Record[Index].CodeType,
Record[Index].Value,
Record[Index].Instance,
NULL,
NULL
);
}
}
ExpectedPacketIndex++;
//
// See whether there is gap of packet or not
//
if (HobStart != NULL) {
HobStart = NULL;
Hob.Raw = HobStart;
continue;
}
} else if (HobStart != NULL) {
//
// Cache the found packet for improve the performance
//
HobStart = Hob.Raw;
}
Hob.Raw = GetNextGuidHob (&gMemoryStatusCodeRecordGuid, Hob.Raw);
}
}

View File

@ -16,12 +16,12 @@
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeStatusCode
BASE_NAME = StatusCodeRuntimeDxe
FILE_GUID = FEDE0A1B-BCA2-4A9F-BB2B-D9FD7DEC2E9F
MODULE_TYPE = DXE_RUNTIME_DRIVER
VERSION_STRING = 1.0
EFI_SPECIFICATION_VERSION = 0x00020000
ENTRY_POINT = DxeStatusCodeDriverEntry
ENTRY_POINT = StatusCodeRuntimeDxeEntry
#
# The following information is for reference only and not required by the build tools.
@ -35,19 +35,8 @@
SerialStatusCodeWorker.c
RtMemoryStatusCodeWorker.c
DataHubStatusCodeWorker.c
DxeStatusCode.c
DxeStatusCode.h
[Sources.Ia32]
DxeStatusCodeCommon.c
[Sources.X64]
DxeStatusCodeCommon.c
[Sources.EBC]
DxeStatusCodeCommon.c
StatusCodeRuntimeDxe.h
StatusCodeRuntimeDxe.c
[Packages]
MdePkg/MdePkg.dec