-Add DIMM inventory to IPMI rinv
-Remove extraneous Net::Telnet dependency in xen plugin git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2855 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		
							
								
								
									
										723
									
								
								perl-xCAT/xCAT/SPD.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										723
									
								
								perl-xCAT/xCAT/SPD.pm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,723 @@ | ||||
| package xCAT::SPD; | ||||
| #This module provides the ability to decode DIMM SPD data to human readable format | ||||
| use strict; | ||||
| use Data::Dumper; | ||||
| require Exporter; | ||||
| our @ISA=qw/Exporter/; | ||||
| our @EXPORT_OK=qw/decode_spd/; | ||||
|  | ||||
| sub decode_manufacturer { | ||||
|         my $jedec_ids = [ | ||||
|           { | ||||
|             0x01 => "AMD", | ||||
|             0x02 => "AMI", | ||||
|             0x83 => "Fairchild", | ||||
|             0x04 => "Fujitsu", | ||||
|             0x85 => "GTE", | ||||
|             0x86 => "Harris", | ||||
|             0x07 => "Hitachi", | ||||
|             0x08 => "Inmos", | ||||
|             0x89 => "Intel", | ||||
|             0x8a => "I.T.T.", | ||||
|             0x0b => "Intersil", | ||||
|             0x8c => "Monolithic Memories", | ||||
|             0x0d => "Mostek", | ||||
|             0x0e => "Motorola", | ||||
|             0x8f => "National", | ||||
|             0x10 => "NEC", | ||||
|             0x91 => "RCA", | ||||
|             0x92 => "Raytheon", | ||||
|             0x13 => "Conexant (Rockwell)", | ||||
|             0x94 => "Seeq", | ||||
|             0x15 => "Philips Semi. (Signetics)", | ||||
|             0x16 => "Synertek", | ||||
|             0x97 => "Texas Instruments", | ||||
|             0x98 => "Toshiba", | ||||
|             0x19 => "Xicor", | ||||
|             0x1a => "Zilog", | ||||
|             0x9b => "Eurotechnique", | ||||
|             0x1c => "Mitsubishi", | ||||
|             0x9d => "Lucent (AT&T)", | ||||
|             0x9e => "Exel", | ||||
|             0x1f => "Atmel", | ||||
|             0x20 => "SGS/Thomson", | ||||
|             0xa1 => "Lattice Semi.", | ||||
|             0xa2 => "NCR", | ||||
|             0x23 => "Wafer Scale Integration", | ||||
|             0xa4 => "IBM", | ||||
|             0x25 => "Tristar", | ||||
|             0x26 => "Visic", | ||||
|             0xa7 => "Intl. CMOS Technology", | ||||
|             0xa8 => "SSSI", | ||||
|             0x29 => "Microchip Technology", | ||||
|             0x2a => "Ricoh Ltd.", | ||||
|             0xab => "VLSI", | ||||
|             0x2c => "Micron Technology", | ||||
|             0xad => "Hyundai Electronics", | ||||
|             0xae => "OKI Semiconductor", | ||||
|             0x2f => "ACTEL", | ||||
|             0xb0 => "Sharp", | ||||
|             0x31 => "Catalyst", | ||||
|             0x32 => "Panasonic", | ||||
|             0xb3 => "IDT", | ||||
|             0x34 => "Cypress", | ||||
|             0xb5 => "DEC", | ||||
|             0xb6 => "LSI Logic", | ||||
|             0x37 => "Zarlink", | ||||
|             0x38 => "UTMC", | ||||
|             0xb9 => "Thinking Machine", | ||||
|             0xba => "Thomson CSF", | ||||
|             0x3b => "Integrated CMOS(Vertex)", | ||||
|             0xbc => "Honeywell", | ||||
|             0x3d => "Tektronix", | ||||
|             0x3e => "Sun Microsystems", | ||||
|             0xbf => "SST", | ||||
|             0x40 => "MOSEL", | ||||
|             0xc1 => "Infineon", | ||||
|             0xc2 => "Macronix", | ||||
|             0x43 => "Xerox", | ||||
|             0xc4 => "Plus Logic", | ||||
|             0x45 => "SunDisk", | ||||
|             0x46 => "Elan Circuit Tech.", | ||||
|             0xc7 => "European Silicon Str.", | ||||
|             0xc8 => "Apple Computer", | ||||
|             0xc9 => "Xilinx", | ||||
|             0x4a => "Compaq", | ||||
|             0xcb => "Protocol Engines", | ||||
|             0x4c => "SCI", | ||||
|             0xcd => "Seiko Instruments", | ||||
|             0xce => "Samsung", | ||||
|             0x4f => "I3 Design System", | ||||
|             0xd0 => "Klic", | ||||
|             0x51 => "Crosspoint Solutions", | ||||
|             0x52 => "Alliance Semiconductor", | ||||
|             0xd3 => "Tandem", | ||||
|             0x54 => "Hewlett-Packard", | ||||
|             0xd5 => "Intg. Silicon Solutions", | ||||
|             0xd6 => "Brooktree", | ||||
|             0x57 => "New Media", | ||||
|             0x58 => "MHS Electronic", | ||||
|             0xd9 => "Performance Semi.", | ||||
|             0xda => "Winbond Electronic", | ||||
|             0x5b => "Kawasaki Steel", | ||||
|             0xdc => "Bright Micro", | ||||
|             0x5d => "TECMAR", | ||||
|             0x5e => "Exar", | ||||
|             0xdf => "PCMCIA", | ||||
|             0xe0 => "LG Semiconductor", | ||||
|             0x61 => "Northern Telecom", | ||||
|             0x62 => "Sanyo", | ||||
|             0xe3 => "Array Microsystems", | ||||
|             0x64 => "Crystal Semiconductor", | ||||
|             0xe5 => "Analog Devices", | ||||
|             0xe6 => "PMC-Sierra", | ||||
|             0x67 => "Asparix", | ||||
|             0x68 => "Convex Computer", | ||||
|             0xe9 => "Quality Semiconductor", | ||||
|             0xea => "Nimbus Technology", | ||||
|             0x6b => "Transwitch", | ||||
|             0xec => "Micronas (ITT Intermetall)", | ||||
|             0x6d => "Cannon", | ||||
|             0x6e => "Altera", | ||||
|             0xef => "NEXCOM", | ||||
|             0x70 => "QUALCOMM", | ||||
|             0xf1 => "Sony", | ||||
|             0xf2 => "Cray Research", | ||||
|             0x73 => "AMS (Austria Micro)", | ||||
|             0xf4 => "Vitesse", | ||||
|             0x75 => "Aster Electronics", | ||||
|             0x76 => "Bay Networks (Synoptic)", | ||||
|             0xf7 => "Zentrum", | ||||
|             0xf8 => "TRW", | ||||
|             0x79 => "Thesys", | ||||
|             0x7a => "Solbourne Computer", | ||||
|             0xfb => "Allied-Signal", | ||||
|             0x7c => "Dialog", | ||||
|             0xfd => "Media Vision", | ||||
|             0xfe => "Level One Communication", | ||||
|           }, | ||||
|           { | ||||
|             0x01 => "Cirrus Logic", | ||||
|             0x02 => "National Instruments", | ||||
|             0x83 => "ILC Data Device", | ||||
|             0x04 => "Alcatel Mietec", | ||||
|             0x85 => "Micro Linear", | ||||
|             0x86 => "Univ. of NC", | ||||
|             0x07 => "JTAG Technologies", | ||||
|             0x08 => "Loral", | ||||
|             0x89 => "Nchip", | ||||
|             0x8A => "Galileo Tech", | ||||
|             0x0B => "Bestlink Systems", | ||||
|             0x8C => "Graychip", | ||||
|             0x0D => "GENNUM", | ||||
|             0x0E => "VideoLogic", | ||||
|             0x8F => "Robert Bosch", | ||||
|             0x10 => "Chip Express", | ||||
|             0x91 => "DATARAM", | ||||
|             0x92 => "United Microelec Corp.", | ||||
|             0x13 => "TCSI", | ||||
|             0x94 => "Smart Modular", | ||||
|             0x15 => "Hughes Aircraft", | ||||
|             0x16 => "Lanstar Semiconductor", | ||||
|             0x97 => "Qlogic", | ||||
|             0x98 => "Kingston", | ||||
|             0x19 => "Music Semi", | ||||
|             0x1A => "Ericsson Components", | ||||
|             0x9B => "SpaSE", | ||||
|             0x1C => "Eon Silicon Devices", | ||||
|             0x9D => "Programmable Micro Corp", | ||||
|             0x9E => "DoD", | ||||
|             0x1F => "Integ. Memories Tech.", | ||||
|             0x20 => "Corollary Inc.", | ||||
|             0xA1 => "Dallas Semiconductor", | ||||
|             0xA2 => "Omnivision", | ||||
|             0x23 => "EIV(Switzerland)", | ||||
|             0xA4 => "Novatel Wireless", | ||||
|             0x25 => "Zarlink (formerly Mitel)", | ||||
|             0x26 => "Clearpoint", | ||||
|             0xA7 => "Cabletron", | ||||
|             0xA8 => "Silicon Technology", | ||||
|             0x29 => "Vanguard", | ||||
|             0x2A => "Hagiwara Sys-Com", | ||||
|             0xAB => "Vantis", | ||||
|             0x2C => "Celestica", | ||||
|             0xAD => "Century", | ||||
|             0xAE => "Hal Computers", | ||||
|             0x2F => "Rohm Company Ltd.", | ||||
|             0xB0 => "Juniper Networks", | ||||
|             0x31 => "Libit Signal Processing", | ||||
|             0x32 => "Enhanced Memories Inc.", | ||||
|             0xB3 => "Tundra Semiconductor", | ||||
|             0x34 => "Adaptec Inc.", | ||||
|             0xB5 => "LightSpeed Semi.", | ||||
|             0xB6 => "ZSP Corp.", | ||||
|             0x37 => "AMIC Technology", | ||||
|             0x38 => "Adobe Systems", | ||||
|             0xB9 => "Dynachip", | ||||
|             0xBA => "PNY Electronics", | ||||
|             0x3B => "Newport Digital", | ||||
|             0xBC => "MMC Networks", | ||||
|             0x3D => "T Square", | ||||
|             0x3E => "Seiko Epson", | ||||
|             0xBF => "Broadcom", | ||||
|             0x40 => "Viking Components", | ||||
|             0xC1 => "V3 Semiconductor", | ||||
|             0xC2 => "Flextronics (formerly Orbit)", | ||||
|             0x43 => "Suwa Electronics", | ||||
|             0xC4 => "Transmeta", | ||||
|             0x45 => "Micron CMS", | ||||
|             0x46 => "American Computer & Digital Components Inc", | ||||
|             0xC7 => "Enhance 3000 Inc", | ||||
|             0xC8 => "Tower Semiconductor", | ||||
|             0x49 => "CPU Design", | ||||
|             0x4A => "Price Point", | ||||
|             0xCB => "Maxim Integrated Product", | ||||
|             0x4C => "Tellabs", | ||||
|             0xCD => "Centaur Technology", | ||||
|             0xCE => "Unigen Corporation", | ||||
|             0x4F => "Transcend Information", | ||||
|             0xD0 => "Memory Card Technology", | ||||
|             0x51 => "CKD Corporation Ltd.", | ||||
|             0x52 => "Capital Instruments, Inc.", | ||||
|             0xD3 => "Aica Kogyo, Ltd.", | ||||
|             0x54 => "Linvex Technology", | ||||
|             0xD5 => "MSC Vertriebs GmbH", | ||||
|             0xD6 => "AKM Company, Ltd.", | ||||
|             0x57 => "Dynamem, Inc.", | ||||
|             0x58 => "NERA ASA", | ||||
|             0xD9 => "GSI Technology", | ||||
|             0xDA => "Dane-Elec (C Memory)", | ||||
|             0x5B => "Acorn Computers", | ||||
|             0xDC => "Lara Technology", | ||||
|             0x5D => "Oak Technology, Inc.", | ||||
|             0x5E => "Itec Memory", | ||||
|             0xDF => "Tanisys Technology", | ||||
|             0xE0 => "Truevision", | ||||
|             0x61 => "Wintec Industries", | ||||
|             0x62 => "Super PC Memory", | ||||
|             0xE3 => "MGV Memory", | ||||
|             0x64 => "Galvantech", | ||||
|             0xE5 => "Gadzoox Nteworks", | ||||
|             0xE6 => "Multi Dimensional Cons.", | ||||
|             0x67 => "GateField", | ||||
|             0x68 => "Integrated Memory System", | ||||
|             0xE9 => "Triscend", | ||||
|             0xEA => "XaQti", | ||||
|             0x6B => "Goldenram", | ||||
|             0xEC => "Clear Logic", | ||||
|             0x6D => "Cimaron Communications", | ||||
|             0x6E => "Nippon Steel Semi. Corp.", | ||||
|             0xEF => "Advantage Memory", | ||||
|             0x70 => "AMCC", | ||||
|             0xF1 => "LeCroy", | ||||
|             0xF2 => "Yamaha Corporation", | ||||
|             0x73 => "Digital Microwave", | ||||
|             0xF4 => "NetLogic Microsystems", | ||||
|             0x75 => "MIMOS Semiconductor", | ||||
|             0x76 => "Advanced Fibre", | ||||
|             0xF7 => "BF Goodrich Data.", | ||||
|             0xF8 => "Epigram", | ||||
|             0x79 => "Acbel Polytech Inc.", | ||||
|             0x7A => "Apacer Technology", | ||||
|             0xFB => "Admor Memory", | ||||
|             0x7C => "FOXCONN", | ||||
|             0xFD => "Quadratics Superconductor", | ||||
|             0xFE => "3COM", | ||||
|           }, | ||||
|           { | ||||
|             0x01 => "Camintonn Corporation", | ||||
|             0x02 => "ISOA Incorporated", | ||||
|             0x83 => "Agate Semiconductor", | ||||
|             0x04 => "ADMtek Incorporated", | ||||
|             0x85 => "HYPERTEC", | ||||
|             0x86 => "Adhoc Technologies", | ||||
|             0x07 => "MOSAID Technologies", | ||||
|             0x08 => "Ardent Technologies", | ||||
|             0x89 => "Switchcore", | ||||
|             0x8A => "Cisco Systems, Inc.", | ||||
|             0x0B => "Allayer Technologies", | ||||
|             0x8C => "WorkX AG", | ||||
|             0x0D => "Oasis Semiconductor", | ||||
|             0x0E => "Novanet Semiconductor", | ||||
|             0x8F => "E-M Solutions", | ||||
|             0x10 => "Power General", | ||||
|             0x91 => "Advanced Hardware Arch.", | ||||
|             0x92 => "Inova Semiconductors GmbH", | ||||
|             0x13 => "Telocity", | ||||
|             0x94 => "Delkin Devices", | ||||
|             0x15 => "Symagery Microsystems", | ||||
|             0x16 => "C-Port Corporation", | ||||
|             0x97 => "SiberCore Technologies",  | ||||
|             0x98 => "Southland Microsystems", | ||||
|             0x19 => "Malleable Technologies", | ||||
|             0x1A => "Kendin Communications", | ||||
|             0x9B => "Great Technology Microcomputer", | ||||
|             0x1C => "Sanmina Corporation", | ||||
|             0x9D => "HADCO Corporation", | ||||
|             0x9E => "Corsair", | ||||
|             0x1F => "Actrans System Inc.", | ||||
|             0x20 => "ALPHA Technologies", | ||||
|             0xA1 => "Cygnal Integrated Products Incorporated", | ||||
|             0xA2 => "Artesyn Technologies", | ||||
|             0x23 => "Align Manufacturing", | ||||
|             0xA4 => "Peregrine Semiconductor", | ||||
|             0x25 => "Chameleon Systems", | ||||
|             0x26 => "Aplus Flash Technology", | ||||
|             0xA7 => "MIPS Technologies", | ||||
|             0xA8 => "Chrysalis ITS", | ||||
|             0x29 => "ADTEC Corporation", | ||||
|             0x2A => "Kentron Technologies", | ||||
|             0xAB => "Win Technologies", | ||||
|             0x2C => "ASIC Designs Inc", | ||||
|             0xAD => "Extreme Packet Devices", | ||||
|             0xAE => "RF Micro Devices", | ||||
|             0x2F => "Siemens AG", | ||||
|             0xB0 => "Sarnoff Corporation", | ||||
|             0x31 => "Itautec Philco SA", | ||||
|             0x32 => "Radiata Inc.", | ||||
|             0xB3 => "Benchmark Elect. (AVEX)", | ||||
|             0x34 => "Legend", | ||||
|             0xB5 => "SpecTek Incorporated", | ||||
|             0xB6 => "Hi/fn", | ||||
|             0x37 => "Enikia Incorporated", | ||||
|             0x38 => "SwitchOn Networks", | ||||
|             0xB9 => "AANetcom Incorporated", | ||||
|             0xBA => "Micro Memory Bank", | ||||
|             0x3B => "ESS Technology", | ||||
|             0xBC => "Virata Corporation", | ||||
|             0x3D => "Excess Bandwidth", | ||||
|             0x3E => "West Bay Semiconductor", | ||||
|             0xBF => "DSP Group", | ||||
|             0x40 => "Newport Communications", | ||||
|             0xC1 => "Chip2Chip Incorporated", | ||||
|             0xC2 => "Phobos Corporation", | ||||
|             0x43 => "Intellitech Corporation", | ||||
|             0xC4 => "Nordic VLSI ASA", | ||||
|             0x45 => "Ishoni Networks", | ||||
|             0x46 => "Silicon Spice", | ||||
|             0xC7 => "Alchemy Semiconductor", | ||||
|             0xC8 => "Agilent Technologies", | ||||
|             0x49 => "Centillium Communications", | ||||
|             0x4A => "W.L. Gore", | ||||
|             0xCB => "HanBit Electronics", | ||||
|             0x4C => "GlobeSpan", | ||||
|             0xCD => "Element 14", | ||||
|             0xCE => "Pycon", | ||||
|             0x4F => "Saifun Semiconductors", | ||||
|             0xD0 => "Sibyte, Incorporated", | ||||
|             0x51 => "MetaLink Technologies", | ||||
|             0x52 => "Feiya Technology", | ||||
|             0xD3 => "I & C Technology", | ||||
|             0x54 => "Shikatronics", | ||||
|             0xD5 => "Elektrobit", | ||||
|             0xD6 => "Megic", | ||||
|             0x57 => "Com-Tier", | ||||
|             0x58 => "Malaysia Micro Solutions", | ||||
|             0xD9 => "Hyperchip", | ||||
|             0xDA => "Gemstone Communications", | ||||
|             0x5B => "Anadyne Microelectronics", | ||||
|             0xDC => "3ParData", | ||||
|             0x5D => "Mellanox Technologies", | ||||
|             0x5E => "Tenx Technologies", | ||||
|             0xDF => "Helix AG", | ||||
|             0xE0 => "Domosys", | ||||
|             0x61 => "Skyup Technology", | ||||
|             0x62 => "HiNT Corporation", | ||||
|             0xE3 => "Chiaro", | ||||
|             0x64 => "MCI Computer GMBH", | ||||
|             0xE5 => "Exbit Technology A/S", | ||||
|             0xE6 => "Integrated Technology Express", | ||||
|             0x67 => "AVED Memory", | ||||
|             0x68 => "Legerity", | ||||
|             0xE9 => "Jasmine Networks", | ||||
|             0xEA => "Caspian Networks", | ||||
|             0x6B => "nCUBE", | ||||
|             0xEC => "Silicon Access Networks", | ||||
|             0x6D => "FDK Corporation", | ||||
|             0x6E => "High Bandwidth Access", | ||||
|             0xEF => "MultiLink Technology", | ||||
|             0x70 => "BRECIS", | ||||
|             0xF1 => "World Wide Packets", | ||||
|             0xF2 => "APW", | ||||
|             0x73 => "Chicory Systems", | ||||
|             0xF4 => "Xstream Logic", | ||||
|             0x75 => "Fast-Chip", | ||||
|             0x76 => "Zucotto Wireless", | ||||
|             0xF7 => "Realchip", | ||||
|             0xF8 => "Galaxy Power", | ||||
|             0x79 => "eSilicon", | ||||
|             0x7A => "Morphics Technology", | ||||
|             0xFB => "Accelerant Networks", | ||||
|             0x7C => "Silicon Wave", | ||||
|             0xFD => "SandCraft", | ||||
|             0xFE => "Elpida", | ||||
|         }, | ||||
|         { | ||||
|             0x01 => "Solectron", | ||||
|             0x02 => "Optosys Technologies", | ||||
|             0x83 => "Buffalo (Formerly Melco)", | ||||
|             0x04 => "TriMedia Technologies", | ||||
|             0x85 => "Cyan Technologies", | ||||
|             0x86 => "Global Locate", | ||||
|             0x07 => "Optillion", | ||||
|             0x08 => "Terago Communications", | ||||
|             0x89 => "Ikanos Communications", | ||||
|             0x8A => "Princeton Technology", | ||||
|             0x0B => "Nanya Technology", | ||||
|             0x8C => "Elite Flash Storage", | ||||
|             0x0D => "Mysticom", | ||||
|             0x0E => "LightSand Communications", | ||||
|             0x8F => "ATI Technologies", | ||||
|             0x10 => "Agere Systems", | ||||
|             0x91 => "NeoMagic", | ||||
|             0x92 => "AuroraNetics", | ||||
|             0x13 => "Golden Empire", | ||||
|             0x94 => "Muskin", | ||||
|             0x15 => "Tioga Technologies", | ||||
|             0x16 => "Netlist", | ||||
|             0x97 => "TeraLogic", | ||||
|             0x98 => "Cicada Semiconductor", | ||||
|             0x19 => "Centon Electronics", | ||||
|             0x1A => "Tyco Electronics", | ||||
|             0x9B => "Magis Works", | ||||
|             0x1C => "Zettacom", | ||||
|             0x9D => "Cogency Semiconductor", | ||||
|             0x9E => "Chipcon AS", | ||||
|             0x1F => "Aspex Technology", | ||||
|             0x20 => "F5 Networks", | ||||
|             0xA1 => "Programmable Silicon Solutions", | ||||
|             0xA2 => "ChipWrights", | ||||
|             0x23 => "Acorn Networks", | ||||
|             0xA4 => "Quicklogic", | ||||
|             0x25 => "Kingmax Semiconductor", | ||||
|             0x26 => "BOPS", | ||||
|             0xA7 => "Flasys", | ||||
|             0xA8 => "BitBlitz Communications", | ||||
|             0x29 => "eMemory Technology", | ||||
|             0x2A => "Procket Networks", | ||||
|             0xAB => "Purple Ray", | ||||
|             0x2C => "Trebia Networks", | ||||
|             0xAD => "Delta Electronics", | ||||
|             0xAE => "Onex Communications", | ||||
|             0x2F => "Ample Communications", | ||||
|             0xB0 => "Memory Experts Intl", | ||||
|             0x31 => "Astute Networks", | ||||
|             0x32 => "Azanda Network Devices", | ||||
|             0xB3 => "Dibcom", | ||||
|             0x34 => "Tekmos", | ||||
|             0xB5 => "API NetWorks", | ||||
|             0xB6 => "Bay Microsystems", | ||||
|             0x37 => "Firecron Ltd", | ||||
|             0x38 => "Resonext Communications", | ||||
|             0xB9 => "Tachys Technologies", | ||||
|             0xBA => "Equator Technology", | ||||
|             0x3B => "Concept Computer", | ||||
|             0xBC => "SILCOM", | ||||
|             0x3D => "3Dlabs", | ||||
|             0x3E => "ct Magazine", | ||||
|             0xBF => "Sanera Systems", | ||||
|             0x40 => "Silicon Packets", | ||||
|             0xC1 => "Viasystems Group", | ||||
|             0xC2 => "Simtek", | ||||
|             0x43 => "Semicon Devices Singapore", | ||||
|             0xC4 => "Satron Handelsges", | ||||
|             0x45 => "Improv Systems", | ||||
|             0x46 => "INDUSYS GmbH", | ||||
|             0xC7 => "Corrent", | ||||
|             0xC8 => "Infrant Technologies", | ||||
|             0x49 => "Ritek Corp", | ||||
|             0x4A => "empowerTel Networks", | ||||
|             0xCB => "Hypertec", | ||||
|             0x4C => "Cavium Networks", | ||||
|             0xCD => "PLX Technology", | ||||
|             0xCE => "Massana Design", | ||||
|             0x4F => "Intrinsity", | ||||
|             0xD0 => "Valence Semiconductor", | ||||
|             0x51 => "Terawave Communications", | ||||
|             0x52 => "IceFyre Semiconductor", | ||||
|             0xD3 => "Primarion", | ||||
|             0x54 => "Picochip Designs Ltd", | ||||
|             0xD5 => "Silverback Systems", | ||||
|             0xD6 => "Jade Star Technologies", | ||||
|             0x57 => "Pijnenburg Securealink", | ||||
|             0x58 => "MemorySolutioN", | ||||
|             0xD9 => "Cambridge Silicon Radio", | ||||
|             0xDA => "Swissbit", | ||||
|             0x5B => "Nazomi Communications", | ||||
|             0xDC => "eWave System", | ||||
|             0x5D => "Rockwell Collins", | ||||
|             0x5E => "PAION", | ||||
|             0xDF => "Alphamosaic Ltd", | ||||
|             0xE0 => "Sandburst", | ||||
|             0x61 => "SiCon Video", | ||||
|             0x62 => "NanoAmp Solutions", | ||||
|             0xE3 => "Ericsson Technology", | ||||
|             0x64 => "PrairieComm", | ||||
|             0xE5 => "Mitac International", | ||||
|             0xE6 => "Layer N Networks", | ||||
|             0x67 => "Atsana Semiconductor", | ||||
|             0x68 => "Allegro Networks", | ||||
|             0xE9 => "Marvell Semiconductors", | ||||
|             0xEA => "Netergy Microelectronic", | ||||
|             0x6B => "NVIDIA", | ||||
|             0xEC => "Internet Machines", | ||||
|             0x6D => "Peak Electronics", | ||||
|             0xEF => "Accton Technology", | ||||
|             0x70 => "Teradiant Networks", | ||||
|             0xF1 => "Europe Technologies", | ||||
|             0xF2 => "Cortina Systems", | ||||
|             0x73 => "RAM Components", | ||||
|             0xF4 => "Raqia Networks", | ||||
|             0x75 => "ClearSpeed", | ||||
|             0x76 => "Matsushita Battery", | ||||
|             0xF7 => "Xelerated", | ||||
|             0xF8 => "SimpleTech", | ||||
|             0x79 => "Utron Technology", | ||||
|             0x7A => "Astec International", | ||||
|             0xFB => "AVM gmbH", | ||||
|             0x7C => "Redux Communications", | ||||
|             0xFD => "Dot Hill Systems", | ||||
|             0xFE => "TeraChip", | ||||
|         }, | ||||
|         { | ||||
|             0x01 => "T-RAM Incorporated", | ||||
|             0x02 => "Innovics Wireless", | ||||
|             0x83 => "Teknovus", | ||||
|             0x04 => "KeyEye Communications", | ||||
|             0x85 => "Runcom Technologies", | ||||
|             0x86 => "RedSwitch", | ||||
|             0x07 => "Dotcast", | ||||
|             0x08 => "Silicon Mountain Memory", | ||||
|             0x89 => "Signia Technologies", | ||||
|             0x8A => "Pixim", | ||||
|             0x0B => "Galazar Networks", | ||||
|             0x8C => "White Electronic Designs", | ||||
|             0x0D => "Patriot Scientific", | ||||
|             0x0E => "Neoaxiom Corporation", | ||||
|             0x8F => "3Y Power Technology", | ||||
|             0x10 => "Europe Technologies", | ||||
|             0x91 => "Potentia Power Systems", | ||||
|             0x92 => "C-guys Incorporated", | ||||
|             0x13 => "Digital Communications Technology Incorporated", | ||||
|             0x94 => "Silicon-Based Technology", | ||||
|             0x15 => "Fulcrum Microsystems", | ||||
|             0x16 => "Positivo Informatica Ltd", | ||||
|             0x97 => "XIOtech Corporation", | ||||
|             0x98 => "PortalPlayer", | ||||
|             0x19 => "Zhiying Software", | ||||
|             0x1A => "Direct2Data", | ||||
|             0x9B => "Phonex Broadband", | ||||
|             0x1C => "Skyworks Solutions", | ||||
|             0x9D => "Entropic Communications", | ||||
|             0x9E => "Pacific Force Technology", | ||||
|             0x1F => "Zensys A/S", | ||||
|             0x20 => "Legend Silicon Corp.", | ||||
|             0xA1 => "sci-worx GmbH", | ||||
|             0xA2 => "Oasis Silicon Systems", | ||||
|             0x23 => "Renesas Technology", | ||||
|             0xA4 => "Raza Microelectronics", | ||||
|             0x25 => "Phyworks", | ||||
|             0x26 => "MediaTek", | ||||
|             0xA7 => "Non-cents Productions", | ||||
|             0xA8 => "US Modular", | ||||
|             0x29 => "Wintegra Ltd", | ||||
|             0x2A => "Mathstar", | ||||
|             0xAB => "StarCore", | ||||
|             0x2C => "Oplus Technologies", | ||||
|             0xAD => "Mindspeed", | ||||
|             0xAE => "Just Young Computer", | ||||
|             0x2F => "Radia Communications", | ||||
|             0xB0 => "OCZ", | ||||
|             0x31 => "Emuzed", | ||||
|             0x32 => "LOGIC Devices", | ||||
|             0xB3 => "Inphi Corporation", | ||||
|             0x34 => "Quake Technologies", | ||||
|             0xB5 => "Vixel", | ||||
|             0xB6 => "SolusTek", | ||||
|             0x37 => "Kongsberg Maritime", | ||||
|             0x38 => "Faraday Technology", | ||||
|             0xB9 => "Altium Ltd.", | ||||
|             0xBA => "Insyte", | ||||
|             0x3B => "ARM Ltd.", | ||||
|             0xBC => "DigiVision", | ||||
|             0x3D => "Vativ Technologies", | ||||
|             0x3E => "Endicott Interconnect Technologies", | ||||
|             0xBF => "Pericom", | ||||
|             0x40 => "Bandspeed", | ||||
|             0xC1 => "LeWiz Communications", | ||||
|             0xC2 => "CPU Technology", | ||||
|             0x43 => "Ramaxel Technology", | ||||
|             0xC4 => "DSP Group", | ||||
|             0x45 => "Axis Communications", | ||||
|             0x46 => "Legacy Electronics", | ||||
|             0xC7 => "Chrontel", | ||||
|             0xC8 => "Powerchip Semiconductor", | ||||
|             0x49 => "MobilEye Technologies", | ||||
|             0x4A => "Excel Semiconductor", | ||||
|             0xCB => "A-DATA Technology", | ||||
|             0x4C => "VirtualDigm", | ||||
|         } | ||||
|     ]; | ||||
|     my $arr_index = shift; | ||||
|     my $code = shift; | ||||
|     unless ($code) { | ||||
|         return "BUGGY SPD"; | ||||
|     } | ||||
|     return $jedec_ids->[$arr_index]->{$code}; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
|              | ||||
|  | ||||
|                                                         | ||||
|  | ||||
|  | ||||
| sub decode_spd { | ||||
|     my %memtypes = ( | ||||
|         1 => "STD FPM DRAM", | ||||
|         2 => "EDO", | ||||
|         3 => "Pipelined Nibble",  | ||||
|         4 => "SDRAM", | ||||
|         5 => "ROM", | ||||
|         6 => "DDR SGRAM", | ||||
|         7 => "DDR SDRAM", | ||||
|         8 => "DDR2 SDRAM", | ||||
|         9 => "DDR2 SDRAM FB-DIMM", | ||||
|         10 => "DDR2 SDRAM FB-DIMM PROBE", | ||||
|         11 => "DDR3 SDRAM" | ||||
|     ); | ||||
|      | ||||
|     my %modtypes = ( | ||||
|         1 => "RDIMM", | ||||
|         2 => "UDIMM", | ||||
|         3 => "SODIMM", | ||||
|         4 => "Micro-DIMM", | ||||
|         5 => "Mini-RDIMM", | ||||
|         6 => "Mini-UDIMM", | ||||
|     ); | ||||
|  | ||||
|     my %speedfromclock = ( | ||||
|         800 => 6400, | ||||
|         1066 => 8500, | ||||
|         1333 => 10600, | ||||
|         1600 => 12800, | ||||
|     ); | ||||
|  | ||||
|     my %ddr3modcap = ( | ||||
|         0 => 256, | ||||
|         1 => 512, | ||||
|         2 => 1024, | ||||
|         3 => 2048, | ||||
|         4 => 4096, | ||||
|         5 => 8192, | ||||
|         6 => 16384 | ||||
|     ); | ||||
|  | ||||
|     my %ddr3devwidth = ( | ||||
|         0 => 4, | ||||
|         1 => 8, | ||||
|         2 => 16, | ||||
|         3 => 32 | ||||
|     ); | ||||
|     my %ddr3ranks = ( | ||||
|         0 => 1, | ||||
|         1 => 2, | ||||
|         2 => 3, | ||||
|         3 => 4 | ||||
|     ); | ||||
|     my %ddr3buswidth = ( | ||||
|         0 => 8, | ||||
|         1 => 16, | ||||
|         2 => 32, | ||||
|         3 => 64 | ||||
|     ); | ||||
|  | ||||
|     my @spd = @_; | ||||
|     my $rethash; | ||||
|     print Dumper(@spd); | ||||
|     if (($spd[0] & 0xf) > 3) { #TODO: Remove workaround for buggy SPD | ||||
|         $rethash->{product}->{extra}=[{value=>'BUGGY SPD',encoding=>3}]; | ||||
|         unshift @spd,3; | ||||
|     } | ||||
|     $rethash->{product}->{name}=$memtypes{$spd[2]}; | ||||
|     if  ($spd[2] == 11) { #DDR3 spec applies | ||||
|         my $mtb = $spd[10]/$spd[11]; | ||||
|         my $speed = $speedfromclock{int(2/($mtb*$spd[12]*10**-3))}; | ||||
|         $rethash->{product}->{name}="PC3-".$speed; | ||||
|         if ($spd[8]&0b11000) { | ||||
|             $rethash->{product}->{name} .= " ECC"; | ||||
|         } | ||||
|         $rethash->{product}->{name}.=" ".$modtypes{$spd[3]&0x0f}; | ||||
|         my $sdramcap=$ddr3modcap{$spd[4]&0xf}; | ||||
|         my $buswidth=$ddr3buswidth{$spd[8]&0b111}; | ||||
|         my $sdramwidth=$ddr3devwidth{$spd[7]&0b111}; | ||||
|         my $ranks = $ddr3ranks{($spd[7]&0b111000)>>3}; | ||||
|  | ||||
|  | ||||
|         my $capacity = $sdramcap/8*$buswidth/$sdramwidth*$ranks; | ||||
|         if ($capacity < 1024) { | ||||
|             $capacity = $capacity."MB"; | ||||
|         } else { | ||||
|             $capacity = ($capacity/1024)."GB"; | ||||
|         } | ||||
|         $rethash->{product}->{name} = $capacity." ".$rethash->{product}->{name}; | ||||
|  | ||||
|         $rethash->{product}->{manufacturer} = decode_manufacturer($spd[117],$spd[118]); | ||||
|         $rethash->{product}->{buildlocation} = sprintf("%02x",$spd[119]); | ||||
|         if ($spd[120] != 0 or $spd[121] != 0) { | ||||
|             $rethash->{product}->{builddate} = sprintf("Week %x of 20%02x",$spd[121],$spd[120]); | ||||
|         } | ||||
|         foreach (@spd[128..145]) { | ||||
|             if ($_ & 0b10000000) { | ||||
|                 $rethash->{product}->{model}="BUGGY SPD"; | ||||
|             } | ||||
|         } | ||||
|         unless ($rethash->{product}->{model}) { | ||||
|             $rethash->{product}->{model}=pack("C*",@spd[128..145]); | ||||
|         } | ||||
|     } | ||||
|     return $rethash; | ||||
| } | ||||
|          | ||||
| 1; | ||||
| @@ -13,6 +13,7 @@ use strict; | ||||
| use warnings "all"; | ||||
| use xCAT::GlobalDef; | ||||
| use xCAT_monitoring::monitorctrl; | ||||
| use xCAT::SPD qw/decode_spd/; | ||||
|  | ||||
| use POSIX qw(ceil floor); | ||||
| use Storable qw(store_fd retrieve_fd thaw freeze); | ||||
| @@ -1877,9 +1878,6 @@ return(2,""); | ||||
| 	return(1,"No OEM FRU Support"); | ||||
| } | ||||
|  | ||||
| sub decode_spd { | ||||
|     print "SPD: ".phex(\@_); | ||||
| } | ||||
| sub add_textual_fru { | ||||
|     my $parsedfru = shift; | ||||
|     my $description = shift; | ||||
| @@ -1900,7 +1898,7 @@ sub add_textual_fru { | ||||
|             $fru = FRU->new(); | ||||
|             $fru->rec_type($types); | ||||
|             $fru->desc($description); | ||||
|             if ($subcategory eq 'builddate') { | ||||
|             if (not ref $_) { | ||||
|                 $fru->value($_); | ||||
|             } else { | ||||
|                 if ($_->{encoding} == 3) { | ||||
| @@ -1922,10 +1920,16 @@ sub add_textual_frus { | ||||
|     add_textual_fru($parsedfru,$desc." ".$categorydesc."Part Number",$category,"partnumber","hw"); | ||||
|     add_textual_fru($parsedfru,$desc." ".$categorydesc."Manufacturer",$category,"manufacturer","hw"); | ||||
|     add_textual_fru($parsedfru,$desc." ".$categorydesc."Serial Number",$category,"serialnumber","hw"); | ||||
|     add_textual_fru($parsedfru,$desc." ".$categorydesc."Name",$category,"name","hw"); | ||||
|     if ($category eq 'board') { | ||||
|     add_textual_fru($parsedfru,$desc." ".$categorydesc."",$category,"name","hw"); | ||||
|     if ($parsedfru->{$category}->{builddate}) { | ||||
|         add_textual_fru($parsedfru,$desc." ".$categorydesc."Manufacture Date",$category,"builddate","hw"); | ||||
|     } | ||||
|     if ($parsedfru->{$category}->{buildlocation}) { | ||||
|         add_textual_fru($parsedfru,$desc." ".$categorydesc."Manufacture Location",$category,"buildlocation","hw"); | ||||
|     } | ||||
|     if ($parsedfru->{$category}->{model})  { | ||||
|         add_textual_fru($parsedfru,$desc." ".$categorydesc."Model",$category,"model","hw"); | ||||
|     } | ||||
|     add_textual_fru($parsedfru,$desc." ".$categorydesc."Additional Info",$category,"extra","hw"); | ||||
| } | ||||
|  | ||||
| @@ -2283,7 +2287,8 @@ sub initfru { | ||||
|                     $fru_hash{$frudex++} = $fru; | ||||
|                     next; | ||||
|                 } | ||||
|                 decode_spd(@bytes); | ||||
|                 my $parsedfru = decode_spd(@bytes); | ||||
|                 add_textual_frus($parsedfru,$sdr->id_string,"",'product'); | ||||
|             } elsif ($sdr->fru_subtype == 0 or $sdr->fru_subtype == 2) { | ||||
| 	            ($subrc,@bytes) = frudump(0,get_frusize($sdr->sensor_number),16,$sdr->sensor_number); | ||||
|                 if ($subrc) { | ||||
| @@ -2554,7 +2559,7 @@ sub frudump { | ||||
| 		} | ||||
| 		else { | ||||
| 			$rc = 1; | ||||
| 			$text = $codes{$code}." $fruid $ms $ls $chunk BORK"; | ||||
| 			$text = $codes{$code}; | ||||
| 		} | ||||
|  | ||||
| 		if($rc != 0) { | ||||
|   | ||||
| @@ -36,7 +36,6 @@ use Storable qw(freeze thaw); | ||||
| use IO::Select; | ||||
| use IO::Handle; | ||||
| use Time::HiRes qw(gettimeofday sleep); | ||||
| use Net::Telnet; | ||||
| use xCAT::DBobjUtils; | ||||
| use Getopt::Long; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user