| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | /* *	linux/arch/alpha/kernel/err_marvel.c * *	Copyright (C) 2001 Jeff Wiedemeier (Compaq Computer Corporation) * */#include <linux/init.h>#include <linux/pci.h>#include <linux/sched.h>#include <asm/io.h>#include <asm/console.h>#include <asm/core_marvel.h>#include <asm/hwrpb.h>#include <asm/smp.h>#include <asm/err_common.h>#include <asm/err_ev7.h>#include "err_impl.h"#include "proto.h"static voidmarvel_print_680_frame(struct ev7_lf_subpackets *lf_subpackets){#ifdef CONFIG_VERBOSE_MCHECK	struct ev7_pal_environmental_subpacket *env;	struct { int type; char *name; } ev_packets[] = {		{ EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE,		  "Ambient Temperature" },		{ EL_TYPE__PAL__ENV__AIRMOVER_FAN,		  "AirMover / Fan" },		{ EL_TYPE__PAL__ENV__VOLTAGE,		  "Voltage" },		{ EL_TYPE__PAL__ENV__INTRUSION,		  "Intrusion" },		{ EL_TYPE__PAL__ENV__POWER_SUPPLY,		  "Power Supply" },		{ EL_TYPE__PAL__ENV__LAN,		  "LAN" },		{ EL_TYPE__PAL__ENV__HOT_PLUG,		  "Hot Plug" },		{ 0, NULL }	};	int i;	for (i = 0; ev_packets[i].type != 0; i++) {		env = lf_subpackets->env[ev7_lf_env_index(ev_packets[i].type)];		if (!env)			continue;		printk("%s**%s event (cabinet %d, drawer %d)\n",		       err_print_prefix,		       ev_packets[i].name,		       env->cabinet,		       env->drawer);		printk("%s   Module Type: 0x%x - Unit ID 0x%x - "		       "Condition 0x%x\n",		       err_print_prefix,		       env->module_type,		       env->unit_id,		       env->condition);	}#endif /* CONFIG_VERBOSE_MCHECK */}static intmarvel_process_680_frame(struct ev7_lf_subpackets *lf_subpackets, int print){	int status = MCHK_DISPOSITION_UNKNOWN_ERROR;	int i;	for (i = ev7_lf_env_index(EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE);	     i <= ev7_lf_env_index(EL_TYPE__PAL__ENV__HOT_PLUG);	     i++) {		if (lf_subpackets->env[i])			status = MCHK_DISPOSITION_REPORT;	}	if (print)		marvel_print_680_frame(lf_subpackets);	return status;}#ifdef CONFIG_VERBOSE_MCHECKstatic voidmarvel_print_err_cyc(u64 err_cyc){	static char *packet_desc[] = {		"No Error",		"UNKNOWN",		"1 cycle (1 or 2 flit packet)",		"2 cycles (3 flit packet)",		"9 cycles (18 flit packet)",		"10 cycles (19 flit packet)",		"UNKNOWN",		"UNKNOWN",		"UNKNOWN"	};#define IO7__ERR_CYC__ODD_FLT	(1UL <<  0)#define IO7__ERR_CYC__EVN_FLT	(1UL <<  1)#define IO7__ERR_CYC__PACKET__S	(6)#define IO7__ERR_CYC__PACKET__M	(0x7)
 |