success on Asus P4S8X-X

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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))) {


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux