/** @file * * Copyright (c) 2018, Hisilicon Limited. All rights reserved. * Copyright (c) 2018, Linaro Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #ifndef GENERIC_HARDWARE_ERROR_SOURCE #define GENERIC_HARDWARE_ERROR_SOURCE #include "Apei.h" typedef struct { UINT64 AckRegister; UINT64 ErrorStatusBlockAddress; } GHES_REGISTER; typedef enum { PROCESSOR_GENERIC = 0, PROCESSOR_IA32_X64 = 1, PROCESSOR_IPF = 2, PROCESSOR_ARM = 3, PLATFORM_MEMORY = 4, PLATFORM_MEMORY2 = 5, PCIE_EXPRESS = 6, FIRMWARE_ERROR = 7, PCI_BUS = 8, PCI_COMPONENT = 9 } EFI_CPER_SECTION_TYPE; typedef enum { RECOVERABLE = 0, FATAL = 1, CORRECTED = 2, NONE = 3 } ERROR_SEVERITY; EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE* ErrorBlockInitial( VOID *Block, UINT32 Severity ); BOOLEAN ErrorBlockAddErrorData ( IN VOID *ErrorBlock, IN UINT32 MaxBlockLength, IN EFI_CPER_SECTION_TYPE TypeOfErrorData, IN VOID *GenericErrorData, IN UINT32 SizeOfGenericErrorData, IN ERROR_SEVERITY ErrorSeverity, IN BOOLEAN Correctable ); BOOLEAN ErrorBlockAddErrorData ( IN VOID *ErrorBlock, IN UINT32 MaxBlockLength, IN EFI_CPER_SECTION_TYPE TypeOfErrorData, IN VOID *GenericErrorData, IN UINT32 SizeOfGenericErrorData, IN ERROR_SEVERITY ErrorSeverity, IN BOOLEAN Correctable ); VOID GhesV2Initial ( EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *GhesV2, UINT32 BlockLength ); /** @param type - one of HARDWARE_ERROR_NOTIFICATION Type, GSIV For ARM,and SCI for X86, Notice: Windows OS hadn't support to GSIV, 20171026 */ VOID GhesV2AddNotification ( EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *This, UINT8 Type ); EFI_STATUS GhesV2LinkErrorBlock ( EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE *GhesV2, GHES_REGISTER *Register, VOID *ErrorBlock ); VOID GhesV1Initial ( EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *GhesV1, UINT32 BlockLength ); VOID GhesV1AddNotification ( EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *This, UINT8 Type ); EFI_STATUS GhesV1LinkErrorBlock ( EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE *This, UINT64 *ptrBlockAddress, VOID *ErrorBlock ); #endif