diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /ReferenceCode/ME/ActiveManagement/AlertStandardFormat | |
download | zprj-master.tar.xz |
Diffstat (limited to 'ReferenceCode/ME/ActiveManagement/AlertStandardFormat')
20 files changed, 4677 insertions, 0 deletions
diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/AlertStandardFormat.cif b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/AlertStandardFormat.cif new file mode 100644 index 0000000..ad65d2c --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/AlertStandardFormat.cif @@ -0,0 +1,12 @@ +<component> + name = "AlertStandardFormat" + category = ModulePart + LocalRoot = "ReferenceCode\ME\ActiveManagement\AlertStandardFormat\Heci\" + RefName = "AlertStandardFormat" +[files] +"AlertStandardFormat.sdl" +[parts] +"AlertStandardFormatCommon" +"AlertStandardFormatDxe" +"AlertStandardFormatPei" +<endComponent> diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/AlertStandardFormat.sdl b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/AlertStandardFormat.sdl new file mode 100644 index 0000000..d02eb68 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/AlertStandardFormat.sdl @@ -0,0 +1,19 @@ +TOKEN + Name = AlertStandardFormat_SUPPORT + Value = 1 + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes + Help = "Main switch to enable AlertStandardFormat support in Project" +End + +PATH + Name = "AlertStandardFormat_SOURCE" + Help = "AlertStandardFormat Driver files source directory" +End + +ELINK + Name = "AlertStandardFormat_INCLUDES" + InvokeOrder = ReplaceParent +End diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.c b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.c new file mode 100644 index 0000000..7f5bf69 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.c @@ -0,0 +1,1561 @@ +/** @file + Processes ASF messages + +@copyright + Copyright (c) 2010 - 2012 Intel Corporation. All rights + reserved This software and associated documentation (if any) + is furnished under a license and may only be used or copied in + accordance with the terms of the license. Except as permitted + by such license, no part of this software or documentation may + be reproduced, stored in a retrieval system, or transmitted in + any form or by any means without the express written consent + of Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ +EFI_ASF_DATA_HUB_MAP mAsfProgressDataHubMap[] = { + { + EfiAsfMessageBiosPresent, + EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_POWER_ON_INIT + }, + { + EfiAsfMessageMemInit, + EFI_COMPUTING_UNIT_MEMORY | EFI_CU_HP_PC_RAM_INIT + }, + { + EfiAsfMessageMemInitDone, + EFI_COMPUTING_UNIT_MEMORY | EFI_CU_PC_INIT_END + }, + { + EfiAsfMessageCacheInit, + EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_CACHE_INIT + }, + { + EfiAsfMessageSmbusInit, + EFI_IO_BUS_SMBUS | EFI_P_PC_ENABLE + }, + { + EfiAsfMessageOSWakeVector, + EFI_SOFTWARE_PEI_MODULE | EFI_SW_DXE_RT_PC_S3 + }, + { + EfiAsfMessageMotherBoardInit, + EFI_COMPUTING_UNIT_CHIPSET | EFI_CU_PC_INIT_BEGIN + }, + { + EfiAsfMessageBspInit, + EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_BSP_SELECT + }, +#ifndef ASF_PEI + { + EfiAsfMessageHddInit, + EFI_PERIPHERAL_FIXED_MEDIA | EFI_P_PC_ENABLE + }, + { + EfiAsfMessageApInit, + EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_PC_AP_INIT + }, + { + EfiAsfMessageUserAuthentication, + EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_PC_AUTHENTICATE_BEGIN + }, + { + EfiAsfMessageUserInitSetup, + EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_PC_USER_SETUP + }, + { + EfiAsfMessageUsbResourceConfig, + EFI_IO_BUS_USB | EFI_P_PC_ENABLE + }, + { + EfiAsfMessagePciResourceConfig, + EFI_IO_BUS_PCI | EFI_IOB_PCI_PC_BUS_ENUM + }, + { + EfiAsfMessageOptionRomInit, + EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT + }, + { + EfiAsfMessageVideoInit, + EFI_PERIPHERAL_LOCAL_CONSOLE | EFI_P_PC_ENABLE + }, + { + EfiAsfMessageKbcInit, + EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_ENABLE + }, + { + EfiAsfMessageEmControllerInit, + EFI_PERIPHERAL_EMBEDDED_CONTROLLER | EFI_P_PC_INIT + }, + { + EfiAsfMessageDockAttached, + EFI_PERIPHERAL_DOCK | EFI_P_PC_INIT + }, + { + EfiAsfMessageEnableDock, + EFI_PERIPHERAL_DOCK | EFI_P_PC_ENABLE + }, + { + EfiAsfMessageDockEject, + EFI_PERIPHERAL_DOCK | EFI_P_PC_RESET + }, + { + EfiAsfMessageDisableDock, + EFI_PERIPHERAL_DOCK | EFI_P_PC_DISABLE + }, + { + EfiAsfMessageFdcInit, + EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_PC_ENABLE + }, + { + EfiAsfMessageKeyboardTest, + EFI_PERIPHERAL_KEYBOARD | EFI_P_KEYBOARD_PC_SELF_TEST + }, + { + EfiAsfMessageMouseTest, + EFI_PERIPHERAL_MOUSE | EFI_P_MOUSE_PC_SELF_TEST + }, + { + EfiAsfMessageAmtBxDone, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_OPROM_DONE + }, + { + EfiAsfMessageBatteryPresenceDetected, + EFI_PERIPHERAL_BATTERY | EFI_P_PC_PRESENCE_DETECT + }, +#endif +}; + +EFI_ASF_DATA_HUB_MAP mAsfErrorDataHubMap[] = { + { + EfiAsfMessageNoMemory, + EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_NONE_DETECTED + }, + { + EfiAsfMessageMemoryFailure, + EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_NONE_USEFUL + }, + { + EfiAsfMessageBoardFailure, + EFI_COMPUTING_UNIT_CHIPSET | EFI_CU_EC_NOT_CONFIGURED + }, + { + EfiAsfMessageFirmwareCorruption, + EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_CORE_EC_DXE_CORRUPT + }, + { + EfiAsfMessageChassisIntrusion, + EFI_COMPUTING_UNIT_CHIPSET | EFI_CU_CHIPSET_PC_INTRUDER_DETECT + }, +#ifndef ASF_PEI + { + EfiAsfMessageHddFailure, + EFI_PERIPHERAL_FIXED_MEDIA | EFI_P_EC_NOT_DETECTED + }, + { + EfiAsfMessageFdcFailure, + EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_EC_CONTROLLER_ERROR + }, + { + EfiAsfMessageHdcFailure, + EFI_PERIPHERAL_FIXED_MEDIA | EFI_P_EC_CONTROLLER_ERROR + }, + { + EfiAsfMessageKbdFailure, + EFI_PERIPHERAL_KEYBOARD | EFI_P_EC_NOT_DETECTED + }, + { + EfiAsfMessageNoFdd, + EFI_PERIPHERAL_REMOVABLE_MEDIA | EFI_P_EC_NOT_DETECTED + }, + { + EfiAsfMessageVideoControllerFailure, + EFI_PERIPHERAL_LOCAL_CONSOLE | EFI_P_EC_CONTROLLER_ERROR + }, + { + EfiAsfMessageNoVideo, + EFI_PERIPHERAL_LOCAL_CONSOLE | EFI_P_EC_NOT_DETECTED + }, + { + EfiAsfMessageCpuVidMismatch, + EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_VID_MISMATCH + }, + { + EfiAsfMessageCpuSpeedMatchingFailure, + EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_SPEED_MATCHING_FAILURE + }, + { + EfiAsfMessageNoBootMedia, + EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_NO_BOOT_MEDIA + }, + { + EfiAsfMessageUserAuthenticationInvalid, + EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_AUTHENTICATE_USER_INVALID + }, + { + EfiAsfMessageHddAuthenticationInvalid, + EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_AUTHENTICATE_HDD_INVALID, + }, + { + EfiAsfMessageTemperatureGenericCritical, + EFI_PERIPHERAL_TEMPERATURE | EFI_P_TEMERATURE_EC_GENERIC_CRITICAL + }, + { + EfiAsfMessageTemperatureOverCritical, + EFI_PERIPHERAL_TEMPERATURE | EFI_P_TEMERATURE_EC_OVER_CRITICAL + }, + { + EfiAsfMessageTemperatureUnderCritical, + EFI_PERIPHERAL_TEMPERATURE | EFI_P_TEMERATURE_EC_UNDER_CRITICAL + }, + { + EfiAsfMessageVoltageGenericCritical, + EFI_PERIPHERAL_VOLTAGE | EFI_P_VOLTAGE_EC_GENERIC_CRITICAL + }, + { + EfiAsfMessageVoltageOverCritical, + EFI_PERIPHERAL_VOLTAGE | EFI_P_VOLTAGE_EC_OVER_CRITICAL + }, + { + EfiAsfMessageVoltageUnderCritical, + EFI_PERIPHERAL_VOLTAGE | EFI_P_VOLTAGE_EC_UNDER_CRITICAL + }, + { + EfiAsfMessageFanGenericCritical, + EFI_PERIPHERAL_FAN | EFI_P_FAN_EC_GENERIC_CRITICAL + }, + { + EfiAsfMessageFanPredictiveFailure, + EFI_PERIPHERAL_FAN | EFI_P_FAN_EC_PREDICTIVE_FAILURE + }, + { + EfiAsfMessageFanLowSpeedCritical, + EFI_PERIPHERAL_FAN | EFI_P_FAN_EC_LOW_SPEED_CRITICAL + }, + { + EfiAsfMessageBatteryLowCritical, + EFI_PERIPHERAL_BATTERY | EFI_P_BATTERY_EC_LOW_CRITICAL + }, + { + EfiAsfMessageTemperatureGenericWarning, + EFI_PERIPHERAL_TEMPERATURE | EFI_P_TEMERATURE_PC_GENERIC_WARNING + }, + { + EfiAsfMessageTemperatureOverWarning, + EFI_PERIPHERAL_TEMPERATURE | EFI_P_TEMERATURE_PC_OVER_WARNING + }, + { + EfiAsfMessageTemperatureUnderWarning, + EFI_PERIPHERAL_TEMPERATURE | EFI_P_TEMERATURE_PC_UNDER_WARNING + }, + { + EfiAsfMessageFanLowSpeedWarning, + EFI_PERIPHERAL_FAN | EFI_P_FAN_PC_LOW_SPEED_WARNING + }, + { + EfiAsfMessageBatteryLowWarning, + EFI_PERIPHERAL_BATTERY | EFI_P_BATTERY_PC_LOW_WARNING + }, + { + EfiAsfMessagePowerFailure, + EFI_PERIPHERAL_POWER_SUPPLY | EFI_P_BATTERY_PC_LOW_WARNING + }, + { + EfiAsfMessageAmtBxNotStarted, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_OPROM_NOT_STARTED + }, + { + EfiAsfMessageAmtBxSleepS4ReportedNotTaken, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_SLEEP_S4_NOT_TAKEN + }, + { + EfiAsfMessageAmtBxSleepS5ReportedNotTaken, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_SLEEP_S5_NOT_TAKEN + }, + { + EfiAsfMessageAmtBxSleepUnspecifiedReportedNotTaken, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_SLEEP_UNSPECD_NOT_TAKEN + }, + { + EfiAsfMessageAmtBxErrActionIntF, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_ERROR_ACTION_INTF + }, + { + EfiAsfMessageAmtBxErrActionInv, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_ERROR_ACTION_INV + }, + { + EfiAsfMessageAmtBxErrActionSetup, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_ERROR_ACTION_SETUP + }, + { + EfiAsfMessageAmtBxErrActionFailure, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_ERROR_ACTION_FAIL + }, + { + EfiAsfMessageAmtBxErrActionUnspecified, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_ERROR_ACTION_UNSPECD + }, + { + EfiAsfMessageAmtBxOtherUnspecified, + EFI_SOFTWARE_UNSPECIFIED | EFI_SW_DXE_AMTBX_OTHER_UNSPECD + }, +#endif +}; + +EFI_ASF_FRAMEWORK_MESSAGE mAsfFrameworkMessage[] = { + { + EfiAsfMessageBiosPresent, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_ENTITY_PRESENCE, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_BIOS, + 0, + 0x40, + EFI_ASF_FP_BOARD_INIT + } + }, + { + EfiAsfMessageMemInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_MEMORY, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_MEMORY_INIT + } + }, + { + EfiAsfMessageMemInitDone, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS | 0x80, // Exit + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_MEMORY, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_MEMORY_INIT + } + }, + { + EfiAsfMessageCacheInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_PROCESSOR, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_CACHE_INIT + } + }, + { + EfiAsfMessageSmbusInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_SMBUS_INIT + } + }, + { + EfiAsfMessageOSWakeVector, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_UNSPECIFIED, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_WAKE_OS + } + }, + { + EfiAsfMessageMotherBoardInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_BOARD_INIT + } + }, + // + // Error Event + // + { + EfiAsfMessageNoMemory, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_MEMORY, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_NO_MEMORY + } + }, + { + EfiAsfMessageMemoryFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_MEMORY, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_MEMORY_FAILURE + } + }, + { + EfiAsfMessageBoardFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_BOARD_FAILURE + } + }, + { + EfiAsfMessageFirmwareCorruption, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Insnce + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_ROM_CORRUPTED + } + }, + // + // Chassis Intrusion + // + { + EfiAsfMessageChassisIntrusion, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_CHASSIS_INTRUSION, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_CHASSIS_INTRUSION_GENERIC, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, +#ifndef ASF_PEI + // + // Progress Event + // + { + EfiAsfMessageHddInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_HDD_INIT + } + }, + { + EfiAsfMessageApInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_PROCESSOR, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_AP_INIT + } + }, + { + EfiAsfMessageUserAuthentication, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_BIOS, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_USER_AUTHENTICATION + } + }, + { + EfiAsfMessageUserInitSetup, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_BIOS, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_USER_SETUP + } + }, + { + EfiAsfMessageUsbResourceConfig, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_BIOS, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_USB_RESOURCE_CONFIG + } + }, + { + EfiAsfMessagePciResourceConfig, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_BIOS, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_PCI_RESOURCE_CONFIG + } + }, + { + EfiAsfMessageOptionRomInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_ADDIN_CARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_OPTION_ROM_INIT + } + }, + { + EfiAsfMessageVideoInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_VIDEO_INIT + } + }, + { + EfiAsfMessageKbcInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_KBC_INIT + } + }, + { + EfiAsfMessageEmControllerInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_EC_INIT + } + }, + { + EfiAsfMessageDockAttached, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_ATTACH_DOCK + } + }, + { + EfiAsfMessageEnableDock, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_ENABLE_DOCK + } + }, + { + EfiAsfMessageDockEject, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_EJECT_DOCK + } + }, + { + EfiAsfMessageDisableDock, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_DISABLE_DOCK + } + }, + { + EfiAsfMessageFdcInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_FDC_INIT + } + }, + { + EfiAsfMessageKeyboardTest, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_KBD_TEST + } + }, + { + EfiAsfMessageMouseTest, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_MOUSE_TEST + } + }, + { + EfiAsfMessageBspInit, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_PROCESSOR, + 0, // Instance + EFI_ASF_FP_EVENT_DATA0, + EFI_ASF_FP_BSP_INIT + } + }, + // + // Error Event + // + { + EfiAsfMessageHddFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_HDD_FAILURE + } + }, + { + EfiAsfMessageFdcFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_FDC_FAILURE + } + }, + { + EfiAsfMessageHdcFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_HDC_FAILURE + } + }, + { + EfiAsfMessageKbdFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_KBD_FAILURE + } + }, + { + EfiAsfMessageNoFdd, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_REMOVABLE_BOOT_MEDIA_NOT_FOUND + } + }, + { + EfiAsfMessageVideoControllerFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_VIDEO_CONTROLLER_FAILURE + } + }, + { + EfiAsfMessageNoVideo, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_VIDEO_DEVICE_NOT_FOUND + } + }, + { + EfiAsfMessageCpuVidMismatch, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_PROCESSOR, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_CPU_VOLTAGE_FAILURE + } + }, + { + EfiAsfMessageCpuSpeedMatchingFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_PROCESSOR, + 0, // Instance + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_CPU_MISMATCH_FAILURE + } + }, + { + EfiAsfMessageUserAuthenticationInvalid, + { + EFI_ASF_MESSAGE_SUBCOMMAND_RETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SECURITY_VIOLATION, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_USER_PASSWORD, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_BIOS, + 0, // Instance + } + }, + { + EfiAsfMessageHddAuthenticationInvalid, + { + EFI_ASF_MESSAGE_SUBCOMMAND_RETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SECURITY_VIOLATION, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_OTHER_PASSWORD, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_BIOS, + 0, // Instance + } + }, + // + // Boot Error + // + { + EfiAsfMessageNoBootMedia, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_DISK, + 0, // Insnce + EFI_ASF_FE_EVENT_DATA0, + EFI_ASF_FE_REMOVABLE_BOOT_MEDIA_NOT_FOUND + } + }, + { + EfiAsfMessageAmtBxDone, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FP_AMTBX_INIT + } + }, + { + EfiAsfMessageAmtBxNotStarted, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxSleepS4ReportedNotTaken, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxSleepS5ReportedNotTaken, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxSleepUnspecifiedReportedNotTaken, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxErrActionIntF, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxErrActionInv, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxErrActionSetup, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxErrActionFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxErrActionUnspecified, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + { + EfiAsfMessageAmtBxOtherUnspecified, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + 0xFF, + 0xFF, + EFI_ASF_ENTITY_INTEL_AMT, + 0, + 0x40, + EFI_ASF_FE_AMTBX_FAILURE + } + }, + // + // Temperature + // + { + EfiAsfMessageTemperatureGenericCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE, + EFI_ASF_EVENT_TYPE_SEVERITY_STATE, + EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageTemperatureGenericWarning, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE, + EFI_ASF_EVENT_TYPE_SEVERITY_STATE, + EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_NONCRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageTemperatureOverCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageTemperatureOverWarning, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_NONCRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageTemperatureUnderCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageTemperatureUnderWarning, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_NONCRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + // + // Voltage + // + { + EfiAsfMessageVoltageGenericCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_VOLTAGE, + EFI_ASF_EVENT_TYPE_SEVERITY_STATE, + EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageVoltageOverCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_VOLTAGE, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageVoltageUnderCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_VOLTAGE, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + // + // Fan + // + { + EfiAsfMessageFanGenericCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_FAN, + EFI_ASF_EVENT_TYPE_SEVERITY_STATE, + EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageFanPredictiveFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_FAN, + EFI_ASF_EVENT_TYPE_DISCRETE_EVENT_PREDICTIVE_FAIL, + EFI_ASF_EVENT_OFFSET_DISCRETE_EVENT_PREDICTIVE_FAIL_ASSERT, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageFanLowSpeedCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_FAN, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + { + EfiAsfMessageFanLowSpeedWarning, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_FAN, + EFI_ASF_EVENT_TYPE_THRESHOLD_BASED, + EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_NONCRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Instance + } + }, + // + // Battery + // + { + EfiAsfMessageBatteryLowWarning, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_BATTERY, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_BATTERY_LOW_WARNING, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_POWER_SUPPLY, + 0, // Instance + } + }, + { + EfiAsfMessageBatteryLowCritical, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_BATTERY, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_BATTERY_LOW_CRITICAL, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_POWER_SUPPLY, + 0, // Insnce + } + }, + { + EfiAsfMessageBatteryPresenceDetected, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_BATTERY, + EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC, + EFI_ASF_EVENT_OFFSET_BATTERY_PRESENCE_DETECTED, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_MONITOR, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_POWER_SUPPLY, + 0, // Insnce + } + }, + { + EfiAsfMessagePowerFailure, + { + EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT, + EFI_ASF_VERSION, + EFI_ASF_EVENT_SENSOR_TYPE_POWER_SUPPLY, + EFI_ASF_EVENT_TYPE_SEVERITY_STATE, + EFI_ASF_EVENT_OFFSET_POWER_SUPPLY_FAILURE, + EFI_ASF_EVENT_SOURCE_TYPE_ASF10, + EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE, + EFI_ASF_SENSOR_DEVICE, + EFI_ASF_SENSOR_NUMBER, + EFI_ASF_ENTITY_SYSTEM_BOARD, + 0, // Insnce + } + }, +#endif +}; diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.cif b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.cif new file mode 100644 index 0000000..ee34575 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.cif @@ -0,0 +1,10 @@ +<component> + name = "AlertStandardFormatCommon" + category = ModulePart + LocalRoot = "ReferenceCode\ME\ActiveManagement\AlertStandardFormat\Heci\Common\" + RefName = "AlertStandardFormatCommon" +[files] +"AlertStandardFormatCommon.sdl" +"AlertStandardFormatCommon.c" +"AlertStandardFormatCommon.h" +<endComponent> diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.h b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.h new file mode 100644 index 0000000..5949fb9 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.h @@ -0,0 +1,397 @@ +/** @file + Include file for ASF Driver + +@copyright + Copyright (c) 2010 - 2012 Intel Corporation. All rights + reserved This software and associated documentation (if any) + is furnished under a license and may only be used or copied in + accordance with the terms of the license. Except as permitted + by such license, no part of this software or documentation may + be reproduced, stored in a retrieval system, or transmitted in + any form or by any means without the express written consent + of Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ +#ifndef _ALERT_STANDARD_FORMAT_COMMON_H +#define _ALERT_STANDARD_FORMAT_COMMON_H + +#define EFI_ASF_VERSION 0x10 + +// +// ASF SMBUS Messages +// +#define EFI_ASF_MESSAGE_COMMAND_SENSE_DEVICE_SYSTEM_STATE 0x01 +#define EFI_ASF_MESSAGE_COMMAND_MANAGEMENT_CONTROL 0x02 +#define EFI_ASF_MESSAGE_COMMAND_ASF_CONFIGURATION 0x03 +#define EFI_ASF_MESSAGE_COMMAND_MESSAGE 0x04 +#define EFI_ASF_MESSAGE_COMMAND_GETUUID 0xC7 + +#define EFI_ASF_MESSAGE_BYTECOUNT_RETURN_BOOT_OPT 0x0D +#define EFI_ASF_MESSAGE_BYTECOUNT_CLEAR_BOOT_OPT 0x02 +#define EFI_ASF_MESSAGE_BYTEOUNTT_GET_BOOT_OPT 0x02 +#define EFI_ASF_MESSAGE_BYTECOUNT_DEVICE_TYPE_POLL 0x03 +#define EFI_ASF_MESSAGE_BYTECOUNT_STOP_WATCH_DOG_TIMER 0x02 +#define EFI_ASF_MESSAGE_BYTECOUNT_START_WATCH_DOG_TIMER 0x0D + +#define EFI_ASF_MESSAGE_SUBCOMMAND_RETURN_BOOT_OPT 0x16 +#define EFI_ASF_MESSAGE_SUBCOMMAND_CLEAR_BOOT_OPT 0x15 +#define EFI_ASF_MESSAGE_SUBCOMMAND_DEVICE_TYPE_POLL 0x13 +#define EFI_ASF_MESSAGE_SUBCOMMAND_STOP_WATCH_DOG_TIMER 0x14 +#define EFI_ASF_MESSAGE_SUBCOMMAND_START_WATCH_DOG_TIMER 0x13 +#define EFI_ASF_MESSAGE_SUBCOMMAND_RETRANSMIT 0x15 +#define EFI_ASF_MESSAGE_SUBCOMMAND_NORETRANSMIT 0x16 +#define EFI_ASF_MESSAGE_SUBCOMMAND_SYSTEM_STATE 0x18 + +#define EFI_ASF_MESSAGE_VERSIONNUMBER 0x10 + +// +// ASF Event Sensor Type Codes +// +#define EFI_ASF_EVENT_SENSOR_TYPE_SYS_FW_ERR_PROG 0x0F +#define EFI_ASF_EVENT_SENSOR_TYPE_POST_ERR_PROG 0x0F +#define EFI_ASF_EVENT_SENSOR_TYPE_BOOT_ERROR 0x1E +#define EFI_ASF_EVENT_SENSOR_TYPE_OS_BOOT 0x1F +#define EFI_ASF_EVENT_SENSOR_TYPE_ENTITY_PRESENCE 0x25 +#define EFI_ASF_EVENT_SENSOR_TYPE_WATCHDOG2 0x23 + +#define EFI_ASF_EVENT_SENSOR_TYPE_TEMPERATURE 0x01 +#define EFI_ASF_EVENT_SENSOR_TYPE_VOLTAGE 0x02 +#define EFI_ASF_EVENT_SENSOR_TYPE_FAN 0x04 +#define EFI_ASF_EVENT_SENSOR_TYPE_CHASSIS_INTRUSION 0x05 +#define EFI_ASF_EVENT_SENSOR_TYPE_SECURITY_VIOLATION 0x06 +#define EFI_ASF_EVENT_SENSOR_TYPE_PROCESSOR 0x07 +#define EFI_ASF_EVENT_SENSOR_TYPE_POWER_SUPPLY 0x08 +#define EFI_ASF_EVENT_SENSOR_TYPE_POWER_UNIT 0x09 +#define EFI_ASF_EVENT_SENSOR_TYPE_CHIPSET 0x19 +#define EFI_ASF_EVENT_SENSOR_TYPE_BATTERY 0x29 + +// +// ASF Event Type Codes +// IPMI/PET related stuff +// +#define EFI_ASF_EVENT_TYPE_SENSOR_SPECIFIC 0x6F + +#define EFI_ASF_EVENT_TYPE_THRESHOLD_BASED 0x01 +#define EFI_ASF_EVENT_TYPE_USAGE_STATE 0x02 +#define EFI_ASF_EVENT_TYPE_DISCRETE_EVENT_STATE 0x03 +#define EFI_ASF_EVENT_TYPE_DISCRETE_EVENT_PREDICTIVE_FAIL 0x04 +#define EFI_ASF_EVENT_TYPE_DISCRETE_EVENT_LIMIT 0x05 +#define EFI_ASF_EVENT_TYPE_DISCRETE_EVENT_PERFORMANCE 0x06 +#define EFI_ASF_EVENT_TYPE_SEVERITY_STATE 0x07 +#define EFI_ASF_EVENT_TYPE_AVAILABILITY_STATUS_PRESENT 0x08 +#define EFI_ASF_EVENT_TYPE_AVAILABILITY_STATUS_ENABLE 0x09 +#define EFI_ASF_EVENT_TYPE_AVAILABILITY_STATUS_RUNNING 0x0A +#define EFI_ASF_EVENT_TYPE_AVAILABILITY_STATUS_OTHER 0x0B +#define EFI_ASF_EVENT_TYPE_DEVICE_POWER_STATES 0x0C + +// +// ASF Event Offset Codes +// IPMI/PET related stuff +// +#define EFI_ASF_EVENT_OFFSET_ENTITY_PRESENT 0x00 +#define EFI_ASF_EVENT_OFFSET_TIMER_EXPIRED 0x00 +#define EFI_ASF_EVENT_OFFSET_SYS_FW_ERROR 0x00 +#define EFI_ASF_EVENT_OFFSET_SYS_FW_HANG 0x01 +#define EFI_ASF_EVENT_OFFSET_SYS_FW_PROGRESS 0x02 + +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_NONCRITICAL 0x00 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_NONCRITICAL_GO_HIGH 0x01 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL 0x02 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL_GO_HIGH 0x03 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_NONRECOVERABLE 0x04 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_LOWER_NONRECOVERABLE_GO_HIGH 0x05 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_NONCRITICAL_GO_LOW 0x06 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_NONCRITICAL 0x07 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_CRITICAL_GO_LOW 0x08 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_CRITICAL 0x09 +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_NONRECOVERABLE_GO_LOW 0x0A +#define EFI_ASF_EVENT_OFFSET_THRESHOLD_UPPER_NONRECOVERABLE 0x0B + +#define EFI_ASF_EVENT_OFFSET_DISCRETE_EVENT_PREDICTIVE_FAIL_DEASSERT 0x00 +#define EFI_ASF_EVENT_OFFSET_DISCRETE_EVENT_PREDICTIVE_FAIL_ASSERT 0x01 + +#define EFI_ASF_EVENT_OFFSET_SEVERITY_TO_OK 0x00 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_NONCRITICAL 0x01 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_CRITICAL 0x02 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_MORE_NONRECOVERABLE 0x03 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_LESS_NONCRITICAL 0x04 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_LESS_CRITICAL 0x05 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_TO_NONRECOVERABLE 0x06 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_MONITOR 0x07 +#define EFI_ASF_EVENT_OFFSET_SEVERITY_INFORMATIONAL 0x08 + +#define EFI_ASF_EVENT_OFFSET_CHASSIS_INTRUSION_GENERIC 0x00 + +#define EFI_ASF_EVENT_OFFSET_PROCESSOR_IERR 0x00 + +#define EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_USER_PASSWORD 0x01 +#define EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_SUPERVISOR_PASSWORD 0x02 +#define EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_NETWORK_PASSWORD 0x03 +#define EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_OTHER_PASSWORD 0x04 +#define EFI_ASF_EVENT_OFFSET_SECURITY_VIOLATION_OUTOFBAND_PASSWORD 0x05 + +#define EFI_ASF_EVENT_OFFSET_BATTERY_LOW_WARNING 0x00 +#define EFI_ASF_EVENT_OFFSET_BATTERY_LOW_CRITICAL 0x01 +#define EFI_ASF_EVENT_OFFSET_BATTERY_PRESENCE_DETECTED 0x02 + +#define EFI_ASF_EVENT_OFFSET_POWER_SUPPLY_PRESENCE 0x00 +#define EFI_ASF_EVENT_OFFSET_POWER_SUPPLY_FAILURE 0x01 +#define EFI_ASF_EVENT_OFFSET_POWER_SUPPLY_PREDICTIVE_FAILURE 0x02 + +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_DOWN 0x00 +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_CYCLE 0x01 +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_240VA_DOWN 0x02 +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_INTERLOCK_DOWN 0x03 +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_AC_LOST 0x04 +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_SOFT_CONTROL_FAILURE 0x05 +#define EFI_ASF_EVENT_OFFSET_POWER_UNIT_FAILURE 0x06 + +// +// ASF Event Source Type Code +// IPMI/PET related stuff +// +#define EFI_ASF_EVENT_SOURCE_TYPE_ASF10 0x68 +#define EFI_ASF_EVENT_SOURCE_TYPE_PLATFORM_FIRMWARE 0x00 +#define EFI_ASF_EVENT_SOURCE_TYPE_OS 0x48 + +// +// ASF Event Severity Codes +// IPMI/PET related stuff +// +#define EFI_ASF_EVENT_SEVERITY_CODE_MONITOR 0x01 +#define EFI_ASF_EVENT_SEVERITY_CODE_INFORMATION 0x02 +#define EFI_ASF_EVENT_SEVERITY_CODE_OK 0x04 +#define EFI_ASF_EVENT_SEVERITY_CODE_NONCRITICAL 0x08 +#define EFI_ASF_EVENT_SEVERITY_CODE_CRITICAL 0x10 +#define EFI_ASF_EVENT_SEVERITY_CODE_NONRECOVERABLE 0x20 + +/// +/// ASF Sensor Device Codes +/// IPMI/PET related stuff +/// +#define EFI_ASF_SENSOR_DEVICE 0xFF + +/// +/// ASF Sensor Number Codes +/// IPMI/PET related stuff +/// +#define EFI_ASF_SENSOR_NUMBER 0xFF + +// +// ASF Entity Codes +// IPMI/PET related stuff +// +#define EFI_ASF_ENTITY_UNSPECIFIED 0x00 +#define EFI_ASF_ENTITY_OTHER 0x01 +#define EFI_ASF_ENTITY_UNKNOWN 0x02 +#define EFI_ASF_ENTITY_PROCESSOR 0x03 +#define EFI_ASF_ENTITY_DISK 0x04 +#define EFI_ASF_ENTITY_PERIPHERAL 0x05 +#define EFI_ASF_ENTITY_SYSTEM_MGMT_MOD 0x06 +#define EFI_ASF_ENTITY_SYSTEM_BOARD 0x07 +#define EFI_ASF_ENTITY_POWER_SUPPLY 0x0A +#define EFI_ASF_ENTITY_ADDIN_CARD 0x0B +#define EFI_ASF_ENTITY_CHASIS_BACK_PANEL_BOARD 0x17 +#define EFI_ASF_ENTITY_MEMORY 0x20 +#define EFI_ASF_ENTITY_SYSTEM_MGMT_SW 0x21 +#define EFI_ASF_ENTITY_BIOS 0x22 +#define EFI_ASF_ENTITY_OS 0x23 +#define EFI_ASF_ENTITY_REMOTE_OOB_MGMT 0x26 +#define EFI_ASF_ENTITY_INTEL_AMT 0x26 + +/// +/// ASF Event Data Codes for System Firmware Progress Events +/// IPMI/PET related stuff +/// +#define EFI_ASF_FP_EVENT_DATA0 0x40 + +#define EFI_ASF_FP_UNSPECIFIED 0x00 +#define EFI_ASF_FP_MEMORY_INIT 0x01 +#define EFI_ASF_FP_HDD_INIT 0x02 +#define EFI_ASF_FP_AP_INIT 0x03 +#define EFI_ASF_FP_USER_AUTHENTICATION 0x04 +#define EFI_ASF_FP_USER_SETUP 0x05 +#define EFI_ASF_FP_USB_RESOURCE_CONFIG 0x06 +#define EFI_ASF_FP_PCI_RESOURCE_CONFIG 0x07 +#define EFI_ASF_FP_OPTION_ROM_INIT 0x08 +#define EFI_ASF_FP_VIDEO_INIT 0x09 +#define EFI_ASF_FP_CACHE_INIT 0x0A +#define EFI_ASF_FP_SMBUS_INIT 0x0B +#define EFI_ASF_FP_KBC_INIT 0x0C +#define EFI_ASF_FP_EC_INIT 0x0D +#define EFI_ASF_FP_AMTBX_INIT 0x0D +#define EFI_ASF_FP_ATTACH_DOCK 0x0E +#define EFI_ASF_FP_ENABLE_DOCK 0x0F +#define EFI_ASF_FP_EJECT_DOCK 0x10 +#define EFI_ASF_FP_DISABLE_DOCK 0x11 +#define EFI_ASF_FP_WAKE_OS 0x12 +#define EFI_ASF_FP_BOOT_OS 0x13 +#define EFI_ASF_FP_BOARD_INIT 0x14 +#define EFI_ASF_FP_RESERVED 0x15 +#define EFI_ASF_FP_FDC_INIT 0x16 +#define EFI_ASF_FP_KBD_TEST 0x17 +#define EFI_ASF_FP_MOUSE_TEST 0x18 +#define EFI_ASF_FP_BSP_INIT 0x19 + +/// +/// ASF Event Data Codes for System Firmware Error Events +/// IPMI/PET related stuff +/// +#define EFI_ASF_FE_EVENT_DATA0 0x40 + +#define EFI_ASF_FE_UNSPECIFIED 0x00 +#define EFI_ASF_FE_AMTBX_FAILURE 0x00 +#define EFI_ASF_FE_NO_MEMORY 0x01 +#define EFI_ASF_FE_MEMORY_FAILURE 0x02 +#define EFI_ASF_FE_HDD_FAILURE 0x03 +#define EFI_ASF_FE_BOARD_FAILURE 0x04 +#define EFI_ASF_FE_FDC_FAILURE 0x05 +#define EFI_ASF_FE_HDC_FAILURE 0x06 +#define EFI_ASF_FE_KBD_FAILURE 0x07 +#define EFI_ASF_FE_REMOVABLE_BOOT_MEDIA_NOT_FOUND 0x08 +#define EFI_ASF_FE_VIDEO_CONTROLLER_FAILURE 0x09 +#define EFI_ASF_FE_VIDEO_DEVICE_NOT_FOUND 0x0A +#define EFI_ASF_FE_ROM_CORRUPTED 0x0B +#define EFI_ASF_FE_CPU_VOLTAGE_FAILURE 0x0C +#define EFI_ASF_FE_CPU_MISMATCH_FAILURE 0x0D + +// +// AMT BX Software Class DXE Subclass Progress Code definitions. +// +#define EFI_SW_DXE_AMTBX_OPROM_DONE (EFI_OEM_SPECIFIC | 0x00000000) +#define EFI_SW_DXE_AMTBX_OPROM_NOT_STARTED (EFI_OEM_SPECIFIC | 0x00000001) +#define EFI_SW_DXE_AMTBX_SLEEP_S4_NOT_TAKEN (EFI_OEM_SPECIFIC | 0x00000002) +#define EFI_SW_DXE_AMTBX_SLEEP_S5_NOT_TAKEN (EFI_OEM_SPECIFIC | 0x00000003) +#define EFI_SW_DXE_AMTBX_SLEEP_UNSPECD_NOT_TAKEN (EFI_OEM_SPECIFIC | 0x00000004) +#define EFI_SW_DXE_AMTBX_ERROR_ACTION_INTF (EFI_OEM_SPECIFIC | 0x00000005) +#define EFI_SW_DXE_AMTBX_ERROR_ACTION_INV (EFI_OEM_SPECIFIC | 0x00000006) +#define EFI_SW_DXE_AMTBX_ERROR_ACTION_SETUP (EFI_OEM_SPECIFIC | 0x00000007) +#define EFI_SW_DXE_AMTBX_ERROR_ACTION_FAIL (EFI_OEM_SPECIFIC | 0x00000008) +#define EFI_SW_DXE_AMTBX_ERROR_ACTION_UNSPECD (EFI_OEM_SPECIFIC | 0x00000009) +#define EFI_SW_DXE_AMTBX_OTHER_UNSPECD (EFI_OEM_SPECIFIC | 0x00000009) + +typedef enum { + EfiAsfMessageBiosPresent, + EfiAsfMessageMemInit, + EfiAsfMessageMemInitDone, + EfiAsfMessageHddInit, + EfiAsfMessageApInit, + EfiAsfMessageUserAuthentication, + EfiAsfMessageUserInitSetup, + EfiAsfMessageUsbResourceConfig, + EfiAsfMessagePciResourceConfig, + EfiAsfMessageOptionRomInit, + EfiAsfMessageVideoInit, + EfiAsfMessageCacheInit, + EfiAsfMessageSmbusInit, + EfiAsfMessageKbcInit, + EfiAsfMessageEmControllerInit, + EfiAsfMessageDockAttached, + EfiAsfMessageEnableDock, + EfiAsfMessageDockEject, + EfiAsfMessageDisableDock, + EfiAsfMessageOSWakeVector, + EfiAsfMessageMotherBoardInit, + EfiAsfMessageFdcInit, + EfiAsfMessageKeyboardTest, + EfiAsfMessageMouseTest, + EfiAsfMessageBspInit, + EfiAsfMessageAmtBxDone, + EfiAsfMessageAmtBxNotStarted, + EfiAsfMessageAmtBxSleepS4ReportedNotTaken, + EfiAsfMessageAmtBxSleepS5ReportedNotTaken, + EfiAsfMessageAmtBxSleepUnspecifiedReportedNotTaken, + EfiAsfMessageAmtBxErrActionIntF, + EfiAsfMessageAmtBxErrActionInv, + EfiAsfMessageAmtBxErrActionSetup, + EfiAsfMessageAmtBxErrActionFailure, + EfiAsfMessageAmtBxErrActionUnspecified, + EfiAsfMessageAmtBxOtherUnspecified, + EfiAsfMessageNoMemory, + EfiAsfMessageMemoryFailure, + EfiAsfMessageHddFailure, + EfiAsfMessageBoardFailure, + EfiAsfMessageFdcFailure, + EfiAsfMessageHdcFailure, + EfiAsfMessageKbdFailure, + EfiAsfMessageNoFdd, + EfiAsfMessageVideoControllerFailure, + EfiAsfMessageNoVideo, + EfiAsfMessageFirmwareCorruption, + EfiAsfMessageCpuVidMismatch, + EfiAsfMessageCpuSpeedMatchingFailure, + EfiAsfMessageUserAuthenticationInvalid, + EfiAsfMessageHddAuthenticationInvalid, + EfiAsfMessageNoBootMedia, + EfiAsfMessageTemperatureGenericCritical, + EfiAsfMessageTemperatureGenericWarning, + EfiAsfMessageTemperatureOverCritical, + EfiAsfMessageTemperatureOverWarning, + EfiAsfMessageTemperatureUnderCritical, + EfiAsfMessageTemperatureUnderWarning, + EfiAsfMessageVoltageGenericCritical, + EfiAsfMessageVoltageOverCritical, + EfiAsfMessageVoltageUnderCritical, + EfiAsfMessageFanGenericCritical, + EfiAsfMessageFanPredictiveFailure, + EfiAsfMessageFanLowSpeedCritical, + EfiAsfMessageFanLowSpeedWarning, + EfiAsfMessageBatteryLowWarning, + EfiAsfMessageBatteryLowCritical, + EfiAsfMessageBatteryPresenceDetected, + EfiAsfMessagePowerFailure, + EfiAsfMessageChassisIntrusion, +} EFI_FRAMEWORK_MESSAGE_TYPE; + +// +// StatusCode extension for ASF -- start +// +#define EFI_CU_HP_EC_VID_MISMATCH (EFI_SUBCLASS_SPECIFIC | 0x0000000E) +#define EFI_CU_HP_EC_SPEED_MATCHING_FAILURE (EFI_SUBCLASS_SPECIFIC | 0x0000000F) + +#define EFI_PERIPHERAL_EMBEDDED_CONTROLLER (EFI_PERIPHERAL | 0x000D0000) +#define EFI_PERIPHERAL_DOCK (EFI_PERIPHERAL | 0x000E0000) + +#define EFI_PERIPHERAL_BATTERY (EFI_PERIPHERAL | 0x000F0000) +#define EFI_P_BATTERY_PC_LOW_WARNING (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_BATTERY_EC_LOW_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +#define EFI_PERIPHERAL_FAN (EFI_PERIPHERAL | 0x00100000) +#define EFI_P_FAN_EC_GENERIC_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_FAN_EC_PREDICTIVE_FAILURE (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_P_FAN_EC_LOW_SPEED_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_P_FAN_PC_LOW_SPEED_WARNING (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +#define EFI_PERIPHERAL_TEMPERATURE (EFI_PERIPHERAL | 0x00110000) +#define EFI_P_TEMERATURE_EC_GENERIC_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_TEMERATURE_PC_GENERIC_WARNING (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_TEMERATURE_EC_OVER_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_P_TEMERATURE_PC_OVER_WARNING (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_P_TEMERATURE_EC_UNDER_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_P_TEMERATURE_PC_UNDER_WARNING (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +#define EFI_PERIPHERAL_VOLTAGE (EFI_PERIPHERAL | 0x00120000) +#define EFI_P_VOLTAGE_EC_GENERIC_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_VOLTAGE_EC_OVER_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_P_VOLTAGE_EC_UNDER_CRITICAL (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +#define EFI_PERIPHERAL_POWER_SUPPLY (EFI_PERIPHERAL | 0x00130000) +#define EFI_P_POWER_SUPPLY_EC_FAILURE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_POWER_SUPPLY_EC_PREDICTIVE_FAILURE (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +#define EFI_CU_CHIPSET_PC_INTRUDER_DETECT (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +#define EFI_SW_DXE_BS_EC_NO_BOOT_MEDIA (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_DXE_BS_EC_AUTHENTICATE_USER_INVALID (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_DXE_BS_EC_AUTHENTICATE_HDD_INVALID (EFI_SUBCLASS_SPECIFIC | 0x00000003) + +// +// StatusCode extension for ASF -- end +// +#endif diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.sdl b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.sdl new file mode 100644 index 0000000..8ec0f9c --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Common/AlertStandardFormatCommon.sdl @@ -0,0 +1,10 @@ +PATH + Name = "AlertStandardFormatCommon_DIR" + Help = "AlertStandardFormat files source directory" +End + +ELINK + Name = "/I$(AlertStandardFormatCommon_DIR)" + Parent = "AlertStandardFormat_INCLUDES" + InvokeOrder = AfterParent +End diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.c b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.c new file mode 100644 index 0000000..5119b8e --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.c @@ -0,0 +1,1234 @@ +/** @file + Processes ASF messages + +@copyright + Copyright (c) 2005 - 2012 Intel Corporation. All rights + reserved This software and associated documentation (if any) + is furnished under a license and may only be used or copied in + accordance with the terms of the license. Except as permitted + by such license, no part of this software or documentation may + be reproduced, stored in a retrieval system, or transmitted in + any form or by any means without the express written consent + of Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement + +**/ + +// +// External include files do NOT need to be explicitly specified in real EDKII +// environment +// +#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000) +#include "EdkIIGlueDxe.h" +#include "AlertStandardFormatDxe.h" +#include "MeLib.h" +#endif + +#include "AlertStandardFormatCommon.c" + +UINT64 mAsfMonotonicCount; +EFI_ASF_BOOT_OPTIONS mAsfBootOptions; +BOOLEAN mBootOptionsValid; +BOOLEAN mAsfAddressValid; +BOOLEAN mProgressEventEnabled; + +ALERT_STANDARD_FORMAT_INSTANCE *mAsfContext; + +EFI_GUID gAmtForcePushPetVariableGuid = AMT_FORCE_PUSH_PET_VARIABLE_GUID; +EFI_GUID gAmtPetQueueHobGuid = AMT_PET_QUEUE_HOB_GUID; +EFI_GUID gAmtForcePushPetHobGuid = AMT_FORCE_PUSH_PET_HOB_GUID; + +AMT_PET_QUEUE_PROTOCOL gAmtPetQueue; +AMT_PET_QUEUE_PROTOCOL *gAmtPetQueueProtocol; +AMT_FORCE_PUSH_PET_POLICY_HOB *gAmtForcePushPETPolicyHob; + +/** + Update ASF Boot Options data in ACPI ASF RCMP table + + @param[in] AsfBootOptions ASF Boot Options data for ACPI ASF RCMP table used +**/ +VOID +UpdateAcpiAsfRcmpBootOptions ( + EFI_ASF_BOOT_OPTIONS *AsfBootOptions + ) +{ + EFI_STATUS Status; + EFI_ACPI_1_0_ASF_DESCRIPTION_TABLE *AcpiAsfTable; + UINTN Handle; + UINTN VersionCount; + UINT16 *WordPointer; + EFI_ACPI_TABLE_VERSION Version[] = { + EFI_ACPI_TABLE_VERSION_1_0B, + EFI_ACPI_TABLE_VERSION_2_0, + EFI_ACPI_TABLE_VERSION_3_0 + }; + EFI_ACPI_TABLE_PROTOCOL *AcpiTable; + + /// + /// Locate ACPI Table Protocol + /// + Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **) &AcpiTable); + + /// + /// Initialize ASL manipulation library + /// + InitializeAslUpdateLib (); + + for (VersionCount = 0; VersionCount < sizeof (Version) / sizeof (EFI_ACPI_TABLE_VERSION); VersionCount++) { + Handle = 0; + /// + /// Locate the ASF Table + /// + Status = LocateAcpiTableBySignature ( + EFI_ACPI_1_0_ASF_DESCRIPTION_TABLE_SIGNATURE, + (EFI_ACPI_DESCRIPTION_HEADER **) &AcpiAsfTable, + &Handle, + &Version[VersionCount] + ); + if (EFI_ERROR (Status)) { + continue; + } + + if (AsfBootOptions->SubCommand == ASF_BOOT_OPTIONS_PRESENT) { + /// + /// Check Asf table if get boot option successfully + /// + AcpiAsfTable->AsfRmcp.RMCPCompletionCode = 00; + AcpiAsfTable->AsfRmcp.RMCPIANA = AsfBootOptions->IanaId; + AcpiAsfTable->AsfRmcp.RMCPSpecialCommand = AsfBootOptions->SpecialCommand; + WordPointer = (UINT16 *) &AcpiAsfTable->AsfRmcp.RMCPSpecialCommandParameter; + *WordPointer = AsfBootOptions->SpecialCommandParam; + WordPointer = (UINT16 *) &AcpiAsfTable->AsfRmcp.RMCPBootOptions; + *WordPointer = AsfBootOptions->BootOptions; + WordPointer = (UINT16 *) &AcpiAsfTable->AsfRmcp.RMCPOEMParameters; + *WordPointer = AsfBootOptions->OemParameters; + } else { + /// + /// Failed to get boot option, update the completion code to 0x1 + /// + AcpiAsfTable->AsfRmcp.RMCPCompletionCode = 01; + } + if (Handle != 0) { + Status = AcpiTable->UninstallAcpiTable ( + AcpiTable, + Handle + ); + } + /// + /// Update the Acpi Asf table + /// + Status = AcpiTable->InstallAcpiTable ( + AcpiTable, + AcpiAsfTable, + sizeof(EFI_ACPI_1_0_ASF_DESCRIPTION_TABLE), + &Handle + ); + FreePool (AcpiAsfTable); + } +} + +/** + 16 bits are changed backward for string transfer to value used + + @param[in] Value The value to be transferred + + @retval UINT16 Value The value after transferring +**/ +UINT16 +Swap16 ( + IN UINT16 Value + ) +{ + UINT16 OutValue; + UINT8 *TempIn; + UINT8 *TempOut; + + TempIn = (UINT8 *) &Value; + TempOut = (UINT8 *) &OutValue; + + TempOut[0] = TempIn[1]; + TempOut[1] = TempIn[0]; + + return OutValue; +} + +/** + The driver entry point - detect ASF support or not, if support, will install relative protocol. + + @param[in] ImageHandle Handle for this drivers loaded image protocol. + @param[in] SystemTable EFI system table. + + @retval EFI_SUCCESS The driver installed without error. + @exception EFI_UNSUPPORTED The chipset is unsupported by this driver. + @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures. +**/ +EFI_STATUS +EFIAPI +AlertStandardFormatDriverEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + EFI_DATA_HUB_PROTOCOL *DataHub; + EFI_EVENT DataHubEvent; + UINT64 DataClass; + EFI_ASF_BOOT_OPTIONS *AsfBootOptions; + + /// + /// First check if ASF support is enabled in Setup. + /// + if (!AsfSupported ()) { + return EFI_UNSUPPORTED; + } + + mBootOptionsValid = FALSE; + mAsfAddressValid = FALSE; + + mAsfContext = AllocateZeroPool (sizeof (ALERT_STANDARD_FORMAT_INSTANCE)); + ASSERT (mAsfContext != NULL); + if (mAsfContext == NULL) { + return EFI_OUT_OF_RESOURCES; + } + /// + /// Get the Data Hub Protocol. Assume only one instance + /// of Data Hub Protocol is available in the system. + /// + Status = gBS->LocateProtocol ( + &gEfiDataHubProtocolGuid, + NULL, + (VOID **) &DataHub + ); + ASSERT_EFI_ERROR (Status); + + mAsfContext->Handle = ImageHandle; + mAsfContext->Signature = ALERT_STANDARD_FORMAT_PRIVATE_DATA_SIGNATURE; + mAsfContext->AlertStandardFormat.GetSmbusAddr = GetSmbusAddr; + mAsfContext->AlertStandardFormat.SetSmbusAddr = SetSmbusAddr; + mAsfContext->AlertStandardFormat.GetBootOptions = GetBootOptions; + mAsfContext->AlertStandardFormat.SendAsfMessage = SendAsfMessage; + + /// + /// Sending ASF Messaging if ManageabilityMode is not zero + /// + if (ManageabilityModeSetting () != MNT_OFF) { + /// + /// ActiveManagement Protocol is not ready at this point. Need to Check Boot Options Manually + /// + mProgressEventEnabled = FALSE; + Status = GetBootOptions (&(mAsfContext->AlertStandardFormat), &AsfBootOptions); + if (!EFI_ERROR (Status)) { + if (AsfBootOptions->SubCommand == ASF_BOOT_OPTIONS_PRESENT) { + if ((AsfBootOptions->BootOptions & FORCE_PROGRESS_EVENTS) == FORCE_PROGRESS_EVENTS) { + mProgressEventEnabled = TRUE; + } + } + } + /// + /// If no boot options available, check policy + /// + if (!mProgressEventEnabled) { + mProgressEventEnabled = FwProgressSupport (); + } + /// + /// Create message queue + /// + AmtCreateMessageQueue (); + + /// + /// Get ForcePushPetPolicy Hob + /// + gAmtForcePushPETPolicyHob = GetForcePushPetPolicy (); + + /// + /// save PEI force push error event from hob to variable + /// + SaveForcePushErrorEventFromPeiToDxe (); + + /// + /// Try to send message + /// + SendPETMessageInQueue (); + + /// + /// Register our Setup Data Filter Function. + /// This function is notified at the lowest TPL + /// + Status = gBS->CreateEvent ( + EVENT_NOTIFY_SIGNAL, + TPL_CALLBACK, + DataHubEventCallback, + NULL, + &DataHubEvent + ); + ASSERT_EFI_ERROR (Status); + + if (mProgressEventEnabled) { + DataClass = EFI_DATA_RECORD_CLASS_ERROR | EFI_DATA_RECORD_CLASS_PROGRESS_CODE; + } else { + DataClass = EFI_DATA_RECORD_CLASS_ERROR; + } + + Status = DataHub->RegisterFilterDriver ( + DataHub, + DataHubEvent, + EFI_TPL_APPLICATION, + DataClass, + NULL + ); + ASSERT_EFI_ERROR (Status); + } + /// + /// Install the AlertStandardFormat interface + /// + Status = gBS->InstallMultipleProtocolInterfaces ( + &mAsfContext->Handle, + &gEfiAlertStandardFormatProtocolGuid, + &mAsfContext->AlertStandardFormat, + NULL + ); + ASSERT_EFI_ERROR (Status); + + return Status; +} + +/** + Return the SMBus address used by the ASF driver. + Not applicable in Intel ME/HECI system, need to return EFI_UNSUPPORTED. + + @param[in] This The address of protocol + @param[in] SmbusDeviceAddress Out put the Smbus Address + + @exception EFI_UNSUPPORTED The function is unsupported by this driver +**/ +EFI_STATUS +EFIAPI +GetSmbusAddr ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + OUT UINTN *SmbusDeviceAddress + ) +{ + return EFI_UNSUPPORTED; +} + +/** + Set the SMBus address used by the ASF driver. 0 is an invalid address. + Not applicable in Intel ME/HECI system, need to return EFI_UNSUPPORTED. + + @param[in] This The address of protocol + @param[in] SmbusDeviceAddress SMBus address of the device + + @exception EFI_UNSUPPORTED The function is unsupported by this driver +**/ +EFI_STATUS +EFIAPI +SetSmbusAddr ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + IN UINTN SmbusDeviceAddress + ) +{ + return EFI_UNSUPPORTED; +} + +/** + Return EFI_SUCCESS if Firmware Init Complete is set in HFS[9]. + + @param[in] Heci EFI_HECI_PROTOCOL + @param[in] Timeout Time in second + + @retval EFI_SUCCESS Firmware Init Complete is set + @retval EFI_TIMEOUT Firmware Init Complete is not set in 5 seconds +**/ +EFI_STATUS +WaitFirmwareInitDone ( + EFI_HECI_PROTOCOL *Heci, + UINT32 Timeout + ) +{ + UINT32 idx; + EFI_STATUS Status; + UINT32 MeStatus; + + Status = EFI_SUCCESS; + idx = 0; + + Heci->GetMeStatus (&MeStatus); + + while (!ME_STATUS_IS_ME_FW_INIT_COMPLETE (MeStatus)) { + gBS->Stall (100000); + idx++; + if (idx > Timeout * 10) { + Status = EFI_TIMEOUT; + break; + } + + Heci->GetMeStatus (&MeStatus); + } + + return Status; +} + +/** + Initialize KVM by sending HECI messafe to ME + + @param[in] Event The event registered. + @param[in] Context Event context. Not used in this event handler. +**/ +VOID +EFIAPI +QueryKvm ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + BdsKvmInitialization (); + gBS->CloseEvent (Event); +} + +/** + Return the ASF Boot Options obtained from the controller. If the + Boot Options parameter is NULL and no boot options have been retrieved, + Query the ASF controller for its boot options. + Get ASF Boot Options through HECI. + + @param[in] This The address of protocol + @param[in] AsfBootOptions Pointer to ASF boot options to copy current ASF Boot options + + @retval EFI_SUCCESS Boot options copied + @retval EFI_NOT_READY No boot options +**/ +EFI_STATUS +EFIAPI +GetBootOptions ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + IN OUT EFI_ASF_BOOT_OPTIONS **AsfBootOptions + ) +{ + EFI_STATUS Status; + UINT8 ConsoleLock; + UINT32 MeStatus; + UINT32 MeMode; + EFI_STATUS TempStatus; + VOID *AfterConsolOutNotifyReg; + EFI_EVENT AfterConsolOutInstalledEvent; + EFI_GUID guidConOutStarted = EFI_CONSOLE_OUT_DEVICE_GUID; + EFI_HECI_PROTOCOL *Heci; + HECI_ASF_GET_BOOT_OPTIONS_RESPONSE HeciAsfGetBootOptionsResponse; + HECI_ASF_CLEAR_BOOT_OPTION HeciAsfClearBootOption; + UINT32 HeciLength; + + if (!mBootOptionsValid) { + Status = gBS->LocateProtocol ( + &gEfiHeciProtocolGuid, + NULL, + (VOID **) &Heci + ); + + if (EFI_ERROR (Status)) { + DEBUG ((EFI_D_ERROR, "ASF Get Boot Options failed!, Status = %r\n", Status)); + return Status; + } + + ZeroMem ((VOID *) &mAsfBootOptions, sizeof (EFI_ASF_BOOT_OPTIONS)); + mAsfBootOptions.SubCommand = ASF_BOOT_OPTIONS_NOT_PRESENT; + mAsfBootOptions.Version = 0x10; + UpdateAcpiAsfRcmpBootOptions (&mAsfBootOptions); + + /// + /// Get ME Status + /// + TempStatus = Heci->GetMeStatus (&MeStatus); + ASSERT_EFI_ERROR (TempStatus); + + /// + /// Get ME Operation Mode + /// + Heci->GetMeMode (&MeMode); + + /// + /// Only Send ASF Get Boot Options message when ME is ready and ME FW INIT is completed + /// + if (ME_STATUS_IS_ME_FW_BOOT_OPTIONS_PRESENT (MeStatus) && + (ManageabilityModeSetting () != MNT_OFF) && + (MeMode == ME_MODE_NORMAL) + ) { + if (WaitFirmwareInitDone (Heci, 5) != EFI_TIMEOUT) { + /// + /// Prepare Boot Option Command header + /// + HeciAsfGetBootOptionsResponse.Command = EFI_ASF_MESSAGE_COMMAND_ASF_CONFIGURATION; + HeciAsfGetBootOptionsResponse.ByteCount = EFI_ASF_MESSAGE_BYTEOUNTT_GET_BOOT_OPT; + HeciAsfGetBootOptionsResponse.AsfBootOptions.SubCommand = EFI_ASF_MESSAGE_SUBCOMMAND_RETURN_BOOT_OPT; + HeciAsfGetBootOptionsResponse.AsfBootOptions.Version = 0x10; + HeciLength = HECI_ASF_GET_BOOT_OPTIONS_LENGTH; + Status = Heci->SendMsg ( + (UINT32 *) &HeciAsfGetBootOptionsResponse, + HeciLength, + BIOS_ASF_HOST_ADDR, + HECI_ASF_MESSAGE_ADDR + ); + if (EFI_ERROR (Status)) { + DEBUG ((EFI_D_ERROR, "ASF Get Boot Options failed!(SendwACK), Status = %r\n", Status)); + return Status; + } + + HeciLength = HECI_ASF_GET_BOOT_OPTIONS_RESPONSE_LENGTH; + Status = Heci->ReadMsg ( + BLOCKING, + (UINT32 *) &HeciAsfGetBootOptionsResponse, + &HeciLength + ); + if (EFI_ERROR (Status)) { + DEBUG ((EFI_D_ERROR, "ASF Get Boot Options failed!(ReadMsg), Status = %r\n", Status)); + return Status; + } + + CopyMem ( + (VOID *) &mAsfBootOptions, + (VOID *) &(HeciAsfGetBootOptionsResponse.AsfBootOptions), + sizeof (EFI_ASF_BOOT_OPTIONS) + ); + + /// + /// By default, this table is belong to all ACPI table versions. + /// It is ok if the table is not found and that means the platform does not publish that version. + /// + UpdateAcpiAsfRcmpBootOptions (&mAsfBootOptions); + + mAsfBootOptions.SpecialCommandParam = Swap16 (mAsfBootOptions.SpecialCommandParam); + + /// + /// ASF Get Boot Options - Clear Boot Options + /// Need to do this so don't get caught in an endless loop plus by + /// definition get boot options is a one time boot situation. + /// So if server on other end of ASF device wants another back to back + /// boot it will request it. Do this only if there were boot options + /// + if (mAsfBootOptions.SubCommand == ASF_BOOT_OPTIONS_PRESENT) { + HeciAsfClearBootOption.Command = EFI_ASF_MESSAGE_COMMAND_ASF_CONFIGURATION; + HeciAsfClearBootOption.AsfClearBootOptions.SubCommand = EFI_ASF_MESSAGE_SUBCOMMAND_CLEAR_BOOT_OPT; + HeciAsfClearBootOption.AsfClearBootOptions.Version = EFI_ASF_MESSAGE_VERSIONNUMBER; + HeciAsfClearBootOption.ByteCount = EFI_ASF_MESSAGE_BYTECOUNT_CLEAR_BOOT_OPT; + HeciLength = HECI_ASF_CLEAR_BOOT_OPTION_LENGTH; + + Status = Heci->SendMsg ( + (UINT32 *) &HeciAsfClearBootOption, + HeciLength, + BIOS_ASF_HOST_ADDR, + HECI_ASF_MESSAGE_ADDR + ); + + if (EFI_ERROR (Status)) { + DEBUG ((EFI_D_ERROR, "ASF Clear Boot Options failed!, Status = %r\n", Status)); + return Status; + } + } + } + } + /// + /// Set flag so we don't try to get the Boot options again. + /// + mBootOptionsValid = TRUE; + + /// + /// Set up Event for KVM for when Output Display Console is installed + /// + if ((mAsfBootOptions.SpecialCommandParam & USE_KVM) == USE_KVM) { + + Status = gBS->CreateEvent ( + EFI_EVENT_NOTIFY_SIGNAL, + EFI_TPL_NOTIFY, + QueryKvm, + NULL, + &AfterConsolOutInstalledEvent + ); + + Status = gBS->RegisterProtocolNotify ( + &guidConOutStarted, + AfterConsolOutInstalledEvent, + &AfterConsolOutNotifyReg + ); + + } + /// + /// Check for keyboard locking in the boot options + /// + ConsoleLock = NO_LOCK_CONSOLE; + + if (mAsfBootOptions.SubCommand == ASF_BOOT_OPTIONS_PRESENT) { + if ((mAsfBootOptions.BootOptions & LOCK_KEYBOARD) == LOCK_KEYBOARD) { + ConsoleLock = LOCK_CONSOLE; + } + } + /// + /// Save the console lock flag for later usage in console locking determination + /// + gRT->SetVariable ( + EFI_CONSOLE_LOCK_VARIABLE_NAME, + &gEfiConsoleLockGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, + sizeof (ConsoleLock), + &ConsoleLock + ); + } + + if (AsfBootOptions) { + *AsfBootOptions = &mAsfBootOptions; + + /// + /// If we're asking for the options, then resend them to the debug output just encase they've been hosed. + /// + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.SubCommand = 0x%x\n", mAsfBootOptions.SubCommand)); + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.Version = 0x%x\n", mAsfBootOptions.Version)); + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.IanaId = 0x%x\n", mAsfBootOptions.IanaId)); + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.SpecialCommand = 0x%x\n", mAsfBootOptions.SpecialCommand)); + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.SpecialCommandParam = 0x%x\n", mAsfBootOptions.SpecialCommandParam)); + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.BootOptions = 0x%x\n", mAsfBootOptions.BootOptions)); + DEBUG ((EFI_D_ERROR, "mAsfBootOptions.OemParameters = 0x%x\n", mAsfBootOptions.OemParameters)); + } + + return EFI_SUCCESS; +} + +/** + Send ASF Message through HECI. + + @param[in] This The address of protocol + @param[in] AsfMessage Pointer to ASF message + + @retval EFI_SUCCESS Boot options copied + @retval EFI_INVALID_PARAMETER Invalid pointer + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +EFIAPI +SendAsfMessage ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + IN EFI_ASF_MESSAGE *AsfMessage + ) +{ + EFI_STATUS Status; + EFI_HECI_PROTOCOL *Heci; + UINT32 HeciLength; + HECI_ASF_PUSH_PROGRESS_CODE HeciAsfPushProgressCode; + UINT32 MeStatus; + UINT32 MeMode; + EFI_STATUS TempStatus; + + Status = gBS->LocateProtocol ( + &gEfiHeciProtocolGuid, + NULL, + (VOID **) &Heci + ); + + if (!EFI_ERROR (Status)) { + TempStatus = Heci->GetMeStatus (&MeStatus); + ASSERT_EFI_ERROR (TempStatus); + + /// + /// Get ME Operation Mode + /// + Heci->GetMeMode (&MeMode); + + /// + /// Only send ASF Push Progress code when ME is ready and ME is in normal mode. Ignore FW Init Status. + /// + if (ME_STATUS_ME_STATE_ONLY (MeStatus) == ME_READY && MeMode == ME_MODE_NORMAL) { + ZeroMem ((VOID *) &HeciAsfPushProgressCode, sizeof (HECI_ASF_PUSH_PROGRESS_CODE)); + HeciAsfPushProgressCode.Command = EFI_ASF_MESSAGE_COMMAND_MESSAGE; + HeciAsfPushProgressCode.ByteCount = 0x10; + HeciLength = HECI_ASF_PUSH_PROGRESS_CODE_LENGTH; + CopyMem ((VOID *) &(HeciAsfPushProgressCode.AsfMessage), (VOID *) AsfMessage, sizeof (EFI_ASF_MESSAGE)); + + Status = Heci->SendMsg ( + (UINT32 *) &HeciAsfPushProgressCode, + HeciLength, + BIOS_ASF_HOST_ADDR, + HECI_ASF_MESSAGE_ADDR + ); + } + } + + return Status; +} + +/** + This routine returns ForcePushPetPolicy information. + + @param[in] None + + @retval AMT_FORCE_PUSH_PET_POLICY_HOB ForcePushPetPolicy information. +**/ +AMT_FORCE_PUSH_PET_POLICY_HOB * +GetForcePushPetPolicy ( + VOID + ) +{ + AMT_FORCE_PUSH_PET_POLICY_HOB *AmtForcePushPETPolicyHob; + EFI_STATUS Status; + + Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, (VOID **) &AmtForcePushPETPolicyHob); + ASSERT_EFI_ERROR (Status); + + return GetNextGuidHob (&gAmtForcePushPetPolicyGuid, AmtForcePushPETPolicyHob); +} + +/** + This routine checks whethre current message is ForcePush message. + + @param[in] MessageType AMT PET Message Type. + + @retval TRUE It is ForcePush message. + @retval FALSE It is not ForcePush message. +**/ +BOOLEAN +IsForcePushErrorEvent ( + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +{ + UINTN Index; + UINTN Number; + + Number = (gAmtForcePushPETPolicyHob->EfiHobGuidType.Header.HobLength - sizeof (EFI_HOB_GUID_TYPE)) / + sizeof (EFI_FRAMEWORK_MESSAGE_TYPE); + for (Index = 0; Index < Number; Index++) { + if (gAmtForcePushPETPolicyHob->MessageType[Index] == MessageType) { + return TRUE; + } + } + + return FALSE; +} + +/** + Filters all the progress and error codes for Asf. + + @param[in] Event The event registered. + @param[in] Context Event context. Not used in this event handler. +**/ +VOID +EFIAPI +DataHubEventCallback ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_STATUS Status; + EFI_DATA_HUB_PROTOCOL *DataHub; + EFI_DATA_RECORD_HEADER *Record; + DATA_HUB_STATUS_CODE_DATA_RECORD *StatusRecord; + UINTN Index; + + /// + /// Get the Data Hub Protocol. Assume only one instance + /// + Status = gBS->LocateProtocol (&gEfiDataHubProtocolGuid, NULL, (VOID **) &DataHub); + ASSERT_EFI_ERROR (Status); + + /// + /// Get all available data records from data hub + /// + Record = NULL; + + do { + Status = DataHub->GetNextRecord (DataHub, &mAsfMonotonicCount, &Event, &Record); + if (!EFI_ERROR (Status)) { + if (mProgressEventEnabled) { + if (Record->DataRecordClass == EFI_DATA_RECORD_CLASS_PROGRESS_CODE) { + StatusRecord = (DATA_HUB_STATUS_CODE_DATA_RECORD *) (Record + 1); + for (Index = 0; Index < sizeof (mAsfProgressDataHubMap) / sizeof (EFI_ASF_DATA_HUB_MAP); Index++) { + if (mAsfProgressDataHubMap[Index].StatusCodeValue == StatusRecord->Value) { + Status = SendPostPacket (mAsfProgressDataHubMap[Index].MessageType); + break; + } + } + } + } + + if (Record->DataRecordClass == EFI_DATA_RECORD_CLASS_ERROR) { + StatusRecord = (DATA_HUB_STATUS_CODE_DATA_RECORD *) (Record + 1); + for (Index = 0; Index < sizeof (mAsfErrorDataHubMap) / sizeof (EFI_ASF_DATA_HUB_MAP); Index++) { + if (mAsfErrorDataHubMap[Index].StatusCodeValue == StatusRecord->Value) { + Status = SendPostPacket (mAsfErrorDataHubMap[Index].MessageType); + if ((Status == EFI_DEVICE_ERROR) && IsForcePushErrorEvent (mAsfErrorDataHubMap[Index].MessageType)) { + SaveForcePushErrorEvent (mAsfErrorDataHubMap[Index].MessageType); + } + break; + } + } + } + } + } while (!EFI_ERROR (Status) && (mAsfMonotonicCount != 0)); +} + +/** + Sends a POST packet across ASF + + @param[in] MessageType POST Status Code + + @retval EFI_DEVICE_ERROR No message found + @retval EFI_SUCCESS Boot options copied + @retval EFI_INVALID_PARAMETER Invalid pointer + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +SendPostPacket ( + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +{ + EFI_STATUS Status; + UINTN Index; + + Status = EFI_DEVICE_ERROR; + /// + /// Find the message to send across the wire + /// + for (Index = 0; Index < sizeof (mAsfFrameworkMessage) / sizeof (EFI_ASF_FRAMEWORK_MESSAGE); Index++) { + if (mAsfFrameworkMessage[Index].MessageType == MessageType) { + Status = SendAsfMessage (NULL, &mAsfFrameworkMessage[Index].Message); + break; + } + } + + return Status; +} + +/** + Provides an interface that a software module can call to report an ASF DXE status code. + + @param[in] Type Indicates the type of status code being reported. + @param[in] Value Describes the current status of a hardware or software entity. + This included information about the class and subclass that is + used to classify the entity as well as an operation. + @param[in] Instance The enumeration of a hardware or software entity within + the system. Valid instance numbers start with 1. + @param[in] CallerId This optional parameter may be used to identify the caller. + This parameter allows the status code driver to apply different + rules to different callers. + @param[in] Data This optional parameter may be used to pass additional data. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_DEVICE_ERROR The function should not be completed due to a device error. +**/ +EFI_STATUS +EFIAPI +AmtReportStatusCode ( + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ) +{ + UINTN Index; + EFI_STATUS Status; + + if (mProgressEventEnabled) { + if ((Type & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) { + for (Index = 0; Index < sizeof (mAsfProgressDataHubMap) / sizeof (EFI_ASF_DATA_HUB_MAP); Index++) { + if (mAsfProgressDataHubMap[Index].StatusCodeValue == Value) { + return SendPostPacket (mAsfProgressDataHubMap[Index].MessageType); + } + } + } + } + + if ((Type & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) { + for (Index = 0; Index < sizeof (mAsfErrorDataHubMap) / sizeof (EFI_ASF_DATA_HUB_MAP); Index++) { + if (mAsfErrorDataHubMap[Index].StatusCodeValue == Value) { + Status = SendPostPacket (mAsfErrorDataHubMap[Index].MessageType); + if ((Status == EFI_DEVICE_ERROR) && IsForcePushErrorEvent (mAsfErrorDataHubMap[Index].MessageType)) { + SaveForcePushErrorEvent (mAsfErrorDataHubMap[Index].MessageType); + } + + return Status; + } + } + } + + return EFI_SUCCESS; +} + +/** + This routine puts PET message to MessageQueue, which will be sent later. + + @param[in] Type StatusCode message type. + @param[in] Value StatusCode message value. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures +**/ +EFI_STATUS +QueuePetMessage ( + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value + ) +{ + AMT_PET_QUEUE_NODE *NewNode; + + NewNode = AllocateZeroPool (sizeof (AMT_PET_QUEUE_NODE)); + ASSERT (NewNode != NULL); + if (NewNode == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + NewNode->Signature = AMT_PET_QUEUE_NODE_SIGNATURE; + NewNode->Type = Type; + NewNode->Value = Value; + InsertTailList ((LIST_ENTRY *) &gAmtPetQueueProtocol->MessageList, (LIST_ENTRY *) &NewNode->Link); + + return EFI_SUCCESS; +} + +/** + This routine sends PET message in MessageQueue. + + @param[in] PeiServices PeiServices pointer. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +SendPETMessageInQueue ( + VOID + ) +{ + EFI_STATUS Status; + AMT_PET_QUEUE_HOB *PETQueueHob; + EFI_LIST_ENTRY *Link; + AMT_PET_QUEUE_NODE *Node; + EFI_PEI_HOB_POINTERS Hob; + + EFI_HECI_PROTOCOL *Heci; + UINT32 MeStatus; + EFI_STATUS TempStatus; + + /// + /// Try HECI state + /// + Status = gBS->LocateProtocol ( + &gEfiHeciProtocolGuid, + NULL, + (VOID **) &Heci + ); + if (EFI_ERROR (Status)) { + return EFI_NOT_READY; + } + + TempStatus = Heci->GetMeStatus (&MeStatus); + ASSERT_EFI_ERROR (TempStatus); + + /// + /// Only send ASF Push Progress code when ME is ready. Ignore FW Init Status. + /// + if (ME_STATUS_ME_STATE_ONLY (MeStatus) != ME_READY) { + return EFI_NOT_READY; + } + /// + /// Get PETQueueHob + /// + Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, (VOID **) &PETQueueHob); + + while (TRUE) { + PETQueueHob = GetNextGuidHob (&gAmtPetQueueHobGuid, PETQueueHob); + if (PETQueueHob == NULL) { + break; + } + /// + /// Send message + /// + AmtReportStatusCode (PETQueueHob->Type, PETQueueHob->Value, 0, NULL, NULL); + + /// + /// Mark it as sent + /// + PETQueueHob->Type = (UINT32) -1; + + /// + /// Need find next one + /// + Hob.Raw = (VOID *) PETQueueHob; + PETQueueHob = (AMT_PET_QUEUE_HOB *) GET_NEXT_HOB (Hob); + } + /// + /// Send DXEQueue + /// + Link = (EFI_LIST_ENTRY *) GetFirstNode ((LIST_ENTRY *) &gAmtPetQueueProtocol->MessageList); + + while (!IsNull ((LIST_ENTRY *) &gAmtPetQueueProtocol->MessageList, (LIST_ENTRY *) Link)) { + Node = AMT_PET_QUEUE_NODE_FROM_LINK (Link); + + /// + /// Send message + /// + AmtReportStatusCode (Node->Type, Node->Value, 0, NULL, NULL); + + /// + /// Mark it as sent + /// + Node->Type = (UINT32) -1; + + Link = (EFI_LIST_ENTRY *) GetNextNode ( + (LIST_ENTRY *) &gAmtPetQueueProtocol->MessageList, + (LIST_ENTRY *) &Node->Link + ); + } + + return EFI_SUCCESS; +} + +/** + This routine creats PET MessageQueue. + + @param[in] None + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +AmtCreateMessageQueue ( + VOID + ) +{ + /// + /// Create Queue for later usage + /// + gAmtPetQueueProtocol = &gAmtPetQueue; + + InitializeListHead ((LIST_ENTRY *) &gAmtPetQueueProtocol->MessageList); + + return EFI_SUCCESS; +} + +/** + This routine saves current ForcePush ErrorEvent to Variable, which will be sent again. + + @param[in] MessageType ASF PET message type. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures +**/ +EFI_STATUS +SaveForcePushErrorEvent ( + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +{ + EFI_STATUS Status; + UINTN Size; + EFI_FRAMEWORK_MESSAGE_TYPE *Message; + + /// + /// Create PET queue variable + /// + Message = NULL; + Size = 0; + Status = gRT->GetVariable ( + AMT_FORCE_PUSH_PET_VARIABLE_NAME, + &gAmtForcePushPetVariableGuid, + NULL, + &Size, + NULL + ); + if (Status == EFI_BUFFER_TOO_SMALL) { + /// + /// Get the exist message + /// + Message = AllocateZeroPool (Size + sizeof (MessageType)); + ASSERT (Message != NULL); + if (Message == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status = gRT->GetVariable ( + AMT_FORCE_PUSH_PET_VARIABLE_NAME, + &gAmtForcePushPetVariableGuid, + NULL, + &Size, + Message + ); + ASSERT_EFI_ERROR (Status); + + /// + /// Fill new item + /// + *(EFI_FRAMEWORK_MESSAGE_TYPE *) ((UINTN) Message + Size) = MessageType; + Size += sizeof (MessageType); + } else if (Status == EFI_NOT_FOUND) { + /// + /// Create a new one + /// + Size = sizeof (MessageType); + Message = AllocateZeroPool (sizeof (MessageType)); + ASSERT (Message != NULL); + if (Message == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + *Message = MessageType; + } else { + ASSERT (FALSE); + } + /// + /// Set PET message to variable + /// + if (Message != NULL) { + Status = gRT->SetVariable ( + AMT_FORCE_PUSH_PET_VARIABLE_NAME, + &gAmtForcePushPetVariableGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, + Size, + Message + ); + ASSERT_EFI_ERROR (Status); + + FreePool (Message); + } + + return EFI_SUCCESS; +} + +/** + This routine converts Hob ForcePush ErrorEvent to Variable, which will be sent again. + + @param[in] None + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +SaveForcePushErrorEventFromPeiToDxe ( + VOID + ) +{ + AMT_FORCE_PUSH_PET_HOB *AmtForcePushPETHob; + EFI_STATUS Status; + EFI_PEI_HOB_POINTERS Hob; + + /// + /// Find ASF ForcePush PET Hob + /// + Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, (VOID **) &AmtForcePushPETHob); + + while (TRUE) { + AmtForcePushPETHob = GetNextGuidHob (&gAmtForcePushPetHobGuid, AmtForcePushPETHob); + if (AmtForcePushPETHob == NULL) { + break; + } + + SaveForcePushErrorEvent (AmtForcePushPETHob->MessageType); + + /// + /// Need find next one + /// + Hob.Raw = (VOID *) AmtForcePushPETHob; + AmtForcePushPETHob = (AMT_FORCE_PUSH_PET_HOB *) GET_NEXT_HOB (Hob); + } + + return EFI_SUCCESS; +} + +/** + This routine tries to send all ForcePush ErrorEvent. + If message is sent, it will be deleted from Variable. + If message is not sent, it will be still stored to Variable. + + @param[in] None + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures +**/ +EFI_STATUS +SendAllForcePushErrorEvent ( + VOID + ) +{ + EFI_STATUS Status; + UINTN Size; + EFI_FRAMEWORK_MESSAGE_TYPE *Message; + UINTN Index; + EFI_FRAMEWORK_MESSAGE_TYPE *NewMessage; + UINTN NewIndex; + + /// + /// Create PET queue variable + /// + Message = NULL; + Size = 0; + Status = gRT->GetVariable ( + AMT_FORCE_PUSH_PET_VARIABLE_NAME, + &gAmtForcePushPetVariableGuid, + NULL, + &Size, + NULL + ); + if (Status == EFI_NOT_FOUND) { + return EFI_SUCCESS; + } + + if (Status != EFI_BUFFER_TOO_SMALL) { + return Status; + } + /// + /// Get the exist message + /// + Message = AllocateZeroPool (Size); + ASSERT (Message != NULL); + if (Message == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + NewMessage = AllocateZeroPool (Size); + ASSERT (NewMessage != NULL); + if (NewMessage == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + Status = gRT->GetVariable ( + AMT_FORCE_PUSH_PET_VARIABLE_NAME, + &gAmtForcePushPetVariableGuid, + NULL, + &Size, + Message + ); + ASSERT_EFI_ERROR (Status); + + NewIndex = 0; + for (Index = 0; Index < Size / sizeof (EFI_FRAMEWORK_MESSAGE_TYPE); Index++) { + Status = SendPostPacket (Message[Index]); + if (EFI_ERROR (Status)) { + /// + /// Fail, save it again. + /// + NewMessage[NewIndex] = Message[Index]; + NewIndex++; + } + } + + FreePool (Message); + + /// + /// SetVariable again + /// + if (NewIndex == 0) { + FreePool (NewMessage); + NewMessage = NULL; + } + + Status = gRT->SetVariable ( + AMT_FORCE_PUSH_PET_VARIABLE_NAME, + &gAmtForcePushPetVariableGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, + NewIndex * sizeof (EFI_FRAMEWORK_MESSAGE_TYPE), + NewMessage + ); + + if (NewMessage != NULL) { + FreePool (NewMessage); + } + + return EFI_SUCCESS; +} diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.cif b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.cif new file mode 100644 index 0000000..f091a20 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.cif @@ -0,0 +1,13 @@ +<component> + name = "AlertStandardFormatDxe" + category = ModulePart + LocalRoot = "ReferenceCode\ME\ActiveManagement\AlertStandardFormat\Heci\Dxe\" + RefName = "AlertStandardFormatDxe" +[files] +"AlertStandardFormatDxe.sdl" +"AlertStandardFormatDxe.mak" +"AlertStandardFormatDxe.c" +"AlertStandardFormatDxe.dxs" +"AlertStandardFormatDxe.h" +"AlertStandardFormatDxe.inf" +<endComponent> diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.dxs b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.dxs new file mode 100644 index 0000000..dd340c9 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.dxs @@ -0,0 +1,47 @@ +/** @file + Dependency expression source file. + +@copyright + Copyright (c) 2005 - 2012 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + This file contains a 'Sample Driver' and is licensed as such + under the terms of your license agreement with Intel or your + vendor. This file may be modified by the user, subject to + the additional terms of the license agreement + +**/ + +// +// Common for R8 and R9 codebase +// +#include "AutoGen.h" +#include "DxeDepex.h" + +// +// BUILD_WITH_GLUELIB and BUILD_WITH_EDKII_GLUE_LIB are both "defined" in R8 codebase; +// BUILD_WITH_EDKII_GLUE_LIB is defined in Edk-Dev-Snapshot-20070228 and later version +// BUILD_WITH_GLUELIB and BUILD_WITH_EDKII_GLUE_LIB are "not defined" in R9 codebase. +// +#if defined (BUILD_WITH_GLUELIB) || defined (BUILD_WITH_EDKII_GLUE_LIB) +#include "EfiDepex.h" + +#include EFI_PROTOCOL_DEFINITION (DataHub) +#include EFI_PROTOCOL_DEFINITION (Heci) +#include EFI_PROTOCOL_DEFINITION (AcpiSupport) +#include EFI_PROTOCOL_DEFINITION (AmtPlatformPolicy) + +#endif + +DEPENDENCY_START + EFI_DATA_HUB_PROTOCOL_GUID AND + EFI_HECI_PROTOCOL_GUID AND + EFI_ACPI_SUPPORT_GUID AND + DXE_PLATFORM_AMT_POLICY_GUID +DEPENDENCY_END diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h new file mode 100644 index 0000000..0e6b947 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h @@ -0,0 +1,340 @@ +/** @file + Include file for ASF Driver + +@copyright + Copyright (c) 2005 - 2012 Intel Corporation. All rights + reserved This software and associated documentation (if any) + is furnished under a license and may only be used or copied in + accordance with the terms of the license. Except as permitted + by such license, no part of this software or documentation may + be reproduced, stored in a retrieval system, or transmitted in + any form or by any means without the express written consent + of Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ +#ifndef _ALERT_STANDARD_FORMAT_H +#define _ALERT_STANDARD_FORMAT_H + +#include "AslUpdateLib.h" +#include "AlertStandardFormatTable.h" +#include "AmtLib.h" +#include "AlertStandardFormatCommon.h" + +// +// Driver Consumed Protocol Prototypes +// +#include EFI_PROTOCOL_CONSUMER (DataHub) +#include EFI_PROTOCOL_CONSUMER (AlertStandardFormat) +#include EFI_PROTOCOL_CONSUMER (HECI) +#include EFI_PROTOCOL_CONSUMER (ConsoleControl) +#include EFI_GUID_DEFINITION (ConsoleLock) +#include EFI_GUID_DEFINITION (AmtForcePushPetPolicy) + +/// +/// ASF Over HECI +/// +typedef struct _HECI_ASF_PUSH_PROGRESS_CODE { + UINT8 Command; + UINT8 ByteCount; + EFI_ASF_MESSAGE AsfMessage; + UINT8 EventData[3]; + UINT8 Reserved[2]; +} HECI_ASF_PUSH_PROGRESS_CODE; + +#define HECI_ASF_PUSH_PROGRESS_CODE_LENGTH 0x12 + +typedef struct _HECI_ASF_GET_BOOT_OPTIONS { + UINT8 Command; + UINT8 ByteCount; + UINT8 SubCommand; + UINT8 VersionNumber; +} HECI_ASF_GET_BOOT_OPTIONS; + +#define HECI_ASF_GET_BOOT_OPTIONS_LENGTH 0x04 + +typedef struct _HECI_ASF_GET_BOOT_OPTIONS_RESPONSE { + UINT8 Command; + UINT8 ByteCount; + EFI_ASF_BOOT_OPTIONS AsfBootOptions; + UINT8 Reserved; +} HECI_ASF_GET_BOOT_OPTIONS_RESPONSE; + +#define HECI_ASF_GET_BOOT_OPTIONS_RESPONSE_LENGTH 0x0F + +typedef struct _HECI_ASF_CLEAR_BOOT_OPTION { + UINT8 Command; + UINT8 ByteCount; + EFI_ASF_CLEAR_BOOT_OPTIONS AsfClearBootOptions; +} HECI_ASF_CLEAR_BOOT_OPTION; + +#define HECI_ASF_CLEAR_BOOT_OPTION_LENGTH 0x04 + +typedef enum _HASFM_COMMAND_CODE +{ + ASF_MESSAGING_CMD = 0x04, + ASF_PUSH_PROGESS_CODE_SUBCMD = 0x12, + ASF_MENAGEMENT_CONTROL = 0x02, + ASF_WDT_START_SUBCMD = 0x13, + ASF_WDT_STOP_SUBCMD = 0x14, + ASF_CONFIGURATION_CMD = 0x03, + ASF_CLEAR_BOOT_OPTION_SUBCMD = 0x15, + ASF_RETURN_BOOT_OPTION_SUBCMD = 0x16, + ASF_NO_BOOT_OPTION_SUBCMD = 0x17 +} HASFM_COMMAND_CODE; + +typedef struct { + EFI_FRAMEWORK_MESSAGE_TYPE MessageType; + EFI_ASF_MESSAGE Message; +} EFI_ASF_FRAMEWORK_MESSAGE; + +typedef struct { + EFI_FRAMEWORK_MESSAGE_TYPE MessageType; + EFI_STATUS_CODE_VALUE StatusCodeValue; +} EFI_ASF_DATA_HUB_MAP; + +#define ALERT_STANDARD_FORMAT_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('a', 's', 'f', 'd') + +/// +/// Declare a local instance structure for this driver +/// +typedef struct _ALERT_STANDARD_FORMAT_INSTANCE { + UINTN Signature; + EFI_HANDLE Handle; + + /// + /// Published interface + /// + EFI_ALERT_STANDARD_FORMAT_PROTOCOL AlertStandardFormat; + +} ALERT_STANDARD_FORMAT_INSTANCE; + +#include "Pei.h" +#include EFI_PPI_DEFINITION (AmtStatusCode) + +#define EFI_CONSOLE_OUT_DEVICE_GUID \ + { \ + 0xd3b36f2c, 0xd551, 0x11d4, \ + { \ + 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \ + } \ + } + +#define AMT_FORCE_PUSH_PET_VARIABLE_GUID \ + { \ + 0xd7ac94af, 0xa498, 0x45ec, 0xbf, 0xa2, 0xa5, 0x6e, 0x95, 0x34, 0x61, 0x8b \ + } + +#define AMT_FORCE_PUSH_PET_VARIABLE_NAME L"AmtForcePushErrorPET" + +#define AMT_PET_QUEUE_NODE_SIGNATURE EFI_SIGNATURE_32 ('A', 'M', 'T', 'Q') + +typedef struct _AMT_PET_QUEUE_NODE { + UINT32 Signature; + EFI_LIST_ENTRY Link; + EFI_STATUS_CODE_VALUE Value; + EFI_STATUS_CODE_TYPE Type; +} AMT_PET_QUEUE_NODE; + +#define AMT_PET_QUEUE_NODE_FROM_LINK(_node) CR (_node, AMT_PET_QUEUE_NODE, Link, AMT_PET_QUEUE_NODE_SIGNATURE) + +typedef struct { + EFI_LIST_ENTRY MessageList; +} AMT_PET_QUEUE_PROTOCOL; + +// +// Prototypes +// + +/** + The driver entry point - detect ASF support or not, if support, will install relative protocol. + + @param[in] ImageHandle Handle for this drivers loaded image protocol. + @param[in] SystemTable EFI system table. + + @retval EFI_SUCCESS The driver installed without error. + @exception EFI_UNSUPPORTED The chipset is unsupported by this driver. + @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures. +**/ +EFI_STATUS +EFIAPI +AlertStandardFormatDriverEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +; + +/** + Return the SMBus address used by the ASF driver. + Not applicable in Intel ME/HECI system, need to return EFI_UNSUPPORTED. + + @param[in] This The address of protocol + @param[in] SmbusDeviceAddress Out put the Smbus Address + + @exception EFI_UNSUPPORTED The function is unsupported by this driver +**/ +EFI_STATUS +EFIAPI +GetSmbusAddr ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + OUT UINTN *SmbusDeviceAddress + ) +; + +/** + Set the SMBus address used by the ASF driver. 0 is an invalid address. + Not applicable in Intel ME/HECI system, need to return EFI_UNSUPPORTED. + + @param[in] This The address of protocol + @param[in] SmbusDeviceAddress SMBus address of the device + + @exception EFI_UNSUPPORTED The function is unsupported by this driver +**/ +EFI_STATUS +EFIAPI +SetSmbusAddr ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + IN UINTN SmbusDeviceAddress + ) +; + +/** + Return the ASF Boot Options obtained from the controller. If the + Boot Options parameter is NULL and no boot options have been retrieved, + Query the ASF controller for its boot options. + Get ASF Boot Options through HECI. + + @param[in] This The address of protocol + @param[in] AsfBootOptions Pointer to ASF boot options to copy current ASF Boot options + + @retval EFI_SUCCESS Boot options copied + @retval EFI_NOT_READY No boot options +**/ +EFI_STATUS +EFIAPI +GetBootOptions ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + IN OUT EFI_ASF_BOOT_OPTIONS **AsfBootOptions + ) +; + +/** + Send ASF Message through HECI. + + @param[in] This The address of protocol + @param[in] AsfMessage Pointer to ASF message + + @retval EFI_SUCCESS Boot options copied + @retval EFI_INVALID_PARAMETER Invalid pointer + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +EFIAPI +SendAsfMessage ( + IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This, + IN EFI_ASF_MESSAGE *AsfMessage + ) +; + +/** + This routine returns ForcePushPetPolicy information. + + @param[in] None + + @retval AMT_FORCE_PUSH_PET_POLICY_HOB ForcePushPetPolicy information. +**/ +AMT_FORCE_PUSH_PET_POLICY_HOB * +GetForcePushPetPolicy ( + VOID + ) +; + +/** + Filters all the progress and error codes for Asf. + + @param[in] Event The event registered. + @param[in] Context Event context. Not used in this event handler. +**/ +VOID +EFIAPI +DataHubEventCallback ( + IN EFI_EVENT Event, + IN VOID *Context + ) +; + +/** + Sends a POST packet across ASF + + @param[in] MessageType POST Status Code + + @retval EFI_DEVICE_ERROR No message found + @retval EFI_SUCCESS Boot options copied + @retval EFI_INVALID_PARAMETER Invalid pointer + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +SendPostPacket ( + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +; + +/** + This routine sends PET message in MessageQueue. + + @param[in] PeiServices PeiServices pointer. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +SendPETMessageInQueue ( + VOID + ) +; + +/** + This routine creats PET MessageQueue. + + @param[in] None + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +AmtCreateMessageQueue ( + VOID + ) +; + +/** + This routine saves current ForcePush ErrorEvent to Variable, which will be sent again. + + @param[in] MessageType ASF PET message type. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures +**/ +EFI_STATUS +SaveForcePushErrorEvent ( + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +; + +/** + This routine converts Hob ForcePush ErrorEvent to Variable, which will be sent again. + + @param[in] None + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +SaveForcePushErrorEventFromPeiToDxe ( + VOID + ) +; +#endif diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.inf b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.inf new file mode 100644 index 0000000..b484230 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.inf @@ -0,0 +1,99 @@ +## @file +# Component description file for Alert Standard Format driver. +# +#@copyright +# Copyright (c) 2005 - 2012 Intel Corporation. All rights reserved +# This software and associated documentation (if any) is furnished +# under a license and may only be used or copied in accordance +# with the terms of the license. Except as permitted by such +# license, no part of this software or documentation may be +# reproduced, stored in a retrieval system, or transmitted in any +# form or by any means without the express written consent of +# Intel Corporation. +# +# This file contains a 'Sample Driver' and is licensed as such +# under the terms of your license agreement with Intel or your +# vendor. This file may be modified by the user, subject to +# the additional terms of the license agreement +# + +[defines] +BASE_NAME = AlertStandardFormatDxe +FILE_GUID = 33c6406d-2f6b-41b5-8705-52bafb633c09 +COMPONENT_TYPE = BS_DRIVER + +[sources.common] + AlertStandardFormatDxe.c + AlertStandardFormatDxe.h + +# +# Edk II Glue Driver Entry Point +# + EdkIIGlueDxeDriverEntryPoint.c + +[libraries.common] + AmtLib + MeGuidLib + MeProtocolLib + AslUpdateLib + EdkProtocolLib + EdkFrameworkProtocolLib + EdkIIGlueBaseMemoryLib + EdkIIGlueDxeReportStatusCodeLib + EdkIIGlueDxeHobLib + EdkIIGlueDxeDebugLibReportStatusCode + EdkIIGlueUefiBootServicesTableLib + EdkIIGlueUefiRuntimeServicesTableLib + EdkIIGlueDxeMemoryAllocationLib + +[includes.common] + $(EDK_SOURCE)/Foundation + $(EDK_SOURCE)/Foundation/Framework + $(EDK_SOURCE)/Foundation/Efi + $(EDK_SOURCE)/Foundation/Core/Dxe + $(EDK_SOURCE)/Foundation/Include + $(EDK_SOURCE)/Foundation/Efi/Include + $(EDK_SOURCE)/Foundation/Framework/Include + $(EDK_SOURCE)/Foundation/Include/IndustryStandard + $(EDK_SOURCE)/Foundation/Library/Dxe/Include + $(EFI_SOURCE)/$(PROJECT_ME_ROOT) + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/ActiveManagement/AlertStandardFormat/Heci/Common + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Heci/Include + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/AMT/Dxe + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel/Dxe + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel/Include + $(EFI_SOURCE)/$(PROJECT_PCH_ROOT)/Include + +# +# Typically the sample code referenced will be available in the code base already +# So keep this include at the end to defer to the source base definition +# and only use the sample code definition if source base does not include these files. +# + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/SampleCode/Include + +# +# Edk II Glue Library, some hearder are included by R9 header so have to include +# + + $(EFI_SOURCE) + $(EFI_SOURCE)/Framework + $(EDK_SOURCE)/Foundation + $(EDK_SOURCE)/Foundation/Framework + $(EDK_SOURCE)/Foundation/Include/IndustryStandard + $(EDK_SOURCE)/Foundation/Core/Dxe + $(EDK_SOURCE)/Foundation/Include/Pei + $(EDK_SOURCE)/Foundation/Library/Dxe/Include + $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include + +[nmake.common] + IMAGE_ENTRY_POINT = _ModuleEntryPoint + DPX_SOURCE = AlertStandardFormatDxe.dxs +# +# Module Entry Point +# + C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_MODULE_ENTRY_POINT__=AlertStandardFormatDriverEntryPoint + C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_BASE_MEMORY_LIB__ \ + -D __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__ \ + -D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \ + -D __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__ \ + -D __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__ diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.mak b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.mak new file mode 100644 index 0000000..202d1c9 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.mak @@ -0,0 +1,59 @@ +# MAK file for the ModulePart:AlertStandardFormatDxe + +all : AlertStandardFormatDxe + +AlertStandardFormatDxe : $(BUILD_DIR)\AlertStandardFormatDxe.mak AlertStandardFormatDxeBin + +$(BUILD_DIR)\AlertStandardFormatDxe.mak : $(AlertStandardFormatDxe_DIR)\$(@B).cif $(AlertStandardFormatDxe_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(AlertStandardFormatDxe_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +AlertStandardFormatDxe_INCLUDES=\ + $(EDK_INCLUDES)\ + $(EdkIIGlueLib_INCLUDES)\ + $(ME_INCLUDES)\ + $(AlertStandardFormat_INCLUDES)\ + $(IndustryStandard_INCLUDES)\ + $(INTEL_PCH_INCLUDES)\ + +AlertStandardFormatDxe_LIBS=\ + $(EDKPROTOCOLLIB)\ + $(EDKFRAMEWORKPROTOCOLLIB)\ + $(AmtLibDxe_LIB)\ + $(MeGuidLib_LIB)\ + $(MeProtocolLib_LIB)\ + $(MeAslUpdateLib_LIB)\ + $(EdkIIGlueBaseLib_LIB)\ +!IF "$(x64_BUILD)"=="1" + $(EdkIIGlueBaseLibX64_LIB)\ +!ELSE + $(EdkIIGlueBaseLibIA32_LIB)\ +!ENDIF + $(EdkIIGlueUefiLib_LIB)\ + $(EdkIIGlueBaseMemoryLib_LIB)\ + $(EdkIIGlueDxeReportStatusCodeLib_LIB)\ + $(EdkIIGlueEdkDxeRuntimeDriverLib_LIB)\ + $(EdkIIGlueDxeDebugLibReportStatusCode_LIB)\ + $(EdkIIGlueUefiBootServicesTableLib_LIB)\ + $(EdkIIGlueDxeMemoryAllocationLib_LIB)\ + $(EdkIIGlueDxeHobLib_LIB)\ + +AlertStandardFormatDxe_DEFINES=\ + $(MY_DEFINES)\ + /D"__EDKII_GLUE_MODULE_ENTRY_POINT__=AlertStandardFormatDriverEntryPoint"\ + /D __EDKII_GLUE_BASE_MEMORY_LIB__ \ + /D __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__ \ + /D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \ + /D __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\ + +AlertStandardFormatDxeBin : $(AlertStandardFormatDxe_LIBS) + $(MAKE) /$(MAKEFLAGS) $(EDKIIGLUE_DEFAULTS)\ + /f $(BUILD_DIR)\AlertStandardFormatDxe.mak all\ + "MY_INCLUDES=$(AlertStandardFormatDxe_INCLUDES)" \ + "MY_DEFINES=$(AlertStandardFormatDxe_DEFINES)"\ + GUID=33c6406d-2f6b-41b5-8705-52bafb633c09 \ + ENTRY_POINT=_ModuleEntryPoint \ + EDKIIModule=DXEDRIVER\ + TYPE=BS_DRIVER \ + DEPEX1=$(AlertStandardFormatDxe_DIR)\AlertStandardFormatDxe.dxs \ + DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX \ + COMPRESS=1 diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.sdl b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.sdl new file mode 100644 index 0000000..938ff01 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.sdl @@ -0,0 +1,25 @@ +TOKEN + Name = AlertStandardFormatDxe_SUPPORT + Value = 1 + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes + Help = "Main switch to enable AlertStandardFormatDxe support in Project" +End + +MODULE + Help = "Includes AlertStandardFormatDxe.mak to Project" + File = "AlertStandardFormatDxe.mak" +End + +PATH + Name = "AlertStandardFormatDxe_DIR" + Help = "AlertStandardFormatDxe files source directory" +End + +ELINK + Name = "$(BUILD_DIR)\AlertStandardFormatDxe.ffs" + Parent = "FV_MAIN" + InvokeOrder = AfterParent +End
\ No newline at end of file diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.c b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.c new file mode 100644 index 0000000..10afe73 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.c @@ -0,0 +1,437 @@ +/** @file + Processes ASF messages + +@copyright + Copyright (c) 2010 - 2012 Intel Corporation. All rights + reserved This software and associated documentation (if any) + is furnished under a license and may only be used or copied in + accordance with the terms of the license. Except as permitted + by such license, no part of this software or documentation may + be reproduced, stored in a retrieval system, or transmitted in + any form or by any means without the express written consent + of Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement + +**/ + +// +// External include files do NOT need to be explicitly specified in real EDKII +// environment +// +#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000) +#include "EdkIIGluePeim.h" +#include "AlertStandardFormatPei.h" +#include "MeLibPei.h" +#endif + +#define ASF_PEI +#include "AlertStandardFormatCommon.c" + +static PEI_AMT_STATUS_CODE_PPI mPeiAmtStatusCodePpi = { PeiAmtReportStatusCode }; + +static EFI_PEI_PPI_DESCRIPTOR mInstallPeiAmtStatusCodePpi = { + EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, + &gPeiAmtStatusCodePpiGuid, + &mPeiAmtStatusCodePpi +}; + +/** + Perform AMT PET message sending + + @param[in] FfsHeader FFS file header pointer of this driver. + @param[in] PeiServices General purpose services available to every PEIM. + + @retval EFI_SUCCESS if the AMT StatusCode PPI is successfully installed. + @exception EFI_UNSUPPORTED ASF is not enabled or ManageabilityMode is zero. +**/ +EFI_STATUS +EFIAPI +AlertStandardFormatDriverPeiEntryPoint ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + + /// + /// First check if ASF support is enabled in Setup. + /// + if (!PeiAsfSupported (PeiServices)) { + return EFI_UNSUPPORTED; + } + /// + /// Sending ASF Messaging if ManageabilityMode is not zero + /// + if (ManageabilityModeSetting (PeiServices) == MNT_OFF) { + return EFI_UNSUPPORTED; + } + /// + /// Install AMT report status code PPI + /// + Status = (**PeiServices).InstallPpi (PeiServices, &mInstallPeiAmtStatusCodePpi); + ASSERT_EFI_ERROR (Status); + + /// + /// Try to send PET message + /// + SendPETMessageInQueue (PeiServices); + + return EFI_SUCCESS; +} + +/** + Send ASF Message. + + @param[in] PeiServices General purpose services available to every PEIM. + @param[in] AsfMessage Pointer to ASF message + + @retval EFI_SUCCESS Boot options copied + @retval EFI_INVALID_PARAMETER Invalid pointer + @retval EFI_NOT_READY No controller + @retval EFI_DEVICE_ERROR The function should not be completed due to a device error +**/ +EFI_STATUS +SendAsfMessage ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_ASF_MESSAGE *AsfMessage + ) +{ + EFI_STATUS Status; + PEI_HECI_PPI *Heci; + UINT32 HeciMemBar; + UINT32 HeciLength; + HECI_ASF_PUSH_PROGRESS_CODE HeciAsfPushProgressCode; + UINT32 MeStatus; + + Status = (*PeiServices)->LocatePpi ( + PeiServices, + &gPeiHeciPpiGuid, // GUID + 0, // INSTANCE + NULL, // EFI_PEI_PPI_DESCRIPTOR + (VOID **) &Heci // PPI + ); + ASSERT_EFI_ERROR (Status); + + Status = Heci->InitializeHeci (PeiServices, Heci, &HeciMemBar); + if (EFI_ERROR (Status)) { + return EFI_NOT_READY; + } + + Status = Heci->GetMeStatus (PeiServices, &MeStatus); + ASSERT_EFI_ERROR (Status); + + /// + /// Only send ASF Push Progress code when ME is ready. Ignore FW Init Status. + /// + if (ME_STATUS_ME_STATE_ONLY (MeStatus) != ME_READY) { + return EFI_NOT_READY; + } + + ZeroMem ((VOID *) &HeciAsfPushProgressCode, sizeof (HECI_ASF_PUSH_PROGRESS_CODE)); + HeciAsfPushProgressCode.Command = EFI_ASF_MESSAGE_COMMAND_MESSAGE; + HeciAsfPushProgressCode.ByteCount = 0x10; + HeciLength = HECI_ASF_PUSH_PROGRESS_CODE_LENGTH; + CopyMem ((VOID *) &(HeciAsfPushProgressCode.AsfMessage), (VOID *) AsfMessage, sizeof (EFI_ASF_MESSAGE)); + + Status = Heci->SendMsg ( + PeiServices, + Heci, + (UINT32 *) &HeciAsfPushProgressCode, + HeciMemBar, + HeciLength, + BIOS_ASF_HOST_ADDR, + HECI_ASF_MESSAGE_ADDR + ); + if (EFI_ERROR (Status)) { + return EFI_DEVICE_ERROR; + } + + return EFI_SUCCESS; +} + +/** + This routine checks whethre current message is ForcePush message. + + @param[in] PeiServices PeiServices pointer. + @param[in] MessageType AMT PET Message Type. + + @retval TRUE It is ForcePush message. + @retval FALSE It is not ForcePush message. +**/ +BOOLEAN +IsForcePushErrorEvent ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +{ + AMT_FORCE_PUSH_PET_POLICY_HOB *AmtForcePushPETPolicyHob; + UINTN Index; + UINTN Number; + EFI_STATUS Status; + + Status = (*PeiServices)->GetHobList (PeiServices, (VOID **) &AmtForcePushPETPolicyHob); + ASSERT_EFI_ERROR (Status); + + AmtForcePushPETPolicyHob = GetNextGuidHob (&gAmtForcePushPetPolicyGuid, AmtForcePushPETPolicyHob); + if (AmtForcePushPETPolicyHob == NULL) { + return FALSE; + } + + Number = (AmtForcePushPETPolicyHob->EfiHobGuidType.Header.HobLength - sizeof (EFI_HOB_GUID_TYPE)) / + sizeof (EFI_FRAMEWORK_MESSAGE_TYPE); + for (Index = 0; Index < Number; Index++) { + if (AmtForcePushPETPolicyHob->MessageType[Index] == MessageType) { + return TRUE; + } + } + + return FALSE; +} + +/** + Provides an interface that a software module can call to report an ASF PEI status code. + + @param[in] PeiServices PeiServices pointer. + @param[in] This This interface. + @param[in] Type Indicates the type of status code being reported. + @param[in] Value Describes the current status of a hardware or software entity. + This included information about the class and subclass that is + used to classify the entity as well as an operation. + @param[in] Instance The enumeration of a hardware or software entity within + the system. Valid instance numbers start with 1. + @param[in] CallerId This optional parameter may be used to identify the caller. + This parameter allows the status code driver to apply different + rules to different callers. + @param[in] Data This optional parameter may be used to pass additional data. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_DEVICE_ERROR The function should not be completed due to a device error. +**/ +EFI_STATUS +EFIAPI +PeiAmtReportStatusCode ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_AMT_STATUS_CODE_PPI * This, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ) +{ + UINTN Index; + EFI_STATUS Status; + + Status = EFI_SUCCESS; + + if (PeiFwProgressSupport (PeiServices)) { + if ((Type & EFI_STATUS_CODE_TYPE_MASK) == EFI_PROGRESS_CODE) { + for (Index = 0; Index < sizeof (mAsfProgressDataHubMap) / sizeof (EFI_ASF_DATA_HUB_MAP); Index++) { + if (mAsfProgressDataHubMap[Index].StatusCodeValue == Value) { + /// + /// Queue Progress Code and send PET after checking Boot Options + /// + QueuePetMessage (PeiServices, Type, Value); + } + } + } + } + + if ((Type & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) { + for (Index = 0; Index < sizeof (mAsfErrorDataHubMap) / sizeof (EFI_ASF_DATA_HUB_MAP); Index++) { + if (mAsfErrorDataHubMap[Index].StatusCodeValue == Value) { + Status = SendPostPacket (PeiServices, mAsfErrorDataHubMap[Index].MessageType); + if ((Status == EFI_DEVICE_ERROR) && IsForcePushErrorEvent (PeiServices, mAsfErrorDataHubMap[Index].MessageType)) { + SaveForcePushErrorEvent (PeiServices, mAsfErrorDataHubMap[Index].MessageType); + } + + if (Status == EFI_NOT_READY) { + QueuePetMessage (PeiServices, Type, Value); + } + } + } + } + + return Status; +} + +/** + Sends a POST packet across ASF + + @param[in] PeiServices General purpose services available to every PEIM. + @param[in] MessageType POST Status Code + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +SendPostPacket ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +{ + UINTN Index; + + /// + /// Find the message to send across the wire + /// + for (Index = 0; Index < sizeof (mAsfFrameworkMessage) / sizeof (EFI_ASF_FRAMEWORK_MESSAGE); Index++) { + if (mAsfFrameworkMessage[Index].MessageType == MessageType) { + return SendAsfMessage (PeiServices, &mAsfFrameworkMessage[Index].Message); + } + } + + return EFI_SUCCESS; +} + +/** + This routine saves current ForcePush ErrorEvent to Hob, which will be sent again. + + @param[in] PeiServices PeiServices pointer. + @param[in] MessageType ASF PET message type. + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +SaveForcePushErrorEvent ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +{ + AMT_FORCE_PUSH_PET_HOB *ForcePushPETHob; + EFI_STATUS Status; + + /// + /// Create PET queue hob + /// + Status = (**PeiServices).CreateHob ( + PeiServices, + EFI_HOB_TYPE_GUID_EXTENSION, + sizeof (AMT_FORCE_PUSH_PET_HOB), + (VOID **) &ForcePushPETHob + ); + ASSERT_EFI_ERROR (Status); + + ForcePushPETHob->EfiHobGuidType.Name = gAmtForcePushPetHobGuid; + ForcePushPETHob->MessageType = MessageType; + + return EFI_SUCCESS; +} + +/** + This routine puts PET message to MessageQueue, which will be sent later. + + @param[in] PeiServices PeiServices pointer. + @param[in] Type StatusCode message type. + @param[in] Value StatusCode message value. + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +QueuePetMessage ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value + ) +{ + AMT_PET_QUEUE_HOB *PETQueueHob; + EFI_STATUS Status; + + /// + /// Create PET queue hob + /// + Status = (**PeiServices).CreateHob ( + PeiServices, + EFI_HOB_TYPE_GUID_EXTENSION, + sizeof (AMT_PET_QUEUE_HOB), + (VOID **) &PETQueueHob + ); + ASSERT_EFI_ERROR (Status); + PETQueueHob->EfiHobGuidType.Name = gAmtPetQueueHobGuid; + PETQueueHob->Value = Value; + + return EFI_SUCCESS; +} + +/** + This routine sends PET message in MessageQueue. + + @param[in] PeiServices PeiServices pointer. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +SendPETMessageInQueue ( + IN EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + AMT_PET_QUEUE_HOB *PETQueueHob; + EFI_PEI_HOB_POINTERS Hob; + + PEI_HECI_PPI *Heci; + UINT32 HeciMemBar; + UINT32 MeStatus; + + /// + /// Try HECI state + /// + Status = (*PeiServices)->LocatePpi ( + PeiServices, + &gPeiHeciPpiGuid, // GUID + 0, // INSTANCE + NULL, // EFI_PEI_PPI_DESCRIPTOR + (VOID **) &Heci // PPI + ); + ASSERT_EFI_ERROR (Status); + + Status = Heci->InitializeHeci (PeiServices, Heci, &HeciMemBar); + if (EFI_ERROR (Status)) { + return EFI_NOT_READY; + } + + Status = Heci->GetMeStatus (PeiServices, &MeStatus); + ASSERT_EFI_ERROR (Status); + + /// + /// Only send ASF Push Progress code when ME is ready. Ignore FW Init Status. + /// + if (ME_STATUS_ME_STATE_ONLY (MeStatus) != ME_READY) { + return EFI_NOT_READY; + } + /// + /// Get PETQueueHob + /// + Status = (*PeiServices)->GetHobList (PeiServices, (VOID **) &PETQueueHob); + ASSERT_EFI_ERROR (Status); + + while (TRUE) { + PETQueueHob = GetNextGuidHob (&gAmtPetQueueHobGuid, PETQueueHob); + if (PETQueueHob == NULL) { + break; + } + /// + /// Send message + /// + PeiAmtReportStatusCode (PeiServices, NULL, PETQueueHob->Type, PETQueueHob->Value, 0, NULL, NULL); + + /// + /// Mark it as sent + /// + PETQueueHob->Type = (UINT32) -1; + + /// + /// Need find next one + /// + Hob.Raw = (VOID *) PETQueueHob; + PETQueueHob = (AMT_PET_QUEUE_HOB *) GET_NEXT_HOB (Hob); + } + + return EFI_SUCCESS; +} diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.cif b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.cif new file mode 100644 index 0000000..ee123bf --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.cif @@ -0,0 +1,13 @@ +<component> + name = "AlertStandardFormatPei" + category = ModulePart + LocalRoot = "ReferenceCode\ME\ActiveManagement\AlertStandardFormat\Heci\Pei\" + RefName = "AlertStandardFormatPei" +[files] +"AlertStandardFormatPei.sdl" +"AlertStandardFormatPei.mak" +"AlertStandardFormatPei.c" +"AlertStandardFormatPei.dxs" +"AlertStandardFormatPei.h" +"AlertStandardFormatPei.inf" +<endComponent> diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.dxs b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.dxs new file mode 100644 index 0000000..236c6ec --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.dxs @@ -0,0 +1,29 @@ +/** @file + Dependency expression source file. + +@copyright + Copyright (c) 2010 - 2012 Intel Corporation. All rights reserved + This software and associated documentation (if any) is furnished + under a license and may only be used or copied in accordance + with the terms of the license. Except as permitted by such + license, no part of this software or documentation may be + reproduced, stored in a retrieval system, or transmitted in any + form or by any means without the express written consent of + Intel Corporation. + + This file contains a 'Sample Driver' and is licensed as such + under the terms of your license agreement with Intel or your + vendor. This file may be modified by the user, subject to + the additional terms of the license agreement + +**/ + +#include "EfiDepex.h" + +#include EFI_PPI_DEFINITION (Heci) +#include EFI_PPI_DEFINITION (AmtPlatformPolicyPei) + +DEPENDENCY_START + PEI_HECI_PPI_GUID AND + PEI_AMT_PLATFORM_POLICY_PPI_GUID +DEPENDENCY_END diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.h b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.h new file mode 100644 index 0000000..b24dd69 --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.h @@ -0,0 +1,204 @@ +/** @file + Processes ASF messages + +@copyright + Copyright (c) 2010 - 2012 Intel Corporation. All rights + reserved This software and associated documentation (if any) + is furnished under a license and may only be used or copied in + accordance with the terms of the license. Except as permitted + by such license, no part of this software or documentation may + be reproduced, stored in a retrieval system, or transmitted in + any form or by any means without the express written consent + of Intel Corporation. + + This file contains an 'Intel Peripheral Driver' and uniquely + identified as "Intel Reference Module" and is + licensed for Intel CPUs and chipsets under the terms of your + license agreement with Intel or your vendor. This file may + be modified by the user, subject to additional terms of the + license agreement +**/ +#ifndef _ALERT_STANDARD_FORMAT_PEI_H +#define _ALERT_STANDARD_FORMAT_PEI_H + +#include "AmtLibPei.h" +#include "MkhiMsgs.h" +#include "AlertStandardFormatCommon.h" + +// +// Driver Consumed Protocol Prototypes +// +#include EFI_PPI_CONSUMER (HECI) +#include EFI_PPI_PRODUCER (AmtStatusCode) +#include EFI_GUID_DEFINITION (MeBiosExtensionSetup) +#include EFI_GUID_DEFINITION (AmtForcePushPetPolicy) + +/// +/// ASF Over HECI +/// +#pragma pack(1) +typedef struct { + UINT8 SubCommand; + UINT8 Version; + UINT8 EventSensorType; + UINT8 EventType; + UINT8 EventOffset; + UINT8 EventSourceType; + UINT8 EventSeverity; + UINT8 SensorDevice; + UINT8 SensorNumber; + UINT8 Entity; + UINT8 EntityInstance; + UINT8 Data0; + UINT8 Data1; +} EFI_ASF_MESSAGE; +#pragma pack() + +typedef struct _HECI_ASF_PUSH_PROGRESS_CODE { + UINT8 Command; + UINT8 ByteCount; + EFI_ASF_MESSAGE AsfMessage; + UINT8 EventData[3]; + UINT8 Reserved[2]; +} HECI_ASF_PUSH_PROGRESS_CODE; + +#define HECI_ASF_PUSH_PROGRESS_CODE_LENGTH 0x12 + +typedef enum _HASFM_COMMAND_CODE +{ + ASF_MESSAGING_CMD = 0x04, + ASF_PUSH_PROGESS_CODE_SUBCMD = 0x12, + ASF_MENAGEMENT_CONTROL = 0x02, + ASF_WDT_START_SUBCMD = 0x13, + ASF_WDT_STOP_SUBCMD = 0x14, + ASF_CONFIGURATION_CMD = 0x03, + ASF_CLEAR_BOOT_OPTION_SUBCMD = 0x15, + ASF_RETURN_BOOT_OPTION_SUBCMD = 0x16, + ASF_NO_BOOT_OPTION_SUBCMD = 0x17 +} HASFM_COMMAND_CODE; + +typedef struct { + EFI_FRAMEWORK_MESSAGE_TYPE MessageType; + EFI_ASF_MESSAGE Message; +} EFI_ASF_FRAMEWORK_MESSAGE; + +typedef struct { + EFI_FRAMEWORK_MESSAGE_TYPE MessageType; + EFI_STATUS_CODE_VALUE StatusCodeValue; +} EFI_ASF_DATA_HUB_MAP; + +// +// Prototypes +// + +/** + Send ASF Message. + + @param[in] PeiServices General purpose services available to every PEIM. + @param[in] AsfMessage Pointer to ASF message + + @retval EFI_SUCCESS Boot options copied + @retval EFI_INVALID_PARAMETER Invalid pointer + @retval EFI_NOT_READY No controller + @retval EFI_DEVICE_ERROR The function should not be completed due to a device error +**/ +EFI_STATUS +SendAsfMessage ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_ASF_MESSAGE *AsfMessage + ) +; + +/** + Provides an interface that a software module can call to report an ASF PEI status code. + + @param[in] PeiServices PeiServices pointer. + @param[in] This This interface. + @param[in] Type Indicates the type of status code being reported. + @param[in] Value Describes the current status of a hardware or software entity. + This included information about the class and subclass that is + used to classify the entity as well as an operation. + @param[in] Instance The enumeration of a hardware or software entity within + the system. Valid instance numbers start with 1. + @param[in] CallerId This optional parameter may be used to identify the caller. + This parameter allows the status code driver to apply different + rules to different callers. + @param[in] Data This optional parameter may be used to pass additional data. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_DEVICE_ERROR The function should not be completed due to a device error. +**/ +EFI_STATUS +EFIAPI +PeiAmtReportStatusCode ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_AMT_STATUS_CODE_PPI * This, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ) +; + +/** + Sends a POST packet across ASF + + @param[in] PeiServices General purpose services available to every PEIM. + @param[in] MessageType POST Status Code + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +SendPostPacket ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +; + +/** + This routine saves current ForcePush ErrorEvent to Hob, which will be sent again. + + @param[in] PeiServices PeiServices pointer. + @param[in] MessageType ASF PET message type. + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +SaveForcePushErrorEvent ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType + ) +; + +/** + This routine puts PET message to MessageQueue, which will be sent later. + + @param[in] PeiServices PeiServices pointer. + @param[in] Type StatusCode message type. + @param[in] Value StatusCode message value. + + @retval EFI_SUCCESS The function completed successfully +**/ +EFI_STATUS +QueuePetMessage ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value + ) +; + +/** + This routine sends PET message in MessageQueue. + + @param[in] PeiServices PeiServices pointer. + + @retval EFI_SUCCESS The function completed successfully + @retval EFI_NOT_READY No controller +**/ +EFI_STATUS +SendPETMessageInQueue ( + IN EFI_PEI_SERVICES **PeiServices + ) +; +#endif diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.inf b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.inf new file mode 100644 index 0000000..8bd8d0f --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.inf @@ -0,0 +1,93 @@ +## @file +# Component description file for Alert Standard Format driver. +# +#@copyright +# Copyright (c) 2005 - 2013 Intel Corporation. All rights reserved +# This software and associated documentation (if any) is furnished +# under a license and may only be used or copied in accordance +# with the terms of the license. Except as permitted by such +# license, no part of this software or documentation may be +# reproduced, stored in a retrieval system, or transmitted in any +# form or by any means without the express written consent of +# Intel Corporation. +# +# This file contains a 'Sample Driver' and is licensed as such +# under the terms of your license agreement with Intel or your +# vendor. This file may be modified by the user, subject to +# the additional terms of the license agreement +# + +[defines] +BASE_NAME = AlertStandardFormatPei +FILE_GUID = 3e4817fd-2742-4351-b59f-91493280329c +COMPONENT_TYPE = PE32_PEIM + +[sources.common] + AlertStandardFormatPei.c + AlertStandardFormatPei.h + +# +# Edk II Glue Driver Entry Point +# + EdkIIGluePeimEntryPoint.c + +[libraries.common] + PeiLib + AmtLibPei + MeGuidLib + MeLibPpi + EdkIIGlueBaseIoLibIntrinsic + EdkIIGluePeiDebugLibReportStatusCode + EdkIIGluePeiReportStatusCodeLib + EdkIIGluePeiServicesLib + EdkIIGlueBasePciLibPciExpress + EdkIIGlueBasePciExpressLib + EdkIIGluePeiHobLib + +[includes.common] + $(EDK_SOURCE)/Foundation/library/Pei/Include + $(EDK_SOURCE)/Foundation + $(EDK_SOURCE)/Foundation/Framework + $(EDK_SOURCE)/Foundation/Efi + $(EDK_SOURCE)/Foundation/Include + $(EDK_SOURCE)/Foundation/Efi/Include + $(EDK_SOURCE)/Foundation/Framework/Include + $(EDK_SOURCE)/Foundation/Library/Pei + $(EFI_SOURCE)/$(PROJECT_ME_ROOT) + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/ActiveManagement/AlertStandardFormat/Heci/Common + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/AMT/Pei + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel/Pei + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel/Include + +# +# Typically the sample code referenced will be available in the code base already +# So keep this include at the end to defer to the source base definition +# and only use the sample code definition if source base does not include these files. +# + $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/SampleCode/Include + +# +# Edk II Glue Library, some hearder are included by R9 header so have to include +# + $(EFI_SOURCE) + $(EFI_SOURCE)/Framework + $(EDK_SOURCE)/Foundation + $(EDK_SOURCE)/Foundation/Framework + $(EDK_SOURCE)/Foundation/Include/IndustryStandard + $(EDK_SOURCE)/Foundation/Core/Dxe + $(EDK_SOURCE)/Foundation/Include/Pei + $(EDK_SOURCE)/Foundation/Library/Dxe/Include + $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include + +[nmake.common] + IMAGE_ENTRY_POINT = _ModuleEntryPoint + DPX_SOURCE = AlertStandardFormatPei.dxs +# +# Module Entry Point +# + C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_MODULE_ENTRY_POINT__=AlertStandardFormatDriverPeiEntryPoint + C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__ \ + -D __EDKII_GLUE_PEI_DEBUG_LIB_REPORT_STATUS_CODE__ \ + -D __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__ \ + -D __EDKII_GLUE_PEI_SERVICES_LIB__ \ + -D __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__ diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.mak b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.mak new file mode 100644 index 0000000..8ff971a --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.mak @@ -0,0 +1,50 @@ +# MAK file for the ModulePart:AlertStandardFormat +all : AlertStandardFormatPei + +AlertStandardFormatPei : $(BUILD_DIR)\AlertStandardFormatPei.mak AlertStandardFormatPeiBin + +$(BUILD_DIR)\AlertStandardFormatPei.mak : $(AlertStandardFormatPei_DIR)\$(@B).cif $(AlertStandardFormatPei_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(AlertStandardFormatPei_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +AlertStandardFormatPei_INCLUDES=\ + $(EDK_INCLUDES)\ + $(EdkIIGlueLib_INCLUDES)\ + $(ME_INCLUDES)\ + $(AlertStandardFormat_INCLUDES)\ + $(IndustryStandard_INCLUDES)\ + +AlertStandardFormatPei_LIBS=\ + $(EDKPROTOCOLLIB)\ + $(MeGuidLib_LIB)\ + $(MeLibPpi_LIB)\ + $(AmtLibPei_LIB)\ + $(EdkIIGlueBaseLib_LIB)\ + $(EdkIIGlueBaseMemoryLib_LIB)\ + $(EdkIIGlueBaseLibIA32_LIB)\ + $(EdkIIGlueBaseMemoryLib_LIB)\ + $(EdkIIGluePeiDebugLibReportStatusCode_LIB)\ + $(EdkIIGluePeiReportStatusCodeLib_LIB)\ + $(EdkIIGluePeiServicesLib_LIB)\ + $(EdkIIGluePeiHobLib_LIB)\ + +AlertStandardFormatPei_DEFINES=\ + $(MY_DEFINES)\ + /D"__EDKII_GLUE_MODULE_ENTRY_POINT__=AlertStandardFormatDriverPeiEntryPoint"\ + /D __EDKII_GLUE_BASE_MEMORY_LIB__ \ + /D __EDKII_GLUE_PEI_DEBUG_LIB_REPORT_STATUS_CODE__ \ + /D __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__ \ + /D __EDKII_GLUE_PEI_SERVICES_LIB__\ + /D __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__ \ + +AlertStandardFormatPeiBin : $(AlertStandardFormatPei_LIBS) + $(MAKE) /$(MAKEFLAGS) $(EDKIIGLUE_DEFAULTS)\ + /f $(BUILD_DIR)\AlertStandardFormatPei.mak all\ + "MY_INCLUDES=$(AlertStandardFormatPei_INCLUDES)"\ + "MY_DEFINES=$(AlertStandardFormatPei_DEFINES)"\ + GUID=3e4817fd-2742-4351-b59f-91493280329c \ + ENTRY_POINT=_ModuleEntryPoint \ + EDKIIModule=PEIM\ + TYPE=PEIM \ + DEPEX1=$(AlertStandardFormatPei_DIR)\AlertStandardFormatPei.dxs \ + DEPEX1_TYPE=EFI_SECTION_PEI_DEPEX \ + COMPRESS=0 diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.sdl b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.sdl new file mode 100644 index 0000000..ec7b2cd --- /dev/null +++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Pei/AlertStandardFormatPei.sdl @@ -0,0 +1,25 @@ +TOKEN + Name = AlertStandardFormatPei_SUPPORT + Value = 1 + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes + Help = "Main switch to enable AlertStandardFormat support in Project" +End + +MODULE + Help = "Includes AlertStandardFormat.mak to Project" + File = "AlertStandardFormatPei.mak" +End + +PATH + Name = "AlertStandardFormatPei_DIR" + Help = "AlertStandardFormatPei files source directory" +End + +ELINK + Name = "$(BUILD_DIR)\AlertStandardFormatPei.ffs" + Parent = "FV_BB" + InvokeOrder = AfterParent +End |