Description of problem: lm_sensors fails to detect later revision IT87XX chipsets in the current release. This is because support for later chipset revisions (e.g, IT8718F) is not present in the current kernel it87 hwmon module. Version-Release number of selected component (if applicable): kernel-2.6.18-53.1.19.el5 How reproducible: always Steps to Reproduce: 1. Use hardware with later IT87XX chipset, for example IT8718F as found on Gigabyte P35-DS4 motherboard. 2. Install lm_sensors 3. Run sensors-detect Actual results: sensors-detect misdetects the chipset as ITE IT8712F instead of ITE IT8718F as this chipset is not supported in the current it87 module (see below) Driver `lm78' (may not be inserted): Misdetects: * ISA bus address 0x0290 (Busdriver `i2c-isa') Chip `National Semiconductor LM78-J' (confidence: 6) Driver `it87' (should be inserted): Detects correctly: * ISA bus address 0x0290 (Busdriver `i2c-isa') Chip `ITE IT8712F' (confidence: 8) Expected results: To correctly detect chip as ITE IT8718F: Driver `it87' (should be inserted): Detects correctly: * ISA bus, address 0x290 Chip `ITE IT8718F Super IO Sensors' (confidence: 9) Additional info: This issue may be readily fixed by backporting a more recent version of the it87 hwmon module from the latest stable upstream kernel into the current kernel.
I take it this works correctly with an upstream kernel?
Yes, it works correctly when I tested with 2.6.22.6 vanilla (see "Expected results" above). Later versions should work too. I don't know at which point support for additional versions were added. Also, I took the it87 module from that kernel source (2.6.22.6 vanilla) and compiled it out of tree against the current kernel, and 'depmod -a' into current kernel. I've also successfully built a dkms-enabled RPM package for it. Ned
Good validation. In looking at it87, looks like we are missing the ID's for the IT8718F (and some other variants) in the driver. I hope thats all thats needed, but these new chips may require some additional supporting code being they may have extended functionality (beyond what the older chips have). Because of this it would help to have someone test the fix since its not practical to track down affected hardware. Would you be agreeable to testing a fix for us?
Yes, I'd be more than happy to test a fix, although I can only test IT8718F functionality. Further, I've just taken a look at the it87 module from the latest upstream kernel, and IT8726F support has been added since I previously tested with 2.6.22.6. Whilst the module from 2.6.22.6 compiles cleanly against the current kernel, the latest upstream source produces some warnings although it does compile: make[2]: Entering directory `/usr/src/kernels/2.6.18-53.1.19.el5-i686' CC [M] /home/phil/Desktop/test/src/it87.o /home/phil/Desktop/test/src/it87.c: In function ‘it87_probe’: /home/phil/Desktop/test/src/it87.c:1190: warning: assignment from incompatible pointer type /home/phil/Desktop/test/src/it87.c: In function ‘it87_remove’: /home/phil/Desktop/test/src/it87.c:1214: warning: passing argument 1 of ‘hwmon_device_unregister’ from incompatible pointer type /home/phil/Desktop/test/src/it87.c: In function ‘it87_device_add’: /home/phil/Desktop/test/src/it87.c:1505: warning: passing argument 2 of ‘platform_device_add_data’ discards qualifiers from pointer target type Building modules, stage 2. MODPOST CC /home/phil/Desktop/test/src/it87.mod.o LD [M] /home/phil/Desktop/test/src/it87.ko make[2]: Leaving directory `/usr/src/kernels/2.6.18-53.1.19.el5-i686' make[1]: Leaving directory `/home/phil/Desktop/test/src' I would think backporting it87 from 2.6.22.6 (or similar) would be the simple fix as I've essentially been running this since about Sept 2007 without issue, and it builds cleanly. Hope that helps.
Whats easiest for you to test? (1) just a patch for the driver itself (2) kernel tarball with the patch already applied (3) kernel rpm
Probably just the patched driver. I can either compile it against my current kernel and depmod it, or make a dkms-enabled RPM and 'upgrade' the current driver. If you'd rather build a full kernel RPM, then I could test that too, but preferably x86_64. BTW, I'm also a CentOS community member, so I've cross filed there for information: http://bugs.centos.org/view.php?id=2835 Thanks.
Great! A patch is easiest for me too. Ill try a first pass at a patch, then attach it to this Bug
Great - thanks!
Created attachment 306344 [details] it87 driver update test patch Update of it87 driver. Please apply the patch and test the new driver when you get a chance. Thanks.
Thank you very much for the patch. I note the patch appears to bring it87 in line with the latest upstream vanilla kernel release. After applying the patch I build the module against the current latest kernel: uname -a Linux Quad 2.6.18-53.1.21.el5 #1 SMP Tue May 20 09:35:07 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux make make -C src/ clean make[1]: Entering directory `/home/phil/Desktop/it87/src' rm -rf *.o *.ko *~ .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers make[1]: Leaving directory `/home/phil/Desktop/it87/src' make -C src/ modules make[1]: Entering directory `/home/phil/Desktop/it87/src' make -C /lib/modules/2.6.18-53.1.21.el5/build SUBDIRS=/home/phil/Desktop/it87/src modules make[2]: Entering directory `/usr/src/kernels/2.6.18-53.1.21.el5-x86_64' CC [M] /home/phil/Desktop/it87/src/it87.o /home/phil/Desktop/it87/src/it87.c: In function ‘it87_probe’: /home/phil/Desktop/it87/src/it87.c:1190: warning: assignment from incompatible pointer type /home/phil/Desktop/it87/src/it87.c: In function ‘it87_remove’: /home/phil/Desktop/it87/src/it87.c:1214: warning: passing argument 1 of ‘hwmon_device_unregister’ from incompatible pointer type /home/phil/Desktop/it87/src/it87.c: In function ‘it87_device_add’: /home/phil/Desktop/it87/src/it87.c:1505: warning: passing argument 2 of ‘platform_device_add_data’ discards qualifiers from pointer target type Building modules, stage 2. MODPOST CC /home/phil/Desktop/it87/src/it87.mod.o LD [M] /home/phil/Desktop/it87/src/it87.ko make[2]: Leaving directory `/usr/src/kernels/2.6.18-53.1.21.el5-x86_64' make[1]: Leaving directory `/home/phil/Desktop/it87/src' make -C src/ install make[1]: Entering directory `/home/phil/Desktop/it87/src' install -m 644 -c it87.ko /lib/modules/2.6.18-53.1.21.el5/kernel/drivers/hwmon/ make[1]: Leaving directory `/home/phil/Desktop/it87/src' As you see, it built OK but with a few warning messages, and the module inserting fine into the current kernel with modprobe. lm_sensors now correctly detects the senor chip but still gives no useful output: $ rpm -q lm_sensors lm_sensors-2.10.0-3.1.x86_64 $ sensors it8718-isa-0290 Adapter: ISA adapter Sorry - this is my fault, I forgot to mention that I had also previously updated my version of lm_sensors to get this fully working. I reverted back to the default lm_sensors package for testing your patch. Your patch doesn't break anything in this regard - it moves the situation forward as the sensor chipset is now correctly detected whereas before lm_sensors failed to correctly detect the sensor chipset. So, I built lm_sensors from the FC7 source RPM and updated: rpm -q lm_sensors lm_sensors-2.10.3-2.el5.x86_64 Now things are working as expected. Voltages are all out, but system temp (temp1) and CPU temp (temp2) are correctly reported: System idle: $ sensors it8718-isa-0290 Adapter: ISA adapter in0: +1.31 V (min = +0.00 V, max = +4.08 V) in1: +2.18 V (min = +0.00 V, max = +4.08 V) in2: +3.30 V (min = +0.00 V, max = +4.08 V) in3: +2.99 V (min = +0.00 V, max = +4.08 V) in4: +0.69 V (min = +0.00 V, max = +4.08 V) in5: +0.06 V (min = +0.00 V, max = +4.08 V) in6: +0.11 V (min = +0.00 V, max = +4.08 V) in7: +3.04 V (min = +0.00 V, max = +4.08 V) in8: +3.30 V fan1: 1516 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) temp1: +40°C (low = +127°C, high = +127°C) sensor = thermistor temp2: +38°C (low = +127°C, high = +70°C) sensor = diode temp3: -2°C (low = +127°C, high = +127°C) sensor = thermistor vid: +0.000 V and with all 4 cores fully loaded: $ sensors it8718-isa-0290 Adapter: ISA adapter in0: +1.30 V (min = +0.00 V, max = +4.08 V) in1: +2.13 V (min = +0.00 V, max = +4.08 V) in2: +3.28 V (min = +0.00 V, max = +4.08 V) in3: +2.98 V (min = +0.00 V, max = +4.08 V) in4: +1.84 V (min = +0.00 V, max = +4.08 V) in5: +0.08 V (min = +0.00 V, max = +4.08 V) in6: +0.38 V (min = +0.00 V, max = +4.08 V) in7: +3.02 V (min = +0.00 V, max = +4.08 V) in8: +3.30 V fan1: 1523 RPM (min = 0 RPM) fan2: 0 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) temp1: +40°C (low = +127°C, high = +127°C) sensor = thermistor temp2: +51°C (low = +127°C, high = +70°C) sensor = diode temp3: -2°C (low = +127°C, high = +127°C) sensor = thermistor vid: +0.000 V In summary - the patch works exactly as expected on my hardware. I will keep it running on my system and continue to monitor it and provide further feedback as necessary, but given I have been running my own similar patch since Sept 2007 I am not expecting any issues. If you require any further information, please let me know and I'll be more than happy to help. Thanks for your assistance and I look forward to this making it into a release kernel soon. Regarding lm_sensors: I don't know what you would want to do about the situation with the lm_sensors package. I don't know at what version support was added, but I can confirm that version lm_sensors-2.10.3-2 from FC7 works fine. Is it possible to update the base package from 2.10.0 to 2.10.3 or would the necessary changes need to be backported into 2.10.0. If necessary, I can file a separate bug report for this and link to here. However, the lm_sensors issue is probably less important as with the current it87 patch in place affected users could update the lm_sensors package from either FC7 or a 3rd party repository (such as ATrpms) and have a working solution.
Thanks for helping to test this. I will try and get this patch merged and targeted for 5.3. Please do open a Bugzilla for lm_sensors package. Put my email on the CC list as well. I will folloup on the bug with the package owner.... I would like to see the lm_sensors package updated for 5.3 as well if possible.
Thank you Brian. A bug report against lm_sensors has been filed: https://bugzilla.redhat.com/show_bug.cgi?id=448223
Further info on testing of the provided patch. Upon shutdown of the machine, or on stopping the lm_sensors service, I get the following logged to /var/log/messages: May 24 19:26:52 Quad kernel: Trying to free nonexistent resource <0000000000000295-0000000000000296> I didn't see any messages like this running my previous patch based on it87 from upstream 2.6.22.6
I've been running this patch for 2 months now, and other than the output in /var/log/messages upon shutdown noted above, I can confirm it behaves as expected on my hardware.
*** Bug 450972 has been marked as a duplicate of this bug. ***
Any progress on this? Can we expect to see this included in RHEL 5.3? Thanks
An other patch for the kernel is available from the referenced CentOS-bugtracker. This patch does not show any warnings/errors on shutdown. http://bugs.centos.org/view.php?id=3286 Thanks, Niels
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
I would suggest simply backporting the code from vanilla kernel-2.6.22.19 which adds the desired functionality and compiles cleanly against current RHEL5 kernels. I've been running this code for 9 months now without issue. Further, I've packaged this code as a kmod package and have received no negative feedback from other users of that package (kmod-it87 available from http://elrepo.org)
FYI, the entire drivers/hwmon tree was backported (i.e. all current drivers). This includes the it87 driver. This issue was marked for inclusion in RHEL5.4. PS, Ned, thanks for the feedback and testing help.
Brilliant - thanks Brian. I look forward to testing that in RHEL5.4
Brian, Could you tell me from which kernel version have you backported the drivers/hwmon tree? I have a motherboard that has the ITE IT8720F. The support for this and some others was added fairly recently as can be seen here: http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.29.y.git;a=history;f=drivers/hwmon/it87.c;h=9157247fed8e6062877c4428571bb75385e2227b;hb=e34454757fb87ecac1f76e4169cff6b74ba7ec44 Is there any chance this can be included in RHEL5.4?
Heres the update list which should hopefully make 5.4. The backport was from ~2.6.26. It may be possible to do an incremental update on top of the 5.4 update (which was already submitted for inclusion in 5.4) but nothing can really be promised for sure for 5.4 being we are post-kernel-codefreeze. Would you be willing to apply the update patch and build/test a kernel if I work out an incremental update? arch/i386/kernel/smp.c | 100 + arch/i386/lib/Makefile | 2 arch/i386/lib/msr-on-cpu.c | 119 + arch/x86_64/lib/Makefile | 1 arch/x86_64/lib/msr-on-cpu.c | 1 drivers/firmware/dmi_scan.c | 29 drivers/hwmon/Kconfig | 443 +++++-- drivers/hwmon/Makefile | 22 drivers/hwmon/abituguru.c | 108 + drivers/hwmon/abituguru3.c | 1196 ++++++++++++++++++ drivers/hwmon/ad7414.c | 268 ++++ drivers/hwmon/ad7418.c | 373 +++++ drivers/hwmon/adcxx.c | 329 +++++ drivers/hwmon/adm1021.c | 391 +++--- drivers/hwmon/adm1025.c | 415 +++--- drivers/hwmon/adm1026.c | 897 +++++++------- drivers/hwmon/adm1029.c | 506 ++++++++ drivers/hwmon/adm1031.c | 535 ++++---- drivers/hwmon/adm9240.c | 138 +- drivers/hwmon/ads7828.c | 297 ++++ drivers/hwmon/adt7462.c | 2002 +++++++++++++++++++++++++++++++ drivers/hwmon/adt7470.c | 1120 +++++++++++++++++ drivers/hwmon/adt7473.c | 1157 ++++++++++++++++++ drivers/hwmon/ams/Makefile | 8 drivers/hwmon/ams/ams-core.c | 261 ++++ drivers/hwmon/ams/ams-i2c.c | 299 ++++ drivers/hwmon/ams/ams-input.c | 148 ++ drivers/hwmon/ams/ams-pmu.c | 207 +++ drivers/hwmon/ams/ams.h | 71 + drivers/hwmon/applesmc.c | 1632 +++++++++++++++++++++++++ drivers/hwmon/asb100.c | 431 +++--- drivers/hwmon/atxp1.c | 30 drivers/hwmon/coretemp.c | 435 ++++++ drivers/hwmon/dme1737.c | 2419 ++++++++++++++++++++++++++++++++++++++ drivers/hwmon/ds1621.c | 184 +- drivers/hwmon/f71805f.c | 1040 +++++++++++++--- drivers/hwmon/f71882fg.c | 954 +++++++++++++++ drivers/hwmon/f75375s.c | 787 ++++++++++++ drivers/hwmon/fscher.c | 106 - drivers/hwmon/fschmd.c | 864 +++++++++++++ drivers/hwmon/fscpos.c | 78 - drivers/hwmon/gl518sm.c | 323 +++-- drivers/hwmon/gl520sm.c | 696 ++++++----- drivers/hwmon/hdaps.c | 63 drivers/hwmon/hwmon-vid.c | 16 drivers/hwmon/i5k_amb.c | 552 ++++++++ drivers/hwmon/ibmaem.c | 1129 +++++++++++++++++ drivers/hwmon/ibmpex.c | 610 +++++++++ drivers/hwmon/it87.c | 1105 +++++++++++------ drivers/hwmon/k8temp.c | 4 drivers/hwmon/lis3lv02d.c | 581 +++++++++ drivers/hwmon/lis3lv02d.h | 149 ++ drivers/hwmon/lm63.c | 100 + drivers/hwmon/lm70.c | 44 drivers/hwmon/lm75.c | 111 + drivers/hwmon/lm75.h | 2 drivers/hwmon/lm77.c | 56 drivers/hwmon/lm78.c | 722 +++++++---- drivers/hwmon/lm80.c | 355 ++--- drivers/hwmon/lm83.c | 135 +- drivers/hwmon/lm85.c | 789 ++++++------ drivers/hwmon/lm87.c | 285 +++- drivers/hwmon/lm90.c | 216 ++- drivers/hwmon/lm92.c | 53 drivers/hwmon/lm93.c | 2653 ++++++++++++++++++++++++++++++++++++++++++ drivers/hwmon/max1111.c | 244 +++ drivers/hwmon/max1619.c | 56 drivers/hwmon/max6650.c | 694 ++++++++++ drivers/hwmon/pc87360.c | 441 ++++-- drivers/hwmon/pc87427.c | 644 ++++++++++ drivers/hwmon/sis5595.c | 580 +++++---- drivers/hwmon/smsc47b397.c | 253 ++-- drivers/hwmon/smsc47m1.c | 640 ++++++---- drivers/hwmon/smsc47m192.c | 194 +-- drivers/hwmon/thmc50.c | 468 +++++++ drivers/hwmon/ultra45_env.c | 320 +++++ drivers/hwmon/via686a.c | 587 ++++----- drivers/hwmon/vt1211.c | 1376 +++++++++++++++++++++ drivers/hwmon/vt8231.c | 522 +++++--- drivers/hwmon/w83627ehf.c | 1113 +++++++++++++---- drivers/hwmon/w83627hf.c | 1769 ++++++++++++++++------------ drivers/hwmon/w83781d.c | 1556 ++++++++++++++---------- drivers/hwmon/w83791d.c | 221 ++- drivers/hwmon/w83792d.c | 608 +++++---- drivers/hwmon/w83793.c | 1696 ++++++++++++++++++++++++++ drivers/hwmon/w83l785ts.c | 31 drivers/hwmon/w83l786ng.c | 821 ++++++++++++ drivers/i2c/i2c-core.c | 35 drivers/input/Kconfig | 13 include/asm-i386/msr.h | 23 include/asm-x86_64/msr.h | 15 include/linux/dmi.h | 5 include/linux/f75375s.h | 21 include/linux/i2c.h | 65 - include/linux/input-polldev.h | 46 include/linux/pci_ids.h | 3 include/linux/smp.h | 9 97 files changed, 39324 insertions(+), 6897 deletions(-)
Sorry, I thought the question was for the OP, Ned. I would be happy to build / test the kernel.
This doesn't appear to have made it into the RHEL 5.4 Beta release. Is it still scheduled for inclusion in 5.4 (I assume not)?
(In reply to comment #30) > This doesn't appear to have made it into the RHEL 5.4 Beta release. Is it still > scheduled for inclusion in 5.4 (I assume not)? This has been pushed to 5.5. FWIW, the code has been submitted for internal review. P.
in kernel-2.6.18-170.el5 You can download this test kernel from http://people.redhat.com/dzickus/el5 Please do NOT transition this bugzilla state to VERIFIED until our QE team has sent specific instructions indicating when to do so. However feel free to provide a comment indicating that this fix has been verified.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2010-0178.html