Thanks,
G
srinivas_g_go...@dell.com
DELL
diff -Naurp 05-ipmitool_opensel_part1_delloem/lib/ipmi_sel.c 06-ipmitool_opensel_part2_delloem/lib/ipmi_sel.c
--- 05-ipmitool_opensel_part1_delloem/lib/ipmi_sel.c	2012-03-06 19:15:42.000000000 +0530
+++ 06-ipmitool_opensel_part2_delloem/lib/ipmi_sel.c	2012-03-06 19:25:27.000000000 +0530
@@ -582,6 +582,147 @@ char * get_dell_evt_desc(struct ipmi_int
 							strcpy(desc,"Memory is in Mirror Mode ");
 						break;
 					}
+			case 0x10:				
+				memset(&req, 0, sizeof (req));
+				req.msg.netfn = IPMI_NETFN_APP;
+				req.msg.lun = 0;
+				req.msg.cmd = BMC_GET_DEVICE_ID;
+				req.msg.data = NULL;
+				req.msg.data_len = 0;
+
+				rsp = intf->sendrecv(intf, &req);
+				if (rsp == NULL) 
+				{
+					lprintf(LOG_ERR, " Error getting system info");
+					return NULL;
+				} 
+				else if (rsp->ccode > 0)
+				{
+					lprintf(LOG_ERR, " Error getting system info: %s",
+						val2str(rsp->ccode, completion_code_vals));
+					return NULL;
+				}
+				version = rsp->data[4];
+				/* Memory DIMMS */
+				if( (data1 &  0x80) || (data1 & 0x20 ) )
+				{
+					if( (code == 0x0c) && (rec->sel_type.standard_type.event_type == 0x0B) )
+					{
+						if((data1 & 0x0f) == 0x00) 
+						{
+							snprintf(desc,SIZE_OF_DESC," Redundancy Regained | ");
+						}
+						else if((data1 & 0x0f) == 0x01)
+						{
+							snprintf(desc,SIZE_OF_DESC,"Redundancy Lost | ");
+						}
+					}	
+					else if(code == 0x0c) 
+					{
+						if((data1 & 0x0f) == 0x00)
+						{
+							snprintf(desc,SIZE_OF_DESC,"Correctable ECC | ");
+						}
+						else if((data1 & 0x0f) == 0x01) 
+						{
+							snprintf(desc,SIZE_OF_DESC,"UnCorrectable ECC | ");
+						}
+					} 
+				} 
+				if(data1 & 0x80 ) 
+				{
+					if(((data2 >> 4) != 0x0f) && ((data2 >> 4) < 0x08))
+					{
+						tmpData = 	('A'+ (data2 >> 4));
+						if( (code == 0x0c) && (rec->sel_type.standard_type.event_type == 0x0B) )
+						{
+							snprintf(tmpdesc, SIZE_OF_DESC, "Bad Card %c", tmpData);								
+						}
+						else
+						{
+							snprintf(tmpdesc, SIZE_OF_DESC, "Card %c", tmpData);
+						}
+						strcat(desc, tmpdesc);
+					}
+					if (0x0F != (data2 & 0x0f)) 
+					{
+						if(0x51  == version)
+						{
+							snprintf(tmpdesc, SIZE_OF_DESC, "Bank %d", ((data2 & 0x0f)+1));	
+							strcat(desc, tmpdesc);
+						}
+						else 
+						{
+							incr = (data2 & 0x0f) << 3;
+						}
+					}
+					
+				}
+				if(data1 & 0x20 )
+				{
+					if(0x51  == version) 
+					{
+						snprintf(tmpdesc, SIZE_OF_DESC, "DIMM %s", ('A'+ data3));
+						strcat(desc, tmpdesc);						
+					} 
+					else if( ((data2 >> 4) > 0x07) && ((data2 >> 4) != 0x0F)) 
+					{
+						strcpy(dimmStr, " DIMM_");
+						str = desc+strlen(desc);
+						dimmsPerNode = 4;
+						if( (data2 >> 4) == 0x09) dimmsPerNode = 6;
+						else if( (data2 >> 4) == 0x0A) dimmsPerNode = 8;
+						else if( (data2 >> 4) == 0x0B) dimmsPerNode = 9;
+						else if( (data2 >> 4) == 0x0C) dimmsPerNode = 12;
+						else if( (data2 >> 4) == 0x0D) dimmsPerNode = 24;	
+						else if( (data2 >> 4) == 0x0E) dimmsPerNode = 3;							
+						count = 0;
+				        for (i = 0; i < 8; i++)
+				        {
+				          if (BIT(i) & data3)
+				          {
+				            if (count)
+				            {
+				              *str++ = ',';
+				              count = 0;
+				            }
+				            node = (incr + i)/dimmsPerNode;
+				            dimmNum = ((incr + i)%dimmsPerNode)+1;
+				            dimmStr[5] = node + 'A';
+				            sprintf(tmpdesc,"%d",dimmNum);
+				            dimmStr[6] = tmpdesc[0];
+							dimmStr[7] = '\0'; 
+							strcat(str,dimmStr);
+				            count++;
+				          }
+				        }
+					} 
+					else 
+					{
+				        strcpy(dimmStr, " DIMM");
+						str = desc+strlen(desc);
+				        count = 0;
+				        for (i = 0; i < 8; i++)
+				        {
+				          if (BIT(i) & data3)
+				          {
+				            // check if more than one DIMM, if so add a comma to the string.
+				            if (count)
+				            {
+				              *str++ = ',';
+				              count = 0;
+				            }
+				            sprintf(tmpdesc,"%d",(i + incr + 1));
+							dimmStr[4] = tmpdesc[0];
+							dimmStr[5] = '\0'; 
+				            strcat(str, dimmStr);
+				            count++;
+				          }
+				        }
+			        }
+				}
+			break;
+			
 			default:
 			break;				
 		} 
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to