Hello guys. The device file /dev/port might be missing in some cases and the sensors detection is terminated when the user tries to detect sensors dependent on it's existence. That's not correct -> it's not a reason for terminating the detection. The attached patch solves the issue, so that a warning is displayed and the detection continues. The patch can be applied on the current trunk version. Please, check the patch and merge it if possible. Thank you. Regards, Jaromir. -- Jaromir Capik Red Hat Czech, s.r.o. Software Engineer / BaseOS Email: jcapik@xxxxxxxxxx Web: www.cz.redhat.com Red Hat Czech s.r.o., Purkynova 99/71, 612 45, Brno, Czech Republic IC: 27690016
--- sensors-detect.orig 2013-01-17 16:04:10.000000000 +0100 +++ sensors-detect 2013-01-17 16:05:32.209400430 +0100 @@ -2471,9 +2471,12 @@ sub initialize_ioports { - sysopen(IOPORTS, "/dev/port", O_RDWR) - or die "/dev/port: $!\n"; - binmode(IOPORTS); + if (sysopen(IOPORTS, "/dev/port", O_RDWR)) { + binmode(IOPORTS); + return 1; + } + print "/dev/port: $!\n"; + return 0; } sub close_ioports @@ -3511,13 +3514,14 @@ print("Can't set I2C address for $dev\n"), next; - initialize_ioports(); - $alias_detect = $detected->[$isa]->{alias_detect}; - $is_alias = &$alias_detect($detected->[$isa]->{isa_addr}, - \*FILE, - $detected->[$i2c]->{i2c_addr}); + if (initialize_ioports()) { + $alias_detect = $detected->[$isa]->{alias_detect}; + $is_alias = &$alias_detect($detected->[$isa]->{isa_addr}, + \*FILE, + $detected->[$i2c]->{i2c_addr}); + close_ioports(); + } close(FILE); - close_ioports(); next unless $is_alias; # This is an alias: copy the I2C data into the ISA @@ -6819,10 +6823,11 @@ "standard I/O ports to probe them. This is usually safe.\n"; print "Do you want to scan for Super I/O sensors? (YES/no): "; unless (<STDIN> =~ /^\s*n/i) { - initialize_ioports(); - $superio_features |= scan_superio(0x2e, 0x2f); - $superio_features |= scan_superio(0x4e, 0x4f); - close_ioports(); + if (initialize_ioports()) { + $superio_features |= scan_superio(0x2e, 0x2f); + $superio_features |= scan_superio(0x4e, 0x4f); + close_ioports(); + } } print "\n"; @@ -6835,9 +6840,10 @@ "interfaces? (YES/no): "; unless (<STDIN> =~ /^\s*n/i) { if (!ipmi_from_smbios()) { - initialize_ioports(); - scan_isa_bus(\@ipmi_ifs); - close_ioports(); + if (initialize_ioports()) { + scan_isa_bus(\@ipmi_ifs); + close_ioports(); + } } } print "\n"; @@ -6851,9 +6857,10 @@ $input = <STDIN>; unless ($input =~ /^\s*n/i || ($superio_features && $input !~ /^\s*y/i)) { - initialize_ioports(); - scan_isa_bus(\@chip_ids); - close_ioports(); + if (initialize_ioports()) { + scan_isa_bus(\@chip_ids); + close_ioports(); + } } print "\n"; }
_______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors