Hello, I want to report success with a lightly patched 2.7.0 version of lm_sensors with my new motherboard, an ASUS P4S8X-X (redhat 9). lspci reports : 00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0648 (rev 03) 00:02.0 ISA bridge: Silicon Integrated Systems [SiS]: Unknown device 0963 (rev 25) So I added support for the SiS963 bridge in i2c-sis645.c. The patch is attached for version 2.7.0 (merging code from the CVS too). When inserting the i2c-sis645 module, I trigger this warning in my logs, but this message seems harmless, as it doesn't prevent the sensors from working in presumably the right way : Apr 13 14:29:03 lxorgfr kernel: PCI: No IRQ known for interrupt pin B of device 00:02.1. Please try using pci=biosirq. Then, the corresponding entry appears in the PCI list : 00:02.1 SMBus: Silicon Integrated Systems [SiS]: Unknown device 0016 I found an asb100 chipset by a visual examination of the pcb of my motherboard, so the sensors chipset is detected as a as99127f-i2c-0-2d, which looks correct in my case : as99127f-i2c-0-2d Adapter: SMBus SiS645 adapter at 0xe600 Algorithm: Non-I2C SMBus adapter VCore 1: +1.58 V (min = +1.44 V, max = +1.76 V) VCore 2: +1.58 V (min = +1.44 V, max = +1.76 V) +3.3V: +3.36 V (min = +2.97 V, max = +3.63 V) +5V: +5.02 V (min = +4.50 V, max = +5.48 V) +12V: +11.40 V (min = +10.79 V, max = +13.11 V) -12V: -11.92 V (min = -0.00 V, max = -0.00 V) -5V: -4.51 V (min = -0.00 V, max = -0.00 V) fan1: 2909 RPM (min = 3000 RPM, div = 2) fan2: 0 RPM (min = 3000 RPM, div = 2) fan3: 0 RPM (min = 0 RPM, div = 2) temp1: +41?C (limit = +60?C) temp2: +31.0?C (limit = +120?C, hysteresis = +100?C) temp3: +34.0?C (limit = +120?C, hysteresis = +100?C) vid: +1.400 V alarms: beep_enable: Sound alarm enabled Values look coherent, and do not differ very much from the ones that I can read in the BIOS. The only required patch to w83781d.c has been to adapt the in0 and in1 range of variation, that initially was too low, to the hardcoded 160 value, instead of the folmula (vid==3500?280:vid/10). According to my motherboard documentation, the VCore voltage range for the P4 processor is: . between 1.750V to 1.850V with step of 0.025V for Willamette . between 1.500V to 1.700V with step of 0.025V for Northwood (that's my case). The BIOS is configured by default to choose automatically the VCore voltage. So the VCore=1.58V triggered the beep alarm, because it was just out of the range (vid-10%, vid+10%) with the previous calculation. I also noticed a single crash during my tests, with these messages : Apr 13 14:17:11 lxorgfr kernel: spurious 8259A interrupt: IRQ7. [...] Apr 13 14:22:00 lxorgfr kernel: i2c-sis645.o: SMBus Timeout! (0x00) Apr 13 14:22:35 lxorgfr kernel: i2c-sis645.o: SMBus Timeout! (0x00) Apr 13 14:23:05 lxorgfr kernel: i2c-sis645.o: SMBus Timeout! (0x00) [...] I don't know if this is related to the PCI IRQ message seens when inserting i2c-sis645.o ? This happened while I was repeateadly calling the sensors programs to tweak my mrtg configuration. Before using version 2.7.0, I also tried the CVS (lk2-4 tag for i2c and HEAD for lm_sensors), and insmod w83781d crashed : Apr 13 12:02:29 lxorgfr kernel: Unable to handle kernel paging request at virtual address 01600129 Apr 13 12:02:29 lxorgfr kernel: printing eip: Apr 13 12:02:29 lxorgfr kernel: fcec82fc Apr 13 12:02:29 lxorgfr kernel: *pde = 00000000 Apr 13 12:02:29 lxorgfr kernel: Oops: 0002 Apr 13 12:02:29 lxorgfr kernel: w83781d i2c-sis645 i2c-isa i2c-proc i2c-dev i2c-core ide-cd radeon scanner cls_fw sch_cbq ipt_MARK ipt_length ipt_TOS iptable_mangle ipt_state ipt_MASQUERADE Apr 13 12:02:29 lxorgfr kernel: CPU: 0 Apr 13 12:02:30 lxorgfr kernel: EIP: 0060:[<fcec82fc>] Not tainted Apr 13 12:02:30 lxorgfr kernel: EFLAGS: 00010282 Apr 13 12:02:30 lxorgfr kernel: Apr 13 12:02:30 lxorgfr kernel: EIP is at i2c_register_entry_Rea398b13 [i2c-proc] 0x158 (2.4.20-9) Apr 13 12:02:30 lxorgfr kernel: eax: 01600105 ebx: 00000100 ecx: ea119e00 edx: fced1000 Apr 13 12:02:30 lxorgfr kernel: esi: 00000014 edi: f6babcfc ebp: f6bab800 esp: d41a7e20 Apr 13 12:02:30 lxorgfr kernel: ds: 0068 es: 0068 ss: 0068 Apr 13 12:02:30 lxorgfr kernel: Process insmod (pid: 25440, stackpage=d41a7000) Apr 13 12:02:30 lxorgfr kernel: Stack: fcecf560 00000048 00000080 f6bab908 00000370 00000014 f4b72f40 0000003c Apr 13 12:02:30 lxorgfr kernel: 00000000 ea735ecf ea119e00 fced12d1 ea119e00 fced40b5 fced51a0 00000000 Apr 13 12:02:30 lxorgfr kernel: 00000000 00000000 00000000 00000000 fced4059 fced40b5 ea119e3c 00000002 Apr 13 12:02:30 lxorgfr kernel: Call Trace: [<fcecf560>] sis645_adapter [i2c-sis645] 0x0 (0xd41a7e20)) Apr 13 12:02:30 lxorgfr kernel: [<fced12d1>] w83781d_detect [w83781d] 0x241 (0xd41a7e4c)) [...] Apr 13 12:02:30 lxorgfr kernel: Code: 89 50 24 89 d8 83 c4 1c 5b 5e 5f 5d c3 83 ec 0c 68 80 94 ec This part of the code seems to refer to the line : "client_tbl->de->owner = client->driver->owner;" at the end of this function. --> 29c: 89 50 24 mov %edx,0x24(%eax) I hope this report will help you. Although in the past I was probably one of the first to report problems with sensors-detect as it corrupted some evil IBM eeprom on my old thinkpad, I think your drivers are very useful, and in more than one case, they helped me to prevent a disaster in a computer room, when air-cooler stopped working for no good reason. The mrtg temperature graph warned me just in time so I quickly moved to the hot computer room, and I could stop the machines before it was too late. :-) Best wishes, -- fabrice -------------- next part -------------- --- i2c-sis645.c.bak 2002-12-01 22:02:46.000000000 +0100 +++ i2c-sis645.c 2003-04-05 19:44:46.000000000 +0200 @@ -62,6 +62,11 @@ #define PCI_DEVICE_ID_SI_646 0x0646 #endif +/* SiS648 north bridge */ +#ifndef PCI_DEVICE_ID_SI_648 +#define PCI_DEVICE_ID_SI_648 0x0648 +#endif + /* SiS650 north bridge */ #ifndef PCI_DEVICE_ID_SI_650 #define PCI_DEVICE_ID_SI_650 0x0650 @@ -77,6 +82,16 @@ #define PCI_DEVICE_ID_SI_961 0x0961 #endif +/* SiS962 south bridge */ +#ifndef PCI_DEVICE_ID_SI_962 +#define PCI_DEVICE_ID_SI_962 0x0962 +#endif + +/* SiS963 south bridge */ +#ifndef PCI_DEVICE_ID_SI_963 +#define PCI_DEVICE_ID_SI_963 0x0963 +#endif + #define PCI_DEVICE_ID_SI_SMBUS 0x16 /* base address register in PCI config space */ @@ -263,6 +278,16 @@ } else if (SIS645_ISA_dev = pci_find_device(PCI_VENDOR_ID_SI, + PCI_DEVICE_ID_SI_962, NULL)) { + printk("i2c-sis645.o: Found SiS962 [MuTIOL Media IO].\n"); + } + + else if (SIS645_ISA_dev = pci_find_device(PCI_VENDOR_ID_SI, + PCI_DEVICE_ID_SI_963, NULL)) { + printk("i2c-sis645.o: Found SiS963 [MuTIOL Media IO].\n"); + } + + else if (SIS645_ISA_dev = pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, NULL)) { printk("i2c-sis645.o: Found SiS south bridge in compatability mode(?)\n"); @@ -272,6 +297,8 @@ && (NULL == pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_646, NULL)) && (NULL == pci_find_device(PCI_VENDOR_ID_SI, + PCI_DEVICE_ID_SI_648, NULL)) + && (NULL == pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_650, NULL)) && (NULL == pci_find_device(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, NULL))) {