From c5fdb031d5b352a32dce058b8326637b82b79fe7 Mon Sep 17 00:00:00 2001 From: roly Date: Thu, 12 Dec 2024 11:17:57 +0800 Subject: [PATCH] change ipmitool to shared objects --- include/ipmitool/Makefile.am | 6 +- include/ipmitool/ipmi_sel_desc.h | 797 +++++++++++++++++++++++++++++++ lib/Makefile.am | 2 +- src/plugins/Makefile.am | 2 +- 4 files changed, 803 insertions(+), 4 deletions(-) create mode 100755 include/ipmitool/ipmi_sel_desc.h diff --git a/include/ipmitool/Makefile.am b/include/ipmitool/Makefile.am index 8bc584a..fb4d72f 100644 --- a/include/ipmitool/Makefile.am +++ b/include/ipmitool/Makefile.am @@ -30,7 +30,8 @@ MAINTAINERCLEANFILES = Makefile.in -noinst_HEADERS = log.h bswap.h hpm2.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \ +pkgincludedir = $(includedir)/ipmitool +pkginclude_HEADERS = log.h bswap.h hpm2.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \ ipmi_chassis.h ipmi_entity.h ipmi_fru.h ipmi_hpmfwupg.h ipmi_lanp.h \ ipmi_sdr.h ipmi_sel.h ipmi_sol.h ipmi_mc.h ipmi_raw.h \ ipmi_channel.h ipmi_sensor.h ipmi_event.h ipmi_session.h \ @@ -39,4 +40,5 @@ noinst_HEADERS = log.h bswap.h hpm2.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \ ipmi_fwum.h ipmi_main.h ipmi_tsol.h ipmi_firewall.h \ ipmi_kontronoem.h ipmi_ekanalyzer.h ipmi_gendev.h ipmi_ime.h \ ipmi_delloem.h ipmi_dcmi.h ipmi_vita.h ipmi_sel_supermicro.h \ - ipmi_cfgp.h ipmi_lanp6.h ipmi_quantaoem.h + ipmi_cfgp.h ipmi_lanp6.h ipmi_quantaoem.h ipmi_time.h ipmi_sel_desc.h + diff --git a/include/ipmitool/ipmi_sel_desc.h b/include/ipmitool/ipmi_sel_desc.h new file mode 100755 index 0000000..942857c --- /dev/null +++ b/include/ipmitool/ipmi_sel_desc.h @@ -0,0 +1,797 @@ +#ifndef IPMI_SEL_DESC_H +#define IPMI_SEL_DESC_H + +#include +#include + +#define SEL_OEM_TS_DATA_LEN 6 +#define SEL_OEM_NOTS_DATA_LEN 13 +#define HDD_NVME_STATUS_EVT2 0x3 +#define EXPANDER_ERR_EVT2 0x4 +#define EXPANDER_ERR_EVT3 0x5 +#define POWER_FAULT_EVT2 0x6 +#define BMC_BOOT_EVT2 0x7 +#define BMC_BOOT_EVT3 0x8 +#define LEAKAGE_EVT2 0x0A +#define FW_UPDATE_EVT2 0x0B +#define FW_UPDATE_EVT3 0x0C +#define RETIMER_ERR_EVT2 0x0D + +#define SENSOR_TYPE_MAX 0x2C + +// Definition for PowerFault sensor +#define SIZE_OF_POWER_FAULT 10 /* Max Size of the length of the power_fault array */ +#define MAX_EVENT_STR 128 /* Max Size of each event string */ + +static const char sensor_power_fault[SIZE_OF_POWER_FAULT][MAX_EVENT_STR] = { + "PSU", + "MAINBOARD", + "FAN", + "NVME", + "OCP", + "RISER", + "CPU", + "DIMM", + "OTHER", + "ACCELERATOR"}; + +/* sensor type codes (IPMI v1.5 table 36.3) + / Updated to v2.0 Table 42-3, Sensor Type Codes */ +static const char *sensor_type_desc[] = { + "reserved", + "Temperature", + "Voltage", + "Current", + "Fan", + "Physical Security", + "Platform Security", + "Processor", + "Power Supply", + "Power Unit", + "Cooling Device", + "Other", + "Memory", + "Drive Slot / Bay", + "POST Memory Resize", + "System Firmwares", + "Event Logging Disabled", + "Watchdog1", + "System Event", + "Critical Interrupt", + "Button", + "Module / Board", + "Microcontroller", + "Add-in Card", + "Chassis", + "Chip Set", + "Other FRU", + "Cable / Interconnect", + "Terminator", + "System Boot Initiated", + "Boot Error", + "OS Boot", + "OS Critical Stop", + "Slot / Connector", + "System ACPI Power State", + "Watchdog2", + "Platform Alert", + "Entity Presence", + "Monitor ASIC", + "LAN", + "Management Subsys Health", + "Battery", + "Session Audit", + "Version Change", + "FRU State"}; + +/* IPMI 2.0 Table 43-15, Sensor Unit Type Codes */ +#define UNIT_TYPE_MAX 92 /* This is the ID of "grams" */ +#define UNIT_TYPE_LONGEST_NAME 19 /* This is the length of "color temp deg K" */ +static const char *unit_desc[] = { + "unspecified", + "degrees C", + "degrees F", + "degrees K", + "Volts", + "Amps", + "Watts", + "Joules", + "Coulombs", + "VA", + "Nits", + "lumen", + "lux", + "Candela", + "kPa", + "PSI", + "Newton", + "CFM", + "RPM", + "Hz", + "microsecond", + "millisecond", + "second", + "minute", + "hour", + "day", + "week", + "mil", + "inches", + "feet", + "cu in", + "cu feet", + "mm", + "cm", + "m", + "cu cm", + "cu m", + "liters", + "fluid ounce", + "radians", + "steradians", + "revolutions", + "cycles", + "gravities", + "ounce", + "pound", + "ft-lb", + "oz-in", + "gauss", + "gilberts", + "henry", + "millihenry", + "farad", + "microfarad", + "ohms", + "siemens", + "mole", + "becquerel", + "PPM", + "reserved", + "Decibels", + "DbA", + "DbC", + "gray", + "sievert", + "color temp deg K", + "bit", + "kilobit", + "megabit", + "gigabit", + "byte", + "kilobyte", + "megabyte", + "gigabyte", + "word", + "dword", + "qword", + "line", + "hit", + "miss", + "retry", + "reset", + "overflow", + "underrun", + "collision", + "packets", + "messages", + "characters", + "error", + "correctable error", + "uncorrectable error", + "fatal error", + "grams" +}; + +struct ipmi_event_data_types +{ + uint8_t flag; + uint8_t data; + char desc[256]; +}; + +static struct ipmi_event_data_types HDD_NVME_Status_evt2[] = { + {HDD_NVME_STATUS_EVT2, 0x00, ""}, +}; + +static struct ipmi_event_data_types Expander_Err_evt2[] = { + {EXPANDER_ERR_EVT2, 0x00, ""}, +}; + +static struct ipmi_event_data_types Expander_Err_evt3[] = { + {EXPANDER_ERR_EVT3, 0x00, ""}, +}; + +static struct ipmi_event_data_types Retimer_Err_evt2[] = { + {RETIMER_ERR_EVT2, 0x00, ""}, +}; + +static struct ipmi_event_data_types power_fault_evt2[] = { + {POWER_FAULT_EVT2, 0x00, "Fault event of PSU"}, + {POWER_FAULT_EVT2, 0x01, "main board 12V inlet eFuse overcurrent protection event"}, + {POWER_FAULT_EVT2, 0x02, "Fault or PG events related to fan board power supply"}, + {POWER_FAULT_EVT2, 0x03, "NVMe backplane power supply Fault or PG event"}, + {POWER_FAULT_EVT2, 0x04, "Fault or PG event related to OCP card power supply"}, + {POWER_FAULT_EVT2, 0x05, "Fault or PG event related to Riser board power supply"}, + {POWER_FAULT_EVT2, 0x06, "CPU power supply related Fault or PG events"}, + {POWER_FAULT_EVT2, 0x07, "DIMM related power supply Fault/PG events"}, + {POWER_FAULT_EVT2, 0x08, "Other system module power supply Fault/PG event"}, + {POWER_FAULT_EVT2, 0xff, "Other kinds of power on timeout events"}, +}; + +static struct ipmi_event_data_types BMC_BOOT_evt2[] = { + {BMC_BOOT_EVT2, 0xaa, ""}, +}; + +static struct ipmi_event_data_types BMC_BOOT_evt3[] = { + {BMC_BOOT_EVT3, 0x00, ", AC power on"}, + {BMC_BOOT_EVT3, 0x01, ", ExtReset Pin reset"}, + {BMC_BOOT_EVT3, 0x02, ", Bmc startup FMT_WDT2 timeout"}, + {BMC_BOOT_EVT3, 0x03, ", Bmc runtime watchdog timeout"}, + {BMC_BOOT_EVT3, 0x04, ", Bmc cold reset "}, + {BMC_BOOT_EVT3, 0x05, ", Bmc warm reset"}, + {BMC_BOOT_EVT3, 0x06, ", Execute reboot command in shell"}, + {BMC_BOOT_EVT3, 0x08, ", Upgrade and restart"}, + {BMC_BOOT_EVT3, 0x0f, ", The main process restarts only"}}; + +static struct ipmi_event_data_types Leakage_evt2[] = { + {LEAKAGE_EVT2, 0x00, ", Leakage Point default"}, + {LEAKAGE_EVT2, 0x01, ", Leakage Point A"}, + {LEAKAGE_EVT2, 0x02, ", Leakage Point B"}, + {LEAKAGE_EVT2, 0x03, ", Leakage Point C"}, + {LEAKAGE_EVT2, 0x04, ", Leakage Point D"}, + {LEAKAGE_EVT2, 0x05, ", Leakage Point E"}, +}; + +static struct ipmi_event_data_types FW_Update_evt2[] = { + {FW_UPDATE_EVT2, 0x01, ""}, + {FW_UPDATE_EVT2, 0x02, ""}, + {FW_UPDATE_EVT2, 0x03, ""}, +}; +static struct ipmi_event_data_types FW_Update_evt3[] = { + {FW_UPDATE_EVT3, 0x01, ", image-1(BMC)"}, + {FW_UPDATE_EVT3, 0x02, ", image-2(BMC)"}, + {FW_UPDATE_EVT3, 0xFF, ", BIOS"}, +}; + +struct ipmi_event_sensor_types +{ + uint8_t code; + uint8_t offset; +#define ALL_OFFSETS_SPECIFIED 0xff + uint8_t data; + const char *desc; + struct ipmi_event_data_types *evt2; + struct ipmi_event_data_types *evt3; +}; + +struct ipmi_oem_event_sensor_types +{ + uint8_t code0; + uint8_t code1; + uint8_t code2; + uint8_t code3; + const char *desc; +}; + +struct ipmi_oem_specific_sensor_types +{ + uint8_t flag; + uint8_t code; + const char *desc; +}; + +static struct ipmi_event_sensor_types generic_event_types[] = { + /* Threshold Based States */ + {0x01, 0x00, 0xff, "Lower Non-critical going low"}, + {0x01, 0x01, 0xff, "Lower Non-critical going high"}, + {0x01, 0x02, 0xff, "Lower Critical going low"}, + {0x01, 0x03, 0xff, "Lower Critical going high"}, + {0x01, 0x04, 0xff, "Lower Non-recoverable going low"}, + {0x01, 0x05, 0xff, "Lower Non-recoverable going high"}, + {0x01, 0x06, 0xff, "Upper Non-critical going low"}, + {0x01, 0x07, 0xff, "Upper Non-critical going high"}, + {0x01, 0x08, 0xff, "Upper Critical going low"}, + {0x01, 0x09, 0xff, "Upper Critical going high"}, + {0x01, 0x0a, 0xff, "Upper Non-recoverable going low"}, + {0x01, 0x0b, 0xff, "Upper Non-recoverable going high"}, + /* DMI-based "usage state" States */ + {0x02, 0x00, 0xff, "Transition to Idle"}, + {0x02, 0x01, 0xff, "Transition to Active"}, + {0x02, 0x02, 0xff, "Transition to Busy"}, + /* Digital-Discrete Event States */ + {0x03, 0x00, 0xff, "State Deasserted", power_fault_evt2}, + {0x03, 0x01, 0xff, "State Asserted", power_fault_evt2}, + {0x04, 0x00, 0xff, "Predictive Failure Deasserted"}, + {0x04, 0x01, 0xff, "Predictive Failure Asserted"}, + {0x05, 0x00, 0xff, "Limit Not Exceeded"}, + {0x05, 0x01, 0xff, "Limit Exceeded"}, + {0x06, 0x00, 0xff, "Performance Met"}, + {0x06, 0x01, 0xff, "Performance Lags"}, + /* Severity Event States */ + {0x07, 0x00, 0xff, "Transition to OK", Leakage_evt2}, + {0x07, 0x01, 0xff, "Transition to Non-critical from OK", Leakage_evt2}, + {0x07, 0x02, 0xff, "Transition to Critical from less severe"}, + {0x07, 0x03, 0xff, "Transition to Non-recoverable from less severe"}, + {0x07, 0x04, 0xff, "Transition to Non-critical from more severe"}, + {0x07, 0x05, 0xff, "Transition to Critical from Non-recoverable"}, + {0x07, 0x06, 0xff, "Transition to Non-recoverable"}, + {0x07, 0x07, 0xff, "Monitor"}, + {0x07, 0x08, 0xff, "Informational"}, + /* Availability Status States */ + {0x08, 0x00, 0xff, "Device Absent"}, + {0x08, 0x01, 0xff, "Device Present"}, + {0x09, 0x00, 0xff, "Device Disabled"}, + {0x09, 0x01, 0xff, "Device Enabled"}, + {0x0a, 0x00, 0xff, "Transition to Running"}, + {0x0a, 0x01, 0xff, "Transition to In Test"}, + {0x0a, 0x02, 0xff, "Transition to Power Off"}, + {0x0a, 0x03, 0xff, "Transition to On Line"}, + {0x0a, 0x04, 0xff, "Transition to Off Line"}, + {0x0a, 0x05, 0xff, "Transition to Off Duty"}, + {0x0a, 0x06, 0xff, "Transition to Degraded"}, + {0x0a, 0x07, 0xff, "Transition to Power Save"}, + {0x0a, 0x08, 0xff, "Install Error"}, + /* Redundancy States */ + {0x0b, 0x00, 0xff, "Fully Redundant"}, + {0x0b, 0x01, 0xff, "Redundancy Lost"}, + {0x0b, 0x02, 0xff, "Redundancy Degraded"}, + {0x0b, 0x03, 0xff, "Non-Redundant: Sufficient from Redundant"}, + {0x0b, 0x04, 0xff, "Non-Redundant: Sufficient from Insufficient"}, + {0x0b, 0x05, 0xff, "Non-Redundant: Insufficient Resources"}, + {0x0b, 0x06, 0xff, "Redundancy Degraded from Fully Redundant"}, + {0x0b, 0x07, 0xff, "Redundancy Degraded from Non-Redundant"}, + /* ACPI Device Power States */ + {0x0c, 0x00, 0xff, "D0 Power State"}, + {0x0c, 0x01, 0xff, "D1 Power State"}, + {0x0c, 0x02, 0xff, "D2 Power State"}, + {0x0c, 0x03, 0xff, "D3 Power State"}, + /* END */ + {0x00, 0x00, 0xff, NULL}, +}; + +static struct ipmi_event_sensor_types sensor_retimer_event_types[] = { + /* Digital-Discrete Event States */ + {0x03, 0x00, 0xff, "State Deasserted"}, + {0x03, 0x01, 0xff, "State Asserted", Retimer_Err_evt2}, + /* END */ + {0x00, 0x00, 0xff, NULL}, +}; + +static struct ipmi_event_sensor_types sensor_specific_event_types[] = { + /* Physical Security */ + {0x05, 0x00, 0xff, "General Chassis intrusion"}, + {0x05, 0x01, 0xff, "Drive Bay intrusion"}, + {0x05, 0x02, 0xff, "I/O Card area intrusion"}, + {0x05, 0x03, 0xff, "Processor area intrusion"}, + {0x05, 0x04, 0xff, "System unplugged from LAN"}, + {0x05, 0x05, 0xff, "Unauthorized dock"}, + {0x05, 0x06, 0xff, "FAN area intrusion"}, + /* Platform Security */ + {0x06, 0x00, 0xff, "Front Panel Lockout violation attempted"}, + {0x06, 0x01, 0xff, "Pre-boot password violation - user password"}, + {0x06, 0x02, 0xff, "Pre-boot password violation - setup password"}, + {0x06, 0x03, 0xff, "Pre-boot password violation - network boot password"}, + {0x06, 0x04, 0xff, "Other pre-boot password violation"}, + {0x06, 0x05, 0xff, "Out-of-band access password violation"}, + /* Processor */ + {0x07, 0x00, 0xff, "IERR"}, + {0x07, 0x01, 0xff, "Thermal Trip"}, + {0x07, 0x02, 0xff, "FRB1/BIST failure"}, + {0x07, 0x03, 0xff, "FRB2/Hang in POST failure"}, + {0x07, 0x04, 0xff, "FRB3/Processor startup/init failure"}, + {0x07, 0x05, 0xff, "Configuration Error"}, + {0x07, 0x06, 0xff, "SM BIOS Uncorrectable CPU-complex Error"}, + {0x07, 0x07, 0xff, "Presence detected"}, + {0x07, 0x08, 0xff, "Disabled"}, + {0x07, 0x09, 0xff, "Terminator presence detected"}, + {0x07, 0x0a, 0xff, "Throttled"}, + {0x07, 0x0b, 0xff, "Uncorrectable machine check exception"}, + {0x07, 0x0c, 0xff, "Correctable machine check error"}, + /* Power Supply */ + {0x08, 0x00, 0xff, "Presence detected"}, + {0x08, 0x01, 0xff, "Failure detected"}, + {0x08, 0x02, 0xff, "Predictive failure"}, + {0x08, 0x03, 0xff, "Power Supply AC lost"}, + {0x08, 0x04, 0xff, "AC lost or out-of-range"}, + {0x08, 0x05, 0xff, "AC out-of-range, but present"}, + {0x08, 0x06, 0x00, "Config Error: Vendor Mismatch"}, + {0x08, 0x06, 0x01, "Config Error: Revision Mismatch"}, + {0x08, 0x06, 0x02, "Config Error: Processor Missing"}, + {0x08, 0x06, 0x03, "Config Error: Power Supply Rating Mismatch"}, + {0x08, 0x06, 0x04, "Config Error: Voltage Rating Mismatch"}, + {0x08, 0x06, 0xff, "Config Error"}, + {0x08, 0x07, 0xff, "Power Supply Inactive"}, + /* Power Unit */ + {0x09, 0x00, 0xff, "Power off/down"}, + {0x09, 0x01, 0xff, "Power cycle"}, + {0x09, 0x02, 0xff, "240VA power down"}, + {0x09, 0x03, 0xff, "Interlock power down"}, + {0x09, 0x04, 0xff, "AC lost"}, + {0x09, 0x05, 0xff, "Soft-power control failure"}, + {0x09, 0x06, 0xff, "Failure detected"}, + {0x09, 0x07, 0xff, "Predictive failure"}, + /* Memory */ + {0x0c, 0x00, 0xff, "Correctable ECC"}, + {0x0c, 0x01, 0xff, "Uncorrectable ECC"}, + {0x0c, 0x02, 0xff, "Parity"}, + {0x0c, 0x03, 0xff, "Memory Scrub Failed"}, + {0x0c, 0x04, 0xff, "Memory Device Disabled"}, + {0x0c, 0x05, 0xff, "Correctable ECC logging limit reached"}, + {0x0c, 0x06, 0xff, "Presence Detected"}, + {0x0c, 0x07, 0xff, "Configuration Error"}, + {0x0c, 0x08, 0xff, "Spare"}, + {0x0c, 0x09, 0xff, "Throttled"}, + {0x0c, 0x0a, 0xff, "Critical Overtemperature"}, + /* Drive Slot */ + {0x0d, 0x00, 0xff, "Drive Present", HDD_NVME_Status_evt2}, + {0x0d, 0x01, 0xff, "Drive Fault", HDD_NVME_Status_evt2}, + {0x0d, 0x02, 0xff, "Predictive Failure"}, + {0x0d, 0x03, 0xff, "Hot Spare"}, + {0x0d, 0x04, 0xff, "Parity Check In Progress"}, + {0x0d, 0x05, 0xff, "In Critical Array"}, + {0x0d, 0x06, 0xff, "In Failed Array"}, + {0x0d, 0x07, 0xff, "Rebuild In Progress"}, + {0x0d, 0x08, 0xff, "Rebuild Aborted"}, + /* System Firmware Error */ + {0x0f, 0x00, 0x00, "Unspecified"}, + {0x0f, 0x00, 0x01, "No system memory installed"}, + {0x0f, 0x00, 0x02, "No usable system memory"}, + {0x0f, 0x00, 0x03, "Unrecoverable IDE device failure"}, + {0x0f, 0x00, 0x04, "Unrecoverable system-board failure"}, + {0x0f, 0x00, 0x05, "Unrecoverable diskette failure"}, + {0x0f, 0x00, 0x06, "Unrecoverable hard-disk controller failure"}, + {0x0f, 0x00, 0x07, "Unrecoverable PS/2 or USB keyboard failure"}, + {0x0f, 0x00, 0x08, "Removable boot media not found"}, + {0x0f, 0x00, 0x09, "Unrecoverable video controller failure"}, + {0x0f, 0x00, 0x0a, "No video device selected"}, + {0x0f, 0x00, 0x0b, "BIOS corruption detected"}, + {0x0f, 0x00, 0x0c, "CPU voltage mismatch"}, + {0x0f, 0x00, 0x0d, "CPU speed mismatch failure"}, + {0x0f, 0x00, 0xff, "Unknown Error"}, + /* System Firmware Hang */ + {0x0f, 0x01, 0x00, "Unspecified"}, + {0x0f, 0x01, 0x01, "Memory initialization"}, + {0x0f, 0x01, 0x02, "Hard-disk initialization"}, + {0x0f, 0x01, 0x03, "Secondary CPU Initialization"}, + {0x0f, 0x01, 0x04, "User authentication"}, + {0x0f, 0x01, 0x05, "User-initiated system setup"}, + {0x0f, 0x01, 0x06, "USB resource configuration"}, + {0x0f, 0x01, 0x07, "PCI resource configuration"}, + {0x0f, 0x01, 0x08, "Option ROM initialization"}, + {0x0f, 0x01, 0x09, "Video initialization"}, + {0x0f, 0x01, 0x0a, "Cache initialization"}, + {0x0f, 0x01, 0x0b, "SMBus initialization"}, + {0x0f, 0x01, 0x0c, "Keyboard controller initialization"}, + {0x0f, 0x01, 0x0d, "Management controller initialization"}, + {0x0f, 0x01, 0x0e, "Docking station attachment"}, + {0x0f, 0x01, 0x0f, "Enabling docking station"}, + {0x0f, 0x01, 0x10, "Docking station ejection"}, + {0x0f, 0x01, 0x11, "Disabling docking station"}, + {0x0f, 0x01, 0x12, "Calling operating system wake-up vector"}, + {0x0f, 0x01, 0x13, "System boot initiated"}, + {0x0f, 0x01, 0x14, "Motherboard initialization"}, + {0x0f, 0x01, 0x15, "reserved"}, + {0x0f, 0x01, 0x16, "Floppy initialization"}, + {0x0f, 0x01, 0x17, "Keyboard test"}, + {0x0f, 0x01, 0x18, "Pointing device test"}, + {0x0f, 0x01, 0x19, "Primary CPU initialization"}, + {0x0f, 0x01, 0xff, "Unknown Hang"}, + /* System Firmware Progress */ + {0x0f, 0x02, 0x00, "Unspecified"}, + {0x0f, 0x02, 0x01, "Memory initialization"}, + {0x0f, 0x02, 0x02, "Hard-disk initialization"}, + {0x0f, 0x02, 0x03, "Secondary CPU Initialization"}, + {0x0f, 0x02, 0x04, "User authentication"}, + {0x0f, 0x02, 0x05, "User-initiated system setup"}, + {0x0f, 0x02, 0x06, "USB resource configuration"}, + {0x0f, 0x02, 0x07, "PCI resource configuration"}, + {0x0f, 0x02, 0x08, "Option ROM initialization"}, + {0x0f, 0x02, 0x09, "Video initialization"}, + {0x0f, 0x02, 0x0a, "Cache initialization"}, + {0x0f, 0x02, 0x0b, "SMBus initialization"}, + {0x0f, 0x02, 0x0c, "Keyboard controller initialization"}, + {0x0f, 0x02, 0x0d, "Management controller initialization"}, + {0x0f, 0x02, 0x0e, "Docking station attachment"}, + {0x0f, 0x02, 0x0f, "Enabling docking station"}, + {0x0f, 0x02, 0x10, "Docking station ejection"}, + {0x0f, 0x02, 0x11, "Disabling docking station"}, + {0x0f, 0x02, 0x12, "Calling operating system wake-up vector"}, + {0x0f, 0x02, 0x13, "System boot initiated"}, + {0x0f, 0x02, 0x14, "Motherboard initialization"}, + {0x0f, 0x02, 0x15, "reserved"}, + {0x0f, 0x02, 0x16, "Floppy initialization"}, + {0x0f, 0x02, 0x17, "Keyboard test"}, + {0x0f, 0x02, 0x18, "Pointing device test"}, + {0x0f, 0x02, 0x19, "Primary CPU initialization"}, + {0x0f, 0x02, 0xff, "Unknown Progress"}, + /* Event Logging Disabled */ + {0x10, 0x00, 0xff, "Correctable memory error logging disabled"}, + {0x10, 0x01, 0xff, "Event logging disabled"}, + {0x10, 0x02, 0xff, "Log area reset/cleared"}, + {0x10, 0x03, 0xff, "All event logging disabled"}, + {0x10, 0x04, 0xff, "Log full"}, + {0x10, 0x05, 0xff, "Log almost full"}, + /* Watchdog 1 */ + {0x11, 0x00, 0xff, "BIOS Reset"}, + {0x11, 0x01, 0xff, "OS Reset"}, + {0x11, 0x02, 0xff, "OS Shut Down"}, + {0x11, 0x03, 0xff, "OS Power Down"}, + {0x11, 0x04, 0xff, "OS Power Cycle"}, + {0x11, 0x05, 0xff, "OS NMI/Diag Interrupt"}, + {0x11, 0x06, 0xff, "OS Expired"}, + {0x11, 0x07, 0xff, "OS pre-timeout Interrupt"}, + /* System Event */ + {0x12, 0x00, 0xff, "System Reconfigured"}, + {0x12, 0x01, 0xff, "OEM System boot event"}, + {0x12, 0x02, 0xff, "Undetermined system hardware failure"}, + {0x12, 0x03, 0xff, "Entry added to auxiliary log"}, + {0x12, 0x04, 0xff, "PEF Action"}, + {0x12, 0x05, 0xff, "Timestamp Clock Sync"}, + /* Critical Interrupt */ + {0x13, 0x00, 0xff, "NMI/Diag Interrupt"}, + {0x13, 0x01, 0xff, "Bus Timeout"}, + {0x13, 0x02, 0xff, "I/O Channel check NMI"}, + {0x13, 0x03, 0xff, "Software NMI"}, + {0x13, 0x04, 0xff, "PCI PERR", Expander_Err_evt2, Expander_Err_evt3}, + {0x13, 0x05, 0xff, "PCI SERR", Expander_Err_evt2, Expander_Err_evt3}, + {0x13, 0x06, 0xff, "EISA failsafe timeout"}, + {0x13, 0x07, 0xff, "Bus Correctable error", Expander_Err_evt2, Expander_Err_evt3}, + {0x13, 0x08, 0xff, "Bus Uncorrectable error", Expander_Err_evt2, Expander_Err_evt3}, + {0x13, 0x09, 0xff, "Fatal NMI"}, + {0x13, 0x0a, 0xff, "Bus Fatal Error", Expander_Err_evt2, Expander_Err_evt3}, + {0x13, 0x0b, 0xff, "Bus Degraded", Expander_Err_evt2, Expander_Err_evt3}, + /* Button */ + {0x14, 0x00, 0xff, "Power Button pressed"}, + {0x14, 0x01, 0xff, "Sleep Button pressed"}, + {0x14, 0x02, 0xff, "Reset Button pressed"}, + {0x14, 0x03, 0xff, "FRU Latch"}, + {0x14, 0x04, 0xff, "FRU Service"}, + /* Chip Set */ + {0x19, 0x00, 0xff, "Soft Power Control Failure"}, + {0x19, 0x01, 0xff, "Thermal Trip"}, + /* Cable/Interconnect */ + {0x1b, 0x00, 0xff, "Connected"}, + {0x1b, 0x01, 0xff, "Config Error"}, + /* System Boot Initiated */ + {0x1d, 0x00, 0xff, "Initiated by power up", BMC_BOOT_evt2, BMC_BOOT_evt3}, + {0x1d, 0x01, 0xff, "Initiated by hard reset"}, + {0x1d, 0x02, 0xff, "Initiated by warm reset"}, + {0x1d, 0x03, 0xff, "User requested PXE boot"}, + {0x1d, 0x04, 0xff, "Automatic boot to diagnostic"}, + {0x1d, 0x05, 0xff, "OS initiated hard reset"}, + {0x1d, 0x06, 0xff, "OS initiated warm reset"}, + {0x1d, 0x07, 0xff, "System Restart"}, + /* Boot Error */ + {0x1e, 0x00, 0xff, "No bootable media"}, + {0x1e, 0x01, 0xff, "Non-bootable disk in drive"}, + {0x1e, 0x02, 0xff, "PXE server not found"}, + {0x1e, 0x03, 0xff, "Invalid boot sector"}, + {0x1e, 0x04, 0xff, "Timeout waiting for selection"}, + /* OS Boot */ + {0x1f, 0x00, 0xff, "A: boot completed"}, + {0x1f, 0x01, 0xff, "C: boot completed"}, + {0x1f, 0x02, 0xff, "PXE boot completed"}, + {0x1f, 0x03, 0xff, "Diagnostic boot completed"}, + {0x1f, 0x04, 0xff, "CD-ROM boot completed"}, + {0x1f, 0x05, 0xff, "ROM boot completed"}, + {0x1f, 0x06, 0xff, "boot completed - device not specified"}, + {0x1f, 0x07, 0xff, "Installation started"}, + {0x1f, 0x08, 0xff, "Installation completed"}, + {0x1f, 0x09, 0xff, "Installation aborted"}, + {0x1f, 0x0a, 0xff, "Installation failed"}, + /* OS Stop/Shutdown */ + {0x20, 0x00, 0xff, "Error during system startup"}, + {0x20, 0x01, 0xff, "Run-time critical stop"}, + {0x20, 0x02, 0xff, "OS graceful stop"}, + {0x20, 0x03, 0xff, "OS graceful shutdown"}, + {0x20, 0x04, 0xff, "PEF initiated soft shutdown"}, + {0x20, 0x05, 0xff, "Agent not responding"}, + /* Slot/Connector */ + {0x21, 0x00, 0xff, "Fault Status"}, + {0x21, 0x01, 0xff, "Identify Status"}, + {0x21, 0x02, 0xff, "Device Installed"}, + {0x21, 0x03, 0xff, "Ready for Device Installation"}, + {0x21, 0x04, 0xff, "Ready for Device Removal"}, + {0x21, 0x05, 0xff, "Slot Power is Off"}, + {0x21, 0x06, 0xff, "Device Removal Request"}, + {0x21, 0x07, 0xff, "Interlock"}, + {0x21, 0x08, 0xff, "Slot is Disabled"}, + {0x21, 0x09, 0xff, "Spare Device"}, + /* System ACPI Power State */ + {0x22, 0x00, 0xff, "S0/G0: working"}, + {0x22, 0x01, 0xff, "S1: sleeping with system hw & processor context maintained"}, + {0x22, 0x02, 0xff, "S2: sleeping, processor context lost"}, + {0x22, 0x03, 0xff, "S3: sleeping, processor & hw context lost, memory retained"}, + {0x22, 0x04, 0xff, "S4: non-volatile sleep/suspend-to-disk"}, + {0x22, 0x05, 0xff, "S5/G2: soft-off"}, + {0x22, 0x06, 0xff, "S4/S5: soft-off"}, + {0x22, 0x07, 0xff, "G3: mechanical off"}, + {0x22, 0x08, 0xff, "Sleeping in S1/S2/S3 state"}, + {0x22, 0x09, 0xff, "G1: sleeping"}, + {0x22, 0x0a, 0xff, "S5: entered by override"}, + {0x22, 0x0b, 0xff, "Legacy ON state"}, + {0x22, 0x0c, 0xff, "Legacy OFF state"}, + {0x22, 0x0e, 0xff, "Unknown"}, + /* Watchdog 2 */ + {0x23, 0x00, 0xff, "Timer expired"}, + {0x23, 0x01, 0xff, "Hard reset"}, + {0x23, 0x02, 0xff, "Power down"}, + {0x23, 0x03, 0xff, "Power cycle"}, + {0x23, 0x04, 0xff, "reserved"}, + {0x23, 0x05, 0xff, "reserved"}, + {0x23, 0x06, 0xff, "reserved"}, + {0x23, 0x07, 0xff, "reserved"}, + {0x23, 0x08, 0xff, "Timer interrupt"}, + /* Platform Alert */ + {0x24, 0x00, 0xff, "Platform generated page"}, + {0x24, 0x01, 0xff, "Platform generated LAN alert"}, + {0x24, 0x02, 0xff, "Platform Event Trap generated"}, + {0x24, 0x03, 0xff, "Platform generated SNMP trap, OEM format"}, + /* Entity Presence */ + {0x25, 0x00, 0xff, "Present"}, + {0x25, 0x01, 0xff, "Absent"}, + {0x25, 0x02, 0xff, "Disabled"}, + /* LAN */ + {0x27, 0x00, 0xff, "Heartbeat Lost"}, + {0x27, 0x01, 0xff, "Heartbeat"}, + /* Management Subsystem Health */ + {0x28, 0x00, 0xff, "Sensor access degraded or unavailable"}, + {0x28, 0x01, 0xff, "Controller access degraded or unavailable"}, + {0x28, 0x02, 0xff, "Management controller off-line"}, + {0x28, 0x03, 0xff, "Management controller unavailable"}, + {0x28, 0x04, 0xff, "Sensor failure"}, + {0x28, 0x05, 0xff, "FRU failure"}, + /* Battery */ + {0x29, 0x00, 0xff, "Low"}, + {0x29, 0x01, 0xff, "Failed"}, + {0x29, 0x02, 0xff, "Presence Detected"}, + /* Version Change */ + {0x2b, 0x00, 0xff, "Hardware change detected"}, + {0x2b, 0x01, 0x00, "Firmware or software change detected"}, + {0x2b, 0x01, 0x01, "Firmware or software change detected, Mngmt Ctrl Dev Id"}, + {0x2b, 0x01, 0x02, "Firmware or software change detected, Mngmt Ctrl Firm Rev"}, + {0x2b, 0x01, 0x03, "Firmware or software change detected, Mngmt Ctrl Dev Rev"}, + {0x2b, 0x01, 0x04, "Firmware or software change detected, Mngmt Ctrl Manuf Id"}, + {0x2b, 0x01, 0x05, "Firmware or software change detected, Mngmt Ctrl IPMI Vers"}, + {0x2b, 0x01, 0x06, "Firmware or software change detected, Mngmt Ctrl Aux Firm Id"}, + {0x2b, 0x01, 0x07, "Firmware or software change detected, Mngmt Ctrl Firm Boot Block"}, + {0x2b, 0x01, 0x08, "Firmware or software change detected, Mngmt Ctrl Other"}, + {0x2b, 0x01, 0x09, "Firmware or software change detected, BIOS/EFI change"}, + {0x2b, 0x01, 0x0A, "Firmware or software change detected, SMBIOS change"}, + {0x2b, 0x01, 0x0B, "Firmware or software change detected, O/S change"}, + {0x2b, 0x01, 0x0C, "Firmware or software change detected, O/S loader change"}, + {0x2b, 0x01, 0x0D, "Firmware or software change detected, Service Diag change"}, + {0x2b, 0x01, 0x0E, "Firmware or software change detected, Mngmt SW agent change"}, + {0x2b, 0x01, 0x0F, "Firmware or software change detected, Mngmt SW App change"}, + {0x2b, 0x01, 0x10, "Firmware or software change detected, Mngmt SW Middle"}, + {0x2b, 0x01, 0x11, "Firmware or software change detected, Prog HW Change (FPGA)"}, + {0x2b, 0x01, 0x12, "Firmware or software change detected, board/FRU module change"}, + {0x2b, 0x01, 0x13, "Firmware or software change detected, board/FRU component change"}, + {0x2b, 0x01, 0x14, "Firmware or software change detected, board/FRU replace equ ver"}, + {0x2b, 0x01, 0x15, "Firmware or software change detected, board/FRU replace new ver"}, + {0x2b, 0x01, 0x16, "Firmware or software change detected, board/FRU replace old ver"}, + {0x2b, 0x01, 0x17, "Firmware or software change detected, board/FRU HW conf change"}, + {0x2b, 0x02, 0xff, "Hardware incompatibility detected"}, + {0x2b, 0x03, 0xff, "Firmware or software incompatibility detected"}, + {0x2b, 0x04, 0xff, "Invalid or unsupported hardware version"}, + {0x2b, 0x05, 0xff, "Invalid or unsupported firmware or software version"}, + {0x2b, 0x06, 0xff, "Hardware change success"}, + {0x2b, 0x07, 0x00, "Firmware or software change success"}, + {0x2b, 0x07, 0x01, "Firmware or software change success, Mngmt Ctrl Dev Id"}, + {0x2b, 0x07, 0x02, "Firmware or software change success, Mngmt Ctrl Firm Rev", FW_Update_evt2, FW_Update_evt3}, + {0x2b, 0x07, 0x03, "Firmware or software change success, Mngmt Ctrl Dev Rev"}, + {0x2b, 0x07, 0x04, "Firmware or software change success, Mngmt Ctrl Manuf Id"}, + {0x2b, 0x07, 0x05, "Firmware or software change success, Mngmt Ctrl IPMI Vers"}, + {0x2b, 0x07, 0x06, "Firmware or software change success, Mngmt Ctrl Aux Firm Id"}, + {0x2b, 0x07, 0x07, "Firmware or software change success, Mngmt Ctrl Firm Boot Block"}, + {0x2b, 0x07, 0x08, "Firmware or software change success, Mngmt Ctrl Other"}, + {0x2b, 0x07, 0x09, "Firmware or software change success, BIOS/EFI change"}, + {0x2b, 0x07, 0x0A, "Firmware or software change success, SMBIOS change"}, + {0x2b, 0x07, 0x0B, "Firmware or software change success, O/S change"}, + {0x2b, 0x07, 0x0C, "Firmware or software change success, O/S loader change"}, + {0x2b, 0x07, 0x0D, "Firmware or software change success, Service Diag change"}, + {0x2b, 0x07, 0x0E, "Firmware or software change success, Mngmt SW agent change"}, + {0x2b, 0x07, 0x0F, "Firmware or software change success, Mngmt SW App change"}, + {0x2b, 0x07, 0x10, "Firmware or software change success, Mngmt SW Middle"}, + {0x2b, 0x07, 0x11, "Firmware or software change success, Prog HW Change (FPGA)"}, + {0x2b, 0x07, 0x12, "Firmware or software change success, board/FRU module change"}, + {0x2b, 0x07, 0x13, "Firmware or software change success, board/FRU component change"}, + {0x2b, 0x07, 0x14, "Firmware or software change success, board/FRU replace equ ver"}, + {0x2b, 0x07, 0x15, "Firmware or software change success, board/FRU replace new ver"}, + {0x2b, 0x07, 0x16, "Firmware or software change success, board/FRU replace old ver"}, + {0x2b, 0x07, 0x17, "Firmware or software change success, board/FRU HW conf change"}, + /* FRU State */ + {0x2c, 0x00, 0xff, "Not Installed"}, + {0x2c, 0x01, 0xff, "Inactive"}, + {0x2c, 0x02, 0xff, "Activation Requested"}, + {0x2c, 0x03, 0xff, "Activation in Progress"}, + {0x2c, 0x04, 0xff, "Active"}, + {0x2c, 0x05, 0xff, "Deactivation Requested"}, + {0x2c, 0x06, 0xff, "Deactivation in Progress"}, + {0x2c, 0x07, 0xff, "Communication lost"}, + /* PICMG FRU Hot Swap */ + {0xF0, 0x00, 0xFF, "Transition to M0"}, + {0xF0, 0x01, 0xFF, "Transition to M1"}, + {0xF0, 0x02, 0xFF, "Transition to M2"}, + {0xF0, 0x03, 0xFF, "Transition to M3"}, + {0xF0, 0x04, 0xFF, "Transition to M4"}, + {0xF0, 0x05, 0xFF, "Transition to M5"}, + {0xF0, 0x06, 0xFF, "Transition to M6"}, + {0xF0, 0x07, 0xFF, "Transition to M7"}, + /* PICMG IPMB Physical Link */ + {0xF1, 0x00, 0xff, "IPMB-A disabled, IPMB-B disabled"}, + {0xF1, 0x01, 0xff, "IPMB-A enabled, IPMB-B disabled"}, + {0xF1, 0x02, 0xff, "IPMB-A disabled, IPMB-B enabled"}, + {0xF1, 0x03, 0xff, "IPMB-A enabled, IPMB-B enabled"}, + /* PICMG Module Hot Swap */ + {0xF2, 0x00, 0xff, "Module Handle Closed"}, + {0xF2, 0x01, 0xff, "Module Handle Opened"}, + {0xF2, 0x02, 0xff, "Quiesced"}, + {0x00, 0x00, 0xff, NULL}, +}; + +static struct ipmi_oem_event_sensor_types sensor_oem_event_types[] = { + {0xba, 0xcb, 0x01, 0xff, "Kernel Panic"}, + {0xba, 0xcb, 0x02, 0x00, "Power Button pressed accidentally under S0"}, + {0xba, 0xcc, 0x01, 0x00, "Switch to golden flash"}, + {0xba, 0xcc, 0x01, 0x01, + "Switch to golden flash forced by security module due to primary flash verification failure"}, + {0xba, 0xcc, 0x02, 0x01, "PCIe topology does not match any suite"}, + {0xba, 0xcc, 0x02, 0x02, "EEPROM CRC result is incorrect"}, + {0xba, 0xcc, 0x02, 0x03, "Current PCIe devices do not match PCIe topology"}, + {0xba, 0xcc, 0x03, 0x00, "Abnormal leakage line detected"}, + {0xba, 0xcc, 0x03, 0x01, "Abnormal leakage line detected at point A"}, + {0xba, 0xcc, 0x03, 0x02, "Abnormal leakage line detected at point B"}, + {0xba, 0xcc, 0x03, 0x03, "Abnormal leakage line detected at point C"}, + {0xba, 0xcc, 0x03, 0x04, "Abnormal leakage line detected at point D"}, + {0xba, 0xcc, 0x03, 0x05, "Abnormal leakage line detected at point E"}, + {0xba, 0xcc, 0x04, 0x00, "Leakage line is absent"}, + {0xba, 0xcc, 0x05, 0x01, "Security module verify BMC primary flash failed"}, + {0xba, 0xcc, 0x05, 0x02, "Security module verify BMC golden flash failed"}, + {0xba, 0xcc, 0x05, 0x03, "Security module verify BMC primary and golden flash failed"}, + {0xba, 0xcc, 0x05, 0x04, "Security module verify BIOS flash failed"}, + {0xba, 0xcc, 0x05, 0x05, "Security module verify BMC primary flash and BIOS flash failed"}, + {0xba, 0xcc, 0x05, 0x06, "Security module verify BMC golden flash and BIOS flash failed"}, + {0xba, 0xcc, 0x05, 0x07, "Security module verify BMC primary and golden flash and BIOS flash failed"}, + {0xba, 0xcc, 0x05, 0x08, "Security module firmware update failed"}, + {0xba, 0xcc, 0x06, 0x01, "BMC Recovery occurred"}, + {0xba, 0xcc, 0x06, 0x02, "BIOS Recovery occurred"}, + {0xba, 0xcc, 0x06, 0x03, "PFR Recovery occurred"}, + {0xba, 0xcc, 0x07, 0x01, "Insufficient Bus Number resources"}, + {0xba, 0xcc, 0x07, 0x02, "Insufficient IO Size resources"}, + {0xba, 0xcc, 0x07, 0x03, "Insufficient MEM32 Size resources"}, + {0xba, 0xcc, 0x07, 0x04, "Insufficient MEM32 PREF Size resources"}, + {0xba, 0xcc, 0x07, 0x05, "Insufficient MEM64 PREF Size resources"}, + {0xba, 0xcc, 0x08, 0x00, + "Failed to synchronize user information between HOST and BOX BMC"}, + {0xba, 0xcc, 0x09, 0x01, "Failed to power on HOST through BMC"}, + {0xba, 0xcc, 0x09, 0x02, "Failed to power off HOST through BMC"}, + {0x00, 0x00, 0x00, 0x00, NULL}, +}; + +static struct ipmi_oem_specific_sensor_types sensor_oem_ppr_types[] = { + {1, 0x01, "hPPR repair "}, + {1, 0x02, "sPPR repair "}, + {1, 0x03, "runtime hPPR repair "}, + {1, 0x04, "runtime sPPR repair "}, + {5, 0x01, "success"}, + {5, 0x02, "fail"}, + {0, 0x00, NULL}, +}; + +static struct ipmi_oem_specific_sensor_types sensor_oem_bacd_types[] = { + {3, 0, "Fatal(CATERR/MSMI)"}, + {3, 1, "UCE-R(CATERR/MSMI_16BCLK)"}, + {3, 2, "CE(reserve for ERR 0)"}, + {3, 3, "FW(Data from FW/BIOS)"}, + {3, 4, "Reserved"}, + {3, 5, "Reserved"}, + {3, 6, "Reserved"}, + {3, 7, "Reserved"}, + {2, 0x00, "Dump succeeded"}, + {2, 0x01, "Dump failed"}, + {0, 0x00, NULL}, +}; + +#endif /* IPMI_SEL_DESC_H */ diff --git a/lib/Makefile.am b/lib/Makefile.am index 258aa1c..edfd80f 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -32,7 +32,7 @@ AUTOMAKE_OPTIONS = subdir-objects AM_CPPFLAGS = -I$(top_srcdir)/include MAINTAINERCLEANFILES = Makefile.in -noinst_LTLIBRARIES = libipmitool.la +lib_LTLIBRARIES = libipmitool.la libipmitool_la_SOURCES = helper.c ipmi_sdr.c ipmi_sel.c ipmi_sol.c ipmi_pef.c \ ipmi_lanp.c ipmi_fru.c ipmi_chassis.c ipmi_mc.c log.c \ dimm_spd.c ipmi_sensor.c ipmi_channel.c ipmi_event.c \ diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index 14acbcf..0829e84 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -35,7 +35,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/include SUBDIRS = @INTF_LAN@ @INTF_LANPLUS@ @INTF_OPEN@ @INTF_LIPMI@ @INTF_IMB@ @INTF_BMC@ @INTF_FREE@ @INTF_SERIAL@ @INTF_DUMMY@ @INTF_USB@ @INTF_DBUS@ DIST_SUBDIRS = lan lanplus open lipmi imb bmc free serial dummy usb dbus -noinst_LTLIBRARIES = libintf.la +lib_LTLIBRARIES = libintf.la libintf_la_SOURCES = ipmi_intf.c libintf_la_CFLAGS = -DDEFAULT_INTF='"@DEFAULT_INTF@"' libintf_la_LDFLAGS = -export-dynamic -- 2.25.1