1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * linux/include/asm-alpha/err_common.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation) 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Contains declarations and macros to support Alpha error handling 8*4882a593Smuzhiyun * implementations. 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef __ALPHA_ERR_COMMON_H 12*4882a593Smuzhiyun #define __ALPHA_ERR_COMMON_H 1 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* 15*4882a593Smuzhiyun * SCB Vector definitions 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun #define SCB_Q_SYSERR 0x620 18*4882a593Smuzhiyun #define SCB_Q_PROCERR 0x630 19*4882a593Smuzhiyun #define SCB_Q_SYSMCHK 0x660 20*4882a593Smuzhiyun #define SCB_Q_PROCMCHK 0x670 21*4882a593Smuzhiyun #define SCB_Q_SYSEVENT 0x680 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* 24*4882a593Smuzhiyun * Disposition definitions for logout frame parser 25*4882a593Smuzhiyun */ 26*4882a593Smuzhiyun #define MCHK_DISPOSITION_UNKNOWN_ERROR 0x00 27*4882a593Smuzhiyun #define MCHK_DISPOSITION_REPORT 0x01 28*4882a593Smuzhiyun #define MCHK_DISPOSITION_DISMISS 0x02 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* 31*4882a593Smuzhiyun * Error Log definitions 32*4882a593Smuzhiyun */ 33*4882a593Smuzhiyun /* 34*4882a593Smuzhiyun * Types 35*4882a593Smuzhiyun */ 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define EL_CLASS__TERMINATION (0) 38*4882a593Smuzhiyun # define EL_TYPE__TERMINATION__TERMINATION (0) 39*4882a593Smuzhiyun #define EL_CLASS__HEADER (5) 40*4882a593Smuzhiyun # define EL_TYPE__HEADER__SYSTEM_ERROR_FRAME (1) 41*4882a593Smuzhiyun # define EL_TYPE__HEADER__SYSTEM_EVENT_FRAME (2) 42*4882a593Smuzhiyun # define EL_TYPE__HEADER__HALT_FRAME (3) 43*4882a593Smuzhiyun # define EL_TYPE__HEADER__LOGOUT_FRAME (19) 44*4882a593Smuzhiyun #define EL_CLASS__GENERAL_NOTIFICATION (9) 45*4882a593Smuzhiyun #define EL_CLASS__PCI_ERROR_FRAME (11) 46*4882a593Smuzhiyun #define EL_CLASS__REGATTA_FAMILY (12) 47*4882a593Smuzhiyun # define EL_TYPE__REGATTA__PROCESSOR_ERROR_FRAME (1) 48*4882a593Smuzhiyun # define EL_TYPE__REGATTA__SYSTEM_ERROR_FRAME (2) 49*4882a593Smuzhiyun # define EL_TYPE__REGATTA__ENVIRONMENTAL_FRAME (3) 50*4882a593Smuzhiyun # define EL_TYPE__REGATTA__TITAN_PCHIP0_EXTENDED (8) 51*4882a593Smuzhiyun # define EL_TYPE__REGATTA__TITAN_PCHIP1_EXTENDED (9) 52*4882a593Smuzhiyun # define EL_TYPE__REGATTA__TITAN_MEMORY_EXTENDED (10) 53*4882a593Smuzhiyun # define EL_TYPE__REGATTA__PROCESSOR_DBL_ERROR_HALT (11) 54*4882a593Smuzhiyun # define EL_TYPE__REGATTA__SYSTEM_DBL_ERROR_HALT (12) 55*4882a593Smuzhiyun #define EL_CLASS__PAL (14) 56*4882a593Smuzhiyun # define EL_TYPE__PAL__LOGOUT_FRAME (1) 57*4882a593Smuzhiyun # define EL_TYPE__PAL__EV7_PROCESSOR (4) 58*4882a593Smuzhiyun # define EL_TYPE__PAL__EV7_ZBOX (5) 59*4882a593Smuzhiyun # define EL_TYPE__PAL__EV7_RBOX (6) 60*4882a593Smuzhiyun # define EL_TYPE__PAL__EV7_IO (7) 61*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE (10) 62*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__AIRMOVER_FAN (11) 63*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__VOLTAGE (12) 64*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__INTRUSION (13) 65*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__POWER_SUPPLY (14) 66*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__LAN (15) 67*4882a593Smuzhiyun # define EL_TYPE__PAL__ENV__HOT_PLUG (16) 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun union el_timestamp { 70*4882a593Smuzhiyun struct { 71*4882a593Smuzhiyun u8 second; 72*4882a593Smuzhiyun u8 minute; 73*4882a593Smuzhiyun u8 hour; 74*4882a593Smuzhiyun u8 day; 75*4882a593Smuzhiyun u8 month; 76*4882a593Smuzhiyun u8 year; 77*4882a593Smuzhiyun } b; 78*4882a593Smuzhiyun u64 as_int; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun struct el_subpacket { 82*4882a593Smuzhiyun u16 length; /* length of header (in bytes) */ 83*4882a593Smuzhiyun u16 class; /* header class and type... */ 84*4882a593Smuzhiyun u16 type; /* ...determine content */ 85*4882a593Smuzhiyun u16 revision; /* header revision */ 86*4882a593Smuzhiyun union { 87*4882a593Smuzhiyun struct { /* Class 5, Type 1 - System Error */ 88*4882a593Smuzhiyun u32 frame_length; 89*4882a593Smuzhiyun u32 frame_packet_count; 90*4882a593Smuzhiyun } sys_err; 91*4882a593Smuzhiyun struct { /* Class 5, Type 2 - System Event */ 92*4882a593Smuzhiyun union el_timestamp timestamp; 93*4882a593Smuzhiyun u32 frame_length; 94*4882a593Smuzhiyun u32 frame_packet_count; 95*4882a593Smuzhiyun } sys_event; 96*4882a593Smuzhiyun struct { /* Class 5, Type 3 - Double Error Halt */ 97*4882a593Smuzhiyun u16 halt_code; 98*4882a593Smuzhiyun u16 reserved; 99*4882a593Smuzhiyun union el_timestamp timestamp; 100*4882a593Smuzhiyun u32 frame_length; 101*4882a593Smuzhiyun u32 frame_packet_count; 102*4882a593Smuzhiyun } err_halt; 103*4882a593Smuzhiyun struct { /* Clasee 5, Type 19 - Logout Frame Header */ 104*4882a593Smuzhiyun u32 frame_length; 105*4882a593Smuzhiyun u32 frame_flags; 106*4882a593Smuzhiyun u32 cpu_offset; 107*4882a593Smuzhiyun u32 system_offset; 108*4882a593Smuzhiyun } logout_header; 109*4882a593Smuzhiyun struct { /* Class 12 - Regatta */ 110*4882a593Smuzhiyun u64 cpuid; 111*4882a593Smuzhiyun u64 data_start[1]; 112*4882a593Smuzhiyun } regatta_frame; 113*4882a593Smuzhiyun struct { /* Raw */ 114*4882a593Smuzhiyun u64 data_start[1]; 115*4882a593Smuzhiyun } raw; 116*4882a593Smuzhiyun } by_type; 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #endif /* __ALPHA_ERR_COMMON_H */ 120