Browse Source
Delete the decode-xeon script. It was essentially unmaintained, was
Delete the decode-xeon script. It was essentially unmaintained, was
never updated to support Linux 2.6, and lacked a license statement. git-svn-id: http://lm-sensors.org/svn/i2c-tools/trunk@5595 7894878c-1315-0410-8ee3-d5d059ff63e0tags/v3.0.3
4 changed files with 1 additions and 206 deletions
@ -1,197 +0,0 @@ |
|||
#!/usr/bin/perl |
|||
# |
|||
# Copyright 1998, 1999 Philip Edelbrock <phil@netroedge.com> |
|||
# and Mark Studebaker <mdsxyz123@yahoo.com> |
|||
# |
|||
# Version 0.1 |
|||
# |
|||
# |
|||
# ID ROM data decoding for Xeon processors. |
|||
# Each Xeon processor contains two memories: |
|||
# - A scratch EEPROM at an even location 0x50, 52, 54, or 56; |
|||
# - An ID ROM at an odd location 0x51, 53, 55, or 57. |
|||
# This program decodes the ID ROM's only. |
|||
# The scratch EEPROMs have no prescribed format. |
|||
# If the output of this program makes no sense for a particular device, |
|||
# it is probably decoding a DIMM Serial Presence Detect (SPD) EEPROM. |
|||
# See decode-dimms to decode those devices. |
|||
# |
|||
# |
|||
# The eeprom driver must be loaded. For kernels older than 2.6.0, the |
|||
# eeprom driver can be found in the lm-sensors package. |
|||
# |
|||
# To do: |
|||
# Calculate and check checksums for each section |
|||
# Decode flags in byte 0x7B (cartridge feature flags) |
|||
# |
|||
# References: |
|||
# "Pentium II Xeon Processor at 400 and 450 MHz" Data Sheet |
|||
# Intel |
|||
# |
|||
# |
|||
# |
|||
|
|||
print "Xeon Processor Information ROM Decoder\n"; |
|||
print "Written by Philip Edelbrock and Mark Studebaker. Copyright 1998, 1999.\n"; |
|||
print "Version 2.6.3\n\n"; |
|||
|
|||
$dimm_count=0; |
|||
$_=`ls /proc/sys/dev/sensors/`; |
|||
@dimm_list=split(); |
|||
|
|||
for $i ( 0 .. $#dimm_list ) { |
|||
$_=$dimm_list[$i]; |
|||
if ((/^eeprom-/) && (/-51$/ || /-53$/ || /-55$/ || /-57$/)) { |
|||
$dimm_count=$dimm_count + 1; |
|||
|
|||
print "\nDecoding Xeon ROM: /proc/sys/dev/sensors/$dimm_list[$i]\n"; |
|||
if (/^[^-]+-[^-]+-[^-]+-([^-]+)$/) { |
|||
$dimm_num=($1 - 49) / 2; |
|||
print "Guessing Xeon is number $dimm_num\n"; |
|||
} |
|||
# Decode first 16 bytes |
|||
print "\t\t----=== Xeon ROM Header Data ===----\n"; |
|||
|
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/00`; |
|||
@bytes=split(" "); |
|||
|
|||
printf("\tData Format Revision: \t\t\t\t0x%.4X\n", $bytes[0]); |
|||
|
|||
print "\tTotal number of bytes in EEPROM:\t\t"; |
|||
print ($bytes[1] << 4) + $bytes[2]; |
|||
print "\n"; |
|||
|
|||
printf("\tProcessor Data Address:\t\t\t\t0x%.2X\n", $bytes[3]); |
|||
printf("\tProcessor Core Data Address:\t\t\t0x%.2X\n", $bytes[4]); |
|||
printf("\tL2 Cache Data Address:\t\t\t\t0x%.2X\n", $bytes[5]); |
|||
printf("\tSEC Cartridge Data Address:\t\t\t0x%.2X\n", $bytes[6]); |
|||
printf("\tPart Number Data Address:\t\t\t0x%.2X\n", $bytes[7]); |
|||
printf("\tThermal Reference Data Address:\t\t\t0x%.2X\n", $bytes[8]); |
|||
printf("\tFeature Data Address:\t\t\t\t0x%.2X\n", $bytes[9]); |
|||
printf("\tOther Data Address:\t\t\t\t0x%.2X\n", $bytes[10]); |
|||
|
|||
print "\t\t----=== Xeon ROM Processor Data ===----\n"; |
|||
|
|||
# Decode next 16 bytes |
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/10`; |
|||
@bbytes=split(" "); |
|||
print "\tS-spec/QDF Number:\t\t\t\t\""; |
|||
print pack("cccccc",$bytes[14],$bytes[15],$bbytes[0], |
|||
$bbytes[1],$bbytes[2],$bbytes[3]); |
|||
print "\"\n"; |
|||
$tmp = $bbytes[4] & 0xC0 >> 6; |
|||
printf("\tSample / Production:\t\t\t\t0x%.2X", $tmp); |
|||
if($tmp) { |
|||
print " (Production)\n"; |
|||
} else { |
|||
print " (Sample)\n"; |
|||
} |
|||
|
|||
print "\t\t----=== Xeon ROM Core Data ===----\n"; |
|||
|
|||
printf("\tProcessor Core Type:\t\t\t\t0x%.2X\n", |
|||
($bbytes[6] & 0xC0) >> 6); |
|||
printf("\tProcessor Core Family:\t\t\t\t0x%.2X\n", |
|||
($bbytes[6] & 0x3C) >> 2); |
|||
printf("\tProcessor Core Model:\t\t\t\t0x%.2X\n", |
|||
(($bbytes[6] & 0x03) << 2) + (($bbytes[7] & 0xC0) >> 6)); |
|||
printf("\tProcessor Core Stepping:\t\t\t0x%.2X\n", |
|||
($bbytes[7] & 0x30) >> 4); |
|||
print "\tMaximum Core Frequency (Mhz):\t\t\t"; |
|||
print ($bbytes[13] << 4) + $bbytes[14]; |
|||
print "\n"; |
|||
|
|||
# Decode next 16 bytes (32-47) |
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/20`; |
|||
@bytes=split(" "); |
|||
print "\tCore Voltage ID (mV):\t\t\t\t"; |
|||
print ($bbytes[15] << 4) + $bytes[0]; |
|||
print "\n"; |
|||
print "\tCore Voltage Tolerance, High (mV):\t\t"; |
|||
print $bytes[1]; |
|||
print "\n"; |
|||
print "\tCore Voltage Tolerance, Low (mV):\t\t"; |
|||
print $bytes[2]; |
|||
print "\n"; |
|||
|
|||
print "\t\t----=== Xeon ROM L2 Cache Data ===----\n"; |
|||
|
|||
print "\tL2 Cache Size (KB):\t\t\t\t"; |
|||
print ($bytes[9] << 4) + $bytes[10]; |
|||
print "\n"; |
|||
printf("\tNumber of SRAM Components:\t\t\t%d\n", |
|||
($bytes[11] & 0xF0) >> 4); |
|||
print "\tL2 Cache Voltage ID (mV):\t\t\t"; |
|||
print ($bytes[12] << 4) + $bytes[13]; |
|||
print "\n"; |
|||
print "\tL2 Cache Voltage Tolerance, High (mV):\t\t"; |
|||
print $bytes[14]; |
|||
print "\n"; |
|||
print "\tL2 Cache Voltage Tolerance, Low (mV):\t\t"; |
|||
print $bytes[15]; |
|||
print "\n"; |
|||
|
|||
# Decode next 16 bytes (48-63) |
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/30`; |
|||
@bytes=split(" "); |
|||
|
|||
printf("\tCache/Tag Stepping ID:\t\t\t\t0x%.2X\n", |
|||
($bytes[0] & 0xF0) >> 4); |
|||
|
|||
print "\t\t----=== Xeon ROM Cartridge Data ===----\n"; |
|||
|
|||
print "\tCartridge Revision:\t\t\t\t\""; |
|||
print pack("cccc",$bytes[2],$bytes[3],$bytes[4],$bytes[5]); |
|||
print "\"\n"; |
|||
printf("\tSubstrate Rev. Software ID:\t\t\t0x%.2X\n", |
|||
($bbytes[6] & 0xC0) >> 6); |
|||
|
|||
print "\t\t----=== Xeon ROM Part Number Data ===----\n"; |
|||
|
|||
print "\tProcessor Part Number:\t\t\t\t\""; |
|||
print pack("ccccccc",$bytes[8],$bytes[9],$bytes[10], |
|||
$bytes[11],$bytes[12],$bytes[13],$bytes[14]); |
|||
print "\"\n"; |
|||
$byte15=$byte[15]; |
|||
|
|||
# Decode next 16 bytes (64-79) |
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/40`; |
|||
@bytes=split(" "); |
|||
|
|||
print "\tProcessor BOM ID:\t\t\t\t\""; |
|||
print pack("cccccccccccccc",$byte15,$bytes[0],$bytes[1], |
|||
$bytes[2],$bytes[3],$bytes[4],$bytes[5],$bytes[6], |
|||
$bytes[7],$bytes[8],$bytes[9],$bytes[10],$bytes[11], |
|||
$bytes[12]); |
|||
print "\"\n"; |
|||
|
|||
# Decode next 16 bytes (80-95) |
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/50`; |
|||
@bbytes=split(" "); |
|||
printf("\tProcessor Electronic Signature: \t\t0x%.2X%.2X%.2X%.2X%.2X%.2X%.2X%.2X\n", |
|||
$bytes[13],$bytes[14],$bytes[15],$bbytes[0], |
|||
$bbytes[1],$bbytes[2],$bbytes[3],$bbytes[4]); |
|||
|
|||
# Decode next 16 bytes (96-111) |
|||
# Not used... |
|||
|
|||
# Decode next 16 bytes (112-127) |
|||
$_=`cat /proc/sys/dev/sensors/$dimm_list[$i]/70`; |
|||
@bytes=split(" "); |
|||
|
|||
print "\t\t----=== Xeon Thermal Reference Data ===----\n"; |
|||
|
|||
printf("\tThermal Reference Byte: \t\t\t0x%.2X\n", $bytes[0]); |
|||
|
|||
print "\t\t----=== Xeon ROM Feature Data ===----\n"; |
|||
|
|||
printf("\tProcessor Core Feature Flags: \t\t\t0x%.2X%.2X%.2X%.2X\n", |
|||
$bytes[4],$bytes[5],$bytes[6],$bytes[7]); |
|||
printf("\tCartridge Feature Flags: \t\t\t0x%.2X%.2X%.2X%.2X\n", |
|||
$bytes[8],$bytes[9],$bytes[10],$bytes[11]); |
|||
printf("\tNumber of Devices in TAP Chain:\t\t\t%d\n", |
|||
($bytes[12] & 0xF0) >> 4); |
|||
|
|||
} |
|||
} |
|||
print "\n\nNumber of Xeon ROMs detected and decoded: $dimm_count\n"; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue