46 lines
1.3 KiB
Diff
46 lines
1.3 KiB
Diff
Subject: decode-dimms: Don't choke when no EEPROM is found
|
|
Upstream: yes, r6063
|
|
|
|
Don't choke when no SPD EEPROM is found while the eeprom or at24 driver
|
|
is loaded. This can happen, handle the case gracefully.
|
|
---
|
|
eeprom/decode-dimms | 11 ++++++-----
|
|
1 file changed, 6 insertions(+), 5 deletions(-)
|
|
|
|
--- i2c-tools-3.1.0.orig/eeprom/decode-dimms
|
|
+++ i2c-tools-3.1.0/eeprom/decode-dimms
|
|
@@ -1728,7 +1728,7 @@ sub sysfs_device_attribute
|
|
|
|
sub get_dimm_list
|
|
{
|
|
- my (@dirs, $dir, $file, @files);
|
|
+ my (@dirs, $dir, $opened, $file, @files);
|
|
|
|
if ($use_sysfs) {
|
|
@dirs = ('/sys/bus/i2c/drivers/eeprom', '/sys/bus/i2c/drivers/at24');
|
|
@@ -1738,6 +1738,7 @@ sub get_dimm_list
|
|
|
|
foreach $dir (@dirs) {
|
|
next unless opendir(local *DIR, $dir);
|
|
+ $opened++;
|
|
while (defined($file = readdir(DIR))) {
|
|
if ($use_sysfs) {
|
|
# We look for I2C devices like 0-0050 or 2-0051
|
|
@@ -1758,12 +1759,12 @@ sub get_dimm_list
|
|
close(DIR);
|
|
}
|
|
|
|
- if (@files) {
|
|
- return sort { $a->{file} cmp $b->{file} } @files;
|
|
- } elsif (! -d '/sys/module/eeprom') {
|
|
- print "No EEPROM found, are you sure the eeprom module is loaded?\n";
|
|
+ if (!$opened) {
|
|
+ print STDERR "No EEPROM found, try loading the eeprom or at24 module\n";
|
|
exit;
|
|
}
|
|
+
|
|
+ return sort { $a->{file} cmp $b->{file} } @files;
|
|
}
|
|
|
|
# @dimm is a list of hashes. There's one hash for each EEPROM we found.
|